Pre-installation requirements for Azure Kubernetes Service

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.

Azure Kubernetes Service requirements

Before you can install CloudBees CI on Azure Kubernetes Service (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 supports premium disks (for example, Standard_D4s_v6). 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 sufficient input/output operations per second (IOPS), sufficient throughput, and low latency.

Make sure to use an instance type that supports premium disks (for example, Standard_D4s_v6). CloudBees CI has been tested with the Azure Disks 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

The StorageClass object defined above is an insecure example as it is accessible from anywhere in the same subnet. It should only be used for demonstration or testing purposes.

For production environments, you must set up a storage account with a private endpoint and the corresponding StorageClass object. Refer to the official Azure documentation site for additional information on this kind of set up.

Gateway API requirements

CloudBees CI uses the Kubernetes Gateway API to manage traffic routing. When Gateway API is enabled, CloudBees CI creates HTTPRoute resources for the operations center and all managed controllers.

Any conformant Gateway API implementation is supported. For tested implementations, refer to Kubernetes Gateway API supported implementations.

For the complete list of Gateway API prerequisites, refer to Verify Kubernetes Gateway API prerequisites.

Gateway API manages HTTP/HTTPS traffic only. CloudBees recommends WebSocket transport for external inbound agent communication, which uses the standard HTTP/HTTPS port and requires no additional configuration. For setup instructions, refer to Use WebSockets to connect controllers to the operations center.

If you use a Gateway API implementation that CloudBees has not tested, additional configuration may be required for TLS termination, session persistence, or namespace routing. Refer to the CloudBees CI Knowledge Base for guidance. CloudBees does not provide support for untested implementations. You must install and configure your Gateway API controller and adjust your CloudBees CI chart values according to your situation.

For High Availability (HA) controllers, refer to session persistence implementation support to verify Gateway API session persistence compatibility with your implementation.

Creating your AKS cluster

To create a Kubernetes cluster using AKS, refer to Create an Azure Kubernetes 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: