Pre-installation requirements for AKS

3 minute read

For details about supported platforms for CloudBees CI on modern cloud platforms, such as supported Kubernetes, Helm, and NFS versions, refer to Supported platforms for CloudBees CI on modern cloud platforms.

Installing cbsupport

Before installing CloudBees CI on modern cloud platforms, you should install the cbsupport command-line tool. You can use cbsupport to collect data commonly required for supporting CloudBees products. You can then send that data to the CloudBees Support team to troubleshoot any issues with your CloudBees CI on modern cloud platforms solution.

For instructions on how to install cbsupport, refer to the cbsupport CLI documentation.

AKS requirements

Before you can install CloudBees CI on AKS using the CloudBees installer, you must have the following items configured correctly. Failure to complete the pre-installation checklist correctly may lead to installation errors and delayed installation.

  • Install and configure a currently supported version of Kubernetes on your local computer or bastion host.

  • Set up an AKS cluster with the following requirements:

    • Runs a currently supported version of Kubernetes.

    • Has nodes that have at least 2 CPUs and 4 GiBs of memory, so nodes have 1 full CPU/1GiB available after running a controller with default settings.

    • Uses an instance type that allows premium disks (for example: Standard_D4s_v3). CloudBees CI has been tested with the Azure Disks Container Storage Interface (CSI) driver.

    • Has network access to container images, either a public Docker Hub or a private Docker Registry).

  • Create a CloudBees CI namespace in the cluster with permissions to create Role and RoleBinding objects.

  • Define a Kubernetes cluster Default Storage Class.

Storage requirements

Dynamic provisioning is required to create persistent volumes. If you don’t enable dynamic provisioning, you will have to manually create a persistent volume.

Because Jenkins is highly dependent upon the filesystem, the underlying storage provider must provide minimal input/output operations per second (IOPS) and latency.

Make sure to use premium disks (for example: Standard_D4s_v3). CloudBees CI has been tested with the Azure Disks Container Storage Interface (CSI) driver.

Table 1. Storage recommendations for AKS
Single AZ Multiple AZ High Availability (HA)

Azure Disk

Azure Files (CIFS)

Azure Files (NFS)

Install High Availability on AKS

High Availability installation on Azure Kubernetes Service requires a new storage class.

  1. Set a storage class with ReadWriteMany access mode.

    1. The default storage classes in Azure Files use Common Internet File System (CIFS) protocols, which are not compatible with CloudBees CI. Instead, set up a new storage class using the Network File System (NFS).

    2. For more information, refer to the Azure documentation on NFS file shares.

    3. To create the storage class, use the following script:

      kubectl apply -f - <<EOF
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: azurefile-csi-premium-nfs
      parameters:
        skuName: Premium_LRS
        protocol: nfs
      provisioner: file.csi.azure.com
      reclaimPolicy: Delete
      volumeBindingMode: Immediate
      allowVolumeExpansion: true
      EOF

Ingress requirements

CloudBees CI creates one Ingress object for the operations center and one for each controller. If you do not use subdomains, the operations center and controllers share the same hostname by default. Therefore, you must use an Ingress controller that supports multiple Ingresses using the same hostname.

Inbound agents use WebSockets to connect to controllers, so the Ingress controller and the corresponding load balancer should support WebSockets.

If you use TCP to connect to inbound agents, the only supported Ingress controller is NGINX Ingress Controller.

If you use the NGINX Ingress Controller, an IngressClass object is required. The CloudBees CI on modern cloud platforms installation will fail without one. For more information, refer to What is an IngressClass and why is it important for users of Ingress NGINX Controller now?

Creating your AKS cluster

To create a Kubernetes cluster using Azure Kubernetes Service (AKS), refer to Create an Azure Container Service (AKS) cluster on the Microsoft Azure website.

More information on administering an AKS cluster is available from the full documentation.

More information on Kubernetes concepts is available from the Kubernetes site, including: