Releases

Release

The release resource represents a helm release and is comparable to helm cli command “helm upgrade –install …”. It maps a release installation and/or upgrade process. See here for detailed information about the spec structure. You cannot define values directly in the release resource. This is solved by an own values resource which is explained here.

%%{init:{"theme":"forest", "mirrorActors":"true", "sequence": {"showSequenceNumbers":false, "wrap": false,"useMaxWidth": true}}}%% sequenceDiagram participant C AS client participant R AS reconciler participant RM AS release model participant CVM AS chart version model participant VM AS value model participant PKG AS helm v3 go.pkg participant K AS kube-apiserver C->>K: create/update chart resource K-->>C: return error R->>RM: init model RM->>PKG: init action configuration rect rgb(255, 255, 204) alt spec.config != nil RM->>K: load config resource RM-->>RM: set options end end RM->>VM: init value model VM->>K: get list of related value resources VM-->>VM: transform values VM-->>RM: return value model RM->>K: get default value configmap rect rgb(255, 255, 204) alt err != nil K-->>R: return error end end RM->>K: get chart index configmap rect rgb(255, 255, 204) alt err != nil K-->>R: return error end end RM->>K: get chart custom resource rect rgb(255, 255, 204) alt err != nil K-->>R: return error end end RM->>CVM: init chart version model CVM-->>CVM: parse version CVM->>K: get respository resource rect rgb(255, 255, 204) alt err != nil K-->>R: return error end end CVM->>PKG: resolve reference url rect rgb(255, 255, 204) alt values == nil VM->>K: get default value configmap rect rgb(255, 255, 204) alt err != nil K-->>R: return error end end end end CVM-->>CVM: load dependencies Note right of CVM: load dependencies means to iterate over index deps

and init a chartversion model for each item rect rgb(191, 223, 255) loop iterate over chart and dependencies RM->>PKG: validate chart rect rgb(255, 255, 204) alt error != nil PKG-->>R: return error end end end end R-->>R: handle finalizer rect rgb(255, 255, 204) alt requeue rect rgb(255, 255, 204) alt markedToBeDeleted R->>RM: remove release RM->>PKG: init remove client RM->>PKG: remove release RM-->>R: return for reconciling end end R->>K: update release resource RM-->>R: return for reconciling end end R->>RM: update release RM->>PKG: init get client RM->>PKG: get existing release rect rgb(255, 255, 204) alt err != nil PKG-->>R: return error end end rect rgb(255, 255, 204) alt release != nil RM->>PKG: init get values client RM->>PKG: get installed values rect rgb(255, 255, 204) alt err != nil PKG-->>R: return error end end RM-->>RM: compare values rect rgb(255, 255, 204) alt valuesChanged RM->>PKG: init upgrade client RM-->>RM: set upgrade flags RM->>PKG: upgrade release rect rgb(255, 255, 204) alt err != nil PKG-->>R: return error end end end end RM-->>R: return end end RM->>PKG: init install client RM-->>RM: set install flags RM->>PKG: install release rect rgb(255, 255, 204) alt err != nil PKG-->>R: return error end end


\

ReleaseGroups

The releasegroup resource represents a collection of helm releases. The idea behind is to control releases which have dependencies to each other. At the moment it’s just a collection without logic for managing them together. In general it deploys a collection of release resources. See here for detailed information about the spec structure.

%%{init:{"theme":"forest", "mirrorActors":"true", "useMaxWidth":"true", "sequence": {"showSequenceNumbers":false, "wrap": true, "width":350}, "sequenceConfig": { "diagramMarginX": 50, "diagramMarginY": 10, "boxTextMargin": 5, "noteMargin": 10, "messageMargin": 35, "mirrorActors": true }}}%% sequenceDiagram participant C AS client participant R AS reconciler participant K AS kube-apiserver C->>K: create/update release group object R->>K: get releases by labels rect rgb(191, 223, 255) loop returned release resources rect rgb(255, 255, 204) alt item is not in spec list R->>K: remove release resource end end end end rect rgb(191, 223, 255) loop specified release resources R->>K: create/update release resource end end