Bouquet is a draft addon manager for the Gardener. It incorporates some of the requested features of the community but not yet all of them.
Caution: This software is early alpha. It is not meant for production use and shall (currently) only serve as a possible outlook of what is possible with pre-deployed software on Gardener Kubernetes clusters.
If you want to deploy Bouquet on a target Gardener cluster, run the following:
helm install charts/bouquet \ --name gardener-bouquet \ --namespace garden
This will deploy Bouquet with the required permissions into your garden cluster.
As of now, Bouquet comes with two new custom resources:
AddonManifest can be considered equivalent to a Helm template. The
manifest itself only contains metadata (like the name, default values etc.).
The actual content of a manifest is specified via its
Currently, the only available source is a
AddonInstance references an
AddonManifest and a target
may also contain value overrides in its spec. As soon as an
is created, Bouquet will apply the values to the templates and then ensure
that the objects exist in the target shoot.
AddonInstance is deleted, Bouquet will also make sure that the
created objects are deleted as well.
Say you want your cluster to contain istio right from the start. How can you do that?
First you need to get the
.yaml files necessary to deploy istio into your
cluster. Download an istio release as follows:
wget -O istio.yaml https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/istio/noauth/istio.yaml
This will fetch a
.yaml file containing all necessary kubernetes objects
of istio. To make this data available in your garden cluster, create a
configmap in your cluster via
kubectl -n garden create configmap istio-files --from-file ./istio.yaml
Now you need to create an
AddonManifest that references this file and push
it to Kubernetes. The file could look like the following:
apiVersion: "garden.sapcloud.io/v1alpha1" kind: "AddonManifest" metadata: name: "istio-0.0.1" spec: configMap: "istio-files"
You can submit this manifest to Kubernetes via
kubectl (given that you saved
the file to
kubectl -n garden apply -f addonmanifest.yaml
Once this is done, the only thing left to do is to create an
referencing both your target
Shoot and your
AddonInstance has to be in the same namespace as your target
apiVersion: "garden.sapcloud.io/v1alpha1" kind: "AddonInstance" metadata: name: "example" finalizers: - "bouquet" spec: manifest: namespace: "garden" name: "istio" version: "0.0.1" target: shoot: "addon-test"
And apply it via
kubectl (given that you saved the file to
kubectl -n garden-addon-test apply -f addoninstance.yaml
Bouquet will then start deploying your objects to the target
it is ready.
Since this is just a tech-preview, features like value / chart updates, more efficient templating, company addon guidelines etc. are not yet implemented / yet to come / yet to be discussed. It is also not yet clear whether this should eventually move into the Gardener or remain as a stand-alone component.
Core points that have to be tackled are: * Fire and forget mode (only deploy objects once, don’t monitor afterwards) * Reconciliation (currently, updating behavior is not correctly implemented) * Updates of an addon (-> Update strategies) * Dependent addons / dependency resolution / dependency lifecycle
As such, contributions and help on shaping this topic is highly appreciated.