Skip to content

Latest commit

 

History

History
133 lines (97 loc) · 4.31 KB

README.md

File metadata and controls

133 lines (97 loc) · 4.31 KB

Argo CD

Argo CD Logo

Declarative, GitOps continuous delivery for Kubernetes

🚀 Why Argo CD?

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 UI

Argo CD user interface showing application deployments

🔄 How It Works

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.

📋 Provision

Github Codespace

Open in GitHub Codespaces

bash docker/docker.sh
bash minikube/minikube.sh
bash argocd/argocd.sh

Vagrant

vagrant up --provision-with basetools,docsify,docker,minikube,argocd

Docker Compose

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

🛠️ Provisioner Script

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 +++"

🔗 Additional Resources

🚪 Access Information

After provisioning, you can access Argo CD at:

minikube kubectl -- get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d

📚 Key Features

  • 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