Platform

Kubernetes

Last updated January 2026

Spawned can deploy to any Kubernetes cluster you have access to EKS, GKE, AKS or self-hosted. When you create a project with Kubernetes as the platform, your infrastructure is compiled into a single manifests.yaml file and exposed to you via a read-only Git repository.


Deployment

If you created your Kubernetes-cluster with Spawned, you can skip this step. Set up is done automatically and Spawned will provision your Kubernetes resources in the connected cluster.

Bring your own cluster

If you want to deploy to your own cluster, we recommend a GitOps-based workflow using either ArgoCD or Flux. Spawned’s Git repository allows you to connect your cluster to Spawned in a pull-based workflow without needing to share your cluster credentials.

Spawned is not able to read the state of your cluster, so it cannot read logs or show you a live view of your resources. However, you can use kubectl or your cluster’s dashboard to monitor the state of your resources and debug any issues.


1. Register the Spawned repo with ArgoCD

ArgoCD needs to authenticate against Spawned’s read-only Git proxy. The proxy uses HTTP Basic auth where the password is a Spawned API key. Generate a key in Settings > API Keys, then run this once per ArgoCD instance:

argocd repo add https://spawned.ai/projects/<deployment_id>.git \
  --username spawned \
  --password sk_…

The same API key works for every project in your account, so you only need to register one repo URL pattern. If you’d rather scope per-project, add each one individually.

2. Apply the Application manifest

Use the template below, substituting your project’s <deployment_id> (the slug shown in your project URL: spawned.ai/projects/<deployment_id>):

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: spawned-<deployment_id>
  namespace: argocd
  labels:
    spawned.ai/deployment-id: <deployment_id>
spec:
  project: default
  source:
    repoURL: https://spawned.ai/projects/<deployment_id>.git
    targetRevision: main
    path: .
    directory:
      include: manifests.yaml
  destination:
    server: https://kubernetes.default.svc
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
      - ServerSideApply=true

Then either:

  • App-of-apps: commit the file to the directory your root Application watches. ArgoCD picks it up on its next reconcile.
  • Direct apply: save it locally and run kubectl apply -f spawned-<deployment_id>.yaml.

Need Help?

If you run into issues setting up ArgoCD or applying manifests, ping us on Discord or email [email protected].

    Kubernetes