Skip to main content

Quick Start

Prerequisites

  • Kubernetes cluster (kubeadm, v1.29+)
  • kubectl configured
  • GitHub personal access token (with repo access)
  • Cloudflare API token (for DNS-01 challenges)

Bootstrap the Cluster

Step 1: Install ArgoCD

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/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. Creates Cloudflare API secret for cert-manager
  9. Installs ArgoCD Ingress with TLS
  10. Installs system applications via Helm (cert-manager, MetalLB, NGINX Ingress, External-DNS, Prometheus, Loki, Pi-hole, etc.)
  11. Waits for sync to complete
tip

The bootstrap script installs all system apps defined in cluster/dev/config.yaml. Review the config before running.

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 system-apps charts/system-apps --values cluster/dev/config.yaml

Deploy manually (bypass ArgoCD)

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

Check cluster status

kubectl get nodes -o wide
kubectl get pods -A
kubectl get applications -n argocd

Next Steps