Repository navigation
Highlights
Plan
deployah plan <environment> compares the last Helm release with the current spec. Those differences are listed under Resources. On an existing release it also compares that baseline with the live cluster. Those differences are listed under Drift: modified, missing, and unexpected.
Drift is the cluster compared with the last release. The next deployah deploy follows Resources. An existing release is upgraded when Resources is empty, so Helm records a new revision and runs upgrade hooks.
Tasks that change or run are listed under Tasks. Secret values are redacted. Pass --show-secrets to reveal them.
--detailed-exitcode exits 2 when the plan has effects: resource changes, tasks that change or run, or chart CRDs Helm will process. Drift alone exits 0.
Plan reads the cluster and the release. deployah validate and deployah resolve run without a cluster.
Chart CRDs
Files in .deployah/crds/ are copied into the chart unchanged. On a fresh install Helm processes them before other resources. On upgrade Helm leaves them in the chart, including CRDs added after the first install. The plan lists each file with lifecycle process or upgrade.
deployah plan prod
deployah deploy prod --skip-crds--skip-crds applies to a fresh install. The files stay in the chart.
Container environment
Dotenv files are the container's environment. ${...} placeholders are substitution. They read environments.*.variables and shell DPY_VAR_*.
A dotenv key DPY_VAR_TAG is passed to the pod as DPY_VAR_TAG. It does not set ${TAG}.
YAML env: is a second map. When a key exists in both, the YAML value wins.
environments:
production:
variables:
TAG: v1.4.2
components:
api:
image: ghcr.io/acme/api:${TAG}
env:
LOG_LEVEL: info.env, .env.<env>, and .env.<component> next to deployah.yaml become ConfigMap data. deployah resolve production prints both maps.
Working directory
--cwd (-C) runs the command as if Deployah started in that directory. A relative --spec path is joined to it.
deployah plan production --cwd ../shopCluster access
Deployah selects the cluster from a kubeconfig: --context, the platform file's context for that environment, or the current context. A service account inside a pod is not used.
What's Changed
Breaking Changes
- add runtime container environment by @atkrad in #120
- remove implicit in-cluster dest by @atkrad in #126
- add semantic task plans to the plan by @atkrad in #137
- let helm own chart crd lifecycle by @atkrad in #146
- always run helm on deploy by @atkrad in #160
- switch plan command to semantic planner by @atkrad in #177
Features
- add --cwd to run from another directory by @atkrad in #153
- add chart crds to human plan view by @atkrad in #176
Bug Fixes
- fix helm kubernetes dest selection by @atkrad in #127
- add spec.ResolveTask for deployah run by @atkrad in #129
- derive helm action from release intent by @atkrad in #158
Documentation
- add semantic plan architecture ADRs by @atkrad in #141
- refine semantic plan architecture ADRs by @atkrad in #144
- clarify explicit Helm re-execution semantics by @atkrad in #145
Full Changelog: v0.8.0...v0.9.0