After installing needed repository and chart resources you can create a helm release.
Needed chart resources have to be present before creating a release resource.
---
apiVersion: yaho.soer3n.dev/v1alpha1
kind: Release
metadata:
name: test-release
namespace: helm
spec:
name: test-release
namespace: share
config: helm-release-config
repo: test-repo
chart: testing
version: 0.1.1
The release will be installed either into spec.namespace or if this field is not set into object.metadata.namespace.
$ kubectl get releases.yaho.soer3n.dev -n helm
NAME GROUP REPO CHART VERSION SYNCED STATUS REVISION AGE
test-release test-repo testing 0.1.1 true success 1 4m4s
$ helm list -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test-release share 1 2022-05-31 22:45:08.893512498 +0200 CEST deployed testing-0.1.1 1.16.0
$ kubectl get all -n share
NAME READY STATUS RESTARTS AGE
pod/test-release-testing-859779cc95-9q8wp 1/1 Running 0 4m4s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/test-release-testing ClusterIP 10.102.215.45 <none> 80/TCP 4m4s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/test-release-testing 1/1 1 1 4m4s
NAME DESIRED CURRENT READY AGE
replicaset.apps/test-release-testing-859779cc95 1 1 1 4m4s
The spec will install a release only with charts default values configured.
$ helm get values -n share test-release
USER-SUPPLIED VALUES:
null
If we want to configure chart values for a release we need to create a value resource and reference it in the release resource.
---
apiVersion: yaho.soer3n.dev/v1alpha1
kind: Values
metadata:
name: test-values
namespace: helm
spec:
json:
foo: bar
---
apiVersion: yaho.soer3n.dev/v1alpha1
kind: Release
metadata:
name: test-release
namespace: helm
spec:
name: test-release
namespace: share
config: helm-release-config
repo: test-repo
chart: testing
version: 0.1.1
values:
- test-values
The reference of values resource in release spec should configure release values.
$ kubectl get releases.yaho.soer3n.dev -n helm
NAME GROUP REPO CHART VERSION SYNCED STATUS REVISION AGE
test-release test-repo testing 0.1.1 true success 2 5m58s
$ helm list -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test-release share 2 2022-05-31 22:50:33.366392593 +0200 CEST deployed testing-0.1.1 1.16.0
$ helm get values -n share test-release
USER-SUPPLIED VALUES:
foo: bar
Values resources can be chained. Equal to the reference in a release spec you can do it in a values resource except that the key has to be specified for sub values.
Let’s add another values resource and reference it in the first value resource.
---
apiVersion: yaho.soer3n.dev/v1alpha1
kind: Values
metadata:
name: test-values-2
namespace: helm
spec:
json:
test: it
---
apiVersion: yaho.soer3n.dev/v1alpha1
kind: Values
metadata:
name: test-values
namespace: helm
spec:
json:
foo: bar
refs:
ref: test-values-2
Release revision and values should be modified after applying new values resource and updating existing resource with added reference.
$ kubectl get releases.yaho.soer3n.dev -n helm
NAME GROUP REPO CHART VERSION SYNCED STATUS REVISION AGE
test-release test-repo testing 0.1.1 true success 3 13m
$ helm list -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test-release share 3 2022-05-31 22:58:53.619041213 +0200 CEST deployed testing-0.1.1 1.16.0
$ helm get values -n share test-release
USER-SUPPLIED VALUES:
foo: bar
ref:
test: it