Prerequisites for using Helm to install CloudBees CI

Kubernetes cluster requirements for CloudBees CI

CloudBees CI must run on a Kubernetes cluster, and the cluster needs to meet these requirements:

  • A production release of Kubernetes and Helm; beta or test releases of Kubernetes and Helm are not supported.

  • Kubernetes cluster nodes in each availability zone.

  • Network access to container images (public Docker Hub or a private Docker Registry).

  • A namespace in the cluster (provided by your Kubernetes admin) with permissions to create Role and RoleBinding objects.

  • Access to the DNS record that points to your installation.

  • SSL certificates (needed when you deploy CloudBees CI).

  • A Default Storage Class defined and ready to use. Refer to the Storage Requirements section in the AWS or On-premise Reference Architectures for more information.

Setting up a Kubernetes namespace

CloudBees recommends using Kubernetes namespaces when you install CloudBees CI.

When combined with Kubernetes RBAC security, Kubernetes namespaces help a Kubernetes administrator restrict who has access to a namespace and its data.

To set up a Kubernetes namespace:

  1. Type the following commands:

$ kubectl create namespace cloudbees-core
$ kubectl config set-context $(kubectl config current-context) --namespace=cloudbees-core
The open-source tools kubectx and kubens make changing Kubernetes context or namespace easier. See the kubectx project for more details.

About setting up an administration workstation

The administrator should choose which computer will be used to install, update, and maintain CloudBees CI.

This administration workstation may be either the CloudBees CI administrative workstation or a Kubernetes administrative workstation. It must be a workstation on which you have full command privileges for the following utilities:

  • The kubectl Kubernetes Control client application, version 1.10 or later.

  • The Helm client. Follow the instructions in the Helm project README to install the Helm client.

If you intend to use the Helm template option instead of install, after installing the Helm client, you can skip to Using the Helm template command to install CloudBees CI.

The CloudBees Helm Chart Repository

CloudBees hosts the Helm chart on CloudBees' public Helm Chart Repository. To access it, you need to add the repository to your Helm environment.

Helm uses CloudBees' public chart repository to automatically download the CloudBees CI Helm chart. If you are unable or do not wish to use the CloudBees CI Helm Chart Repository, the you can download the CloudBees CI Helm Chart from same download site as the CloudBees CI installation package.

Adding the CloudBees Helm Chart Repository

Before you can use the CloudBees repository you must add it to your Helm environment with the helm repo add command.

To add the CloudBees Public Helm Chart Repository to your Helm environment:

$ helm repo add cloudbees https://charts.cloudbees.com/public/cloudbees (1)
$ helm repo update (2)
1 The helm repo add adds a new Helm Chart Repository to your Helm installation.
2 The helm repo update updates your local Helm Chart Repository cache. Your local Helm Chart Repository cache is used by helm commands like helm search to improve performance.
Always run helm repo update before you execute a Helm search using helm search. This ensures your cache is upto date.

Downloading the Helm chart

You can download, or fetch, the latest CloudBees CI Helm chart from the CloudBees Chart Repository using the helm fetch command.

Example helm fetch command
$ helm fetch cloudbees/cloudbees-core (1)
       --version 3.4.1 (2)
       --untar         (3)
1 Adding the optional --version argument allows you to select the Helm chart version that is downloaded.
2 Adding the optional --untar argument uncompresses the Helm chart tarball after the helm chart has been downloaded.
3 The CloudBees CI download site also includes the CloudBees CI Helm chart archive.

Setting up an NGINX Ingress Controller

CloudBees CI requires an NGINX Ingress Controller.

You can skip this section if:

  • You already have an NGINX Ingress Controller installed. CloudBees CI can utilize an existing controller.

  • You plan to install a new controller as part of installing the CloudBees CI Helm chart. Using the Helm chart from CloudBees guarantees that the NGINX Ingress Controller meets CloudBees CI’s requirements.

If you do not already have an NGINX Ingress Controller installed and you do not want to install it while you are installing CloudBees CI, follow the steps below.

Before you can proceed, the Helm client needs to be installed. Install it, and then return to Creating the Ingress Controller to complete the setup.

If you already have the Helm client installed, proceed to Creating the Ingress Controller.

Creating an NGINX Ingress Controller

Since version 0.22.1 of stable/nginx-ingress chart, ClusterRole and ClusterRoleBinding are not created automatically when the controller scope is enabled. They are required for this functionality to work. To use the controller scope feature, see the article Helm install of stable/nginx-ingress fails to deploy the Ingress Controller.

To create an NGINX Ingress Controller:

  1. Create a values.yaml file with the following content (assuming cloudbees-core is the namespace where CloudBees CI is deployed):

    rbac:
      create: true
    defaultBackend:
      enabled: false
    controller:
      ingressClass: "nginx"
      scope:
        enabled: "true"
        namespace: cloudbees-core
      service:
        externalTrafficPolicy: "Local"
  2. Type the following commands to deploy the configuration:

    helm install nginx-ingress \
                 stable/nginx-ingress \
                 --namespace ingress-nginx \
                 --values values.yaml \
                 --version 1.31.0