config/crds/resources/apiextensions.k8s.io_v1_customresourcedefinition_batchjobs.batch.cnrm.cloud.google.com.yaml (1,416 lines of code) (raw):
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
cnrm.cloud.google.com/version: 0.0.0-dev
creationTimestamp: null
labels:
cnrm.cloud.google.com/managed-by-kcc: "true"
cnrm.cloud.google.com/system: "true"
name: batchjobs.batch.cnrm.cloud.google.com
spec:
group: batch.cnrm.cloud.google.com
names:
categories:
- gcp
kind: BatchJob
listKind: BatchJobList
plural: batchjobs
shortNames:
- gcpbatchjob
- gcpbatchjobs
singular: batchjob
preserveUnknownFields: false
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
- description: When 'True', the most recent reconcile of the resource succeeded
jsonPath: .status.conditions[?(@.type=='Ready')].status
name: Ready
type: string
- description: The reason for the value in 'Ready'
jsonPath: .status.conditions[?(@.type=='Ready')].reason
name: Status
type: string
- description: The last transition time for the value in 'Status'
jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
name: Status Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: BatchJob is the Schema for the BatchJob API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: BatchJobSpec defines the desired state of BatchJob
properties:
allocationPolicy:
description: Compute resource allocation for all TaskGroups in the
Job.
properties:
instances:
description: Describe instances that can be created by this AllocationPolicy.
Only instances[0] is supported now.
items:
properties:
blockProjectSSHKeys:
description: |-
Optional. Set this field to `true` if you want Batch to block
project-level SSH keys from accessing this job's VMs. Alternatively, you
can configure the job to specify a VM instance template that blocks
project-level SSH keys. In either case, Batch blocks project-level SSH
keys while creating the VMs for this job.
Batch allows project-level SSH keys for a job's VMs only if all
the following are true:
SSH keys.
Notably, you can override this behavior by manually updating a VM to
block or allow project-level SSH keys. For more information about
blocking project-level SSH keys, see the Compute Engine documentation:
https://cloud.google.com/compute/docs/connect/restrict-ssh-keys#block-keys
type: boolean
installGpuDrivers:
description: |-
Set this field true if you want Batch to help fetch drivers from a third
party location and install them for GPUs specified in
`policy.accelerators` or `instance_template` on your behalf. Default is
false.
For Container-Optimized Image cases, Batch will install the
accelerator driver following milestones of
https://cloud.google.com/container-optimized-os/docs/release-notes. For
non Container-Optimized Image cases, following
https://github.com/GoogleCloudPlatform/compute-gpu-installation/blob/main/linux/install_gpu_driver.py.
type: boolean
installOpsAgent:
description: Optional. Set this field true if you want Batch
to install Ops Agent on your behalf. Default is false.
type: boolean
instanceTemplate:
description: |-
Name of an instance template used to create VMs.
Named the field as 'instance_template' instead of 'template' to avoid
C++ keyword conflict.
Batch only supports global instance templates from the same project as
the job.
You can specify the global instance template as a full or partial URL.
type: string
policy:
description: InstancePolicy.
properties:
accelerators:
description: The accelerators attached to each VM instance.
items:
properties:
count:
description: The number of accelerators of this
type.
format: int64
type: integer
driverVersion:
description: |-
Optional. The NVIDIA GPU driver version that should be installed for this
type.
You can define the specific driver version such as "470.103.01",
following the driver version requirements in
https://cloud.google.com/compute/docs/gpus/install-drivers-gpu#minimum-driver.
Batch will install the specific accelerator driver if qualified.
type: string
installGpuDrivers:
description: 'Deprecated: please use instances[0].install_gpu_drivers
instead.'
type: boolean
type:
description: The accelerator type. For example,
"nvidia-tesla-t4". See `gcloud compute accelerator-types
list`.
type: string
type: object
type: array
bootDisk:
description: Boot disk to be created and attached to
each VM by this InstancePolicy. Boot disk will be
deleted when the VM is deleted. Batch API now only
supports booting from image.
properties:
diskInterface:
description: Local SSDs are available through both
"SCSI" and "NVMe" interfaces. If not indicated,
"NVMe" will be the default one for local ssds.
This field is ignored for persistent disks as
the interface is chosen automatically. See https://cloud.google.com/compute/docs/disks/persistent-disks#choose_an_interface.
type: string
imageRef:
description: |-
URL for a VM image to use as the data source for this disk.
For example, the following are all valid URLs:
* Specify the image by its family name:
projects/{project}/global/images/family/{image_family}
* Specify the image version:
projects/{project}/global/images/{image_version}
You can also use Batch customized image in short names.
The following image values are supported for a boot disk:
* `batch-debian`: use Batch Debian images.
* `batch-cos`: use Batch Container-Optimized images.
* `batch-hpc-rocky`: use Batch HPC Rocky Linux images.
oneOf:
- not:
required:
- external
required:
- name
- kind
- not:
anyOf:
- required:
- name
- required:
- namespace
- required:
- kind
required:
- external
properties:
external:
description: The external name of the referenced
resource
type: string
kind:
description: Kind of the referent.
type: string
name:
description: 'Name of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More
info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
type: object
sizeGB:
description: |-
Disk size in GB.
**Non-Boot Disk**:
If the `type` specifies a persistent disk, this field
is ignored if `data_source` is set as `image` or `snapshot`.
If the `type` specifies a local SSD, this field should be a multiple of
375 GB, otherwise, the final size will be the next greater multiple of
375 GB.
**Boot Disk**:
Batch will calculate the boot disk size based on source
image and task requirements if you do not speicify the size.
If both this field and the `boot_disk_mib` field in task spec's
`compute_resource` are defined, Batch will only honor this field.
Also, this field should be no smaller than the source disk's
size when the `data_source` is set as `snapshot` or `image`.
For example, if you set an image as the `data_source` field and the
image's default disk size 30 GB, you can only use this field to make the
disk larger or equal to 30 GB.
format: int64
type: integer
snapshot:
description: Name of a snapshot used as the data
source. Snapshot is not supported as boot disk
now.
type: string
type:
description: Disk type as shown in `gcloud compute
disk-types list`. For example, local SSD uses
type "local-ssd". Persistent disks and boot disks
use "pd-balanced", "pd-extreme", "pd-ssd" or "pd-standard".
If not specified, "pd-standard" will be used as
the default type for non-boot disks, "pd-balanced"
will be used as the default type for boot disks.
type: string
type: object
disks:
description: Non-boot disks to be attached for each
VM created by this InstancePolicy. New disks will
be deleted when the VM is deleted. A non-boot disk
is a disk that can be of a device with a file system
or a raw storage drive that is not ready for data
storage and accessing.
items:
properties:
deviceName:
description: Device name that the guest operating
system will see. It is used by Runnable.volumes
field to mount disks. So please specify the
device_name if you want Batch to help mount
the disk, and it should match the device_name
field in volumes.
type: string
existingDisk:
description: Name of an existing PD.
type: string
newDisk:
properties:
diskInterface:
description: Local SSDs are available through
both "SCSI" and "NVMe" interfaces. If not
indicated, "NVMe" will be the default one
for local ssds. This field is ignored for
persistent disks as the interface is chosen
automatically. See https://cloud.google.com/compute/docs/disks/persistent-disks#choose_an_interface.
type: string
imageRef:
description: |-
URL for a VM image to use as the data source for this disk.
For example, the following are all valid URLs:
* Specify the image by its family name:
projects/{project}/global/images/family/{image_family}
* Specify the image version:
projects/{project}/global/images/{image_version}
You can also use Batch customized image in short names.
The following image values are supported for a boot disk:
* `batch-debian`: use Batch Debian images.
* `batch-cos`: use Batch Container-Optimized images.
* `batch-hpc-rocky`: use Batch HPC Rocky Linux images.
oneOf:
- not:
required:
- external
required:
- name
- kind
- not:
anyOf:
- required:
- name
- required:
- namespace
- required:
- kind
required:
- external
properties:
external:
description: The external name of the
referenced resource
type: string
kind:
description: Kind of the referent.
type: string
name:
description: 'Name of the referent. More
info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
type: object
sizeGB:
description: |-
Disk size in GB.
**Non-Boot Disk**:
If the `type` specifies a persistent disk, this field
is ignored if `data_source` is set as `image` or `snapshot`.
If the `type` specifies a local SSD, this field should be a multiple of
375 GB, otherwise, the final size will be the next greater multiple of
375 GB.
**Boot Disk**:
Batch will calculate the boot disk size based on source
image and task requirements if you do not speicify the size.
If both this field and the `boot_disk_mib` field in task spec's
`compute_resource` are defined, Batch will only honor this field.
Also, this field should be no smaller than the source disk's
size when the `data_source` is set as `snapshot` or `image`.
For example, if you set an image as the `data_source` field and the
image's default disk size 30 GB, you can only use this field to make the
disk larger or equal to 30 GB.
format: int64
type: integer
snapshot:
description: Name of a snapshot used as the
data source. Snapshot is not supported as
boot disk now.
type: string
type:
description: Disk type as shown in `gcloud
compute disk-types list`. For example, local
SSD uses type "local-ssd". Persistent disks
and boot disks use "pd-balanced", "pd-extreme",
"pd-ssd" or "pd-standard". If not specified,
"pd-standard" will be used as the default
type for non-boot disks, "pd-balanced" will
be used as the default type for boot disks.
type: string
type: object
type: object
type: array
machineType:
description: The Compute Engine machine type.
type: string
minCPUPlatform:
description: The minimum CPU platform. See https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform.
type: string
provisioningModel:
description: The provisioning model.
type: string
reservation:
description: Optional. If not specified (default), VMs
will consume any applicable reservation. If "NO_RESERVATION"
is specified, VMs will not consume any reservation.
Otherwise, if specified, VMs will consume only the
specified reservation.
type: string
type: object
type: object
type: array
labels:
additionalProperties:
type: string
description: |-
Custom labels to apply to the job and all the Compute Engine resources
that both are created by this allocation policy and support labels.
Use labels to group and describe the resources they are applied to. Batch
automatically applies predefined labels and supports multiple `labels`
fields for each job, which each let you apply custom labels to various
resources. Label names that start with "goog-" or "google-" are
reserved for predefined labels. For more information about labels with
Batch, see
[Organize resources using
labels](https://cloud.google.com/batch/docs/organize-resources-using-labels).
type: object
location:
description: Location where compute resources should be allocated
for the Job.
properties:
allowedLocations:
description: |-
A list of allowed location names represented by internal URLs.
Each location can be a region or a zone.
Only one region or multiple zones in one region is supported now.
For example,
["regions/us-central1"] allow VMs in any zones in region us-central1.
["zones/us-central1-a", "zones/us-central1-c"] only allow VMs
in zones us-central1-a and us-central1-c.
Mixing locations from different regions would cause errors.
For example,
["regions/us-central1", "zones/us-central1-a", "zones/us-central1-b",
"zones/us-west1-a"] contains locations from two distinct regions:
us-central1 and us-west1. This combination will trigger an error.
items:
type: string
type: array
type: object
network:
description: |-
The network policy.
If you define an instance template in the `InstancePolicyOrTemplate` field,
Batch will use the network settings in the instance template instead of
this field.
properties:
networkInterfaces:
description: Network configurations.
items:
properties:
networkRef:
description: |-
The URL of an existing network resource.
You can specify the network as a full or partial URL.
For example, the following are all valid URLs:
* https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
* projects/{project}/global/networks/{network}
* global/networks/{network}
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: A reference to an externally managed
Compute Network resource. Should be in the format
`projects/{{projectID}}/global/networks/{{network}}`.
type: string
name:
description: The `name` field of a `ComputeNetwork`
resource.
type: string
namespace:
description: The `namespace` field of a `ComputeNetwork`
resource.
type: string
type: object
noExternalIPAddress:
description: Default is false (with an external IP address).
Required if no external public IP address is attached
to the VM. If no external public IP address, additional
configuration is required to allow the VM to access
Google Services. See https://cloud.google.com/vpc/docs/configure-private-google-access
and https://cloud.google.com/nat/docs/gce-example#create-nat
for more information.
type: boolean
subnetworkRef:
description: |-
The URL of an existing subnetwork resource in the network.
You can specify the subnetwork as a full or partial URL.
For example, the following are all valid URLs:
* https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}
* projects/{project}/regions/{region}/subnetworks/{subnetwork}
* regions/{region}/subnetworks/{subnetwork}
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: The ComputeSubnetwork selflink of form
"projects/{{project}}/regions/{{region}}/subnetworks/{{name}}",
when not managed by Config Connector.
type: string
name:
description: The `name` field of a `ComputeSubnetwork`
resource.
type: string
namespace:
description: The `namespace` field of a `ComputeSubnetwork`
resource.
type: string
type: object
type: object
type: array
type: object
placement:
description: The placement policy.
properties:
collocation:
description: UNSPECIFIED vs. COLLOCATED (default UNSPECIFIED).
Use COLLOCATED when you want VMs to be located close to
each other for low network latency between the VMs. No placement
policy will be generated when collocation is UNSPECIFIED.
type: string
maxDistance:
description: When specified, causes the job to fail if more
than max_distance logical switches are required between
VMs. Batch uses the most compact possible placement of VMs
even when max_distance is not specified. An explicit max_distance
makes that level of compactness a strict requirement. Not
yet implemented
format: int64
type: integer
type: object
serviceAccount:
description: |-
Defines the service account for Batch-created VMs. If omitted, the [default
Compute Engine service
account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account)
is used. Must match the service account specified in any used instance
template configured in the Batch job.
Includes the following fields:
* email: The service account's email address. If not set, the default
Compute Engine service account is used.
* scopes: Additional OAuth scopes to grant the service account, beyond the
default cloud-platform scope. (list of strings)
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: The `email` field of an `IAMServiceAccount` resource.
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
type: object
tags:
description: |-
Optional. Tags applied to the VM instances.
The tags identify valid sources or targets for network firewalls.
Each tag must be 1-63 characters long, and comply with
[RFC1035](https://www.ietf.org/rfc/rfc1035.txt).
items:
type: string
type: array
type: object
labels:
additionalProperties:
type: string
description: |-
Custom labels to apply to the job and any Cloud Logging
[LogEntry](https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry)
that it generates.
Use labels to group and describe the resources they are applied to. Batch
automatically applies predefined labels and supports multiple `labels`
fields for each job, which each let you apply custom labels to various
resources. Label names that start with "goog-" or "google-" are
reserved for predefined labels. For more information about labels with
Batch, see
[Organize resources using
labels](https://cloud.google.com/batch/docs/organize-resources-using-labels).
type: object
location:
description: Immutable. The location where the alloydb cluster should
reside.
type: string
logsPolicy:
description: Log preservation policy for the Job.
properties:
cloudLoggingOption:
description: Optional. When `destination` is set to `CLOUD_LOGGING`,
you can optionally set this field to configure additional settings
for Cloud Logging.
properties:
useGenericTaskMonitoredResource:
description: Optional. Set this field to `true` to change
the [monitored resource type](https://cloud.google.com/monitoring/api/resources)
for Cloud Logging logs generated by this Batch job from
the [`batch.googleapis.com/Job`](https://cloud.google.com/monitoring/api/resources#tag_batch.googleapis.com/Job)
type to the formerly used [`generic_task`](https://cloud.google.com/monitoring/api/resources#tag_generic_task)
type.
type: boolean
type: object
destination:
description: If and where logs should be saved.
type: string
logsPath:
description: When `destination` is set to `PATH`, you must set
this field to the path where you want logs to be saved. This
path can point to a local directory on the VM or (if congifured)
a directory under the mount path of any Cloud Storage bucket,
network file system (NFS), or writable persistent disk that
is mounted to the job. For example, if the job has a bucket
with `mountPath` set to `/mnt/disks/my-bucket`, you can write
logs to the root directory of the `remotePath` of that bucket
by setting this field to `/mnt/disks/my-bucket/`.
type: string
type: object
notifications:
description: Notification configurations.
items:
properties:
message:
description: The attribute requirements of messages to be sent
to this Pub/Sub topic. Without this field, no message will
be sent.
properties:
newJobState:
description: The new job state.
type: string
newTaskState:
description: The new task state.
type: string
type:
description: The message type.
type: string
type: object
pubsubTopicRef:
description: |-
The Pub/Sub topic where notifications for the job, like state
changes, will be published. If undefined, no Pub/Sub notifications
are sent for this job.
Specify the topic using the following format:
`projects/{project}/topics/{topic}`.
Notably, if you want to specify a Pub/Sub topic that is in a
different project than the job, your administrator must grant your
project's Batch service agent permission to publish to that topic.
For more information about configuring Pub/Sub notifications for
a job, see
https://cloud.google.com/batch/docs/enable-notifications.
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: If provided must be in the format `projects/[project_id]/topics/[topic_id]`.
type: string
name:
description: The `metadata.name` field of a `PubSubTopic`
resource.
type: string
namespace:
description: The `metadata.namespace` field of a `PubSubTopic`
resource.
type: string
type: object
type: object
type: array
priority:
description: Priority of the Job. The valid value range is [0, 100).
Default value is 0. Higher value indicates higher priority. A job
with higher priority value is more likely to run earlier if all
other requirements are satisfied.
format: int64
type: integer
projectRef:
description: The project that this resource belongs to.
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: The `projectID` field of a project, when not managed
by Config Connector.
type: string
kind:
description: The kind of the Project resource; optional but must
be `Project` if provided.
type: string
name:
description: The `name` field of a `Project` resource.
type: string
namespace:
description: The `namespace` field of a `Project` resource.
type: string
type: object
resourceID:
description: The BatchJob name. If not given, the metadata.name will
be used.
type: string
taskGroups:
description: Required. TaskGroups in the Job. Only one TaskGroup is
supported now.
items:
properties:
parallelism:
description: 'Max number of tasks that can run in parallel.
Default to min(task_count, parallel tasks per job limit).
See: [Job Limits](https://cloud.google.com/batch/quotas#job_limits).
Field parallelism must be 1 if the scheduling_policy is IN_ORDER.'
format: int64
type: integer
permissiveSSH:
description: When true, Batch will configure SSH to allow passwordless
login between VMs running the Batch tasks in the same TaskGroup.
type: boolean
requireHostsFile:
description: When true, Batch will populate a file with a list
of all VMs assigned to the TaskGroup and set the BATCH_HOSTS_FILE
environment variable to the path of that file. Defaults to
false. The host file supports up to 1000 VMs.
type: boolean
runAsNonRoot:
description: Optional. If not set or set to false, Batch uses
the root user to execute runnables. If set to true, Batch
runs the runnables using a non-root user. Currently, the non-root
user Batch used is generated by OS Login. For more information,
see [About OS Login](https://cloud.google.com/compute/docs/oslogin).
type: boolean
schedulingPolicy:
description: Scheduling policy for Tasks in the TaskGroup. The
default value is AS_SOON_AS_POSSIBLE.
type: string
taskCount:
description: Number of Tasks in the TaskGroup. Default is 1.
format: int64
type: integer
taskCountPerNode:
description: Max number of tasks that can be run on a VM at
the same time. If not specified, the system will decide a
value based on available compute resources on a VM and task
requirements.
format: int64
type: integer
taskEnvironments:
description: |-
An array of environment variable mappings, which are passed to Tasks with
matching indices. If task_environments is used then task_count should
not be specified in the request (and will be ignored). Task count will be
the length of task_environments.
Tasks get a BATCH_TASK_INDEX and BATCH_TASK_COUNT environment variable, in
addition to any environment variables set in task_environments, specifying
the number of Tasks in the Task's parent TaskGroup, and the specific Task's
index in the TaskGroup (0 through BATCH_TASK_COUNT - 1).
items:
properties:
encryptedVariables:
description: An encrypted JSON dictionary where the key/value
pairs correspond to environment variable names and their
values.
properties:
cipherText:
description: The value of the cipherText response
from the `encrypt` method.
type: string
kmsKeyRef:
description: The name of the KMS key that will be
used to decrypt the cipher text.
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: A reference to an externally managed
KMSCryptoKey. Should be in the format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`.
type: string
name:
description: The `name` of a `KMSCryptoKey` resource.
type: string
namespace:
description: The `namespace` of a `KMSCryptoKey`
resource.
type: string
type: object
type: object
secretVariables:
additionalProperties:
type: string
description: A map of environment variable names to Secret
Manager secret names. The VM will access the named secrets
to set the value of each environment variable.
type: object
variables:
additionalProperties:
type: string
description: A map of environment variable names to values.
type: object
type: object
type: array
taskSpec:
description: Required. Tasks in the group share the same task
spec.
properties:
computeResource:
description: ComputeResource requirements.
properties:
bootDiskMiB:
description: Extra boot disk size in MiB for each task.
format: int64
type: integer
cpuMilli:
description: |-
The milliCPU count.
`cpuMilli` defines the amount of CPU resources per task in milliCPU units.
For example, `1000` corresponds to 1 vCPU per task. If undefined, the
default value is `2000`.
If you also define the VM's machine type using the `machineType` in
[InstancePolicy](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicy)
field or inside the `instanceTemplate` in the
[InstancePolicyOrTemplate](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate)
field, make sure the CPU resources for both fields are compatible with each
other and with how many tasks you want to allow to run on the same VM at
the same time.
For example, if you specify the `n2-standard-2` machine type, which has 2
vCPUs each, you are recommended to set `cpuMilli` no more than `2000`, or
you are recommended to run two tasks on the same VM if you set `cpuMilli`
to `1000` or less.
format: int64
type: integer
memoryMiB:
description: |-
Memory in MiB.
`memoryMib` defines the amount of memory per task in MiB units.
If undefined, the default value is `2000`.
If you also define the VM's machine type using the `machineType` in
[InstancePolicy](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicy)
field or inside the `instanceTemplate` in the
[InstancePolicyOrTemplate](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate)
field, make sure the memory resources for both fields are compatible with
each other and with how many tasks you want to allow to run on the same VM
at the same time.
For example, if you specify the `n2-standard-2` machine type, which has 8
GiB each, you are recommended to set `memoryMib` to no more than `8192`,
or you are recommended to run two tasks on the same VM if you set
`memoryMib` to `4096` or less.
format: int64
type: integer
type: object
environment:
description: Environment variables to set before running
the Task.
properties:
encryptedVariables:
description: An encrypted JSON dictionary where the
key/value pairs correspond to environment variable
names and their values.
properties:
cipherText:
description: The value of the cipherText response
from the `encrypt` method.
type: string
kmsKeyRef:
description: The name of the KMS key that will be
used to decrypt the cipher text.
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: A reference to an externally managed
KMSCryptoKey. Should be in the format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`.
type: string
name:
description: The `name` of a `KMSCryptoKey`
resource.
type: string
namespace:
description: The `namespace` of a `KMSCryptoKey`
resource.
type: string
type: object
type: object
secretVariables:
additionalProperties:
type: string
description: A map of environment variable names to
Secret Manager secret names. The VM will access the
named secrets to set the value of each environment
variable.
type: object
variables:
additionalProperties:
type: string
description: A map of environment variable names to
values.
type: object
type: object
environments:
additionalProperties:
type: string
description: 'Deprecated: please use environment(non-plural)
instead.'
type: object
lifecyclePolicies:
description: Lifecycle management schema when any task in
a task group is failed. Currently we only support one
lifecycle policy. When the lifecycle policy condition
is met, the action in the policy will execute. If task
execution result does not meet with the defined lifecycle
policy, we consider it as the default policy. Default
policy means if the exit code is 0, exit task. If task
ends with non-zero exit code, retry the task with max_retry_count.
items:
properties:
action:
description: Action to execute when ActionCondition
is true. When RETRY_TASK is specified, we will retry
failed tasks if we notice any exit code match and
fail tasks if no match is found. Likewise, when
FAIL_TASK is specified, we will fail tasks if we
notice any exit code match and retry tasks if no
match is found.
type: string
actionCondition:
description: Conditions that decide why a task failure
is dealt with a specific action.
properties:
exitCodes:
description: Exit codes of a task execution. If
there are more than 1 exit codes, when task
executes with any of the exit code in the list,
the condition is met and the action will be
executed.
items:
format: int32
type: integer
type: array
type: object
type: object
type: array
maxRetryCount:
description: Maximum number of retries on failures. The
default, 0, which means never retry. The valid value range
is [0, 10].
format: int32
type: integer
maxRunDuration:
description: Maximum duration the task should run before
being automatically retried (if enabled) or automatically
failed. Format the value of this field as a time limit
in seconds followed by `s`—for example, `3600s`
for 1 hour. The field accepts any value between 0 and
the maximum listed for the `Duration` field type at https://protobuf.dev/reference/protobuf/google.protobuf/#duration;
however, the actual maximum run time for a job will be
limited to the maximum run time for a job listed at https://cloud.google.com/batch/quotas#max-job-duration.
type: string
runnables:
description: |-
Required. The sequence of one or more runnables (executable scripts,
executable containers, and/or barriers) for each task in this task group to
run. Each task runs this list of runnables in order. For a task to succeed,
all of its script and container runnables each must meet at least one of
the following conditions:
`ignore_exit_status` subfield.
items:
properties:
alwaysRun:
description: |-
By default, after a Runnable fails, no further Runnable are executed. This
flag indicates that this Runnable must be run even if the Task has already
failed. This is useful for Runnables that copy output files off of the VM
or for debugging.
The always_run flag does not override the Task's overall max_run_duration.
If the max_run_duration has expired then no further Runnables will execute,
not even always_run Runnables.
type: boolean
background:
description: |-
Normally, a runnable that doesn't exit causes its task to fail. However,
you can set this field to `true` to configure a background runnable.
Background runnables are allowed continue running in the background while
the task executes subsequent runnables. For example, background runnables
are useful for providing services to other runnables or providing
debugging-support tools like SSH servers.
Specifically, background runnables are killed automatically (if they have
not already exited) a short time after all foreground runnables have
completed. Even though this is likely to result in a non-zero exit status
for the background runnable, these automatic kills are not treated as task
failures.
type: boolean
barrier:
description: Barrier runnable.
properties:
name:
description: Barriers are identified by their
index in runnable list. Names are not required,
but if present should be an identifier.
type: string
type: object
container:
description: Container runnable.
properties:
blockExternalNetwork:
description: If set to true, external network
access to and from container will be blocked,
containers that are with block_external_network
as true can still communicate with each other,
network cannot be specified in the `container.options`
field.
type: boolean
commands:
description: Required for some container images.
Overrides the `CMD` specified in the container.
If there is an `ENTRYPOINT` (either in the container
image or with the `entrypoint` field below)
then these commands are appended as arguments
to the `ENTRYPOINT`.
items:
type: string
type: array
enableImageStreaming:
description: |-
Optional. If set to true, this container runnable uses Image streaming.
Use Image streaming to allow the runnable to initialize without
waiting for the entire container image to download, which can
significantly reduce startup time for large container images.
When `enableImageStreaming` is set to true, the container
runtime is [containerd](https://containerd.io/) instead of Docker.
Additionally, this container runnable only supports the following
`container` subfields: `imageUri`,
`commands[]`, `entrypoint`, and
`volumes[]`; any other `container` subfields are ignored.
For more information about the requirements and limitations for using
Image streaming with Batch, see the [`image-streaming`
sample on
GitHub](https://github.com/GoogleCloudPlatform/batch-samples/tree/main/api-samples/image-streaming).
type: boolean
entrypoint:
description: Required for some container images.
Overrides the `ENTRYPOINT` specified in the
container.
type: string
imageURI:
description: Required. The URI to pull the container
image from.
type: string
options:
description: Required for some container images.
Arbitrary additional options to include in the
`docker run` command when running this container—for
example, `--network host`. For the `--volume`
option, use the `volumes` field for the container.
type: string
username:
description: |-
Required if the container image is from a private Docker registry. The
username to login to the Docker registry that contains the image.
You can either specify the username directly by using plain text or
specify an encrypted username by using a Secret Manager secret:
`projects/*/secrets/*/versions/*`. However, using a secret is
recommended for enhanced security.
Caution: If you specify the username using plain text, you risk the
username being exposed to any users who can view the job or its logs.
To avoid this risk, specify a secret that contains the username instead.
Learn more about [Secret
Manager](https://cloud.google.com/secret-manager/docs/) and [using
Secret Manager with
Batch](https://cloud.google.com/batch/docs/create-run-job-secret-manager).
type: string
volumes:
description: |-
Volumes to mount (bind mount) from the host machine files or directories
into the container, formatted to match `--volume` option for the
`docker run` command—for example, `/foo:/bar` or `/foo:/bar:ro`.
If the `TaskSpec.Volumes` field is specified but this field is not, Batch
will mount each volume from the host machine to the container with the
same mount path by default. In this case, the default mount option for
containers will be read-only (`ro`) for existing persistent disks and
read-write (`rw`) for other volume types, regardless of the original
mount options specified in `TaskSpec.Volumes`. If you need different
mount settings, you can explicitly configure them in this field.
items:
type: string
type: array
type: object
displayName:
description: Optional. DisplayName is an optional
field that can be provided by the caller. If provided,
it will be used in logs and other outputs to identify
the script, making it easier for users to understand
the logs. If not provided the index of the runnable
will be used for outputs.
type: string
environment:
description: Environment variables for this Runnable
(overrides variables set for the whole Task or TaskGroup).
properties:
encryptedVariables:
description: An encrypted JSON dictionary where
the key/value pairs correspond to environment
variable names and their values.
properties:
cipherText:
description: The value of the cipherText response
from the `encrypt` method.
type: string
kmsKeyRef:
description: The name of the KMS key that
will be used to decrypt the cipher text.
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: A reference to an externally
managed KMSCryptoKey. Should be in the
format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`.
type: string
name:
description: The `name` of a `KMSCryptoKey`
resource.
type: string
namespace:
description: The `namespace` of a `KMSCryptoKey`
resource.
type: string
type: object
type: object
secretVariables:
additionalProperties:
type: string
description: A map of environment variable names
to Secret Manager secret names. The VM will
access the named secrets to set the value of
each environment variable.
type: object
variables:
additionalProperties:
type: string
description: A map of environment variable names
to values.
type: object
type: object
ignoreExitStatus:
description: Normally, a runnable that returns a non-zero
exit status fails and causes the task to fail. However,
you can set this field to `true` to allow the task
to continue executing its other runnables even if
this runnable fails.
type: boolean
labels:
additionalProperties:
type: string
description: Labels for this Runnable.
type: object
script:
description: Script runnable.
properties:
path:
description: |-
The path to a script file that is accessible from the host VM(s).
Unless the script file supports the default `#!/bin/sh` shell
interpreter, you must specify an interpreter by including a
[shebang line](https://en.wikipedia.org/wiki/Shebang_(Unix) as the
first line of the file. For example, to execute the script using bash,
include `#!/bin/bash` as the first line of the file. Alternatively,
to execute the script using Python3, include `#!/usr/bin/env python3`
as the first line of the file.
type: string
text:
description: |-
The text for a script.
Unless the script text supports the default `#!/bin/sh` shell
interpreter, you must specify an interpreter by including a
[shebang line](https://en.wikipedia.org/wiki/Shebang_(Unix) at the
beginning of the text. For example, to execute the script using bash,
include `#!/bin/bash\n` at the beginning of the text. Alternatively,
to execute the script using Python3, include `#!/usr/bin/env python3\n`
at the beginning of the text.
type: string
type: object
timeout:
description: Timeout for this Runnable.
type: string
type: object
type: array
volumes:
description: Volumes to mount before running Tasks using
this TaskSpec.
items:
properties:
deviceName:
description: Device name of an attached disk volume,
which should align with a device_name specified
by job.allocation_policy.instances[0].policy.disks[i].device_name
or defined by the given instance template in job.allocation_policy.instances[0].instance_template.
type: string
gcs:
description: A Google Cloud Storage (GCS) volume.
properties:
remotePath:
description: 'Remote path, either a bucket name
or a subdirectory of a bucket, e.g.: bucket_name,
bucket_name/subdirectory/'
type: string
type: object
mountOptions:
description: |-
Mount options vary based on the type of storage volume:
* For a Cloud Storage bucket, all the mount options provided
by
the [`gcsfuse` tool](https://cloud.google.com/storage/docs/gcsfuse-cli)
are supported.
* For an existing persistent disk, all mount options provided by the
[`mount` command](https://man7.org/linux/man-pages/man8/mount.8.html)
except writing are supported. This is due to restrictions of
[multi-writer
mode](https://cloud.google.com/compute/docs/disks/sharing-disks-between-vms).
* For any other disk or a Network File System (NFS), all the
mount options provided by the `mount` command are supported.
items:
type: string
type: array
mountPath:
description: The mount path for the volume, e.g. /mnt/disks/share.
type: string
nfs:
description: A Network File System (NFS) volume. For
example, a Filestore file share.
properties:
remotePath:
description: Remote source path exported from
the NFS, e.g., "/share".
type: string
server:
description: The IP address of the NFS.
type: string
type: object
type: object
type: array
type: object
type: object
type: array
required:
- location
- projectRef
type: object
status:
description: BatchJobStatus defines the config connector machine state
of BatchJob
properties:
conditions:
description: Conditions represent the latest available observations
of the object's current state.
items:
properties:
lastTransitionTime:
description: Last time the condition transitioned from one status
to another.
type: string
message:
description: Human-readable message indicating details about
last transition.
type: string
reason:
description: Unique, one-word, CamelCase reason for the condition's
last transition.
type: string
status:
description: Status is the status of the condition. Can be True,
False, Unknown.
type: string
type:
description: Type is the type of the condition.
type: string
type: object
type: array
externalRef:
description: A unique specifier for the BatchJob resource in GCP.
type: string
observedGeneration:
description: ObservedGeneration is the generation of the resource
that was most recently observed by the Config Connector controller.
If this is equal to metadata.generation, then that means that the
current reported status reflects the most recent desired state of
the resource.
format: int64
type: integer
observedState:
description: ObservedState is the state of the resource as most recently
observed in GCP.
properties:
createTime:
description: Output only. When the Job was created.
type: string
name:
description: 'Output only. Job name. For example: "projects/123456/locations/us-central1/jobs/job01".'
type: string
status:
description: Output only. Job status. It is read only for users.
properties:
runDuration:
description: The duration of time that the Job spent in status
RUNNING.
type: string
state:
description: Job state
type: string
statusEvents:
description: Job status events
items:
properties:
description:
description: Description of the event.
type: string
eventTime:
description: The time this event occurred.
type: string
taskExecution:
description: Task Execution. This field is only defined
for task-level status events where the task fails.
properties:
exitCode:
description: |-
The exit code of a finished task.
If the task succeeded, the exit code will be 0. If the task failed but not
due to the following reasons, the exit code will be 50000.
Otherwise, it can be from different sources:
* Batch known failures:
https://cloud.google.com/batch/docs/troubleshooting#reserved-exit-codes.
* Batch runnable execution failures; you can rely on Batch logs to further
diagnose: https://cloud.google.com/batch/docs/analyze-job-using-logs. If
there are multiple runnables failures, Batch only exposes the first error.
format: int32
type: integer
type: object
taskState:
description: Task State. This field is only defined
for task-level status events.
type: string
type:
description: Type of the event.
type: string
type: object
type: array
type: object
taskGroups:
description: Required. TaskGroups in the Job. Only one TaskGroup
is supported now.
items:
properties:
name:
description: 'Output only. TaskGroup name. The system generates
this field based on parent Job name. For example: "projects/123456/locations/us-west1/jobs/job01/taskGroups/group01".'
type: string
type: object
type: array
uid:
description: Output only. A system generated unique ID for the
Job.
type: string
updateTime:
description: Output only. The last time the Job was updated.
type: string
type: object
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}