Skip to main content

What is ArgoCD?

ArgoCD is a declarative GitOps continuous delivery tool for Kubernetes. It enables you to define and control the deployment of applications using Git repositories as the source of truth for deployment configurations. ArgoCD automates the process of syncing your applications with their desired state in Git, ensuring cluster configurations match your version-controlled definitions.

Benefits of ArgoCD

  • Automated Synchronization: Keeps your environment in sync with configurations stored in Git
  • Declarative Setup: Manage infrastructure and application definitions declaratively and version them in Git
  • Self-Healing: Automatically corrects drifts between the desired state in Git and the live state in the cluster
  • Multi-Cluster Management: Manage deployments across multiple Kubernetes clusters from a single ArgoCD instance
  • Visibility: Provides a graphical UI and CLI for visualization and management of applications and their dependencies
  • GitOps Best Practices: Audit trail, rollback capabilities, and declarative configuration management

ArgoCD in Skyhook

Skyhook provides an integrated setup experience for ArgoCD and simplifies two primary use cases:
  1. Manage cluster addons - Deploy and manage third-party tools like cert-manager, ingress controllers, Prometheus, and Grafana across your clusters. By managing these with ArgoCD, you can control versions in Git, apply changes declaratively across multiple clusters, and track configuration drift.
  2. Deploy your applications - Use ArgoCD for application deployments with features like one-click rollbacks, visual diffing, automatic pruning of resources no longer defined in Git, and a UI to view and manage your applications. With Argo Rollouts, you can implement advanced deployment strategies like Blue/Green and Canary deployments.

What Skyhook Provides

  • Interactive Setup Wizard: Three-step guided process to install and configure ArgoCD
  • Addon Management UI: Enable and configure cluster addons without writing YAML
  • GitHub App Integration: Secure, fine-grained repository access with automatic token rotation
  • Multi-Cluster Configuration: Easy selection and configuration of clusters for ArgoCD to manage
The ArgoCD UI itself remains separate and can be accessed via an Ingress if you configure one during setup.

Installation

Prerequisites

Before installing ArgoCD, ensure you have:
  • A management cluster selected (the cluster that will host ArgoCD)
  • kubectl access to your management cluster
  • A GitHub repository for storing GitOps configurations (or plan to create one)
  • Sufficient cluster resources (ArgoCD requires ~500MB memory minimum)
GitOps settings page before ArgoCD installation

Step 1: Install ArgoCD on Your Cluster

Navigate to Organization Settings > GitOps and click Configure to start the setup wizard.
ArgoCD installation commands and steps
The first tab provides step-by-step installation commands:
  1. Authenticate to your management cluster:
    # For AWS EKS
    aws eks update-kubeconfig --name <cluster-name> --region <region>
    
    # For GCP GKE
    gcloud container clusters get-credentials <cluster-name> --region <region>
    
    # For Azure AKS
    az aks get-credentials --name <cluster-name> --resource-group <resource-group>
    
  2. Create the ArgoCD namespace:
    kubectl create namespace argocd
    
  3. Install ArgoCD CRDs and components:
    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
    
  4. Create an AppProject for managing addons (expandable section in wizard): The wizard provides a pre-configured AppProject resource. This project scopes ArgoCD’s permissions and defines allowed repositories and clusters.
  5. Recommended: Create an Ingress for ArgoCD (expandable section in wizard): If you want to access the ArgoCD UI from outside your cluster, configure an Ingress. The wizard provides template configuration.
  6. Recommended: Install the ArgoCD CLI: Follow the ArgoCD CLI installation guide for your operating system.

Step 2: Configure GitOps Repository

GitOps repository configuration with cluster selection
In the second tab, configure your GitOps repository and select clusters:
  1. Select GitOps Repository: Choose the GitHub repository where ArgoCD will look for application manifests and addon configurations.
  2. Set Repository Path: Specify the path within the repository (default: clusters). ArgoCD will monitor this path for Kubernetes manifests.
  3. Select Clusters: Choose which clusters ArgoCD should manage. All connected clusters are shown in the table with:
    • Project/Account
    • Location (region)
    • Cluster name
    • API Server Endpoint field
  4. Configure API Endpoints: Enter the Kubernetes API server endpoint for each cluster:
    • The management cluster uses kubernetes.default.svc (pre-filled, since ArgoCD runs there)
    • For remote clusters, find the endpoint in your cloud provider’s console:
      • AWS EKS: EKS Console > Clusters > API server endpoint
      • GCP GKE: GKE Console > Clusters > Endpoint
      • Azure AKS: AKS Console > Properties > API server address
    You can skip endpoint configuration during initial setup and add it later. ArgoCD won’t be able to deploy to clusters without configured endpoints.

Step 3: Configure GitHub Integration

GitHub App integration setup for secure repository access
The third tab sets up GitHub App integration for secure repository access: Benefits of using GitHub Apps:
  • Fine-grained permissions: Better security than personal access tokens
  • Organization-wide access: Access all repositories with a single credential
  • Automatic token rotation: GitHub Apps handle token renewal automatically
Setup process:
  1. Select GitOps Repository: Choose the repository from the dropdown
  2. Generate GitHub App Setup: Click the button to generate GitHub App configuration
  3. Create GitHub App: Follow the generated instructions to create the app in GitHub
  4. Install GitHub App: Install the app to your organization
  5. Apply ArgoCD Configuration: Apply the generated Kubernetes resources to configure ArgoCD

Managing Addons

After ArgoCD is installed, you can browse and configure cluster addons from the Addons page.
Addons catalog showing managed, featured, and discoverable addons

Addon Categories

Skyhook organizes addons into three categories: Managed Addons: Pre-configured, production-ready addons that Skyhook maintains and recommends:
  • Observability Bundle - Complete monitoring stack (Prometheus, Grafana, Loki)
  • Cert Manager - Automated TLS certificate management
  • External Secrets Operator - Sync secrets from external secret stores
  • Ingress Nginx - Popular ingress controller
  • Argo Rollouts - Advanced deployment strategies (Blue/Green, Canary)
  • And 10+ more popular tools
Not GitOps-managed: Addons that require manual installation:
  • ArgoCD - The GitOps operator itself (managed outside of GitOps)
Featured Addons: Additional community addons you can install:
  • External DNS, Argo Events, Trivy, Karpenter, Velero, and more
You can also search for additional addons using the Addon Discovery feature at the bottom of the page.

Configuring an Addon

To install or configure an addon:
  1. Navigate to the Addons page
  2. Click on the addon you want to configure (e.g., Cert Manager)
Cert Manager addon configuration showing per-cluster selection
  1. Select clusters: Use the checkboxes to enable the addon on specific clusters
    • The table shows all your connected clusters
    • Cloud provider icons indicate where each cluster is hosted
    • Location and account information help you identify clusters
  2. Review addon details:
    • Read the addon description
    • Click links to official documentation for configuration options
    • Check the “Up to Date” status indicator
  3. Generate Pull Request: Click the “Generate Pull Request” button at the bottom
    • Skyhook generates ArgoCD Application resources for selected clusters
    • Changes are committed to your GitOps repository
    • Creates an audit trail of configuration changes
  4. ArgoCD syncs automatically: Once the PR is merged, ArgoCD:
    • Detects the new Application resources
    • Deploys the addon to selected clusters
    • Maintains the desired state defined in Git

Deploying Applications

For deploying your own applications with ArgoCD:
  1. Define your application manifests in your GitOps repository
  2. Create ArgoCD Application resources (either through the ArgoCD UI or by adding YAML to your GitOps repo)
  3. ArgoCD syncs the application to your clusters based on the defined configuration
  4. Monitor application status and health in the ArgoCD UI
For advanced deployment strategies (Blue/Green, Canary), see Argo Rollouts documentation.

Troubleshooting

If the argocd namespace already exists, you can either:
  • Delete the existing namespace: kubectl delete namespace argocd
  • Skip the namespace creation step and proceed with installing CRDs
Verify ArgoCD isn’t already installed:
kubectl get pods -n argocd
If ArgoCD can’t connect to a cluster:
  1. Verify the endpoint is correct:
    kubectl cluster-info
    
  2. Check cluster credentials are configured:
    kubectl config get-contexts
    
  3. Ensure ArgoCD has network access to the cluster API (check firewall rules, security groups)
If GitHub App setup doesn’t work:
  • Verify the app is installed to the correct organization
  • Check the app has access to the GitOps repository
  • Ensure the generated credentials were applied to the cluster correctly
  • Review ArgoCD logs: kubectl logs -n argocd -l app.kubernetes.io/name=argocd-repo-server
If addons aren’t deploying:
  1. Check ArgoCD Application status:
    kubectl get applications -n argocd
    
  2. View application details:
    kubectl describe application <app-name> -n argocd
    
  3. Check ArgoCD can access your GitOps repository
  4. Verify the repository path contains valid Kubernetes manifests

Next Steps