3. Consolidating all packages under a single mapping📜
Date: 2025-04-23
Status📜
Accepted
Context📜
The current structure of The BigBang “umbrella” helm chart’s values.yaml file has the following organization:
- Global configuration keys that provide shared settings across all deployed packages
- Individual keys for each
corepackage with a consistent package schema - An
addonskey containing a mapping of additional packages that match the same schema as core packages
This structure has several limitations:
- It doesn’t clearly separate global configuration from package-specific configuration
- It creates challenges given the fluidity of how packages are categorized
- The terminology of core vs addon is often conflated with “default” packages
- Any more granular categorizaton of packages becomes strained because the package type (package metadata) is codified as the value structure
- Iterating through all packages with helm templating (or any tooling) is clunky because core packages are at the top level while addon packages are nested
[!NOTE]
Divorcing the package category (addons vs core) from the values structure creates an opportunity to introduce alternative package metadata mechanisms, but the implementation is considered out of scope for this document and will be addressed in a future ADR.
Decision📜
We will restructure the values.yaml file to:
- Move all packages (both core and addons) under a single
packageskey that will contain a mapping of all packages - Rename the existing
packageskey toadditionalPackagesfor any secondary apps - Keep global configuration at the top level of values.yaml
Consequences📜
Positive📜
- Clear delineation between global configuration and package configuration
- Simplified iteration over all packages with helm templating and other tools
- Better foundation to create package “buckets/profiles” that are not defined by their structure in the values.yaml
- Sets us up to replace boilerplate package templates with reusable Helm helpers
Negative📜
- Significant churn to update all templates in the Big Bang Helm chart to move from
.Values.<package.*to.Values.packages.<package>.* - All existing Big Bang deployments will require values migration
Implementation📜
The implementation will involve:
- Creating a new schema definition in values.schema.json that reflects the updated structure
- Migrating all core package configurations from the top level to the new
packagesmap - Migrating all addon package configurations from the
addonsmap to thepackagesmap - Updating all templates to reference the new structure
- Providing migration documentation and migration script for existing deployments
Example📜
Before:
domain: dev.bigbang.mil
registryCredentials:
registry: registry1.dso.mil
username: ""
password: ""
email: ""
loki:
# -- Toggle deployment of Loki.
enabled: true
git:
repo: https://repo1.dso.mil/big-bang/product/packages/loki.git
path: "./chart"
tag: "6.27.0-bb.3"
# other loki config...
addons:
argocd:
# -- Toggle deployment of ArgoCD.
enabled: false
git:
repo: https://repo1.dso.mil/big-bang/product/packages/argocd.git
path: "./chart"
tag: "7.8.23-bb.1"
# other argocd config...
After:
domain: dev.bigbang.mil
registryCredentials:
registry: registry1.dso.mil
username: ""
password: ""
email: ""
packages:
loki:
# -- Toggle deployment of Loki.
enabled: true
git:
repo: https://repo1.dso.mil/big-bang/product/packages/loki.git
path: "./chart"
tag: "6.27.0-bb.3"
# other loki config...
argocd:
# -- Toggle deployment of ArgoCD.
enabled: false
git:
repo: https://repo1.dso.mil/big-bang/product/packages/argocd.git
path: "./chart"
tag: "7.8.23-bb.1"
# other argocd config...
additionalPackages:
# Any secondary app configuration