Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand.
Argo CD follows the GitOps pattern of using Git repositories as the source of truth for defining the desired application state. Kubernetes manifests can be specified in several ways:
- Kustomize applications
- Helm charts
- Jsonnet files
- Plain directory of YAML/JSON manifests
- Any custom config management tool configured as a config management plugin
Argo CD automates the deployment of the desired application states in the specified target environments. Application deployments can track updates to branches, tags, or be pinned to a specific version of manifests at a Git commit. See tracking strategies for additional details about the different tracking strategies available.
bash docker/docker.sh
bash minikube/minikube.sh
bash argocd/argocd.sh
vagrant up --provision-with basetools,docsify,docker,minikube,argocd
docker compose exec hashiqube /bin/bash
bash hashiqube/basetools.sh
bash docker/docker.sh
bash docsify/docsify.sh
bash minikube/minikube.sh
bash argocd/argocd.sh
The following script automates the Argo CD deployment on Minikube:
#!/bin/bash
# Print the commands that are run
set -x
# Stop execution if something fails
set -e
# Add Helm Repos
echo "+++ Adding helm repos +++"
helm repo add argo https://argoproj.github.io/argo-helm && helm repo update
# Install ArgoCD
echo "+++ Install argocd +++"
minikube kubectl -- create namespace argocd
helm install argocd argo/argo-cd \
--set server.service.type=NodePort \
--set server.service.nodePortHttp=30080 \
--set server.extraArgs[0]="--insecure" \
--namespace argocd
# Download ArgoCD CLI
echo "+++ Download ArgoCD CLI +++"
sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo chmod +x /usr/local/bin/argocd
# Get initial admin password
echo "+++ Get initial admin password +++"
sleep 15
echo "ArgoCD admin password: "
minikube kubectl -- get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
echo "+++ ArgoCD URL: http://localhost:30080 +++"
echo "+++ Username: admin, Password: Use the password from above +++"
- Argo CD Official Documentation
- DevOpsCube: Setup Argo CD Using Helm
- Argo CD Best Practices
- GitOps with Argo CD
After provisioning, you can access Argo CD at:
- URL: http://localhost:30080
- Username: admin
- Password: Retrieve using the command below:
minikube kubectl -- get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
- Automated deployment of applications to specified target environments
- Multiple config management tools support (Kustomize, Helm, Jsonnet, etc.)
- Webhooks integration for automated GitOps workflows
- Web UI for application management and visualization
- Application health status analysis
- SSO Integration with OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, LinkedIn
- Webhook integrations (GitHub, BitBucket, GitLab)
- PreSync, Sync, PostSync hooks for complex application rollouts
- Prometheus metrics for monitoring