> ## Documentation Index
> Fetch the complete documentation index at: https://docs.idyl.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Deployment

> YAML manifest fields for IDYL Deployment resources.

A Deployment keeps a replicated pod template running and can roll changes across replicas.

## Minimal manifest

```yaml theme={null}
kind: Deployment
metadata:
  name: web
  subnet: "100000000001"
spec:
  replicas: 2
  strategy:
    type: RollingUpdate
  template:
    spec:
      containers:
        - name: web
          imageURI: nginx:1.25
          resources:
            requests:
              cpu: 500m
              memory: 256Mi
```

## Example manifest

```yaml theme={null}
kind: Deployment
metadata:
  name: web
  subnet: "100000000001"
  labels:
    app: web
spec:
  replicas: 3
  revisionHistoryLimit: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: web
    spec:
      restartPolicy: always
      placement:
        fleet: "391742608215"
      require:
        cuda: ">=13.0"
      containers:
        - name: web
          imageURI: ghcr.io/idyl-labs/example-web:1.0.0
          imagePullPolicy: if_not_present
          env:
            - name: LOG_LEVEL
              value: info
          resources:
            requests:
              cpu: 500m
              memory: 256Mi
            limits:
              cpu: 1
              memory: 512Mi
              disk: 2Gi
```

## Field reference

<div className="manifest-field-list">
  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">kind</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Resource kind. The value is case-sensitive.</p>
    <p className="manifest-field-detail"><span>Value</span> <code>Deployment</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">metadata</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Top-level workload metadata.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">metadata.namespace</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Optional namespace scope embedded in the manifest. CLI flags override these values.</p>
    <p className="manifest-field-detail"><span>Resolved from</span> CLI context or flags</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">metadata.namespace.accountId</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Account that owns the namespace. The CLI can resolve this from context or <code>--account-id</code>.</p>
    <p className="manifest-field-detail"><span>Format</span> 12-digit account ID</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">metadata.namespace.namespace</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Namespace name. The CLI can resolve this from context or <code>--namespace</code>.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">metadata.subnet</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Conditional</span>
    </div>

    <p className="manifest-field-description">Canonical subnet identifier where the workload should run.</p>
    <p className="manifest-field-detail"><span>Resolved from</span> CLI context or the <code>--subnet</code> flag</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">metadata.name</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Stable workload name within the namespace.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">metadata.labels</span>
      <span className="manifest-field-type">map\[string]string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">User-defined labels for grouping, filtering, and ownership metadata.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">metadata.annotations</span>
      <span className="manifest-field-type">map\[string]string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">User-defined annotations for descriptive metadata that is not used for identity.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Desired Deployment configuration.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.strategy</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Deployment rollout strategy.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.strategy.type</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Rollout strategy type.</p>

    <div className="manifest-field-enum">
      <p>Possible enum values:</p>

      <ul>
        <li><code>RollingUpdate</code></li>
        <li><code>Recreate</code></li>
      </ul>
    </div>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.strategy.rollingUpdate</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Rolling update controls.</p>
    <p className="manifest-field-detail"><span>Used with</span> <code>RollingUpdate</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.strategy.rollingUpdate.maxUnavailable</span>
      <span className="manifest-field-type">integer</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Maximum number of replicas that can be unavailable during a rolling update.</p>
    <p className="manifest-field-detail"><span>Default</span> <code>0</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.strategy.rollingUpdate.maxSurge</span>
      <span className="manifest-field-type">integer</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Maximum number of extra replicas that can be created during a rolling update.</p>
    <p className="manifest-field-detail"><span>Default</span> <code>0</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.strategy.recreate</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Recreate rollout controls.</p>
    <p className="manifest-field-detail"><span>Used with</span> <code>Recreate</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.strategy.recreate.preStopDelay</span>
      <span className="manifest-field-type">integer</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Delay before stopping old replicas during a recreate rollout.</p>
    <p className="manifest-field-detail"><span>Format</span> Seconds</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.replicas</span>
      <span className="manifest-field-type">integer</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Desired number of pod replicas.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.revisionHistoryLimit</span>
      <span className="manifest-field-type">integer</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Number of prior Deployment revisions to retain.</p>
    <p className="manifest-field-detail"><span>Default</span> <code>10</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Pod template used by the Deployment.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.metadata</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Metadata copied to pods created from this template.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.metadata.labels</span>
      <span className="manifest-field-type">map\[string]string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Labels copied to pods created from this template.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.metadata.annotations</span>
      <span className="manifest-field-type">map\[string]string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Annotations copied to pods created from this template.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Pod spec used by this template.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.restartPolicy</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Container restart behavior.</p>

    <div className="manifest-field-enum">
      <p>Possible enum values:</p>

      <ul>
        <li><code>always</code></li>
        <li><code>on\_failure</code></li>
        <li><code>never</code></li>
      </ul>
    </div>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.platform</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Workload OS and architecture. If omitted, IDYL resolves the platform from policy and available capacity.</p>

    <div className="manifest-field-enum">
      <p>Possible enum values:</p>

      <ul>
        <li><code>linux/amd64</code></li>
        <li><code>linux/arm64</code></li>
      </ul>
    </div>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.isolation</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Requested execution isolation boundary. If omitted, IDYL resolves isolation from subnet policy.</p>

    <div className="manifest-field-enum">
      <p>Possible enum values:</p>

      <ul>
        <li><code>container</code></li>
        <li><code>secure-container</code></li>
      </ul>
    </div>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.isolation.class</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Requested execution isolation boundary.</p>

    <div className="manifest-field-enum">
      <p>Possible enum values:</p>

      <ul>
        <li><code>container</code></li>
        <li><code>secure-container</code></li>
      </ul>
    </div>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.network</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Workload network intent. If omitted, the workload has no explicit network posture unless policy requires network intent.</p>

    <div className="manifest-field-enum">
      <p>Possible enum values:</p>

      <ul>
        <li><code>none</code></li>
        <li><code>restricted-egress</code></li>
        <li><code>unrestricted</code></li>
      </ul>
    </div>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.network.class</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Requested workload network policy.</p>

    <div className="manifest-field-enum">
      <p>Possible enum values:</p>

      <ul>
        <li><code>none</code></li>
        <li><code>restricted-egress</code></li>
        <li><code>unrestricted</code></li>
      </ul>
    </div>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.network.egress</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Allowed outbound destinations for restricted-egress workloads.</p>
    <p className="manifest-field-detail"><span>Format</span> Restricted egress allow rules</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.network.egress.allow</span>
      <span className="manifest-field-type">array\[string]</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Structured allow rules such as "dns" or "tcp:443:api.example.com". TCP targets must be DNS hostnames, not IP literals.</p>

    <div className="manifest-field-enum">
      <p>Possible enum values:</p>

      <ul>
        <li><code>dns</code></li>
        <li><code>tcp:\<port>:\<dns-hostname></code></li>
      </ul>
    </div>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.network.egress.denyLocalNetworks</span>
      <span className="manifest-field-type">boolean</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Must be true when network.egress.allow is set. Local networks remain denied while the listed destinations are allowed.</p>
    <p className="manifest-field-detail"><span>Value</span> <code>true</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.gpu</span>
      <span className="manifest-field-type">quantity string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Pod-level GPU requirement. GPU is a physical host device requirement, not a per-container resource. All containers in the pod share GPU access.</p>
    <p className="manifest-field-detail"><span>Examples</span> <code>h100</code>, <code>2:h100</code>, <code>nvidia:24Gi</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.require</span>
      <span className="manifest-field-type">map\[string]string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Host capability requirements, for example <code>cuda: ">=13.0"</code>. The pod is scheduled only on nodes that satisfy every requirement.</p>
    <p className="manifest-field-detail"><span>Format</span> Exact version or <code>>=</code> minimum version</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.placement</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Restricts scheduling to a fleet or a single node inside the workload's subnet. If omitted, the pod may run anywhere in the subnet.</p>
    <p className="manifest-field-detail"><span>Format</span> Exactly one of <code>fleet</code> or <code>node</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.placement.fleet</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Restricts scheduling to eligible members of this fleet.</p>
    <p className="manifest-field-detail"><span>Format</span> 12-digit fleet ID</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.placement.node</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Restricts scheduling to exactly this node.</p>
    <p className="manifest-field-detail"><span>Format</span> Node ID</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers</span>
      <span className="manifest-field-type">array</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Containers that run in the pod.</p>
    <p className="manifest-field-detail"><span>Requirement</span> At least one container</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].name</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Container name, unique within the pod.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].imageURI</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Container image reference, such as <code>nginx:latest</code>, <code>ubuntu:22.04</code>, or a private registry image.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].imageDigest</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Optional image digest for verification, for example <code>sha256:abc123...</code>. When provided, it is appended to the registry image reference as <code>image\@sha256:abc123</code>.</p>
    <p className="manifest-field-detail"><span>Example</span> <code>sha256:...</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].imagePullPolicy</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">When the runtime should pull the image.</p>

    <div className="manifest-field-enum">
      <p>Possible enum values:</p>

      <ul>
        <li><code>always</code></li>
        <li><code>never</code></li>
        <li><code>if\_not\_present</code></li>
      </ul>
    </div>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].imagePullSecret</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">References a stored RegistryCredential secret used to authenticate image pulls.</p>
    <p className="manifest-field-detail"><span>Value</span> <code>secret://name</code> or <code>secret://namespace/name</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].command</span>
      <span className="manifest-field-type">array\[string]</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Overrides the container image's ENTRYPOINT. If empty, the image's default ENTRYPOINT is used. If set without <code>args</code>, the image's default CMD is still used with the new entrypoint.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].args</span>
      <span className="manifest-field-type">array\[string]</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Overrides the container image's CMD. If empty, the image's default CMD is used.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].env</span>
      <span className="manifest-field-type">array</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Environment variables to set in the container.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].env\[].name</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Environment variable name.</p>
    <p className="manifest-field-detail"><span>Pattern</span> <code>\[a-zA-Z\_]\[a-zA-Z0-9\_]\*</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].env\[].value</span>
      <span className="manifest-field-type">string</span>
      <span className="manifest-field-required">Required</span>
    </div>

    <p className="manifest-field-description">Environment variable value.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].resources</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Conditional</span>
    </div>

    <p className="manifest-field-description">Container resource requests and limits.</p>
    <p className="manifest-field-detail"><span>Requirement</span> CPU or memory must be set on at least one container</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].resources.requests</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">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.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].resources.requests.cpu</span>
      <span className="manifest-field-type">quantity string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">CPU quantity for this resource entry.</p>
    <p className="manifest-field-detail"><span>Examples</span> <code>500m</code>, <code>0.5</code>, <code>1</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].resources.requests.memory</span>
      <span className="manifest-field-type">quantity string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Memory quantity for this resource entry.</p>
    <p className="manifest-field-detail"><span>Examples</span> <code>256Mi</code>, <code>1Gi</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].resources.requests.disk</span>
      <span className="manifest-field-type">quantity string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Disk quantity for this resource entry.</p>
    <p className="manifest-field-detail"><span>Examples</span> <code>1Gi</code>, <code>10G</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].resources.limits</span>
      <span className="manifest-field-type">object</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Maximum resources allowed for the container.</p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].resources.limits.cpu</span>
      <span className="manifest-field-type">quantity string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">CPU quantity for this resource entry.</p>
    <p className="manifest-field-detail"><span>Examples</span> <code>500m</code>, <code>0.5</code>, <code>1</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].resources.limits.memory</span>
      <span className="manifest-field-type">quantity string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Memory quantity for this resource entry.</p>
    <p className="manifest-field-detail"><span>Examples</span> <code>256Mi</code>, <code>1Gi</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.containers\[].resources.limits.disk</span>
      <span className="manifest-field-type">quantity string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Disk quantity for this resource entry.</p>
    <p className="manifest-field-detail"><span>Examples</span> <code>1Gi</code>, <code>10G</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.sharedVolumeSize</span>
      <span className="manifest-field-type">quantity string</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">Size of the shared volume mounted for the pod.</p>
    <p className="manifest-field-detail"><span>Examples</span> <code>1Gi</code>, <code>10Gi</code></p>
  </section>

  <section className="manifest-field">
    <div className="manifest-field-header">
      <span className="manifest-field-name">spec.template.spec.terminationGracePeriodSeconds</span>
      <span className="manifest-field-type">integer</span>
      <span className="manifest-field-required">Optional</span>
    </div>

    <p className="manifest-field-description">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.</p>
    <p className="manifest-field-detail"><span>Format</span> Whole seconds, >= 0 (default 30)</p>
  </section>
</div>

## Read-only fields

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

| Field                      | Description                                                               |
| -------------------------- | ------------------------------------------------------------------------- |
| `metadata.id`              | IDYL-assigned resource ID.                                                |
| `metadata.namespace.id`    | IDYL-assigned namespace ID.                                               |
| `metadata.ownerReferences` | Parent workload relationship, such as a ReplicaSet owned by a Deployment. |
| `metadata.createdAt`       | Creation timestamp.                                                       |
| `metadata.updatedAt`       | Last update timestamp.                                                    |
| `metadata.deletedAt`       | Deletion timestamp, when present.                                         |
| `metadata.revision`        | Revision information returned by IDYL.                                    |
| `status`                   | Current observed state returned by IDYL.                                  |

## 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_]*`.
