Ensure you are logged into GitHub else you will get a 404 error when clicking the links below
On Premise Kubernetes
If you are using kubernetes we highly recommend you use one of the managed cloud providers as this comes with lots of additional features like:
- container registries and bucket storage
- IAM and workload identity (e.g. so kubernetes Service Accounts can be assigned roles to be able to read/write to certain buckets or container registries)
However sometimes you need to run kubernetes on your premise. Longer term we hope the cloud providers can run their managed kubernetes and associated infrastructure on your premise too so you get to reuse the same storage + IAM anywhere. But until then, this guide is intended to get you started installing Jenkins X on a vanilla kubernetes cluster on premise.
Here are some detailed instructions on getting JX running in a Lab Environment.
The following are the prerequisites of your on-premise kubernetes cluster:
If you are going the bare metal route you could try these instructions
You need to be able to connect to your kubernetes cluster via kubectl so that you can run commands like:
kubectl get ns kubectl get node
To view the namespaces and nodes respectively.
To use Jenkins X we need ingress to work. This means being able to create a kubernetes
Ingress resource with a domain name which can be resolved outside of kubernetes to network into kubernetes services.
Jenkins X installs
nginx which has a
Service to implement ingress. But the underlying kubernetes platform needs to implement the load balancing network and infrastructure. This comes out of the box on all public clouds.
With an on-premise kubernetes cluster you need to install something like MetalLB
If you are on bare metal you could try these instructions
We need your kubernetes cluster to have a default storage class so that
PersistentVolumeClaim resources in helm charts get resolved to
PersistentVolume resources so that persistent disks can be used.
You may find these instructions useful
This is our current recommended quickstart for on premise kubernetes:
find out what your ingress domain is for your cluster then modify the
jx-requirements.ymlfile and modify the
cluster: ... ingress: domain: mydomain.com ...
- git add, commit and push your changes:
git add * git commit -a -m "fix: added domain" git push origin master
- ensure you are connected to your cluster so you can run the following kubectl commands
kubectl get ns kubectl get node
Install the git operator from inside a git clone of the git repository you created above.
switch to the
jx ns jx
If your cluster is not accessible on the internet and you can’t open a firewall to allow services like GitHub to access your ingress then you will need to enable webhooks as follows:
setup a webhook tunnel to your laptop find your hook host name:
kubectl get ing
- copy the hook host name into…
ngrok http http://yourHookHost
- copy your personal ngrok domain name of the form
charts/jenkins-x/jxboot-helmfile-resources/values.yamlfile in the
ingress.customHosts.hostsfile so that your file looks like this…
ingress: customHosts: hook: "abcdef1234.ngrok.io" ...
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.