ArgoCD
Server Deployment
Install it using Helm preferrably on its namespace:
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
helm install argocd argo/argo-cd -n argocd --create-namespace
Get credentials:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Optionally, service argocd-server can be patched to LoadBalancer or NodePort and can be accessed directly using IP and assigned port.
But better approach is configuring it under HTTPS and put it on subdomain of application. Here how:
First, create secret (assuming certification process mentioned earlier was done):
kubectl create secret tls argocd-server-tls \
--cert=/etc/letsencrypt/live/domain.name/fullchain.pem \
--key=/etc/letsencrypt/live/domain.name/privkey.pem \
--namespace=argocd
Then, apply ingress:
kubectl apply -f argocd/ingress.yaml
Now, it should be available under argocd.domain.name.
Application Deployment
Install ArgoCD CLI using docs
Login to previously deployed server (or use IP and port if service was patched):
argocd login argocd.domain.name
If private repository planned to use as a source in ArgoCD application, give access to it:
argocd repo add git@github.com:username/private-repo.git --ssh-private-key-path ~/.ssh/filename
Deploy an application:
kubectl apply -f argocd/application-staging.yaml
It can be observed on argocd.domain.name.
Access it using login admin and password which was obtained earlier