Installing and Configuring ArgoCD

My First ArgoCD Installation (And the Mistakes I Made)

I was excited to try ArgoCD. I found a blog post that said "Just run this one command!"

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

Done! ArgoCD installed in 30 seconds. Easy!

But then:

  • How do I access the UI?

  • What's the admin password?

  • How do I connect my Git repo?

  • Why can't I access it from outside the cluster?

I spent 2 hours figuring out what that "simple" installation actually did.

This article is the guide I wish I had: a complete, production-ready ArgoCD installation with explanations.

Prerequisites

Before installing ArgoCD, you need:

1. Kubernetes Cluster

# Check if you have a cluster
kubectl cluster-info
# Kubernetes control plane is running at https://...

# Check version (ArgoCD needs 1.20+)
kubectl version --short
# Server Version: v1.28.0

Options if you don't have a cluster:

  • Local: minikube start or kind create cluster

  • Cloud: GKE, EKS, AKS

  • Development: Docker Desktop Kubernetes

2. kubectl Configured

3. Cluster Admin Access

4. Enough Cluster Resources

Minimum requirements:

  • 2 CPU cores

  • 4GB RAM

  • 10GB storage

Installation Methods

There are three ways to install ArgoCD:

  1. Raw manifests (what we'll use) - Simple, explicit

  2. Helm chart - For Helm users, customizable

  3. Operator - For automated management

We'll use raw manifests for clarity.

Step 1: Create ArgoCD Namespace

Why a dedicated namespace?

  • Isolates ArgoCD components

  • Easier RBAC management

  • Clean separation from applications

Step 2: Install ArgoCD

Or Direct Install

What Gets Installed

What was created:

  • 5 Deployments/StatefulSets (server, repo-server, controller, dex, notifications)

  • 4 Services

  • 3 CRDs (Application, ApplicationSet, AppProject)

  • ConfigMaps, Secrets, ServiceAccounts, Roles

Step 3: Verify Installation

Troubleshooting if pods aren't ready:

Step 4: Access ArgoCD UI

By default, ArgoCD server is ClusterIP (not accessible externally).

Option 1: Port Forward (Quick Testing)

Pros: Simple, no cluster changes Cons: Only accessible from your machine, need to keep terminal open

Option 2: NodePort (Development)

Pros: Accessible from network Cons: High port number, not production-ready

Option 3: LoadBalancer (Cloud Clusters)

Pros: Production-ready, real IP Cons: Costs money (cloud load balancer), requires cloud provider

Pros: Custom domain, SSL/TLS, production-ready Cons: Requires ingress controller, DNS setup

Step 5: Get Admin Password

Login credentials:

  • Username: admin

  • Password: <output from above command>

Important: Change this password immediately after first login!

Step 6: Install ArgoCD CLI

The CLI is optional but highly recommended.

macOS

Linux

Windows

Step 7: Login via CLI

Step 8: Change Admin Password

Via UI:

  1. Login to Web UI

  2. Click "User Info" (top right)

  3. Click "Update Password"

  4. Enter new password

Via CLI:

Best practice: Delete the initial secret after changing password

Step 9: Connect Git Repository

Via CLI

Via UI

  1. Go to Settings → Repositories

  2. Click "Connect Repo"

  3. Choose connection method:

    • HTTPS

    • SSH

    • GitHub App

  4. Enter credentials

  5. Click "Connect"

Via YAML

Step 10: Create First Application (Quick Test)

Verify in cluster:

Configuration Options

Enable Auto-Sync Globally

Configure Resource Limits

Enable Metrics

Security Hardening

1. Disable Admin User

2. Enable RBAC

3. Use SSO (Dex)

4. Network Policies

Common Issues and Solutions

Issue 1: Can't Access UI

Issue 2: Login Failed

Issue 3: Can't Connect to Git Repo

Issue 4: High Memory/CPU Usage

Verifying Installation

Checklist:

Key Takeaways

  1. Installation is straightforward

    • Create namespace

    • Apply manifests

    • Wait for pods

    • Access UI

  2. Multiple access methods

    • Port-forward: Quick testing

    • LoadBalancer: Cloud production

    • Ingress: On-prem production

    • NodePort: Development

  3. Security from day 1

    • Change admin password

    • Enable RBAC

    • Use SSO

    • Delete initial secret

  4. CLI is powerful

    • Install argocd CLI

    • Login and manage via terminal

    • Scriptable and automatable

  5. Configuration is in ConfigMaps

    • argocd-cm: General config

    • argocd-rbac-cm: RBAC policies

    • argocd-cmd-params-cm: Command parameters

In the next article, we'll deploy our first real application using ArgoCD, exploring the Application CRD, sync policies, and health checks.


Previous: ArgoCD Architecture and Components Next: Your First ArgoCD Application

Last updated