ArgoCD
Purpose: GitOps continuous delivery platform
Version: Helm chart 9.4.10
Namespace: argocd
Description
ArgoCD watches your Git repository and automatically syncs the desired application state to your Kubernetes cluster. It eliminates the need for manual kubectl apply commands.
This is the core component of my home Kubernetes lab, managing all system applications and user workloads through GitOps principles.
Installation
Installed via the system-apps chart using multi-source Helm:
sources:
- repoURL: https://argoproj.github.io/argo-helm
chart: argo-cd
targetRevision: 9.4.10
- repoURL: https://github.com/simran2491/k8s-playground-cluster
ref: values
Configuration
Configuration file: cluster/dev/argocd-values.yaml
The ArgoCD configuration includes:
- LoadBalancer service for external access
- Metrics enabled for Prometheus scraping
- Increased repo-server resources to prevent OOM errors
- Ingress with TLS via cert-manager
Access
- URL: https://argo.ssdk8s.xyz
- Port Forward:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Credentials
Username: admin
Password:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Components
| Component | Service | Port | Metrics |
|---|---|---|---|
| argocd-server | argocd-server | 80, 443 | 8083 |
| argocd-repo-server | argocd-repo-server | 8081 | 8084 |
| argocd-application-controller | argocd-application-controller (statefulset) | - | 8082 |
| argocd-applicationset-controller | argocd-applicationset-controller | 7000 | 8080 |
| argocd-dex-server | argocd-dex-server | 5556, 5557 | 5558 |
| argocd-redis | argocd-redis | 6379 | - |
Metrics
ArgoCD exposes Prometheus metrics via ServiceMonitors:
- Server:
argocd-server-metrics:8083/metrics - Repo Server:
argocd-repo-server-metrics:8084/metrics - Application Controller:
argocd-application-controller-metrics:8082/metrics - ApplicationSet Controller:
argocd-applicationset-controller:8080/metrics
Prometheus scrapes these automatically via ServiceMonitor with label release: kube-prometheus-stack
GitOps Workflow
- Changes are committed to Git repository
- Release tag is created via
make prepare-release - ArgoCD syncs the changes automatically
- Application state matches Git desired state
All system applications are managed through ArgoCD with sync waves to ensure proper deployment order.
AppProject
All applications are deployed under the playground project which allows:
- Source repos: This GitHub repository (
https://github.com/simran2491/k8s-playground-cluster) - Destinations: Any namespace on the local cluster
- Cluster resources: Whitelisted kinds (Namespaces, PersistentVolumes, etc.)
The AppProject is defined in charts/argocd-project/values.yaml and is self-managed by ArgoCD.