Kubernetes
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
ClusterIssuersuch asletsencrypt-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.yamlFor 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: trueIt 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].