Skip to main content
A DaemonSet keeps one pod running on every eligible node of its subnet. A node is eligible when it is admitted to the DaemonSet’s subnet, belongs to the fleet the pod template’s placement names (when it names one), is capacity the DaemonSet’s account may run on, and advertises what the pod template needs. The pod count follows that set as nodes join and leave; the manifest states no replica count. Each pod is bound to its node for life: a failed pod is replaced on the same node and is never placed on another.

Minimal manifest

Example manifest

Field reference

kindstringRequired

Resource kind. The value is case-sensitive.

Value DaemonSet

metadataobjectRequired

Top-level workload metadata.

metadata.namespaceobjectOptional

Namespace scope embedded in the manifest. Scoped SDK clients populate it when omitted and refuse a manifest that states a different scope.

Format Explicit scope or SDK client scope

metadata.namespace.accountIdstringOptional

Account that owns the Namespace.

Format 12-digit account ID

metadata.namespace.namespacestringOptional

Namespace name within the Account.

metadata.subnetstringOptional

Canonical subnet identifier where the workload should run.

Format Explicit scope or SDK placement

metadata.namestringRequired

Stable workload name within the namespace.

metadata.labelsmap[string]stringOptional

User-defined labels for grouping, filtering, and ownership metadata.

metadata.annotationsmap[string]stringOptional

User-defined annotations for descriptive metadata that is not used for identity.

specobjectRequired

Desired DaemonSet configuration.

spec.controllerobjectOptional

The resource that controls this DaemonSet. It is set only at creation, only by a caller the platform authorizes as that controller, and never changes afterwards; the platform never adopts a DaemonSet by matching its name or labels.

spec.controller.kindstringRequired

Kind of the controlling resource, as its lowercase resource kind token.

Example supervisor

spec.controller.idstringRequired

ID of the controlling resource: the identity it keeps for its whole life.

Format Canonical UUID

spec.strategyobjectRequired

DaemonSet rollout strategy.

spec.strategy.typestringRequired

Rollout strategy type.

Value RollingUpdate

spec.strategy.rollingUpdateobjectOptional

Rolling update controls. When omitted, the documented defaults of each control apply.

spec.strategy.rollingUpdate.maxUnavailableintegerOptional

Maximum number of connected nodes that may be without a ready pod because of the update.

Default 1

spec.strategy.rollingUpdate.maxSurgeintegerOptional

Maximum number of nodes that may run the new pod beside the old one before the old one stops.

Default 0

spec.revisionHistoryLimitintegerOptional

Number of prior DaemonSet revisions to retain.

Default 10

spec.templateobjectRequired

Pod template run on every eligible node.

spec.template.metadataobjectOptional

Metadata copied to pods created from this template.

spec.template.metadata.labelsmap[string]stringOptional

Labels copied to pods created from this template.

spec.template.metadata.annotationsmap[string]stringOptional

Annotations copied to pods created from this template.

spec.template.specobjectRequired

Pod spec used by this template.

spec.template.spec.restartPolicystringOptional

Container restart behavior.

Possible enum values:

  • always
  • on_failure
  • never
spec.template.spec.platformstringOptional

Workload OS and architecture. If omitted, IDYL resolves the platform from policy and available capacity.

Possible enum values:

  • linux/amd64
  • linux/arm64
spec.template.spec.isolationobjectOptional

Requested execution isolation boundary, with any settings the chosen class defines. If omitted, IDYL resolves isolation from subnet policy.

Possible enum values:

  • container
  • secure-container
  • microvm
spec.template.spec.isolation.classstringRequired

Requested execution isolation boundary.

Possible enum values:

  • container
  • secure-container
  • microvm
spec.template.spec.isolation.microvmobjectOptional

Settings only the microvm class defines. Accepted only when class is microvm; any other class is refused when this block is present.

spec.template.spec.isolation.microvm.confidentialbooleanOptional

Requests attested confidential execution. The workload is placed only on a runtime class advertising confidential execution, runs inside a hardware-attested confidential guest, and receives Vault material and Filesystem attachment credentials only after that attestation is verified. False, the zero value, requests none of this.

spec.template.spec.networkobjectOptional

Workload network intent. If omitted, the server records class internet, whatever the isolation class.

Possible enum values:

  • none
  • internet
  • restricted-egress
  • unrestricted
spec.template.spec.network.classstringRequired

Requested workload network policy. Required whenever the network block is present. A pod spec that omits the whole network block is admitted with class internet, whatever its isolation class.

Possible enum values:

  • none
  • internet
  • restricted-egress
  • unrestricted
spec.template.spec.network.egressobjectOptional

Allowed outbound destinations for restricted-egress workloads.

Format Restricted egress allow rules

spec.template.spec.network.egress.allowarray[string]Optional

Structured allow rules such as “dns” or “tcp:443:api.example.com”. TCP targets must be DNS hostnames, not IP literals.

Possible enum values:

  • dns
  • tcp:<port>:<dns-hostname>
spec.template.spec.network.egress.denyLocalNetworksbooleanOptional

Must be true when network.egress.allow is set. Local networks remain denied while the listed destinations are allowed.

Value true

spec.template.spec.identityobjectOptional

Managed workload identity intent. If omitted, managed identity applies.

Possible enum values:

  • managed
  • none

default managed

spec.template.spec.identity.modestringRequired

Managed workload identity mode. A present identity block must state the mode explicitly; omit the entire block to use the managed default.

Possible enum values:

  • managed
  • none
spec.template.spec.gpuquantity stringOptional

Pod-level GPU requirement. GPU is a physical host device requirement, not a per-container resource. All containers in the pod share GPU access.

Examples h100, 2:h100, nvidia:24Gi

spec.template.spec.requiremap[string]stringOptional

Host capability requirements, for example cuda: ”>=13.0”. The pod is scheduled only on nodes that satisfy every requirement.

Format Exact version or >= minimum version

spec.template.spec.placementobjectOptional

Restricts scheduling to a fleet or a single node inside the workload’s subnet. If omitted, the pod may run anywhere in the subnet.

Format Exactly one of fleet or node

spec.template.spec.placement.fleetstringOptional

Restricts scheduling to eligible members of this fleet.

Format 12-digit fleet ID

spec.template.spec.placement.nodestringOptional

Restricts scheduling to exactly this node.

Format Node ID

spec.template.spec.containersarrayRequired

Containers that run in the pod.

Requirement At least one container

spec.template.spec.containers[].namestringRequired

Container name, unique within the pod.

spec.template.spec.containers[].imageURIstringRequired

Container image reference, such as nginx:latest, ubuntu:22.04, or a private registry image.

spec.template.spec.containers[].imageDigeststringOptional

Optional image digest for verification, for example sha256:abc123…. When provided, it is appended to the registry image reference as image@sha256:abc123.

Example sha256:…

spec.template.spec.containers[].imagePullPolicystringOptional

When the runtime should pull the image.

Possible enum values:

  • always
  • never
  • if_not_present
spec.template.spec.containers[].imagePullCredentialRefobjectOptional

References a RegistryCredential in the workload namespace for image pulls. This type cannot carry a Vault Secret or TLSCertificate.

Format name identifies a RegistryCredential

spec.template.spec.containers[].imagePullCredentialRef.namestringRequired

RegistryCredential name in the workload namespace.

spec.template.spec.containers[].commandarray[string]Optional

Overrides the container image’s ENTRYPOINT. If empty, the image’s default ENTRYPOINT is used. If set without args, the image’s default CMD is still used with the new entrypoint.

spec.template.spec.containers[].argsarray[string]Optional

Overrides the container image’s CMD. If empty, the image’s default CMD is used.

spec.template.spec.containers[].portsarrayOptional

Named ports the container listens on. A stream addressed to a port’s name is delivered by the Pod’s own sidecar, authenticated, to 127.0.0.1:<containerPort>. Declaring a port publishes nothing outside the Pod on its own. Names, and pairs of port number and protocol, are unique across all containers of the Pod.

spec.template.spec.containers[].ports[].namestringRequired

Name the port is addressed by, unique across all containers of the Pod.

Format 1 to 15 characters: lowercase letters, digits, and -, with at least one letter and no leading, trailing, or consecutive -

spec.template.spec.containers[].ports[].containerPortintegerRequired

Port number the container listens on.

Format 1 to 65535

spec.template.spec.containers[].ports[].protocolstringOptional

Transport protocol the container listens with. An absent protocol means TCP.

Possible enum values:

  • TCP

default TCP

spec.template.spec.containers[].envarrayOptional

Environment variables to set in the container.

spec.template.spec.containers[].env[].namestringRequired

Environment variable name.

Pattern [a-zA-Z_][a-zA-Z0-9_]*

spec.template.spec.containers[].env[].valuestringRequired

Environment variable value.

spec.template.spec.containers[].volumeMountsarrayOptional

Read-only provider-owned Vault projections exposed to this container. Only volumes declared in the enclosing PodSpec may be mounted.

spec.template.spec.containers[].volumeMounts[].namestringRequired

Declared Vault volume name.

spec.template.spec.containers[].volumeMounts[].mountPathstringRequired

Clean absolute destination inside this container. It may not overlap another Vault mount of the same container, and the system paths and the reserved /.idyl directory are refused.

spec.template.spec.containers[].volumeMounts[].readOnlybooleanRequired

Must be explicitly true.

Value true

spec.template.spec.containers[].filesystemMountsarrayOptional

Filesystems attached to this container at the declared destinations. A declaration confers no authority: the platform authorizes each mount before the Pod starts, and a node attaches it only when its runtime class advertises Filesystem attachment, whatever the isolation class.

spec.template.spec.containers[].filesystemMounts[].filesystemobjectRequired

Filesystem selects one authorized tree in the Workload’s Namespace and Subnet.

spec.template.spec.containers[].filesystemMounts[].filesystem.namestringOptional

Name selects the Filesystem within the Workload’s Namespace and Subnet; omit ID.

Required when ID is absent

spec.template.spec.containers[].filesystemMounts[].filesystem.idstringOptional

ID pins a stable Filesystem identity instead of a reusable name; omit Name.

Required when Name is absent

spec.template.spec.containers[].filesystemMounts[].mountPathstringRequired

MountPath is a clean absolute container path outside reserved and overlapping mounts.

spec.template.spec.containers[].filesystemMounts[].readOnlybooleanRequired

ReadOnly true opens saved files; false makes this Pod the Filesystem’s one writer.

spec.template.spec.containers[].filesystemMounts[].versionstringOptional

Version selects latest, a saved number or name on read-only mounts. Omitted means latest.

Default latest on read-only mounts

spec.template.spec.containers[].filesystemMounts[].saveEverystringOptional

SaveEvery requests a positive periodic save interval on a writable mount; nil disables periodic saves.

spec.template.spec.containers[].readinessProbeobjectOptional

Probe that decides when the container is ready. A container that declares one starts not ready and is ready while it is running and its probe has met its success threshold; a container that declares none is ready while it is running. Absent means no probe, never an empty one.

spec.template.spec.containers[].readinessProbe.execobjectRequired

Command run inside the container. A probe states exactly one kind, and exec is the only kind.

spec.template.spec.containers[].readinessProbe.exec.commandarray[string]Required

Executable and its arguments. The first element names the executable and must not be empty; later elements may be empty strings. No element may contain a NUL byte.

Requirement At least one element

spec.template.spec.containers[].readinessProbe.periodSecondsintegerOptional

Seconds between the end of one probe run and the start of the next.

Format Whole seconds, 1 to 300 (default 10)

spec.template.spec.containers[].readinessProbe.timeoutSecondsintegerOptional

Seconds one probe run may take, counted from the moment the command starts. A run still going when it expires is stopped, with every process it started, and counts as a failure. The effective timeout may not exceed the effective periodSeconds.

Format Whole seconds, 1 to 60 (default 1)

spec.template.spec.containers[].readinessProbe.successThresholdintegerOptional

Consecutive successful runs that make a not-ready container ready.

Format 1 to 10 (default 1)

spec.template.spec.containers[].readinessProbe.failureThresholdintegerOptional

Consecutive failed runs that make a ready container not ready.

Format 1 to 10 (default 3)

spec.template.spec.containers[].resourcesobjectOptional

Container resource requests and limits.

Requirement CPU or memory must be set on at least one container

spec.template.spec.containers[].resources.requestsobjectOptional

Resources used for scheduling. If a request is omitted but a limit is set for that resource, the limit is used as the effective request.

spec.template.spec.containers[].resources.requests.cpuquantity stringOptional

CPU quantity for this resource entry.

Examples 500m, 0.5, 1

spec.template.spec.containers[].resources.requests.memoryquantity stringOptional

Memory quantity for this resource entry.

Examples 256Mi, 1Gi

spec.template.spec.containers[].resources.requests.diskquantity stringOptional

Disk quantity for this resource entry.

Examples 1Gi, 10G

spec.template.spec.containers[].resources.limitsobjectOptional

Maximum resources allowed for the container.

spec.template.spec.containers[].resources.limits.cpuquantity stringOptional

CPU quantity for this resource entry.

Examples 500m, 0.5, 1

spec.template.spec.containers[].resources.limits.memoryquantity stringOptional

Memory quantity for this resource entry.

Examples 256Mi, 1Gi

spec.template.spec.containers[].resources.limits.diskquantity stringOptional

Disk quantity for this resource entry.

Examples 1Gi, 10G

spec.template.spec.volumesarrayOptional

Closed provider-owned Vault projection sources. A volume represents exactly one Secret or TLSCertificate; arbitrary host storage cannot be represented.

spec.template.spec.volumes[].namestringRequired

Volume name referenced by container volume mounts.

spec.template.spec.volumes[].secretobjectOptional

Secret source.

Format Exactly one of secret or certificate

spec.template.spec.volumes[].secret.secretRefobjectRequired

Typed Secret resource reference.

spec.template.spec.volumes[].secret.secretRef.namestringRequired

Secret resource name.

spec.template.spec.volumes[].secret.secretRef.namespacestringOptional

Resource namespace. Omit to use the workload namespace.

Format Must equal the workload namespace in v1

spec.template.spec.volumes[].secret.secretRef.versionintegerOptional

Immutable Secret version. Omit to bind current on first resolution.

Format Positive integer

spec.template.spec.volumes[].secret.itemsarrayOptional

Optional key-to-path selection. Omit to project every key by key name.

spec.template.spec.volumes[].secret.items[].keystringRequired

Secret data key to project.

spec.template.spec.volumes[].secret.items[].pathstringRequired

Clean relative destination path within the volume.

spec.template.spec.volumes[].certificateobjectOptional

TLSCertificate source.

Format Exactly one of secret or certificate

spec.template.spec.volumes[].certificate.certificateRefobjectRequired

Typed TLSCertificate resource reference.

spec.template.spec.volumes[].certificate.certificateRef.namestringRequired

TLSCertificate resource name.

spec.template.spec.volumes[].certificate.certificateRef.namespacestringOptional

Resource namespace. Omit to use the workload namespace.

Format Must equal the workload namespace in v1

spec.template.spec.volumes[].certificate.certificateRef.versionintegerOptional

Immutable TLSCertificate version. Omit to bind current on first resolution.

Format Positive integer

spec.template.spec.sharedVolumeSizequantity stringOptional

Size of the shared volume mounted for the pod.

Examples 1Gi, 10Gi

spec.template.spec.terminationGracePeriodSecondsintegerOptional

How long the node waits after sending SIGTERM before issuing SIGKILL when stopping the pod’s containers. If omitted, the 30-second default applies. A value of 0 requests an immediate SIGKILL with no graceful period.

Format Whole seconds, >= 0 (default 30)

Read-only fields

IDYL can return these fields when you inspect a workload. Do not include them in authored manifests.

Validation notes

  • kind values are case-sensitive.
  • At least one container is required in every pod spec.
  • At least one container must specify CPU or memory in resources.requests or resources.limits, unless the CLI fills those values from configured defaults before sending the workload.
  • GPU requirements belong at the pod spec gpu path, not under per-container resources.
  • Environment variable names must be unique within a container and must match [a-zA-Z_][a-zA-Z0-9_]*.