Mukul SharmaandClaude Opus 5 3aebc99635 Grant deployer StatefulSet rights, for apps with persistent storage
toolshed deploys an app that asked for a persistent volume as a StatefulSet
with a volumeClaimTemplate rather than a Deployment
(internal/deploy.Client.ensureStatefulSet). Without this the deployer gets
"forbidden" the moment anyone creates one — the two-repositories drift
internal/deploy/kubernetes.go's own package doc warns about, and the same
way the custom-domains Ingress rights were missed until after that feature
shipped.

Delete is included deliberately, not for tidiness: a Deployment and a
StatefulSet share the app's selector, so switching an app between stateless
and stateful must remove whichever controller it no longer is, or both stay
alive fighting over the same pods.

persistentvolumeclaims is read-only. The claims are created by the
StatefulSet's own volumeClaimTemplates, never directly by toolshed, and
deleting one would destroy an app's data — so there is no reason for this
credential to be able to.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wajog7nELA3i8JWTjxYGHF
2026-09-09 15:16:16 +05:30
fix
2026-08-31 00:49:44 +05:30
fix
2026-08-31 00:49:44 +05:30
2026-08-31 13:18:18 +05:30
add
2026-08-31 01:02:22 +05:30
2026-08-31 09:02:30 +05:30
2026-08-26 04:03:34 +05:30

devops-infra-argo-config

GitOps control plane for infrastructure tooling across Meesho's Kubernetes fleet.

This repo manages ArgoCD Application resources for every infrastructure tool (Contour, VictoriaMetrics, Grafana, Kyverno, KEDA, external-secrets, Vault, etc.) deployed across ~19 clusters. It uses an App-of-Applications pattern: one parent Application per cluster renders child Applications from a appSpec[] list via a generic Helm chart.

Each environment tracks a dedicated branch — merging to that branch triggers immediate ArgoCD auto-sync with no staging gate:

Environment Branch
Production (prd) main
Staging (stg) develop
Integration (int) pre-prod

How it works

incubator/<env>/<cluster>.yaml          ← Parent Application (one per cluster)
    └── points at generic-argo-apps-chart/ + values/<env>/<cluster>-values.yaml
            └── renders one child Application per appSpec[] entry
                    └── sources charts + overrides from devops-infra-helm-charts

Directory structure

Directory Purpose
incubator/<env>/ Parent ArgoCD Application YAML, one per cluster
values/<env>/ Values files defining which tools deploy per cluster
generic-argo-apps-chart/ Helm chart that renders child Applications from appSpec[]
projects/ ArgoCD AppProject definitions (sre, sec)
external-name-service-*/ Cross-cluster DNS routing (ExternalName / MCS topology)
docs/ Agent-facing operational documentation
skills/ Parameterized agent tasks for common operations
wiki/ Architecture decisions and entity pages

Getting started

Common operations

Task Procedure
Add a tool to a cluster docs/platform/procedures/add-tool-to-cluster.md
Upgrade a chart version docs/platform/procedures/upgrade-chart-version.md
Onboard a new cluster docs/platform/procedures/add-new-cluster.md
Roll out a tool fleet-wide docs/platform/procedures/fleet-wide-tool-rollout.md
Debug sync failure docs/platform/runbooks/argocd-sync-failure.md
Debug Helm render error docs/platform/runbooks/render-failure.md
Find values inconsistencies across clusters docs/platform/runbooks/values-drift.md
Debug stuck deployment docs/platform/runbooks/deployment-stuck.md

Sister repos

  • devops-infra-helm-charts — Helm charts and custom-values.yaml overrides. Every appSpec[].chartDir and valuesDir must exist here.
  • devops-argo-config — Same pattern for service/application workloads (not infra tooling).
S
Description
No description provided
Readme
223 KiB