Tools: Setting Up ArgoCD on Minikube for a Local Dev Environment

Tools: Setting Up ArgoCD on Minikube for a Local Dev Environment

Prerequisites

Step 1 — Start Minikube

Step 2 — Create the ArgoCD Namespace

Step 3 — Install ArgoCD

Step 4 — Expose the ArgoCD UI

Step 5 — Install the ArgoCD CLI

Step 6 — Retrieve the Initial Admin Password

Step 7 — Log in via CLI

Step 8 — Change the Admin Password

Step 9 — Register Your Cluster (optional for Minikube)

Step 10 — Deploy Your First Application

Step 11 — Trigger & Check Sync

Step 12 — Access the ArgoCD Web UI

Bonus: Use a NodePort Instead of Port-Forward

Bonus: Enable Minikube Addons

Cleanup

Quick Reference Cheat Sheet Before starting, make sure you have these installed: Apply the official ArgoCD install manifest: Verify all pods are up: For local dev, port-forward the ArgoCD API server: Keep this terminal open. The UI is now available at https://localhost:8080 Windows (Chocolatey): Copy the output — this is your initial password, user name "admin" --insecure skips TLS verification for local dev — do NOT use in production. Since we're deploying to the same cluster ArgoCD runs on, register it: List registered clusters: This example deploys the official ArgoCD guestbook sample app: Watch live sync status: Open https://localhost:8080 in your browser (accept the self-signed cert warning), log in as admin, and you'll see the guestbook app fully synced. For a more persistent local setup, patch the service to NodePort: Then get the Minikube URL: To tear everything down: Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Code Block

Copy

minikube start --driver=docker minikube start --driver=docker minikube start --driver=docker kubectl get nodes kubectl get nodes kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready control-plane 30s v1.30.x NAME STATUS ROLES AGE VERSION minikube Ready control-plane 30s v1.30.x NAME STATUS ROLES AGE VERSION minikube Ready control-plane 30s v1.30.x kubectl create namespace argocd kubectl create namespace argocd kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml kubectl get pods -n argocd kubectl get pods -n argocd kubectl get pods -n argocd NAME READY STATUS RESTARTS argocd-application-controller-0 1/1 Running 0 argocd-applicationset-controller-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-dex-server-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-notifications-controller-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-redis-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-repo-server-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-server-xxxxxxxxx-xxxxx 1/1 Running 0 NAME READY STATUS RESTARTS argocd-application-controller-0 1/1 Running 0 argocd-applicationset-controller-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-dex-server-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-notifications-controller-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-redis-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-repo-server-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-server-xxxxxxxxx-xxxxx 1/1 Running 0 NAME READY STATUS RESTARTS argocd-application-controller-0 1/1 Running 0 argocd-applicationset-controller-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-dex-server-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-notifications-controller-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-redis-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-repo-server-xxxxxxxxx-xxxxx 1/1 Running 0 argocd-server-xxxxxxxxx-xxxxx 1/1 Running 0 kubectl port-forward svc/argocd-server -n argocd 8080:443 kubectl port-forward svc/argocd-server -n argocd 8080:443 kubectl port-forward svc/argocd-server -n argocd 8080:443 brew install argocd brew install argocd brew install argocd curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd rm argocd-linux-amd64 curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd rm argocd-linux-amd64 curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd rm argocd-linux-amd64 choco install argocd-cli choco install argocd-cli choco install argocd-cli kubectl get secret argocd-initial-admin-secret \ -n argocd \ -o jsonpath="{.data.password}" | base64 -d && echo kubectl get secret argocd-initial-admin-secret \ -n argocd \ -o jsonpath="{.data.password}" | base64 -d && echo kubectl get secret argocd-initial-admin-secret \ -n argocd \ -o jsonpath="{.data.password}" | base64 -d && echo argocd login localhost:8080 \ --username admin \ --password <YOUR_PASSWORD_HERE> \ --insecure argocd login localhost:8080 \ --username admin \ --password <YOUR_PASSWORD_HERE> \ --insecure argocd login localhost:8080 \ --username admin \ --password <YOUR_PASSWORD_HERE> \ --insecure argocd account update-password \ --current-password <YOUR_PASSWORD_HERE> \ --new-password <NEW_STRONG_PASSWORD> argocd account update-password \ --current-password <YOUR_PASSWORD_HERE> \ --new-password <NEW_STRONG_PASSWORD> argocd account update-password \ --current-password <YOUR_PASSWORD_HERE> \ --new-password <NEW_STRONG_PASSWORD> argocd cluster add minikube --in-cluster argocd cluster add minikube --in-cluster argocd cluster add minikube --in-cluster argocd cluster list argocd cluster list argocd cluster list argocd app create guestbook \ --repo https://github.com/argoproj/argocd-example-apps.git \ --path guestbook \ --dest-server https://kubernetes.default.svc \ --dest-namespace default \ --sync-policy automated \ --auto-prune \ --self-heal argocd app create guestbook \ --repo https://github.com/argoproj/argocd-example-apps.git \ --path guestbook \ --dest-server https://kubernetes.default.svc \ --dest-namespace default \ --sync-policy automated \ --auto-prune \ --self-heal argocd app create guestbook \ --repo https://github.com/argoproj/argocd-example-apps.git \ --path guestbook \ --dest-server https://kubernetes.default.svc \ --dest-namespace default \ --sync-policy automated \ --auto-prune \ --self-heal argocd app sync guestbook argocd app sync guestbook argocd app sync guestbook argocd app get guestbook argocd app get guestbook argocd app get guestbook argocd app wait guestbook --sync argocd app wait guestbook --sync argocd app wait guestbook --sync argocd app list argocd app list argocd app list kubectl patch svc argocd-server \ -n argocd \ -p '{"spec": {"type": "NodePort"}}' kubectl patch svc argocd-server \ -n argocd \ -p '{"spec": {"type": "NodePort"}}' kubectl patch svc argocd-server \ -n argocd \ -p '{"spec": {"type": "NodePort"}}' minikube service argocd-server -n argocd --url minikube service argocd-server -n argocd --url minikube service argocd-server -n argocd --url # Enable ingress minikube addons enable ingress # Enable dashboard (useful for debugging) minikube addons enable dashboard minikube dashboard # Enable ingress minikube addons enable ingress # Enable dashboard (useful for debugging) minikube addons enable dashboard minikube dashboard # Enable ingress minikube addons enable ingress # Enable dashboard (useful for debugging) minikube addons enable dashboard minikube dashboard # Delete the ArgoCD app argocd app delete guestbook --cascade # Delete ArgoCD namespace kubectl delete namespace argocd # Stop Minikube minikube stop # (Optional) Fully delete the cluster minikube delete # Delete the ArgoCD app argocd app delete guestbook --cascade # Delete ArgoCD namespace kubectl delete namespace argocd # Stop Minikube minikube stop # (Optional) Fully delete the cluster minikube delete # Delete the ArgoCD app argocd app delete guestbook --cascade # Delete ArgoCD namespace kubectl delete namespace argocd # Stop Minikube minikube stop # (Optional) Fully delete the cluster minikube delete # Start environment minikube start --cpus=4 --memory=8192 --driver=docker kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml kubectl port-forward svc/argocd-server -n argocd 8080:443 # Get password kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d && echo # Login argocd login localhost:8080 --username admin --password <PASS> --insecure # Deploy an app argocd app create <APP> --repo <REPO_URL> --path <PATH> \ --dest-server https://kubernetes.default.svc --dest-namespace default \ --sync-policy automated --auto-prune --self-heal # Sync + status argocd app sync <APP> argocd app get <APP> argocd app list # Start environment minikube start --cpus=4 --memory=8192 --driver=docker kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml kubectl port-forward svc/argocd-server -n argocd 8080:443 # Get password kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d && echo # Login argocd login localhost:8080 --username admin --password <PASS> --insecure # Deploy an app argocd app create <APP> --repo <REPO_URL> --path <PATH> \ --dest-server https://kubernetes.default.svc --dest-namespace default \ --sync-policy automated --auto-prune --self-heal # Sync + status argocd app sync <APP> argocd app get <APP> argocd app list # Start environment minikube start --cpus=4 --memory=8192 --driver=docker kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml kubectl port-forward svc/argocd-server -n argocd 8080:443 # Get password kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d && echo # Login argocd login localhost:8080 --username admin --password <PASS> --insecure # Deploy an app argocd app create <APP> --repo <REPO_URL> --path <PATH> \ --dest-server https://kubernetes.default.svc --dest-namespace default \ --sync-policy automated --auto-prune --self-heal # Sync + status argocd app sync <APP> argocd app get <APP> argocd app list - Docker (running) - minikube ≥ v1.30 - kubectl ≥ v1.27 - Helm ≥ v3.12 (optional but recommended)