ArgoCD

ArgoCD GitOps deployment platform for Titanbay infrastructure

ArgoCD is our declarative, GitOps continuous delivery tool for Kubernetes. It serves as the foundation for managing all infrastructure and platform deployments across Titanbay’s GKE clusters.

Overview

Titanbay uses ArgoCD to implement GitOps principles across all Kubernetes environments. ArgoCD watches our Git repositories and automatically synchronises the desired state defined in manifests to the live state in our clusters.

Key Concepts

ConceptDescription
ApplicationA group of Kubernetes resources defined by a manifest in Git
AppProjectA logical grouping of Applications with RBAC controls
ApplicationSetA template that generates Applications dynamically
SyncThe process of making live state match the desired Git state

Cluster Topology

ArgoCD is deployed across 4 GKE clusters with a hub-and-spoke architecture:

graph TD
    subgraph hub["Infra Management Cluster (Hub)"]
        argocd_ha["ArgoCD HA<br/>Self-managing<br/>Manages all clusters"]
    end

    subgraph dev["TB Platform Dev"]
        argocd_dev["ArgoCD (Helm)<br/>Managed by Hub"]
    end

    subgraph qa["TB Platform QA"]
        argocd_qa["ArgoCD (Helm)<br/>Managed by Hub"]
    end

    subgraph prod["TB Platform Prod"]
        argocd_prod["ArgoCD (Helm)<br/>Managed by Hub"]
    end

    argocd_ha --> argocd_dev
    argocd_ha --> argocd_qa
    argocd_ha --> argocd_prod

Cluster Details

ClusterPurposeArgoCD ModeManaged By
Infra ManagementCentral infrastructure services, Config Connector, monitoringHA (standalone manifest)Self-managed
TB Platform DevDevelopment environment for Titanbay platformHelm chartInfra Management ArgoCD
TB Platform QAQA/Staging environmentHelm chartInfra Management ArgoCD
TB Platform ProdProduction environmentHelm chartInfra Management ArgoCD

Repository Structure

ArgoCD manifests are organised under k8s/infra-services/argocd/:

argocd/
├── base/                           # Core ArgoCD manifests for infra-mgmt cluster
│   ├── argocd-ha-3.2.1.yaml        # HA ArgoCD standalone manifest
│   ├── argocd-image-updater-*.yaml # Image Updater configuration
│   ├── pod-disruption-budgets.yaml # PDBs for high availability
│   └── ...
├── overlays/
│   └── infra-platform-cluster/     # Infra management cluster overlay
│       ├── apps/                   # ArgoCD Applications (app-of-apps)
│       ├── application-sets/       # ApplicationSets for dynamic generation
│       ├── projects/               # AppProject definitions
│       └── patches/                # Cluster-specific patches
└── tb-platform/                    # ArgoCD for tb-platform clusters
    ├── base/                       # Helm-based ArgoCD configuration
    │   └── argocd-helm.yaml        # Helm chart Application
    └── overlays/
        ├── tb-platform-dev/        # Dev cluster overlay
        ├── tb-platform-qa/         # QA cluster overlay
        └── tb-platform-prod/       # Prod cluster overlay

AppProjects

ArgoCD Projects provide logical groupings with RBAC controls:

ProjectPurposeKey Permissions
infra-servicesInfrastructure services on the management clusterFull access to infra namespaces
tb-platform-infraPlatform infrastructure managed from the hubDeploy to tb-platform clusters
tb-platformTitanbay platform workloadsDeploy to tb-platform namespace
tb-platform-resourcesPlatform resourcesDeploy to tb-platform-resources namespace
build-servicesBuild and CI/CD servicesDeploy to build namespaces

What’s Next


Cluster Topology

How ArgoCD is deployed across Titanbay’s GKE clusters

Self-Management

How ArgoCD maintains and updates itself on the Infra Management Cluster

Managed Services

Overview of all services managed by ArgoCD on the Infra Management Cluster