Prerequisites for using Helm to install CloudBees Core

Kubernetes cluster requirements for CloudBees Core

CloudBees Core 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 Core).

  • 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 Core.

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 Core.

This administration workstation may be either the CloudBees Core 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 Core.

Adding 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 Core Helm chart. If you are unable or do not wish to use the CloudBees Core Helm Chart repository, then you can download the CloudBees Core Helm Chart from the same download site as the CloudBees Core installation package.

To add the CloudBees public Helm chart repository to your Helm environment:

  1. Type the following commands:

$ helm repo add cloudbees https://charts.cloudbees.com/public/cloudbees (1)
$ helm repo update (2)
1 Using helm repo add adds a new Helm chart repository to your Helm installation.
2 The helm repo update command updates your local Helm chart repository cache, which is used by Helm commands like helm search to improve performance.
Always run helm repo update before you execute helm search to ensure your cache is up to date.

Setting up an NGINX Ingress Controller

CloudBees Core requires an NGINX Ingress Controller.

You can skip this section if:

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

  • You plan to install a new controller as part of installing the CloudBees Core Helm chart. Using the Helm chart from CloudBees guarantees that the NGINX Ingress Controller meets CloudBees Core’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 Core, 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 Core 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