diff --git a/Makefile b/Makefile index 769f5bf..06598f3 100644 --- a/Makefile +++ b/Makefile @@ -76,7 +76,7 @@ revendor: @GO111MODULE=on go mod vendor @GO111MODULE=on go mod tidy @chmod +x $(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/* - @chmod +x $(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/.ci/* + @chmod +x $(REPO_ROOT)/vendor/github. com/gardener/gardener/hack/.ci/* @$(REPO_ROOT)/hack/update-github-templates.sh .PHONY: clean diff --git a/README.md b/README.md index b672e8d..8bc8bd9 100644 --- a/README.md +++ b/README.md @@ -11,17 +11,30 @@ Recently, most of the vendor specific logic has been developed [in-tree](https:/ ## Configuration -Example configuration for this extension controller: +Example configuration for this extension controller with default config and 2 project specific configs: ```yaml apiVersion: shoot-fleet-agent-service.extensions.config.gardener.cloud/v1alpha1 kind: Configuration -clientConnection: +defaultConfig: kubeconfig: #base64encoded kubeconfig of cluster running Fleet manager labels: #extra labels to apply to Cluster registration - env: dev + env: dev +projectConfig: + myproject: + kubeconfig: #base64encoded kubeconfig of cluster running Fleet manager + labels: + project: myproject + somelabel: samevalue + namespace: clusters + myotherproject: + kubeconfig: #base64encoded kubeconfig of cluster running Fleet manager + labels: + project: mypotherproject + namespace: fleetclusters ``` - +Unless the shoot is in one of the myproject or myother project it will get defaultConfiguration. +Configuration supplied in ControllerRegistration will be applied as default however it can be overriden via configuration in Extension for given Shoot. ## Extension-Resources Example extension resource: @@ -39,6 +52,22 @@ spec: When an extension resource is reconciled, the extension controller will register Shoot cluster in Fleet management cluster(configured in kubeconfig in Configuration object above. Please note, this extension controller relies on existing properly configured [Fleet multi-cluster deployment](https://fleet.rancher.io/multi-cluster-install/) configured above. +By default configuration from ControllerRegistration is used but if Extension specifies different config for particular Shoot that configuration overrides the default settings. + +## Shooted seeds registration in Fleet +All shooted seeds will be ignored and not registered in Fleet. If you need to register shooted seeds please do so manually. + +## Fleet CRD cluster default labels +By default all clusters registered in fleet will have following labels: + +|label|value| +|---|---| +|corebundle|true| +|region| region of shoot | +|cluster| name of shoot| +|seed|name of shoots seed| + +Any labels defined in configuration are added to those default labels. ## How to start using or developing this extension controller locally diff --git a/charts/gardener-extension-shoot-fleet-agent/templates/_helpers.tpl b/charts/gardener-extension-shoot-fleet-agent/templates/_helpers.tpl index d631ef0..487be1f 100644 --- a/charts/gardener-extension-shoot-fleet-agent/templates/_helpers.tpl +++ b/charts/gardener-extension-shoot-fleet-agent/templates/_helpers.tpl @@ -6,13 +6,16 @@ gardener-extension-shoot-fleet-agent --- apiVersion: shoot-fleet-agent-service.extensions.config.gardener.cloud/v1alpha1 kind: FleetAgentConfig -clientConnection: +defaultConfig: kubeconfig: {{ .Values.fleetManager.kubeconfig }} {{- if .Values.fleetManager.labels }} - labels: {{ .Values.fleetManager.labels | toYaml | nindent 6 }} + labels: {{ .Values.fleetManager.labels | toYaml | nindent 4 }} {{- end }} {{- if .Values.fleetManager.namespace }} - namespace: {{ .Values.fleetManager.namespace }} + namespace: {{ .Values.fleetManager.namespace }} +{{- end }} +{{- if .Values.fleetManager.projectConfig }} +projectConfig: {{ .Values.fleetManager.projectConfig | toYaml | nindent 2 }} {{- end }} {{- end }} diff --git a/charts/gardener-extension-shoot-fleet-agent/values.yaml b/charts/gardener-extension-shoot-fleet-agent/values.yaml index 2671eda..e3b30f0 100644 --- a/charts/gardener-extension-shoot-fleet-agent/values.yaml +++ b/charts/gardener-extension-shoot-fleet-agent/values.yaml @@ -27,9 +27,20 @@ controllers: concurrentSyncs: 1 fleetManager: + #default config values kubeconfig: #base64encoded kubeconfig of fleet manager cluster comes here labels: # optional fleet Cluster crd labels namespace: clusters # namespace where Fleet clusters stores Cluster CRD objects + #project specific values +# projectConfig: +# myproject: +# kubeconfig: #base64encoded kubeconfig of fleet manager cluster for myproject comes here +# labels: # optional fleet Cluster crd labels for myproject +# namespace: clusters # namespace where Fleet clusters stores Cluster CRD objects for myproject +# myotherproject: +# kubeconfig: #base64encoded kubeconfig of fleet manager cluster for myotherproject comes here +# labels: # optional fleet Cluster crd labels for myotherproject +# namespace: clusters # namespace where Fleet clusters stores Cluster CRD objects for myotherproject disableControllers: [] diff --git a/docs/installation/setup.md b/docs/installation/setup.md index a594977..237cce1 100644 --- a/docs/installation/setup.md +++ b/docs/installation/setup.md @@ -22,9 +22,10 @@ apiVersion: core.gardener.cloud/v1beta1 kind: ControllerRegistration ... values: - clientConnection: - kubeconfig: abcd - labels: + defaultConfig: + clientConnection: + kubeconfig: abcd + labels: ``` If the `shoot-fleet-agent` should be enabled for every shoot cluster in your Gardener managed environment, you need to globally enable it in the `ControllerRegistration`: diff --git a/docs/usage/register_cluster.md b/docs/usage/register_cluster.md index c2a2987..d6c0d21 100644 --- a/docs/usage/register_cluster.md +++ b/docs/usage/register_cluster.md @@ -15,10 +15,11 @@ spec: providerConfig: apiVersion: service.fleet-agent.extensions.gardener.cloud/v1alpha1 kind: - clientConnection: - kubeconfig: base64 encoded kubeconfig - labels: - env: test + defaultConfig: + clientConnection: + kubeconfig: base64 encoded kubeconfig + labels: + env: test ```