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
kubectlconfigured 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.