This repo demonstrates a complete GitOps setup to deploy the Loki logging stack (Loki + Promtail + Grafana + Prometheus) using Argo CD on Minikube.
loki-argo/
├── charts/loki-stack/ # Vendored Helm chart
├── values.yaml # Custom values for Loki stack
├── loki-stack-app.yaml # Argo CD Application for Loki stack
├── nginx/ # Sample additional app (NGINX)
│ └── deployment.yaml
├── nginx-app.yaml # Argo CD Application for NGINX
| Component | Description |
|---|---|
| Loki | Log aggregation and storage |
| Promtail | Log collector (sidecar/DaemonSet) |
| Grafana | Dashboards for logs + metrics |
| Prometheus | Metrics collection |
| Argo CD | GitOps controller (pre-installed) |
| NGINX (demo) | Sample GitOps-managed deployment |
minikube start --cpus 4 --memory 6gkubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Expose Argo CD UI
kubectl port-forward svc/argocd-server -n argocd 8080:443Login with:
# Get admin password
kubectl -n argocd get secret argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 -dAccess: https://localhost:8080
kubectl apply -f loki-stack-app.yamlArgo CD will:
- Fetch the vendored Helm chart
- Apply your
values.yaml - Sync the full Loki stack to the
observabilitynamespace
kubectl apply -f nginx-app.yamlThis demonstrates how to manage any app (not just Helm charts) via GitOps.
kubectl get all -n observabilityYou should see:
loki,promtail,grafana,prometheus, andnginxrunning- Grafana exposed (optional: use port-forward or ingress)
-
Grafana:
- Username:
admin - Password:
newadmin123(set in values)
- Username:
- Edit
values.yamlto change storage backends, scrape configs, dashboards, etc. - Add new apps (like
nginx/) and corresponding Argo CD Application files. - Use
ApplicationSetfor multi-env or multi-cluster deployments.
- 🔄 All config in Git
- ♻️ Auto sync via Argo CD
- 📦 Helm chart versioning
- 🔍 Audit-friendly
MIT — free to use, modify, and share.


