Skip to content

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