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

# Apply YAML Manifests

> Deploy and manage Control Plane resources using JSON or YAML files for GitOps, scripting, and automation.

The `cpln apply` command creates or updates Control Plane resources from JSON or YAML files, enabling infrastructure-as-code workflows.

## When to use this

<CardGroup cols={2}>
  <Card title="GitOps workflows" icon="git-alt">
    Store resource definitions in Git and apply them in CI/CD pipelines
  </Card>

  <Card title="Reproducible deployments" icon="rotate">
    Apply the same configuration across multiple environments
  </Card>

  <Card title="Bulk operations" icon="layer-group">
    Create or update multiple resources in a single command
  </Card>

  <Card title="Scripting & automation" icon="code">
    Automate resource management in scripts and pipelines
  </Card>
</CardGroup>

<Tip>
  The `cpln apply` command is idempotent - running it multiple times with the same input produces the same result.
</Tip>

## Basic usage

```bash theme={null}
cpln apply --file <file-path>
```

The file can be JSON or YAML containing one or more resource definitions.

## Specifying the GVC

For resources that belong to a GVC ([Identity](/reference/identity), [Volume Set](/reference/volumeset), [Workload](/reference/workload)), specify the GVC using one of these methods:

<Tabs>
  <Tab title="In your profile">
    Set a default GVC in your profile:

    ```bash theme={null}
    cpln profile update <profile-name> --gvc <gvc-name>
    ```

    All subsequent commands will use this GVC.
  </Tab>

  <Tab title="With --gvc flag">
    Pass the GVC as a flag (overrides profile default):

    ```bash theme={null}
    cpln apply --file <file-path> --gvc <gvc-name>
    ```
  </Tab>

  <Tab title="In the resource file">
    Include the GVC in the resource definition:

    ```yaml theme={null}
    kind: identity
    name: example-identity
    gvc: example-gvc
    ```
  </Tab>
</Tabs>

<Note>
  You can specify either a `gvc` property in the file or use the `--gvc` flag, but not both.
</Note>

## Apply Kubernetes manifests

Convert and apply Kubernetes resources directly:

```bash theme={null}
cpln apply --file <k8s-file> --k8s true
```

This uses the [convert](/guides/cli/cpln-convert) logic to transform K8s resources before applying.

## Apply from stdin

Pipe resource definitions from another command:

```bash theme={null}
cat resources.yaml | cpln apply --file -
```

<Tip>
  This is useful for dynamically generating resources or chaining commands.
</Tip>

## Using the console

The console also supports applying resources:

1. Click the **cpln apply** button in the upper right corner
2. Upload a JSON/YAML file or paste the resource definition
3. Select the target org and GVC
4. Click **Apply**

## Multiple resources

Apply multiple resources in a single file by separating them with `---`:

```yaml theme={null}
kind: gvc
name: my-gvc
spec:
  staticPlacement:
    locationLinks:
      - /org/my-org/location/aws-us-west-2
---
kind: workload
name: my-app
gvc: my-gvc
spec:
  containers:
    - name: main
      image: nginx:latest
```

<Note>
  If a resource references another resource (e.g., a workload references a GVC), the referenced resource must be defined in the same file unless it already exists.
</Note>

## Resource ordering

The `cpln apply` command handles resource ordering automatically — you do not need to worry about the order of resources in your files or directories. The CLI resolves dependencies internally.

## Renaming resources

Changing a resource's `name` in the file creates a new resource. The original resource remains and must be deleted manually:

```bash theme={null}
cpln <resource-type> delete <old-name>
```

## Limitations

<AccordionGroup>
  <Accordion title="Agents">
    To create an [agent](/reference/agent), use the console or CLI `agent` command to obtain the bootstrap config data. The `cpln apply` command does not output config data.
  </Accordion>

  <Accordion title="Cloud accounts">
    Before creating a [cloud account](/reference/cloudaccount), additional configuration is required at the cloud provider. See the [Create Cloud Account](/guides/create-cloud-account) guide.
  </Accordion>

  <Accordion title="Domains">
    Before creating a [domain](/reference/domain), the required DNS entries must exist. See the [Configure a Domain](/guides/configure-domain#required-dns-records) guide.
  </Accordion>
</AccordionGroup>

## Generate sample input

Export existing resources as templates:

<Tabs>
  <Tab title="Console">
    1. Select a resource and click **Actions** → **Export**
    2. Choose **JSON Slim** or **YAML Slim**
    3. Download the file
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    cpln gvc get <gvc-name> -o yaml-slim > gvc.yaml
    cpln workload get <workload-name> --gvc <gvc-name> -o yaml-slim > workload.yaml
    cpln secret reveal <secret-name> -o yaml-slim > secret.yaml
    ```
  </Tab>
</Tabs>

<Tip>
  The `json-slim` and `yaml-slim` formats output only the values needed for `cpln apply`, removing IDs, timestamps, and other metadata.
</Tip>

## Use in GitOps

The `apply` command integrates with CI/CD pipelines for GitOps workflows. See the [CI/CD Usage](/cli-reference/ci-cd-development/ci-cd) guides for details.

## Example templates

Use these templates as starting points for your resource definitions.

<Info>
  Download all examples: [cpln-apply-examples.zip](https://github.com/controlplane-com/examples/raw/main/examples/cpln-apply/cpln-apply-examples.zip)
</Info>

<Accordion title="GVC">
  [GVC Reference Page](/reference/gvc)

  <CodeGroup>
    ```json JSON theme={null}
    {
      "kind": "gvc",
      "name": "example-gvc",
      "description": "example-gvc description",
      "tags": {
        "tag1": "value1"
      },
      "spec": {
        "pullSecretLinks": ["//secret/SECRET_NAME"],
        "staticPlacement": {
          "locationLinks": [
            "//location/aws-eu-central-1",
            "//location/aws-us-west-2",
            "//location/azure-eastus2",
            "//location/gcp-us-east1"
          ]
        }
      }
    }
    ```

    ```yaml YAML theme={null}
    kind: gvc
    name: example-gvc
    description: example-gvc description
    tags:
      tag1: value1
    spec:
      pullSecretLinks:
        - //secret/SECRET_NAME
      staticPlacement:
        locationLinks:
          - //location/aws-eu-central-1
          - //location/aws-us-west-2
          - //location/azure-eastus2
          - //location/gcp-us-east1
    ```
  </CodeGroup>
</Accordion>

<Accordion title="Agent">
  [Agent Reference Page](/reference/agent)

  <CodeGroup>
    ```json JSON theme={null}
    {
      "kind": "agent",
      "name": "example-agent",
      "description": "example-agent description"
    }
    ```
  </CodeGroup>
</Accordion>

<Accordion title="Cloud Accounts">
  [Cloud Accounts Reference Page](/reference/cloudaccount)

  <Accordion title="Cloud Account - AWS">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "cloudaccount",
        "name": "example-aws-cloud-account",
        "description": "example-aws-cloud-account description",
        "tags": {},
        "provider": "aws",
        "data": {
          "roleArn": "ROLE_ARN"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: cloudaccount
      name: example-aws-cloud-account
      description: example-aws-cloud-account description
      tags: {}
      provider: aws
      data:
        roleArn: 'ROLE_ARN'
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Cloud Account - Azure">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "cloudaccount",
        "name": "example-azure-cloud-account",
        "description": "example-azure-cloud-account description",
        "tags": {},
        "provider": "azure",
        "data": {
          "secretLink": "//secret/AZURE_SECRET"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: cloudaccount
      name: example-azure-cloud-account
      description: example-azure-cloud-account description
      tags: {}
      provider: azure
      data:
        secretLink: //secret/AZURE_SECRET
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Cloud Account - GCP">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "cloudaccount",
        "name": "example-gcp-cloud-account",
        "description": "example-gcp-cloud-account description",
        "tags": {},
        "provider": "gcp",
        "data": {
          "projectId": "PROJECT_ID"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: cloudaccount
      name: example-gcp-cloud-account
      description: example-gcp-cloud-account description
      tags: {}
      provider: gcp
      data:
        projectId: PROJECT_ID
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Cloud Account - NGS">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "cloudaccount",
        "name": "example-ngs-cloud-account",
        "description": "example-ngs-cloud-account description",
        "provider": "ngs",
        "data": {
          "secretLink": "//secret/NATS_SECRET"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: cloudaccount
      name: example-ngs-cloud-account
      description: example-ngs-cloud-account description
      tags: {}
      provider: ngs
      data:
        secretLink: //secret/NATS_SECRET
      ```
    </CodeGroup>
  </Accordion>
</Accordion>

<Accordion title="Domains">
  [Domain Reference Page](/reference/domain)

  <CodeGroup>
    ```json JSON theme={null}
    {
      "kind": "domain",
      "name": "sub.example.com",
      "description": "domain description",
      "tags": {}
    }
    ```

    ```yaml YAML theme={null}
    kind: domain
    name: sub.example.com
    description: domain description
    tags: {}
    ```
  </CodeGroup>
</Accordion>

<Accordion title="Secrets">
  [Secrets Reference Page](/reference/secret)

  <Accordion title="Secret - AWS">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-aws-secret",
        "description": "example-aws-secret description",
        "tags": {},
        "type": "aws",
        "data": {
          "accessKey": "AKIAIOSFODNN7EXAMPLE",
          "roleArn": "arn:awskey",
          "secretKey": "AKIAwJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "externalId": "EXTERNAL_ID"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-aws-secret
      description: example-aws-secret description
      tags: {}
      type: aws
      data:
        accessKey: AKIAIOSFODNN7EXAMPLE
        roleArn: 'arn:awskey'
        secretKey: AKIAwJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
        externalId: EXTERNAL_ID
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - Azure Connector">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-azure-connector-secret",
        "description": "example-azure-connector-secret description",
        "tags": {},
        "type": "azure-connector",
        "data": {
          "code": "CODE",
          "url": "URL"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-azure-connector-secret
      description: example-azure-connector-secret description
      tags: {}
      type: azure-connector
      data:
        code: CODE
        url: 'URL'
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - Azure-SDK">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-azure-sdk-secret",
        "description": "example-azure-sdk-secret",
        "tags": {},
        "type": "azure-sdk",
        "data": "{\"subscriptionId\":\"2cd8674e-4f89-4a1f-b420-7a1361b46ef7\",\"tenantId\":\"292f5674-c8b0-488b-9ff8-6d30d77f38d9\",\"clientId\":\"649846ce-d862-49d5-a5eb-7d5aad90f54e\",\"clientSecret\":\"cpln\"}"
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-azure-sdk-secret
      description: example-azure-sdk-secret
      tags: {}
      type: azure-sdk
      data: >-
        {"subscriptionId":"2cd8674e-4f89-4a1f-b420-7a1361b46ef7","tenantId":"292f5674-c8b0-488b-9ff8-6d30d77f38d9","clientId":"649846ce-d862-49d5-a5eb-7d5aad90f54e","clientSecret":"cpln"}
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - Dictionary">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-dictionary-secret",
        "description": "example-dictionary-secret description",
        "tags": {},
        "type": "dictionary",
        "data": {
          "key01": "value01",
          "key02": "value02"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-dictionary-secret
      description: example-dictionary-secret description
      tags: {}
      type: dictionary
      data:
        key01: value01
        key02: value02
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - Docker">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-docker-secret",
        "description": "example-docker-secret description",
        "tags": {},
        "type": "docker",
        "data": "{\"auths\":{\"https://index.docker.io/v1/\":{\"username\":\"USERNAME\",\"password\":\"PASSWORD\"}}}"
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-docker-secret
      description: example-docker-secret description
      tags: {}
      type: docker
      data: >-
        {"auths":{"https://index.docker.io/v1/":{"username":"USERNAME","password":"PASSWORD"}}}
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - ECR">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-ecr-secret",
        "description": "example-ecr-secret description",
        "tags": {},
        "type": "ecr",
        "data": {
          "accessKey": "AKIA_ACCESS_KEY",
          "repos": ["015716931711.dkr.ecr.us-west-2.amazonaws.com/repo"],
          "secretKey": "SECRET_KEY",
          "externalId": "EXTERNAL_ID"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-ecr-secret
      description: example-ecr-secret description
      tags: {}
      data:
        accessKey: AKIA_ACCESS_KEY
        repos:
          - 015716931711.dkr.ecr.us-west-2.amazonaws.com/repo
        secretKey: SECRET_KEY
        externalId: EXTERNAL_ID
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - GCP">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-gcp-secret",
        "description": "example-gcp-secret description",
        "tags": {},
        "type": "gcp",
        "data": "{\"type\":\"gcp\",\"project_id\":\"cpln12345\",\"private_key_id\":\"pvt_key\",\"private_key\":\"key\",\"client_email\":\"support@cpln.io\",\"client_id\":\"12744\",\"auth_uri\":\"cloud.google.com\",\"token_uri\":\"token.cloud.google.com\",\"auth_provider_x509_cert_url\":\"cert.google.com\",\"client_x509_cert_url\":\"cert.google.com\"}"
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-gcp-secret
      description: example-gcp-secret description
      tags: {}
      type: gcp
      data: >-
        {"type":"gcp","project_id":"cpln12345","private_key_id":"pvt_key","private_key":"key","client_email":"support@cpln.io","client_id":"12744","auth_uri":"cloud.google.com","token_uri":"token.cloud.google.com","auth_provider_x509_cert_url":"cert.google.com","client_x509_cert_url":"cert.google.com"}
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - KeyPair">
    <Warning>
      The example below uses a self-signed certificate. Do not use for production.
    </Warning>

    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-keypair-secret",
        "description": "example-keypair-secret description",
        "tags": {},
        "type": "keypair",
        "data": {
          "passphrase": "cpln",
          "publicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----\n",
          "secretKey": "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-keypair-secret
      description: example-keypair-secret secret
      tags: {}
      type: keypair
      data:
        passphrase: cpln
        publicKey: |
          -----BEGIN PUBLIC KEY-----
          ...
          -----END PUBLIC KEY-----
        secretKey: |
          -----BEGIN RSA PRIVATE KEY-----
          ...
          -----END RSA PRIVATE KEY-----
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - Opaque">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-opaque-secret",
        "description": "example-opaque-secret",
        "tags": {},
        "type": "opaque",
        "data": {
          "encoding": "plain",
          "payload": "sample payload"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-opaque-secret
      description: example-opaque-secret description
      tags: {}
      type: opaque
      data:
        encoding: plain
        payload: sample payload
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - TLS">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-tls-secret",
        "description": "example-tls-secret description",
        "tags": {},
        "type": "tls",
        "data": {
          "cert": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
          "chain": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
          "key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: example-tls-secret
      description: example-tls-secret description
      tags: {}
      type: tls
      data:
        cert: |
          -----BEGIN CERTIFICATE-----
          ...
          -----END CERTIFICATE-----
        chain: |
          -----BEGIN CERTIFICATE-----
          ...
          -----END CERTIFICATE-----
        key: |
          -----BEGIN PRIVATE KEY-----
          ...
          -----END PRIVATE KEY-----
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Secret - Username/Password">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "secret",
        "name": "example-username-secret",
        "description": "example-username-secret description",
        "tags": {},
        "type": "userpass",
        "data": {
          "encoding": "plain",
          "password": "PASSWORD",
          "username": "USERNAME"
        }
      }
      ```

      ```yaml YAML theme={null}
      kind: secret
      name: sample-username
      description: sample-username
      tags: {}
      type: userpass
      data:
        encoding: plain
        password: PASSWORD
        username: USERNAME
      ```
    </CodeGroup>
  </Accordion>
</Accordion>

<Accordion title="Groups">
  [Groups Reference Page](/reference/group)

  See the [Group Query Rules](/reference/group#query-rules) reference page for details on how to create a query.

  <CodeGroup>
    ```json JSON theme={null}
    {
      "kind": "group",
      "name": "example-group",
      "description": "example-group description",
      "tags": {},
      "memberLinks": [
        "//serviceaccount/SERVICE_ACCOUNT_NAME",
        "//user/USER_EMAIL"
      ],
      "memberQuery": {
        "kind": "user",
        "fetch": "items",
        "spec": {
          "match": "all",
          "terms": [
            {
              "op": "=",
              "tag": "test-tag",
              "value": "test-value"
            }
          ]
        }
      }
    }
    ```

    ```yaml YAML theme={null}
    kind: group
    name: example-group
    description: example-group description
    tags: {}
    memberLinks:
      - //serviceaccount/SERVICE_ACCOUNT_NAME
      - //user/USER_EMAIL
    memberQuery:
      kind: user
      fetch: items
      spec:
        match: all
        terms:
          - op: '='
            tag: test
            value: '1234'
    ```
  </CodeGroup>
</Accordion>

<Accordion title="Policies">
  [Policies Reference Page](/reference/policy)

  Each `targetKind` has its own set of permissions. Get them via:

  * CLI: `cpln secret permissions`
  * Reference: [Secret Permissions](/reference/secret#permissions)

  <Accordion title="Policy - Explicit Secret">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "policy",
        "name": "example-policy-explicit",
        "description": "example-policy description",
        "tags": {},
        "targetKind": "secret",
        "bindings": [
          {
            "permissions": ["edit", "manage"],
            "principalLinks": [
              "//group/GROUP_NAME",
              "//gvc/GVC_NAME/identity/IDENTITY_NAME",
              "//serviceaccount/SERVICE_ACCOUNT_NAME",
              "//user/USER_EMAIL"
            ]
          }
        ],
        "targetLinks": ["//secret/SECRET_NAME"]
      }
      ```

      ```yaml YAML theme={null}
      kind: policy
      name: example-policy-explicit
      description: example-policy description
      tags: {}
      bindings:
        - permissions:
            - edit
            - manage
          principalLinks:
            - //group/GROUP_NAME
            - //gvc/GVC_NAME/identity/IDENTITY_NAME
            - //serviceaccount/SERVICE_ACCOUNT_NAME
            - //user/USER_EMAIL
      targetKind: secret
      targetLinks:
        - //secret/SECRET_NAME
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Policy - All Secrets">
    <CodeGroup>
      ```json JSON theme={null}
      {
        "kind": "policy",
        "name": "example-policy-all",
        "description": "example-policy-all description",
        "tags": {},
        "targetKind": "secret",
        "target": "all",
        "bindings": [
          {
            "permissions": ["edit", "manage"],
            "principalLinks": [
              "//group/GROUP_NAME",
              "//serviceaccount/SERVICE_ACCOUNT_NAME",
              "//user/USER_EMAIL"
            ]
          }
        ]
      }
      ```

      ```yaml YAML theme={null}
      kind: policy
      name: example-policy-all
      description: example-policy-all description
      tags: {}
      targetKind: secret
      target: all
      bindings:
        - permissions:
            - edit
            - manage
          principalLinks:
            - //group/GROUP_NAME
            - //serviceaccount/SERVICE_ACCOUNT_NAME
            - //user/USER_EMAIL
      ```
    </CodeGroup>
  </Accordion>
</Accordion>

<Accordion title="Identities">
  [Identity Reference Page](/reference/identity)

  <CodeGroup>
    ```json JSON theme={null}
    {
      "kind": "identity",
      "name": "example-identity",
      "description": "example-identity description",
      "tags": {},
      "gvc": "example-gvc"
    }
    ```

    ```yaml YAML theme={null}
    kind: identity
    name: example-identity
    description: example-identity description
    tags: {}
    gvc: example-gvc
    ```
  </CodeGroup>
</Accordion>

<Accordion title="Workloads">
  [Workload Reference Page](/reference/workload/general)

  <CodeGroup>
    ```json JSON theme={null}
    {
      "kind": "workload",
      "name": "example-workload",
      "description": "example-workload description",
      "tags": {},
      "gvc": "example-gvc",
      "spec": {
        "type": "serverless",
        "containers": [
          {
            "name": "main",
            "image": "nginx:latest",
            "port": 80,
            "memory": "128Mi",
            "cpu": "50m"
          }
        ],
        "defaultOptions": {
          "autoscaling": {
            "minScale": 1,
            "maxScale": 5
          }
        }
      }
    }
    ```

    ```yaml YAML theme={null}
    kind: workload
    name: example-workload
    description: example-workload description
    tags: {}
    gvc: example-gvc
    spec:
      type: serverless
      containers:
        - name: main
          image: nginx:latest
          port: 80
          memory: 128Mi
          cpu: 50m
      defaultOptions:
        autoscaling:
          minScale: 1
          maxScale: 5
    ```
  </CodeGroup>
</Accordion>

## Next steps

<CardGroup cols={2}>
  <Card title="CI/CD Usage" href="/cli-reference/ci-cd-development/ci-cd" icon="code">
    Automate deployments in CI/CD pipelines
  </Card>

  <Card title="Convert K8s Manifests" href="/guides/cli/cpln-convert" icon="arrows-rotate">
    Convert Kubernetes resources to Control Plane
  </Card>

  <Card title="GitOps" href="/cli-reference/ci-cd-development/ci-cd" icon="git-alt">
    Infrastructure as code workflows
  </Card>

  <Card title="Apply Command Reference" href="/cli-reference/commands/apply" icon="book">
    Full apply command reference
  </Card>
</CardGroup>
