Platforms

Kubernetes

Last updated January 2026

Spawned deploys to a Kubernetes cluster you bring, whether EKS, GKE, AKS, or self-hosted. Your project is compiled into a manifests.yaml served from a read-only Git repository, and your cluster syncs it with GitOps. Spawned never needs your cluster credentials, so you keep full control.

Because Spawned pulls rather than pushes, it cannot see inside your cluster. Live resource views and runtime logs are not available for Kubernetes projects. Use kubectl or your cluster’s dashboard to inspect pods and debug.


1. Register your cluster

In your organization’s Clusters settings, add your cluster. This tells Spawned how to generate manifests for it. You can set:

  • Namespace the project’s resources go into (supports {project} and {org}).
  • HTTP routing: Ingress (with an ingress class such as nginx) or the Gateway API.
  • TLS through cert-manager, by naming a ClusterIssuer such as letsencrypt-prod.
  • An optional default domain attached to new projects on this cluster.
  • Pod security profile.

Turn on Manage projects through ArgoCD to use the automated GitOps flow below. Registering a cluster requires the owner role and is done in the dashboard.


2. Connect ArgoCD

Spawned uses an app-of-apps model: you install a single root Application once, and every project you deploy to this cluster then appears in ArgoCD automatically. Open the cluster’s ArgoCD setup panel and run its two steps once against your cluster.

Register a credential so ArgoCD can read your Spawned repositories. Generate a Spawned API key under Settings → API keys, then:

argocd repocreds add https://api.prod.spawned.ai/git \
  --username spawned \
  --password <your-api-key>

One credential covers this cluster’s repository and all of its project repositories.

Install the root Application. Copy the manifest from the panel (it is filled in for your cluster) and apply it:

kubectl apply -f spawned-root.yaml

For reference, the root Application looks like this:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: spawned-<cluster-name>
  namespace: argocd
  labels:
    spawned.ai/cluster-id: <cluster-id>
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
  project: default
  source:
    repoURL: https://api.prod.spawned.ai/git/clusters/<cluster-id>.git
    targetRevision: HEAD
    path: apps
    directory:
      recurse: false
      include: "*.yaml"
  destination:
    server: https://kubernetes.default.svc
    namespace: argocd
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
      allowEmpty: true

It watches a Spawned-managed repository that lists one Application per project on this cluster. ArgoCD reconciles it on its usual schedule.


3. Deploy projects

Create Kubernetes projects as usual and choose this cluster. Each time you apply changes, Spawned updates the project’s manifests.yaml, and ArgoCD syncs it on its next reconcile. New projects appear automatically and removed ones are pruned. There is no per-project manifest to apply by hand.

ArgoCD is the supported GitOps tool. Flux can pull the same repositories, but Spawned does not generate Flux configuration for you.


Need help?

If you run into issues connecting ArgoCD or your cluster, ping us on Discord or email [email protected].

    Kubernetes