argocd

Deploy Argo CD:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.6.7/manifests/install.yaml

Run port-forward for getting to the dashboard https://127.0.0.1:8080:

kubectl port-forward svc/argocd-server -n argocd 8080:443

ID: admin Pass:

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

CI/CD Workflow:

flowchart TD
   subgraph localhost
   LocalA(git commit) --> LocalB(git push)
   end
   subgraph Github
   LocalB --> GitHubRepo[GitHub Repo]
   GitHubRepo --> GitHubRepoCI
   subgraph Github Actions
   subgraph GitHubRepoCI[GitHub Repo CI]
   GitHubRepoCIA(docker build) --> GitHubRepoCIB(docker push)
   end
   subgraph ArgoCD[Argo Apps Repo CI]
   ArgoCDA(git commit) -- Update Kubernetes Manifest --> ArgoCDB(git push)
   end
   GitHubRepoCI -- Successful Build --> ArgoCD
   end
   ArgoCD --> ArgoAppsRepo[Argo Apps Repo]
   end
   subgraph Kubernetes[Kubernetes Cluster]
   ArgoWorkflow[ArgoCD] -- Kubernetes Manifest --> Deployment{App Deployment}
   Vault[HashiCorp Vault] -- Secrets --> Deployment
   Volumes[(Database Volumes)] <== Read and Write ==> Deployment
   Deployment --> Caddy
   end
   GitHubRepoCIB --> DockerHub{{DockerHub}}
   ArgoAppsRepo --> ArgoWorkflow
   DockerHub -- Docker Images --> Deployment
   Caddy -- TLS Encryption --> Internet((Internet / Public URL))