Complete steps to install ArgoCD on your cluster: choosing an installation method, initial configuration, access to the API server, and customizations for high availability, ingress, and TLS.

Up to episode 3, all the material was conceptual. Now it's time to touch the keyboard: we're going to install ArgoCD on a local cluster. Before jumping to the conclusion that installation is just "copy-paste YAML," remember that the decisions you make here — the installation method, how you manage the admin password, and your access strategy — will affect the security and operations of your ArgoCD forever.
In this episode we'll cover four installation methods, step-by-step installation, initial configuration (password, login, CLI), and production customizations like HA, ingress, and TLS.
There are four main paths to install ArgoCD:
| Method | Best for | Approach |
|---|---|---|
Manifest (kubectl apply) | Lab, quickstart | Official install.yaml |
| Helm chart | Production, customization | argo-cd chart from argoproj |
| Operator (argocd-operator) | Teams that like the operator pattern | ArgoCD CRD + reconciliation |
| ArgoCD Autopilot | GitOps-first bootstrap | Bootstrap via Git bootstrap manifest |
For this series we start with the official manifest (most transparent, fewest unknown components), then cover the Helm variant in the customization section.
Tip
In a lab, installing via the official manifest is the best choice because you can see exactly what gets deployed. In production, the argo-cd Helm chart is the de facto standard because it lets you adjust values in a structured way.
Create the namespace first, then apply the official manifest:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl get pods -n argocd
kubectl get svc -n argocdVerify all pods are Running (give it a minute or two for image pulls). After that, access the API server. For a local lab, port-forward is the simplest:
kubectl port-forward svc/argocd-server -n argocd 8080:443The ArgoCD UI can now be opened at https://localhost:8080. The untrusted certificate warning is normal — it's self-signed for the lab.
The initial admin password is the argocd-server pod name:
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath='{.data.password}' | base64 -dLog in for the first time from the browser with user admin and that password, then change the password immediately.
Install the ArgoCD CLI, then log in:
argocd login localhost:8080 --insecure
argocd account update-password
argocd versionWarning
The default password is a public secret that's very easy to guess (the pod name). Change it right after the first login — make this a habit in every environment, not just the lab.
Click the avatar in the top-right corner → Update Password. Enter the old password, set a new one. After that, the old CLI session must be logout and you log back in.
After logging in, you'll see:
default).A more structured alternative is the official Helm chart:
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
helm install argocd argo/argo-cd --namespace argocd --create-namespace \
--set server.service.type=LoadBalancerArgoCD supports HA mode: enable multiple server, repo-server, and dex replicas, plus Redis with Sentinel:
--set server.replicas=2 \
--set repoServer.replicas=2 \
--set redis-ha.enabled=true \
--set controller.replicas=1Important note: the Application Controller uses leader election — only one is actively working, the rest are on standby.
In a real cluster, port-forward isn't enough. Expose it via Ingress with TLS:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd-server-ingress
namespace: argocd
annotations:
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- argocd.example.com
secretName: argocd-tls
rules:
- host: argocd.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: argocd-server
port:
number: 443This Ingress forwards traffic directly to the argocd-server service on port 443 — important because ArgoCD runs gRPC and HTTPS on a single port.
ArgoCD is now running on your cluster:
Installation is done, but it doesn't feel "alive" yet — the UI is still empty. In episode 5 we'll explore the ArgoCD UI and CLI: the dashboard, application view, tree view, diff, logs, and all the important CLI commands like argocd app list and argocd app sync. See you there!