Pre-installation requirements for installing CloudBees CI on modern cloud platforms on EKS

3 minute read

The following items are required to install CloudBees CI on EKS:

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.

Amazon Web Services (AWS) requirements

The following items are required:

  • An AWS account.

  • An AWS EKS cluster with the following requirements:

    • Runs a currently supported version of Kubernetes. See Supported platforms for CloudBees CI on modern cloud platforms.

    • Has nodes that have at least 2 CPUs and 4 GiBs of memory. Be sure that the cluster meets the sizing and scaling requirements in CloudBees CI Reference Architecture - Kubernetes on AWS EKS. NOTE: Having fewer controllers on each VM means that losing a VM unexpectedly does not impact service.

    • Has N+1 worker nodes, where N is the number of managed controllers and +1 is the CloudBees operations center.

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

When installing CloudBees CI on EKS on AWS Outposts, there are some additional considerations:

  • Your EKS nodes must be created in the Outpost subnet.

  • You are unable to create an ELB in the same subnet as the Outpost, but it needs to be in the same VPC.

  • You must pre-create the volumes you intend to use and create the persistent volumes that connect to them.

Amazon Spot

Installing CloudBees CI agents on EKS using EKS managed node groups with Spot Instances requires significantly less operational effort compared to using self-managed nodes. Amazon EKS managed node groups follow Spot best practices by using Capacity Optimized allocation strategy to provision Spot instances from the deepest Spot pools. Amazon EKS managed node groups use Capacity Rebalancing to ensure Amazon EKS can gracefully drain and rebalance your Spot nodes automatically when a Spot node is at elevated risk of interruption.

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.

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?

Amazon Elastic Container Registery (ECR)

You can optionally configure your AWS CloudBees CI on modern cloud platforms deployment to work with AWS ECR. The AWS Elastic Container Registry (ECR) can:

  • Store Docker images for faster builds.

  • Manage Docker images for better repeatability.

  • Deploy Docker images for easier development.

This installation guide gives you an overview of using ECR with CloudBees CI on modern cloud platforms. Refer to the official documentation for full coverage of ECR:

Requirements for the machine where the installation is performed

You must have the following on the machine where you plan to perform the installation:

  • The kubectl application. Follow the instructions on the Kubernetes website to install it.

  • helm. Follow the instructions in the Helm Quickstart Guide to install the Helm client.

  • A valid kubernetes context to interact with the EKS cluster (link).

Validating system requirements

  • Run the command

    kubectl version

    and ensure the server version is displayed.

    Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T12:50:19Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"darwin/amd64"} Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T12:41:49Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}
  • Ensure you can run the helm command, for example by calling helm version.