Step-by-step guide for adding a new addon to the platform.
Most addons use Helm charts managed via ArgoCD multi-source.
mkdir -p addons/<category>/<addon-name>Categories: bootstrap, networking, security, observability, operations, argo-platform
values.yaml: Add the complete base values shared across all environments.
# <Addon name> - base configuration
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
tolerations:
- key: CriticalAddonsOnly
operator: ExistsFor each environment, create a delta-only values file. Only include values that differ from base:
values-dev.yaml:
# <Addon name> - Dev overrides
# Uses base configuration — no environment overridesvalues-staging.yaml and values-production.yaml: Same pattern — only include overrides.
Edit the appropriate Helm ApplicationSet in applicationsets/ (e.g., addons-security.yaml, addons-operations-helm.yaml):
- list:
elements:
# ... existing entries ...
- appName: <addon-name>
namespace: <target-namespace>
chartRepo: <helm-repo-url>
chart: <chart-name>
chartVersion: <version>
path: addons/<category>/<addon-name>
syncWave: "<wave-number>"Choose a sync wave appropriate for the addon's category (see Architecture Overview).
For addons that deploy raw Kubernetes resources without Helm.
mkdir -p addons/<category>/<addon-name>/base
mkdir -p addons/<category>/<addon-name>/overlays/{dev,staging,production}base/kustomization.yaml:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- <resource>.yamlbase/<resource>.yaml: The Kubernetes resource manifests.
overlays/<env>/kustomization.yaml:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../baseAdd patches in overlays as needed for environment-specific configuration.
Edit the appropriate Kustomize ApplicationSet (e.g., addons-bootstrap-kustomize.yaml, addons-operations-kustomize.yaml):
- list:
elements:
# ... existing entries ...
- appName: <addon-name>
namespace: <target-namespace>
path: addons/<category>/<addon-name>
syncWave: "<wave-number>"# Lint
task lint:yaml
# Build all environments
task kustomize:build
# Render to inspect output
task render ENVIRONMENT=devFollow the branch naming convention: feat/add-<addon-name>