Getting Started with ArgoCD Using Helm and Ingress

You’ve got a Kubernetes cluster up and humming. Now it’s time to deploy applications the GitOps way—with ArgoCD. In this guide, we’ll use Helm to install ArgoCD, configure an Ingress with cert-manager for automatic TLS, and wire up your Git repository (argocd-example) to manage application deployment.

Why ArgoCD?

ArgoCD helps you manage Kubernetes the GitOps way. Everything lives in Git, changes are declarative, and you can see drift in real-time. It syncs your cluster with your repo and provides a dashboard, CLI, and API for managing everything.


Prerequisites

Before diving in, make sure you have:


Step 1: Add the ArgoCD Helm Repo

helm repo add argo https://argoproj.github.io/argo-helm
helm repo update

Step 2: Install ArgoCD with Helm and Ingress Enabled

We'll install ArgoCD and configure it to use an Ingress and a TLS certificate automatically issued by cert-manager.

Let's create a values.yaml. Make sure you change the domain to be your domain.

global:
  domain: argocd.example.com

configs:
  params:
    server.insecure: true

server:
  ingress:
    enabled: true
    ingressClassName: nginx
    annotations:
      nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
      nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
      cert-manager.io/cluster-issuer: letsencrypt-dns
      external-dns.alpha.kubernetes.io/hostname: argocd.example.com
    extraTls:
      - hosts:
          - argocd.example.com
        secretName: argocd-tls

This tells ArgoCD to:

  • Enable Ingress
  • Use your domain (argocd.example.com)
  • Request a TLS cert via cert-manager using ClusterIssuer: letsencrypt-dns
  • Terminate TLS with a secret named argocd-tls
Change letsencrypt-dns to your actual ClusterIssuer name if different.
  • Adds a DNS record for argocd.example.com

Apply the chart

helm upgrade --install argocd argo/argo-cd --namespace argocd \
--create-namespace --values=values.yaml

Step 3: cert-manager Automatically Handles TLS

Since cert-manager is already running, it will see the cert-manager.io/cluster-issuer annotation on the ArgoCD Ingress and automatically:

  • Issue a certificate using Let’s Encrypt (or your configured CA)
  • Store it in the argocd-tls secret
  • Handle renewals automatically

You can verify that the certificate is issued and the secret exists:

kubectl describe certificate argocd-tls -n argocd

And confirm the Ingress is live:

kubectl get ingress -n argocd

Join the Newsletter

Subscribe to get more DevOps Tips & Tricks

    We won't send you spam. Unsubscribe at any time.

    Step 4: External-DNS automatically handles the DNS record

    Visit https://argocd.example.com to see the ArgoCD login screen with a valid HTTPS cert.


    Step 5: Log into ArgoCD

    Get the default admin password:

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

    Install the CLI:

    brew install argocd
    

    or visit: https://argo-cd.readthedocs.io/en/stable/cli_installation/

    Login using the CLI:

    argocd login argocd.example.com --username admin --password <password>
    

    Step 6: Connect Your Git Repository

    Connect the argocd-example-apps repo to ArgoCD:

    argocd repo add https://github.com/argoproj/argocd-example-apps

    Step 8: Deploy Your First Application

    Create an Application YAML in your repo:

    # guestbook.yaml
    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: guestbook
      namespace: argocd
    spec:
      project: default
      source:
        repoURL: https://github.com/argoproj/argocd-example-apps
        targetRevision: HEAD
        path: guestbook
      destination:
        server: https://kubernetes.default.svc
        namespace: guestbook
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
    

    Create the guestbook namespace to deploy the apps into

    kubectl create namespace guestbook

    And deploy it with kubectl

    kubectl apply -f guestbook.yaml

    Once committed and pushed, ArgoCD will detect and sync the application automatically.


    Wrapping Up

    With ArgoCD installed via Helm and secured by cert-manager, you now have a GitOps pipeline ready to deploy and manage your Kubernetes applications.