Container Orchestration Jobs
The following topics describe job types for container orchestration platforms and services:
Job:AWS ECS
AWS Elastic Container Service (ECS) is a container management service that enables you to execute, stop, manage, and monitor containerized applications in a cluster.
To deploy and run an AWS ECS job, ensure that you have done the following:
-
Configured the Control-M Application Integrator plug-in, as described in Application Integrator Configuration.
-
Installed the AWS ECS plug-in with the provision image command (Control-M/EM 9.0.21 or higher) or the deploy jobtype command (Control-M/EM 9.0.20.200 or lower).
The following examples show how to define an AWS ECS job.
-
This JSON defines preset Control-M parameters:
Copy"AWS ECS_Job_1":
{
"Type": "Job:AWS ECS",
"ConnectionProfile": "ECS",
"Action": "Preset Json",
"ECS Cluster Name": "ECSIntegrationCluster",
"ECS Task Definition": "ECSIntegrationTask",
"Launch Type": "FARGATE",
"Assign Public IP": "True",
"Network Security Groups": "\"sg-01e4a5bfac4189d10\"",
"Network Subnets": "\"subnet-045ddaf41d4852fd7\", \"subnet-0b574cca721d462dc\", \"subnet-0e108b6ba4fc0c4d7\"",
"Override Container": "IntegrationURI",
"Override Command": "\"/bin/sh -c 'whoami'\"",
"Environment Variables": "{\"name\": \"var1\", \"value\": \"1\"}",
"Logs": "Get Logs",
"Status Polling Frequency":"10",
"Failure Tolerance":"5"
} -
This JSON defines job parameters via a submitted JSON body:
Copy"AWS ECS_Job_2":
{
"Type": "Job:AWS ECS",
"ConnectionProfile": "ECS",
"Action": "Manual Json",
"Parameters":
{
"cluster":"ECSIntegrationCluster",
"launchType":"FARGATE",
"networkConfiguration":
{
"awsvpcConfiguration":
{
"assignPublicIp":"ENABLED",
"securityGroups":["sg-01e4a5bfac4189d10"],
"subnets":["subnet-045ddaf41d4852fd7","subnet-0b574cca721d462dc","subnet-0e108b6ba4fc0c4d7"]
}
},
"overrides":
{
"containerOverrides":[
{
"command":["/bin/sh -c 'whoami'"],
"environment":[
{
"name":"var1",
"value":"hello"
} ],
"name":"IntegrationURI"
} ]
},
"taskDefinition":"ECSIntegrationTask"
},
"Logs": "Get Logs",
"Status Polling Frequency":"10",
"Failure Tolerance":"5"
}
The following table describes the AWS ECS job parameters.
Parameter |
Description |
---|---|
Connection Profile |
Defines the ConnectionProfile:AWS ECS name that connects Control-M to AWS ECS. |
Action |
Determines one of the following actions to perform on AWS ECS:
|
Parameters |
Defines parameters to submit as a JSON body, to control how the AWS ECS task runs. The JSON body replaces various other parameters described below, provided that you set the Action parameter to Manual Json. For a description of this JSON syntax, see RunTask in the AWS ECS API Reference. |
ECS Cluster Name |
Defines the ECS cluster on the AWS ECS platform where the job runs. An ECS cluster is a logical group of tasks and services. |
ECS Task Definition |
Defines the task definition on the AWS ECS platform. The task definition describes the container image, command, environment variables, and other parameters that run your application. |
Launch Type |
Determines the type infrastructure where your tasks and services run:
|
Assign Public IP |
Determines whether the job has a public internet protocol (IP). Valid Values:
|
Network Security Groups |
Defines which network security group your task is connected to, through the elastic network interface, which is a virtual network card that controls inbound and outbound traffic. |
Network Subnets |
Defines the virtual subnet, which determines the IP addresses for the task. |
Override Container |
Defines which override container to use that overrides the default container image, command, or other settings specified in the task definition. |
Override Command |
Defines the command to run in the container that overrides any command specified in the task definition. |
Environment Variables |
Defines the environment variables for the container, which are used to manage the container and pass information to the application that runs inside it. |
Logs |
Determines whether the logs from the AWS ECS platform appear at the end of the Control-M job output.
|
Status Polling Frequency |
Determines the number of seconds to wait before checking the status of the job. Default: 10 |
Failure Tolerance |
Determines the number of times to check the job status before ending Not OK. Default: 5 |
Job:GCP Cloud Run
GCP Cloud Run is a container management service that enables you to execute, stop, manage, and monitor containerized applications in a cluster.
To deploy and run a GCP Cloud Run job, ensure that you have done the following:
-
Configured the Control-M Application Integrator plug-in, as described in Application Integrator Configuration.
-
Installed the GCP Cloud Run plug-in with the provision image command (Control-M/EM 9.0.21 or higher) or the deploy jobtype command (Control-M/EM 9.0.20.200 or lower).
The following example shows how to define an GCP Cloud Run job.
"GCP Cloud Run_Job":
{
"Type": "Job:GCP Cloud Run",
"ConnectionProfile": "GCR",
"Project ID": "applied-lattice-123456",
"Location": "us-central1",
"Job Name": "testjob",
"Overrides Specification": "{}",
"Status Polling Frequency": "5"
}
The following table describes the GCP Cloud Run job parameters.
Parameter |
Description |
---|---|
ConnectionProfile |
Defines the ConnectionProfile:GCP Cloud Run name that connects Control-M to GCP Cloud Run. |
Project ID |
Defines the ID of the predefined Google Cloud project that holds your configured APIs, authentication information, billing details, and job resources. |
Location |
Determines the region where the GCP Cloud Run job executes. |
Job Name | Defines the unique job name set in GCP Cloud Run. |
Overrides Specification |
Defines the parameters to override in JSON format when the job executes, as shown in the following example: Copy
|
Status Polling Frequency |
Determines the number of seconds to wait before Control-M checks the job status. Default: 5 |
Job:Kubernetes
The Kubernetes job enables you to run a pod to completion in a Kubernetes-based cluster.
To deploy and run a Kubernetes job, ensure that you have set up Control-M for Kubernetes, as described in Setting Up Control-M for Kubernetes.
The following example shows how to define a Kubernetes job:
"Kubernetes_Job":
{
"Type": "Job:Kubernetes",
"ConnectionProfile": "KBN_CCP",
"Description": "Containerized Hello World",
"Job Spec Yaml" : "apiVersion: batch/v1\nkind: Job\nmetadata:\n name: {{job_yaml_file_params:jobname}}\nspec:\n template:\n spec:\n nodeSelector:\n kubernetes.io/os: linux\n containers:\n - name: busybox0\n image: busybox\n command: [\"echo\", \"Hello {{job_yaml_file_params:subject}}\"]\n restartPolicy: Never\n backoffLimit: 4\n",
"Job Spec Parameters" : "{\"jobname\":\"ctmjob-%%ORDERID\",\"subject\":\"Sweden\"}",
"Get Pod Logs": "Get Logs",
"OS Exit Code": "No print",
"Job Cleanup": "Keep",
"Job Status Polling Interval": "20"
}
The following table describes the Kubernetes job parameters.
Parameter |
Description |
---|---|
Connection Profile |
Defines the ConnectionProfile:Kubernetes name that connects Control-M to Kubernetes. |
Job Spec YAML |
Defines the settings of the job in Kubernetes. Convert the contents of the YAML file to JSON and include them in the JSON code. Tip: You can use the JQ command on Linux to convert the YAML file to JSON. |
Job Spec Parameters |
Defines input parameters required by the Kubernetes job, as name:value pairs. Copy
|
Get Pod Logs |
Determines whether to fetch logs of the pods of the Kubernetes job upon completion and append to the Control-M job output. Maximum Output Size (Megabytes): 10
Default: Get Logs |
OS Exit Code |
Determines whether to include an OS return code from the Application pod in the Control-M job output. This is supported for a Kubernetes job without retries (backofflimit: 0) of a single-container pod. Introduced in Control-M for Kubernetes 9.0.21.205 (plug-in version 1.0.02). Valid values:
Default: No print |
Job Cleanup |
Determines whether to delete Kubernetes resources that were created for the job.
Default: Delete Job |
Job Status Polling Interval |
Determines the number of seconds between status checks of the Kubernetes job. Default: 20 |