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
core
package with a consistent package schema - An
addons
key 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
packages
key that will contain a mapping of all packages - Rename the existing
packages
key toadditionalPackages
for 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
packages
map - Migrating all addon package configurations from the
addons
map to thepackages
map - 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