A complete local environment for demonstrating Argo Rollouts with Nginx Ingress Controller and Prometheus monitoring.
This project provides a development environment to showcase progressive delivery capabilities with Argo Rollouts:
- Local Kubernetes environment (kind, minikube, or k3d)
- Nginx Ingress Controller for traffic management
- Prometheus and Grafana for metrics and visualization
- Example applications demonstrating various deployment strategies
- Kubernetes cluster (minikube, kind, or k3d)
- kubectl
- Helm
- Argo Rollouts kubectl plugin
# Using kind
kind create cluster --name argo-rollouts-demo
# OR with minikube
minikube start --cpus 4 --memory 8192kubectl apply -k argocdkubectl apply -k apps/argo-rollouts
kubectl apply -k apps/kube-prometheus-stack
kubectl apply -k apps/nginx-ingress-controllerkubectl apply -f ./apps/rollouts-demoexport INGRESS_HOST=$(kubectl get svc -n ingress-nginx ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
# If using minikube, run in a separate terminal:
# minikube tunnel# Get host and IP
kubectl get ingress rollouts-demo -o jsonpath='{.spec.rules[0].host}'
kubectl get ingress rollouts-demo -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
# Add to /etc/hosts for local testing
# Example: echo '198.19.249.2 rollouts-demo.example.com' >> /etc/hosts
# Then open http://rollouts-demo.example.com in your browserkubectl argo rollouts dashboard
# Open http://localhost:3100/rollouts# Port-forward Grafana service
kubectl port-forward svc/prometheus-grafana -n monitoring 3000:80
# Access Grafana at http://localhost:3000
# Default credentials: admin / prom-operator
# Import Nginx dashboard:
# https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/grafana/dashboards/nginx.json
# Import Argo dashboard by ID: 14584# Update application image to trigger rollout
kubectl argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:blue
# Watch rollout progress
kubectl argo rollouts get rollout rollouts-demo --watch# After verification, promote the rollout
kubectl argo rollouts promote rollouts-demo- Canary Deployment: Gradually shifts traffic from stable to new version
- Blue/Green Deployment: Deploys new version alongside old version, then switches traffic
- Analysis with Prometheus: Uses metrics to automatically validate deployments
.
├── README.md
├── apps/ # Application manifests
│ ├── argo-rollouts/ # Argo Rollouts components
│ ├── ingress-nginx/ # Ingress controller
│ ├── kube-prometheus-stack/ # Prometheus and Grafana
│ └── rollouts-demo/ # Demo application
└── screenshots/ # Demo screenshots
- kube-prometheus-stack failed to sync on ArgoCD: Select the out-of-sync application and click on the "Sync" button with "Replace" strategy.
- Metrics not showing in Prometheus: Verify ServiceMonitor resources are correctly configured


