# atmos kubernetes deploy

Run a Kubernetes deployment using Atmos language. `deploy` is the
workflow-friendly alias for applying a stack-configured Kubernetes component,
useful when your automation treats Kubernetes resources as deployable
services.

**Configure Kubernetes Components**

`deploy` uses the same stack and `atmos.yaml` settings as `apply`, including
manifest paths, variables, credentials, hooks, and dependency ordering.

Stack Configuration

[Read more](/stacks/components/kubernetes)

atmos.yaml Configuration

[Read more](/cli/configuration/components/kubernetes)

## Usage

```shell
atmos kubernetes deploy <component> --stack <stack>
atmos kubernetes deploy --affected --base origin/main --include-dependents
```

In v1, `deploy` is an alias of
[`atmos kubernetes apply`](/cli/commands/kubernetes/apply). It renders the final
manifests and applies them through the Kubernetes Go SDK using server-side
apply.

Use `deploy` when you want command language that matches an application deployment workflow. Use `apply` when you want command language that mirrors Kubernetes API behavior.

## Example

```shell
atmos kubernetes deploy argocd -s plat-ue2-dev
```

## Deployment repositories (GitOps)

By default `deploy`/`apply` applies the rendered manifests to the cluster. A
component can instead publish them to a Git deployment repository (the
source-of-truth that Argo CD or Flux reconciles) by declaring delivery targets
under `provision.targets`:

```yaml
components:
  kubernetes:
    argocd:
      provision:
        default: cluster
        targets:
          cluster:
            kind: kubernetes
          deployment-repo:
            kind: git
            repository: deployments        # references git.repositories.<name>
            path: "clusters/{{ .vars.cluster }}/argocd"
            commit:
              message: "Render {{ .vars.app_name }} for {{ .vars.stage }}"
```

Selecting the git target renders the manifests once and commits them to the
configured repository instead of applying to the cluster:

```shell
atmos kubernetes deploy argocd -s plat-ue2-dev --target=deployment-repo
```

When `--target` is omitted, `provision.default` is used, otherwise the cluster.
Credentials for cloning and pushing come from Atmos Auth (GitHub STS), so no
tokens are stored in the manifests.

## Flags

- **`--stack`, `-s` (optional)**
  Atmos stack. Required when deploying a named component; not required with 
  `--affected`
  .
- **`--target` (optional)**

  Provision target to deliver to (a named `provision.targets` entry, e.g. a git
  deployment repository). Defaults to `provision.default`, otherwise the cluster.
- **`--all` (optional)**
  Deploy all Kubernetes components in dependency order.
- **`--affected` (optional)**
  Deploy affected Kubernetes components and their dependencies.
- **`--include-dependents` (optional)**
  With 
  `--affected`
  , include dependent Kubernetes components.
