# DevOps Infra ArgoCD Config > Wiki entity page for the `devops-infra-argo-config` repository. --- ## Identity | Field | Value | | ----- | ----- | | **Repository** | [Meesho/devops-infra-argo-config](https://github.com/Meesho/devops-infra-argo-config) | | **Purpose** | Infrastructure tooling GitOps control plane — ArgoCD App-of-Applications pattern | | **Layer** | Layer 1-T (Tool-Mediated) | | **Owner** | DevOps / Platform team | | **Related repos** | `devops-infra-helm-charts` (charts + values), `devops-argo-config` (service workloads), `terraform-google-modules` (cluster provisioning) | --- ## What it does This repo is the **source of truth** for every ArgoCD `Application` and `AppProject` that manages **infrastructure tooling** across Meesho's Kubernetes fleet. A merge to `main` immediately deploys via ArgoCD auto-sync. Unlike `devops-argo-config` (which manages service/application workloads), this repo manages **cluster tooling**: ingress controllers (Contour), observability stacks (VictoriaMetrics, Grafana, Loki), policy engines (Kyverno), autoscalers (KEDA), secrets management (external-secrets), AI gateways, and more. --- ## Architecture ### App-of-Applications pattern ``` incubator//.yaml ← Parent Application (one per cluster) │ │ points at ▼ generic-argo-apps-chart/ ← Single Helm chart │ │ rendered with ▼ values//-values.yaml ← appSpec[] list │ │ produces ▼ One ArgoCD Application per appSpec entry ← Child Applications (tools) │ │ sources charts + values from ▼ devops-infra-helm-charts ← Sister repo (Helm charts + overrides) ``` ### Key directories | Directory | Purpose | | --------- | ------- | | `incubator//` | Parent ArgoCD Application YAML per cluster | | `values//` | Values files defining which tools deploy per cluster | | `generic-argo-apps-chart/` | Helm chart that renders child Applications | | `projects/` | ArgoCD AppProject definitions (`sre`, `sec`) | | `external-name-service-*` | Cross-cluster DNS routing (MCS topology) | --- ## Scale | Metric | Count | | ------ | ----- | | Clusters managed (values files) | ~19 | | Production clusters | k8s-central, k8s-demand, k8s-supply, k8s-dataengg, k8s-datascience, k8s-dengspark, k8s-dscispark, k8s-dsgpu, k8s-farmiso, k8s-ml-platform (ase1 + ase1c variants) | | Admin clusters | k8s-admin-prd, k8s-devops-admin, k8s-sec-admin | | Tools per cluster | ~20-50 (varies by cluster role) | | ArgoCD projects | `sre` (all namespaces/clusters), `sec` (security-scoped) | --- ## Relationships ### Depends on | System | How | | ------ | --- | | `devops-infra-helm-charts` | Every `appSpec[].chartDir` and `valuesDir` must exist here | | ArgoCD (admin cluster) | Reads incubator Applications and syncs child Applications | | GKE clusters | Target destinations for deployed tools | ### Depended on by | System | How | | ------ | --- | | All infrastructure tools | This repo controls their deployment lifecycle | | Platform team operations | Adding/removing/upgrading tools goes through this repo | ### Sibling | Repo | Relationship | | ---- | ------------ | | `devops-argo-config` | Same pattern but for service workloads, not infra tooling | --- ## Key constraints 1. **Auto-sync:** Merge to `main` = immediate deploy. No staging gate. 2. **No CI:** Pre-commit hooks are the only client-side guard. 3. **Cross-repo dependency:** Chart and values must exist in `devops-infra-helm-charts` before `appSpec` can reference them. 4. **Naming is structural:** Cluster names, Application names, and file names are routing identifiers, not cosmetic labels. --- ## Entry points | Audience | Start here | | -------- | ---------- | | Agents | [CLAUDE.md](../../CLAUDE.md) | | New team members | [index.md](../../index.md) | | PR reviewers | [docs/global/coding-guidelines/infra-argo.md](../../docs/global/coding-guidelines/infra-argo.md) |