ArgoCD is a declarative GitOps continuous delivery tool for Kubernetes that synchronizes your cluster state with Git repository definitions automatically. Installing it on a RHEL 8 Kubernetes cluster gives your team a powerful UI and CLI for managing application deployments, rollbacks, and health monitoring without ever running kubectl apply manually again. This tutorial covers installing ArgoCD into its own namespace, exposing the API server with port-forwarding, logging in with the ArgoCD CLI, and creating your first Application that tracks a Git repository. Once configured, ArgoCD will continuously reconcile your cluster to match whatever is committed to Git.

Prerequisites

  • A running Kubernetes cluster on RHEL 8 with at least 2 vCPU and 4 GB RAM available
  • kubectl configured with cluster-admin privileges
  • The ArgoCD CLI (argocd) installed on your workstation or RHEL 8 node
  • A Git repository (GitHub, GitLab, Gitea, etc.) containing Kubernetes manifests
  • Port 8080 accessible on the node running port-forward (or a NodePort/LoadBalancer alternative)

Step 1 — Create the ArgoCD Namespace and Install

ArgoCD runs in its own namespace. Create it first, then apply the official stable installation manifest which deploys all ArgoCD components including the API server, repo server, application controller, and Redis.

kubectl create namespace argocd

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

Monitor the rollout until all pods are Running:

kubectl get pods -n argocd -w

You should see pods for argocd-server, argocd-repo-server, argocd-application-controller, argocd-dex-server, and argocd-redis all reach Running status.

Step 2 — Install the ArgoCD CLI

Download the ArgoCD CLI binary for Linux and install it system-wide so it is available in your PATH.

curl -sSL -o /usr/local/bin/argocd 
  https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64

chmod +x /usr/local/bin/argocd
argocd version --client

Step 3 — Expose the ArgoCD API Server

By default the ArgoCD server is a ClusterIP Service. Use port-forwarding to access it locally for initial setup. Run this in a separate terminal or as a background process.

kubectl port-forward svc/argocd-server -n argocd 8080:443 &

Retrieve the auto-generated initial admin password (stored as a Secret):

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

Log in with the CLI using the password from the previous command:

argocd login localhost:8080 
  --username admin 
  --password  
  --insecure

Immediately change the admin password to something secure:

argocd account update-password

Step 4 — Register a Git Repository

If your repository is private, register it with ArgoCD so it can clone it. For public repositories this step is optional.

# For HTTPS with username/password or token
argocd repo add https://github.com/your-org/your-k8s-repo.git 
  --username your-github-user 
  --password your-personal-access-token

# Verify repository connection
argocd repo list

Step 5 — Create Your First Application

An ArgoCD Application defines the Git source (repository URL, revision, and path to manifests) and the destination (cluster and namespace). Create one using the CLI:

argocd app create guestbook 
  --repo https://github.com/argoproj/argocd-example-apps.git 
  --path guestbook 
  --dest-server https://kubernetes.default.svc 
  --dest-namespace default 
  --sync-policy automated 
  --auto-prune 
  --self-heal

You can also define Applications as YAML files stored in Git for full GitOps management of ArgoCD itself. The equivalent manifest looks like:

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

Step 6 — Check Sync and Health Status

ArgoCD tracks two dimensions for each application: sync status (does the cluster match Git?) and health status (are all resources healthy?). Query both from the CLI:

# List all applications with sync and health status
argocd app list

# Get detailed status for the guestbook app
argocd app get guestbook

# Manually trigger a sync if needed
argocd app sync guestbook

# Watch sync progress in real time
argocd app wait guestbook --sync --health --timeout 120

The web UI at https://localhost:8080 shows a visual graph of all application resources, their relationships, and live health indicators.

Conclusion

You have installed ArgoCD in a dedicated namespace on your RHEL 8 Kubernetes cluster, accessed the API server via port-forwarding, logged in with the CLI, registered a Git repository, deployed your first Application with automated sync and self-healing enabled, and verified sync and health status. ArgoCD transforms deployments from manual imperative commands into automated declarative reconciliation driven entirely by Git commits.

Next steps: Configure ArgoCD Projects to restrict which repos and namespaces each team can deploy to, Set up webhook triggers for instant sync on Git push, and Use ApplicationSets to manage identical deployments across multiple clusters.