Repositories¶
Hydra uses two Git repositories with distinct responsibilities.
Charts Repository¶
The charts-repository is the application catalog. It contains:
charts-repository/
apps/
cluster-infra/
root/ ← Root app for this group
cert-manager/ ← Child app
ingress-nginx/ ← Child app
...
demo/
root/
service-auth/
...
cicd/
root/
gitlab-runner/
shared/
infra_library/ ← Shared Helm library charts
Each child app directory contains:
- Chart.yaml — Chart metadata and dependencies
- templates/ — Helm templates
- values.yaml — Default values including global.hydra configuration (refs, presets, clones, etc.)
Responsibility: Define what gets deployed (chart logic, default configuration, dependency model).
GitOps Repository¶
The gitops-repository contains per-cluster configuration:
Responsibility: Define where and how things are deployed (cluster-specific overrides, secrets, revision pins).
Why Two Repositories?¶
| Concern | Charts Repo | GitOps Repo |
|---|---|---|
| Application logic | ✓ | |
| Default values | ✓ | |
| Ref definitions | ✓ | |
| Cluster-specific values | ✓ | |
| Secret references | ✓ | |
| Environment promotion | ✓ | |
| ArgoCD revision pins | ✓ |
The separation enables: - Reuse — One chart definition, many cluster deployments - Promotion — Promote versions across environments without touching chart code - Access control — Different teams can own charts vs. cluster config
Value Layering¶
Values merge bottom-up:
charts-repository/apps/<group>/<app>/values.yaml(base)gitops-repository/clusters/<cluster>/<group>/values.yaml(group override)gitops-repository/clusters/<cluster>/<group>/in-cluster/<app>/values.yaml(app override)- Hydra ConfigMaps (runtime injection)
See Values: Overview for the full merge semantics.