Declarative Desired State Container Deployment using Helm

This approach is based on Autonomous Development, Authoritative Release which decouples the development process from the release process.

This is an alternative implementation to Terraform Application Stack, using Helm instead of Terraform, but with the same core principles of runtime versioning and desired state.

The Application Stack can be defined once, and deployed many times into separate namespaces, e.g. development, test and production.

graph TD subgraph k8s["Kubernetes"] subgraph ns1["Dev namespace"] ns1-ingress["ingress"] subgraph ns1-pod-1["Pod"] ns1-con-a["container"] end subgraph ns1-pod-2["Pod"] ns1-con-b["container"] ns1-con-c["container"] end end subgraph ns2["Test namespace"] ns2-ingress["ingress"] subgraph ns2-pod-1["Pod"] ns2-con-a["container"] end subgraph ns2-pod-2["Pod"] ns2-con-b["container"] ns2-con-c["container"] end end subgraph ns3["Production namespace"] ns3-ingress["ingress"] subgraph ns3-pod-1["Pod"] ns3-con-a["container"] end subgraph ns3-pod-2["Pod"] ns3-con-b["container"] ns3-con-c["container"] end end end client --> ns1-ingress --> ns1-con-a ns1-ingress --> ns1-con-b --> ns1-con-c client --> ns2-ingress --> ns2-con-a ns2-ingress --> ns2-con-b --> ns2-con-c client --> ns3-ingress --> ns3-con-a ns3-ingress --> ns3-con-b --> ns3-con-c classDef external fill:lightblue class client external classDef dashed stroke-dasharray: 5, 5 class ns1,ns2,ns3 dashed classDef dotted stroke-dasharray: 2, 2 class ns1-pod-1,ns1-pod-2,ns2-pod-1,ns2-pod-2,ns3-pod-1,ns3-pod-2 dotted