Argo CD is a GitOps controller for Kubernetes. It watches a git repository that holds your Kubernetes manifests and reconciles the cluster to match what the repository declares. You change the repository, and Argo CD applies the change. Someone edits a live resource by hand, and Argo CD reverts it to the committed state.
Stand up Argo CD on a Quake AI Kubernetes cluster from the validated OpenTofu templatek8s-cluster. You install Argo CD, connect a git repository that holds a sample app, deploy it with a sync, watch a repository change roll out, and watch Argo CD correct manual drift.
Click to zoom
Argo CD runs in the cluster, watches a git repository of Kubernetes manifests, and reconciles the running app to match each commit
Sized as a custom package on a mix of shared and dedicated vCPU.
Starting template$238.80/mo
Monthly total for the required template above. Use the configurator below to add optional pieces and see the total update.
What each resource is for
Control plane
m2a.xlarge · 4 dedicated vCPU, 16 GiB RAM, 1 Gbps
$132.00/mo
3× Worker node
s1a.medium · 4 shared vCPU, 4 GiB RAM, 0.5 Gbps
$99.00/mo
Compute shown per role at custom-package rates ($29/dedicated vCPU, $7.25/shared vCPU, $1/GiB RAM). The headline above is the billed total: the cheaper of a named plan and the custom package, plus add-ons.
Private networks, subnets, Neutron routers, and security groups are included with the plan.
VPC objects are usually free to create elsewhere, but NAT gateways bill hourly plus per-GB processed. Quake AI uses router SNAT with no separate NAT line item.
$0.00
Control-plane API requests
OpenStack API calls for provisioning and management are included.
Some managed services on other clouds meter API calls or charge for premium control-plane features.
$0.00
Kubernetes control plane
Magnum clusters run on Nova instances; there is no separate K8s platform fee in Quake AI pricing.
Managed Kubernetes on AWS, GCP, and Azure charges a control-plane fee on top of worker nodes.
Start on shared CPU for dev/test, then promote to dedicated for production with a flavor resize. The network, storage, and template stay the same.
Dev/test on shared CPU
Burstable s1a flavors; suited to prototyping and low or bursty load.
$139.80/mo
Production on the configured CPU
The headline estimate above; predictable steady-load performance.
$238.80/mo
Saves $99.00/mo while you build on shared CPU.
Shared flavors carry less RAM (m2a.xlarge (16 GiB RAM) -> s1a.medium (4 GiB RAM)). A resize reboots the instance; data on attached volumes persists. Size the dedicated flavor for the RAM your production workload needs.
Pricing data last validated: . For current rates, check quake.ai/pricing.
A git repository you can push to (GitHub, GitLab, or a self-hosted forge). The repository can be public for a first sync; Argo CD also connects to private repositories with credentials.
With the port-forward open, visit https://localhost:8080 in your browser. The certificate is self-signed, so accept the browser warning. Log in with the username admin and the password you read above.
Argo CD deploys what your git repository declares. You can author manifests by
hand, or render them from a quake.yaml
manifest using the reference GitOps renderer in consumers/gitops/.
If your app already carries a quake.yaml launch manifest, generate Kubernetes
manifests and commit them instead of writing each resource by hand:
bash
# Produce a handoff packet from your manifest (MCP prepare_launch, or export from CI)python3 consumers/gitops/quake_yaml_k8s_renderer.py \ --packet handoff.json \ --out-dir manifests \ --environments production \ --repo-url https://github.com/YOUR_USER/YOUR_REPO \ --image ghcr.io/YOUR_USER/web:main
The renderer writes a production/ directory (Deployment, Service, Ingress when
domain is set, optional in-cluster Postgres/Redis, and Secret stubs for names
only). It also writes argocd/application-production.yaml you can apply or
adapt. Populate app-secrets and datastore auth Secrets out of band before the
first sync; the renderer never writes secret values into git. See consumers/gitops/README.md
in the platform repository for the full mapping table and unmapped-service behavior.
An Application resource tells Argo CD which repository to watch, which path in it to apply, and where to deploy. Create application.yaml on your workstation and set repoURL to your repository:
YAML
apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata: name: web namespace: argocdspec: project: default source: repoURL: https://github.com/YOUR_USER/YOUR_REPO targetRevision: main path: manifests destination: server: https://kubernetes.default.svc namespace: web syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true
Apply the Application to the cluster:
bash
kubectl apply -f application.yaml
automated turns on continuous reconciliation: prune removes resources you delete from the repository, and selfHeal reverts manual changes to live resources. CreateNamespace=true creates the web namespace on the first sync.
Because selfHeal is on, Argo CD reverts changes made directly against the cluster. Scale the deployment by hand to create drift:
bash
kubectl -n web scale deployment/web --replicas=10kubectl -n web get pods --watch
Argo CD compares the live state to the repository, finds 10 replicas where the manifest declares 3, and scales the deployment back to 3 within seconds. Press Ctrl+C to stop watching once the pod count settles. The committed state wins over the manual edit.
Backups. The Application definitions live in git, but the Argo CD configuration (projects, repositories, RBAC) lives in the cluster. Back up the argocd namespace or manage its configuration as declarative files in git as well.