CloudBees CI on modern cloud platforms consists of the following components:
Managed controller (formerly known as Managed Master)
A type of controller that uses CloudBees’ proprietary tools and enterprise features to provide enhanced functionality for coordinating builds.
Managed controllers are provisioned and managed by the operations center, which creates all the necessary Kubernetes resources needed for provisioning and managing controllers.
A managed controller is specific to CloudBees CI on modern cloud platforms.
Managed controllers offer the following functionality:
Team controller (formerly known as Team Master)
A type of controller that uses CloudBees’ proprietary tools and enterprise features to provide enhanced functionality for coordinating builds. Team controllers provide CloudBees customers with a new user experience for onboarding their development teams.
Team controllers are provisioned and managed by the operations center. A team controller is specific to CloudBees CI on modern cloud platforms.
A team controller is similar to a managed controller, but lacks the full role-based access control and other configuration capabilities of a managed controller.
Team controllers allow for the following three default roles:
In most cases, managed controllers are preferable to team controllers. Use team controllers if you have small teams (less than 20 members) and do not require fine-grained access control.
External client controller (formerly External Client Master)
An existing client controller that is connected to a CloudBees CI cluster.
Existing controllers that are connected to operations center lack key benefits of managed controllers, such as high availability and automatic agent management. Whenever possible, administrators should use a managed controller with CloudBees CI on modern cloud platforms rather than connecting an existing client controller. The use-case for external client controllers is if you migrate from CloudBees CI on traditional platforms to CloudBees CI on modern cloud platforms.
An instance that provides centralized management of managed controllers and team controllers, and a central view into a CloudBees CI cluster. The operations center creates all the necessary Kubernetes resources to provision and manage a managed controller or team controller. The operations center includes built-in fault tolerance, which automatically restarts the operations center when it is unhealthy.
The operations center provides the following management functionality for managed controllers and team controllers:
A machine, container, or pod that handles the tasks of running builds, at the direction of a controller. Within the context of a CloudBees CI cluster, a build agent can be a shared resource for managed controllers or team controllers. A build agent can also be dedicated to a specific controller.
Two types of agents are available:
CloudBees CI on modern cloud platforms leverages the scaling abilities of Kubernetes to schedule build agents. Kubernetes build agents are contained in pods, where a pod is a group of one or more containers sharing a common storage system and network. A pod is the smallest deployable unit of computing that Kubernetes can create and manage. Pods are defined using pod templates.
The simplest configuration needed to get started in CloudBees CI on modern cloud platforms consists of the operations center and a managed controller or team controller that can provision ephemeral agents. CloudBees recommends that all jobs are executed in agents and not in controllers.
As the complexity of your organization’s requirements and build projects increases, CloudBees recommends provisioning more managed controllers or team controllers using the operations center for a distributed CI architecture.
Existing client controllers can be connected to your operations center in Kubernetes to facilitate the migration and promotion of jobs between client controllers and managed controllers/team controllers. After an existing client controller is connected to an operations center in CloudBees CI on modern cloud platforms, it is called an external client controller.
Static agents can also be connected to your managed controllers/team controllers or operations center (if it is a shared agent) to build jobs that do not use ephemeral agents (Kubernetes pods).
To understand which Kubernetes resources are deployed in your installation and learn important information about agent and managed controller provisioning, and ports needed, refer to the reference architecture for your Kubernetes platform.