pod
The pod directive defines pod-specific settings, such as environment variables, secrets, and config maps, when using the Kubernetes executor.
For example:
process echo {
pod env: 'MESSAGE', value: 'hello world'
script:
"""
echo $MESSAGE
"""
}
The above snippet defines an environment variable named MESSAGE whose value is 'hello world'.
Pod settings can be specified in Nextflow configuration:
// single setting
process.pod = [env: 'MESSAGE', value: 'hello world']
// multiple settings
process.pod = [
[env: 'MESSAGE', value: 'hello world'],
[secret: 'my-secret/key1', mountPath: '/etc/file.txt']
]
The following options are available:
affinity: <config>
Specifies the pod affinity with the given configuration.
annotation: '<name>', value: '<value>'
Can be specified multiple times
Defines a pod annotation with the given name and value.
automountServiceAccountToken: true | false
Specifies whether to automount service account token into the pod (default: true).
config: '<configMap>/<key>', mountPath: '</absolute/path>'
Can be specified multiple times
Mounts a ConfigMap with name and optional key to the given path. If the key is omitted, the path is interpreted as a directory and all entries in the ConfigMap are exposed in that path.
csi: '<config>', mountPath: '</absolute/path>'
Can be specified multiple times
Mounts a CSI ephemeral volume with the given configuration to the given path.
emptyDir: <config>, mountPath: '</absolute/path>'
Can be specified multiple times
Mounts an emptyDir with the given configuration to the given path.
env: '<name>', config: '<configMap>/<key>'
Can be specified multiple times
Defines an environment variable whose value is defined by the given ConfigMap and key.
env: '<name>', fieldPath: '<fieldPath>'
Can be specified multiple times
Defines an environment variable whose value is defined by the given field path value.
For example, the following pod option:
process.pod = [env: 'MY_NODE_NAME', fieldPath: 'spec.nodeName']
Maps to the following pod spec:
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
env: '<name>', secret: '<secret>/<key>'
Can be specified multiple times
Defines an environment variable whose value is defined by the given Secret and key.
env: '<name>', value: '<value>'
Can be specified multiple times
Defines an environment variable with the given name and value.
hostPath: '/host/absolute/path', mountPath: '</pod/absolute/path>'
Can be specified multiple times
Allows creating hostPath volume and access it with the specified mountPath in the pod.
imagePullPolicy: 'IfNotPresent' | 'Always' | 'Never'
Specifies the image pull policy used by the pod to pull the container image.
imagePullSecret: '<name>'
Specifies the image pull secret used to access a private container image registry.
label: '<name>', value: '<value>'
Can be specified multiple times
Defines a pod label with the given name and value.
nodeSelector: <config>
Specifies the node selector with the given configuration.
The configuration can be a map or a string:
// map
process.pod = [nodeSelector: [disktype: 'ssd', cpu: 'intel']]
// string
process.pod = [nodeSelector: 'disktype=ssd,cpu=intel']
priorityClassName: '<name>'
Specifies the priority class name for pods.
privileged: true | false
Specifies whether the pod should run as a privileged container (default: false).
runAsUser: '<uid>'
Specifies the user ID with which to run the container. Shortcut for the securityContext option.
runtimeClassName: '<name>'
Specifies the runtime class.
schedulerName: '<name>'
Specifies which scheduler is used to schedule the container.
secret: '<secret>/<key>', mountPath: '</absolute/path>'
Can be specified multiple times
Mounts a Secret with name and optional key to the given path. If the key is omitted, the path is interpreted as a directory and all entries in the Secret are exposed in that path.
securityContext: <config>
Specifies the pod security context with the given configuration.
toleration: <config>
Can be specified multiple times
Specifies the pod toleration with the given configuration.
The configuration should be a map corresponding to a single toleration rule. For example, the following pod options:
process.pod = [
[toleration: [key: 'key1', operator: 'Equal', value: 'value1', effect: 'NoSchedule']],
[toleration: [key: 'key1', operator: 'Exists', effect: 'NoSchedule']],
]
Maps to the following pod spec:
tolerations:
- key: "key1"
operator: "Equal"
value: "value1"
effect: "NoSchedule"
- key: "key1"
operator: "Exists"
effect: "NoSchedule"
ttlSecondsAfterFinished
Specifies the TTL mechanism for finished jobs in seconds. Applies to both successful and failed jobs.
volumeClaim: '<name>', mountPath: '</absolute/path>' [, subPath: '<path>', readOnly: true | false]
Can be specified multiple times
Mounts a Persistent volume claim with the given name to the given path.
The subPath option can be used to mount a sub-directory of the volume instead of its root.
The readOnly option can be used to mount the volume as read-only (default: false)