On Premise

Setup Jenkins X on vanilla Kubernetes

On Premise Kubernetes

If you are using kubernetes we highly recommend you use one of the managed cloud providers like Amazon or Google 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.

Prerequisites

The following are the prerequisites of your on-premise kubernetes cluster:

kubectl access

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.

Ingress

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 LoadBalancer kubernetes 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

Storage

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.

Getting Started

This is our current recommended quickstart for on premise kubernetes:

kubectl get ns
kubectl get node      
git clone https://github.com/myuser/mygitops-repo.git myrepo
cd myrepo
jx admin operator    

Last modified September 21, 2020: release 0.0.1895 (3145738)