Pre-installation requirements for Kubernetes

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

Kubernetes requirements

The following items are required to install CloudBees CI on modern cloud platforms on Kubernetes:

  • A Kubernetes client with the currently supported version of Kubernetes, installed and configured on your local computer or a bastion host. Beta releases are not supported.

  • A cluster running a currently supported version of Kubernetes. Beta releases are not supported.

    • The cluster must have network access to container images (public Docker Hub or a private Docker Registry).

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

  • Kubernetes cluster Default Storage Class defined and ready to use.

    • Refer to the relevant Reference Architecture for AWS or On-premise - Storage Requirements section for more information.

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.

Storage considerations for CloudBees CI High Availability

You must have a storage class set up with ReadWriteMany access mode. CloudBees recommends configuring a hosted network filesystem.

If you prefer not to configure a hosted network filesystem, you can run NFS inside the cluster for non-production workloads, backed by the cluster’s default (ReadWriteOnce) persistent disk:

helm install --wait \ --namespace nfs \ --create-namespace \ --set persistence.enabled=true \ --set persistence.size=200Gi \ --repo https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/ \ --version 1.8.0 \ nfs nfs-server-provisioner

To request NFS for both the operations center and managed controllers:

OperationsCenter: Persistence: StorageClass: nfs

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.