Local GitOps demo environment with:
k3sArgo CDKarpenter(KWOK provider simulation mode)guestbookdemo workload
Argo CD apps in this setup:
kwok(KWOK controller + stages)karpenter-kwok(Karpenter controller + CRDs)karpenter-config(KarpenterNodePool+KWOKNodeClass)guestbook(demo application)
- Argo CD manages
kwok,karpenter-kwok, andguestbookapplications - Argo CD explicitly manages
NodePoolandKWOKNodeClassviakarpenter-config - Karpenter creates
NodeClaimobjects for pending pods - Simulated nodes appear (
providerIDstarts withkwok://) - Workload pods schedule onto simulated capacity
- Linux host with Docker, kubectl, helm, curl, go
k3sand Argo CD already installed and healthy- Local KWOK controller image loaded into
k3scontainerd as:docker.io/library/kwok-controller-local:v1.8.0
argocd/applications/kwok.yamlargocd/applications/karpenter-kwok.yamlargocd/applications/karpenter-config.yamlargocd/applications/guestbook.yamlargocd/applications/app-of-apps.yamlmanifests/karpenter/kwok-nodeclass.yamlmanifests/karpenter/nodepool.yamlmanifests/karpenter/kustomization.yamlmanifests/validation/inflate.yamlscripts/bootstrap.shscripts/build-kwok-image.shscripts/verify.shscripts/cleanup.sh
chmod +x scripts/*.sh
./scripts/build-kwok-image.sh
./scripts/bootstrap.sh
./scripts/verify.shPush this repo to Git first, then run:
Note: argocd/applications/app-of-apps.yaml is a template with REPLACE_WITH_YOUR_GIT_REPO_URL.
Use the helper script below so the URL/revision are rendered correctly.
./scripts/bootstrap-app-of-apps.sh <your_git_repo_url> [git_revision]
./scripts/verify.shExample:
./scripts/bootstrap-app-of-apps.sh https://github.com/<org>/<repo>.git HEADkubectl -n argocd port-forward svc/argocd-server 8080:443
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d && echoOpen: https://localhost:8080 (user: admin)
kubectl -n argocd get applications
kubectl -n argocd describe application karpenter-kwok
kubectl -n kube-system get pods
kubectl -n kube-system logs deploy/karpenter --tail=200
kubectl get nodeclaims.karpenter.sh -o wide
kubectl get nodes -o wide
kubectl -n karpenter-demo get pods -o wide./scripts/cleanup.sh