Control-M for Kubernetes Overview
Control-M for Kubernetes enables you to run one or more pods to completion in a Kubernetes cluster. This enables you to integrate Control-M capabilities, such as advanced scheduling criteria, status monitoring, and SLA management.
Control-M for Kubernetes also enables you to use the containerized Agents that run in Kubernetes to run additional jobs that consume remote services from outside of the Kubernetes cluster. This enables you to run the Agents on an optimized and highly scalable platform while executing a variety of workloads in a secure and fully automated manner.
The Control-M for Kubernetes solution contains the following components that you must obtain and deploy:
- A Control-M/Agent image that resides in the Docker Hub. You can deploy it directly from Docker Hub or copy it into your internal container registry.
The Agent image contains the following main components:- Control-M/Agent, including Control-M Application Integrator and Control-M Automation CLI.
- The back-end part of the Kubernetes plug-in, which is powered by Control-M Application Integrator.
- Java 21 (OpenJDK), provided in the default BMC-provided container image.
If you want to incorporate your own Java, BMC provides you with a different container image without Java.
- A Helm chart that is used to deploy the Agent image within the Kubernetes cluster in a specific namespace. The Helm chart is provided through an official BMC repository. You can use it remotely or download it to your environment and use it locally.
- The front-end part of the Kubernetes plug-in, which is provided through the BMC EPD site and you publish to your Control-M/Enterprise Manager.
The plug-in enables you to create and monitor Kubernetes jobs and connection profiles through Control-M Web. Connection profiles for this plug-in are centralized, that is, stored in the Control-M database and available to multiple Agents.
Kubernetes Solution Architecture
The following diagram demonstrates how the components of Control-M for Kubernetes are incorporated into a Kubernetes cluster and how they enable you to run one or more pods to completion.
In this example, two Control-M/Agents are deployed as cluster pods.
This setup has the following main features:
- The Agent pods run as a StatefulSet, so that the hostname is identified consistently across pod restarts. This enables Control-M/Server to identify the Control-M/Agent continuously and consistently.
- Agent pods use a persistent volume, so that job data and the Control-M/Agent state are kept during pod restarts.
- The Agents belong to a host group (automatically created), to ensure high availability and load balancing between the Agents.
- Agent to Server communication is set up as a persistent connection that is initiated by the Agent. This prevents the exposure of the Kubernetes cluster to outside connections.
- The Kubernetes plug-in adds a Kubernetes-type job to Control-M, which enables you to run one or more pods to completion in your Application namespace.
The plug-in is responsible for the following stages in the execution of the Kubernetes-type job in Control-M:- Starts a Kubernetes job entity that runs one or more Application pods in the Application namespace in the Kubernetes cluster.
- From Control-M, monitors the status of the job in Kubernetes until it ends when the Application pods finish running.
- Captures the pod logs for display in the Control-M job output.
- Deletes the Kubernetes job entity to free cluster resources.
- You can include additional plug-ins within the Agent pods, so that the containerized Agents can run additional job types and execute a variety of workloads that consume remote services from outside of the Kubernetes cluster (for example, on the cloud). Supported plug-ins are plug-ins that you create through Control-M Application Integrator and BMC-provided Control-M Integrations. Deployment of these plug-ins into the Agents is dynamic, based on ConfigMaps that list the plug-in IDs, as well as required certificates and proxy settings.
For an example of an end-to-end setup, see Example-of-Application-Team-Implementation. For an example of an upgrade, see Example-of-Upgrade.
Control-M for Kubernetes Component Versions
The following table lists the current versions of the various components in Control-M for Kubernetes:
Component | Current Version |
---|---|
Helm chart | 9.21.300 |
Agent image | 9.21.300 |
Control-M/Agent | 9.0.21.300 |
Control-M Application Integrator | 9.0.21.301 (Patch 1) |
Kubernetes plug-in | 2.1.00 |
Java | 21 |
For more information about how to obtain and deploy these components, see Setting-Up-Control-M-for-Kubernetes.