Skip to main content

Command Palette

Search for a command to run...

Deployment of ArgoCD to EKS

Updated
3 min read
Deployment of ArgoCD to EKS
S

DevOps & Cloud Engineer — building scalable, automated, and intelligent systems. Developer of sorts | Automator | Innovator

ArgoCD is responsible for the CD pipeline, and this deploys our applications to the eks.

Steps involved:

  • updating kubeconfig to our eks endpoint, we use the following command:
aws eks update-kubeconfig --region region-code --name my-cluster

//in our case it is:
aws eks update-kubeconfig --region us-east-1 --name develop-bkstage

This will make sure that our kubectl points to our deployed eks cluster

Now we begin setting up our ArgoCD deployment for kubernetes. We already updated our kubeconfig in the first step so now we can perform the following commands:

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

This will deploy argocd to the cluster, we can check the running pods by kubectl get pods -n argocd , you will see image-updater or updater-image make sure to delete this pod once after ArgoCD UI setup for ArgoCD Image Updater to work properly

  • Port forward the argocd server when it is running with: kubectl port-forward svc/argocd-server -n argocd 8080:443

  • We will have to install argocd cli into our system to retrieve as well as change our password. brew install argocd

argocd admin initial-password -n argocd This will give us an initial password which we will use to login and change the password.

argocd login localhost:8080

argocd account update-password Here, we will be prompted to use the old password and then enter a new password. Use devops123 as the new password, for this example!

  • We have successfully changed the password through CLI and now we can use argocd properly with the UI.

    • Go to localhost:8080 and login with admin , devops123

    • In the ArgoCD UI, go to Settings → Repositories and Connect to the application-ops repository. Use https , git , enter your GitHub username and your GitHub token as password

  • Once the repository is connected, we are ready to add Apps to ArgoCD, in our case the first app will be Backstage.

  • Click on New App, then “Edit as YAML” and use the following YAML:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: backstage
  annotations:
    argocd-image-updater.argoproj.io/image-list: >-
      bkstage/devimg=<ecr repository>/bkstage/devimg
    argocd-image-updater.argoproj.io/backstage.update-strategy: semver
    argocd-image-updater.argoproj.io/backstage.semver: '>0.0.0'
    argocd-image-updater.argoproj.io/write-back-method: git
spec:
  destination:
    name: ''
    namespace: backstage
    server: https://kubernetes.default.svc
  source:
    path: backstage_nginx_secrets_manager
    repoURL: https://github.com/myorg/application-ops
    targetRevision: HEAD
  sources: []
  project: default
  syncPolicy:
    automated:
      prune: false
      selfHeal: false

Here, repoURL is the URL to our application-ops, backstage_nginx_secrets_manager is the folder that has the manifests of our Backstage in the repo.

The annotations tell the ArgoCD image updater which ECR to refer and the update strategy, where (git) it must write the update back to.

Once everything is setup, we can Create the App and our Backstage should be “Progressing” to “Healthy” after a few seconds. Incase, some error has occurred, you have to dig into the backstage namespace and check logs, describe the pods in there.

This marks the deployment of backstage to our cluster and it should also be accessible at our domain, if configured!

More from this blog

C

CodeOps Studies

39 posts

Simple write-ups on day to day code or devops experiments, tests etc.

Deployment of ArgoCD to EKS