Skip to main content

Quick Start

Prerequisites

  • Kubernetes cluster (kubeadm, v1.33+)
  • kubectl configured
  • GitHub personal access token (with repo access)
  • Cloudflare API token (for DNS-01 challenges)
  • At least 2 nodes (3+ recommended for storage quorum)

Bootstrap the Cluster

Step 1: Install ArgoCD

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v3.3.3/manifests/install.yaml

Step 2: Run Bootstrap Script

export GITHUB_TOKEN=your_github_token
export CLOUDFLARE_TOKEN=your_cloudflare_token
./build/scripts/bootstrap.sh --env dev

What Bootstrap Does

  1. Validates required environment variables
  2. Checks ArgoCD is installed
  3. Waits for ArgoCD to be ready
  4. Configures repo-server resources (prevents OOM)
  5. Logs into ArgoCD
  6. Adds GitHub repo to ArgoCD
  7. Creates AppProject
  8. Installs cert-manager with Cloudflare DNS-01
  9. Installs MetalLB
  10. Installs Calico networking (replaces Flannel)
  11. Installs NGINX Ingress
  12. Installs Local Path Provisioner
  13. Installs kube-prometheus-stack (Prometheus + Grafana)
  14. Creates ArgoCD Ingress with TLS
  15. Installs system applications
  16. Waits for sync to complete

Environment Variables

VariableRequiredDescription
GITHUB_TOKENYesGitHub personal access token for repo access
CLOUDFLARE_TOKENYesCloudflare API token for DNS-01 challenge

Common Tasks

Render templates locally

helm template charts/system-apps --values cluster/dev/config.yaml --set clusterEnv=dev

Deploy manually (bypass ArgoCD)

make deploy-app ENV=dev APP=namespace-manager

Check cluster status

kubectl get nodes -o wide
kubectl get pods -A