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
- Validates required environment variables
- Checks ArgoCD is installed
- Waits for ArgoCD to be ready
- Configures repo-server resources (prevents OOM)
- Logs into ArgoCD
- Adds GitHub repo to ArgoCD
- Creates AppProject
- Creates Cloudflare API secret for cert-manager
- Installs ArgoCD Ingress with TLS
- Installs system applications via Helm (cert-manager, MetalLB, NGINX Ingress, External-DNS, Prometheus, Loki, Pi-hole, etc.)
- 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
| Variable | Required | Description |
|---|---|---|
GITHUB_TOKEN | Yes | GitHub personal access token for repo access |
CLOUDFLARE_TOKEN | Yes | Cloudflare 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
- Deployment Flow - Understand the GitOps workflow
- Architecture - Learn about cluster components
- Adding Apps - Deploy your first application