From 0980e17cc9c9147b38508e9ca0f9f0f3cb9bd81b Mon Sep 17 00:00:00 2001 From: Yuanxun Gu Date: Mon, 8 Sep 2025 21:11:05 +0200 Subject: [PATCH 01/15] feat: add secretNamespace configuration for Gardener shoot clusters in YAML files --- .../templates/garden-manifests/gardener-shoot-cluster-aws.yaml | 1 - .../garden-manifests/gardener-shoot-cluster-azure.yaml | 3 +-- .../templates/garden-manifests/gardener-shoot-cluster-gcp.yaml | 3 +-- .../templates/mcp-manifests/admin-kubeconfig-request.yaml | 2 +- helm/charts/crossplane-gardener-shoot-clusters/values.ci.yaml | 3 ++- helm/charts/crossplane-gardener-shoot-clusters/values.yaml | 2 ++ 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-aws.yaml b/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-aws.yaml index 30cf456..c7ca2af 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-aws.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-aws.yaml @@ -24,7 +24,6 @@ spec: confirmation.gardener.cloud/deletion: "true" # otherwise it can't be destroyed using IAD name: {{required "A valid Gardener Shoot Name is required! (.Values.shootClusters[].name)" $shootCluster.name}} namespace: {{required "A valid Gardener Project Namespace is required! (.Values.shootClusters[].projectNamespace)" $shootCluster.projectNamespace}} - spec: secretBindingName: {{required "A valid Secret Binding Name is required! (.Values.shootClusters[].secretBindingName)" $shootCluster.secretBindingName}} ## Set your SecretBinding name cloudProfileName: aws diff --git a/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-azure.yaml b/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-azure.yaml index 8ffd57a..1dfcab8 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-azure.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-azure.yaml @@ -23,8 +23,7 @@ spec: annotations: confirmation.gardener.cloud/deletion: "true" # otherwise it can't be destroyed using IAD name: {{required "A valid Gardener Shoot Name is required! (.Values.shootClusters[].name)" $shootCluster.name}} - namespace: {{required "A valid Gardener Project Namespace is required! (.Values.shootClusters[]..projectNamespace)" $shootCluster.projectNamespace}} - + namespace: {{required "A valid Gardener Project Namespace is required! (.Values.shootClusters[]..projectNamespace)" $shootCluster.projectNamespace}} spec: secretBindingName: {{required "A valid Secret Binding Name is required! (.Values.shootClusters[]..secretBindingName)" $shootCluster.secretBindingName}} ## Set your SecretBinding name cloudProfileName: az diff --git a/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-gcp.yaml b/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-gcp.yaml index 1fd832c..05c9c1d 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-gcp.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-gcp.yaml @@ -23,8 +23,7 @@ spec: annotations: confirmation.gardener.cloud/deletion: "true" # otherwise it can't be destroyed using IAD name: {{required "A valid Gardener Shoot Name is required! (.Values.shootClusters[].name)" $shootCluster.name}} - namespace: {{required "A valid Gardener Project Namespace is required! (.Values.shootClusters[].projectNamespace)" $shootCluster.projectNamespace}} - + namespace: {{required "A valid Gardener Project Namespace is required! (.Values.shootClusters[].projectNamespace)" $shootCluster.projectNamespace}} spec: secretBindingName: {{required "A valid Secret Binding Name is required! (.Values.shootClusters[].secretBindingName)" $shootCluster.secretBindingName}} # Set your SecretBinding name cloudProfileName: gcp diff --git a/helm/charts/crossplane-gardener-shoot-clusters/templates/mcp-manifests/admin-kubeconfig-request.yaml b/helm/charts/crossplane-gardener-shoot-clusters/templates/mcp-manifests/admin-kubeconfig-request.yaml index 67dddef..4f8c9d2 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/templates/mcp-manifests/admin-kubeconfig-request.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/templates/mcp-manifests/admin-kubeconfig-request.yaml @@ -16,6 +16,6 @@ spec: name: {{ required "A valid value is required! (.Values.shootClusters[].gardenerOrchestrateCloudProviderConfigRefName)" $shootCluster.gardenerOrchestrateCloudProviderConfigRefName | quote}} writeConnectionSecretToRef: name: gardener-shoot-kubeconfig-{{required "A valid value is required! (.Values.shootClusters[].name)" $shootCluster.name}} - namespace: default + namespace: {{ $shootCluster.secretNamespace | default "default" | quote }} {{- end }} {{- end }} diff --git a/helm/charts/crossplane-gardener-shoot-clusters/values.ci.yaml b/helm/charts/crossplane-gardener-shoot-clusters/values.ci.yaml index 68e0881..f4474ed 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/values.ci.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/values.ci.yaml @@ -19,7 +19,8 @@ shootClusters: maintenance: {} addons: {} networking: {} - infrastructureConfig: {} + infrastructureConfig: {} + secretNamespace: "test-namespace" - name: "iad-test-gcp" kubernetesCrossplaneProviderConfigRefName: "garden-co-golden" gardenerOrchestrateCloudProviderConfigRefName: "garden-co-golden" diff --git a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml index c808d05..e814b2a 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml @@ -211,4 +211,6 @@ shootClusters: extensions: [] # -- resources: [] + # namespace of the binding secret + secretNamespace: "" ######################################################################################################### \ No newline at end of file From 21734f706e81f69ca43cccee1f4ac68005eeb7d3 Mon Sep 17 00:00:00 2001 From: Yuanxun Gu Date: Mon, 8 Sep 2025 21:35:50 +0200 Subject: [PATCH 02/15] fix: update zone name from eu-central-1a to eu-west-1a in values.yaml --- helm/charts/crossplane-gardener-shoot-clusters/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml index e814b2a..009e315 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml @@ -134,7 +134,7 @@ defaults: vpc: cidr: 10.180.0.0/16 zones: - - name: eu-central-1a + - name: eu-west-1a workers: 10.180.0.0/19 public: 10.180.32.0/20 internal: 10.180.48.0/20 From 55dc17886e07f55c0f11dfb455a5967e0663a8d8 Mon Sep 17 00:00:00 2001 From: ricogu Date: Mon, 8 Sep 2025 19:38:57 +0000 Subject: [PATCH 03/15] chore(ci): update helm/charts/crossplane-gardener-shoot-clusters/Chart.yaml.version 0.0.13 -> 0.0.14 --- helm/charts/crossplane-gardener-shoot-clusters/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/Chart.yaml b/helm/charts/crossplane-gardener-shoot-clusters/Chart.yaml index e3f5430..1fb61b5 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/Chart.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/Chart.yaml @@ -16,7 +16,7 @@ icon: "https://avatars.githubusercontent.com/u/45158470?s=48&v=4" # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.0.13 +version: 0.0.14 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. From fad7c208488c08a8dd4e2ce17cb1925e3db1e9c6 Mon Sep 17 00:00:00 2001 From: ricogu Date: Mon, 8 Sep 2025 19:38:58 +0000 Subject: [PATCH 04/15] chore(ci): update Helm Chart helm/charts/crossplane-gardener-shoot-clusters/README.md file --- helm/charts/crossplane-gardener-shoot-clusters/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/README.md b/helm/charts/crossplane-gardener-shoot-clusters/README.md index 66ddbec..7ffdbac 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/README.md +++ b/helm/charts/crossplane-gardener-shoot-clusters/README.md @@ -2,7 +2,7 @@ # crossplane-gardener-shoot-clusters -![Version: 0.0.13](https://img.shields.io/badge/Version-0.0.13-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.10.0](https://img.shields.io/badge/AppVersion-0.10.0-informational?style=flat-square) +![Version: 0.0.14](https://img.shields.io/badge/Version-0.0.14-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.10.0](https://img.shields.io/badge/AppVersion-0.10.0-informational?style=flat-square) A Helm chart to template crossplane manifests to manage Gardener Shoot resources. @@ -18,7 +18,7 @@ A Helm chart to template crossplane manifests to manage Gardener Shoot resources | defaults.addons | object | `{"kubernetesDashboard":{"enabled":false},"nginxIngress":{"enabled":false}}` | [addons](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#core.gardener.cloud/v1beta1.Addons) contains information about enabled/disabled addons and their configuration. | | defaults.aws | object | - | aws contains [hypescaler specific](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#provider) information. | | defaults.aws.controlPlaneConfig | object | `{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","cloudControllerManager":{"useCustomRouteController":true},"kind":"ControlPlaneConfig","storage":{"managedDefaultClass":true}}` | [controlPlaneConfig](https://github.com/gardener/gardener-extension-provider-aws/blob/master/docs/usage/usage.md) | -| defaults.aws.infrastructureConfig | object | `{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","kind":"InfrastructureConfig","networks":{"vpc":{"cidr":"10.180.0.0/16"},"zones":[{"internal":"10.180.48.0/20","name":"eu-central-1a","public":"10.180.32.0/20","workers":"10.180.0.0/19"}]}}` | [infrastructureConfig](https://github.com/gardener/gardener-extension-provider-aws/blob/master/docs/usage/usage.md) | +| defaults.aws.infrastructureConfig | object | `{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","kind":"InfrastructureConfig","networks":{"vpc":{"cidr":"10.180.0.0/16"},"zones":[{"internal":"10.180.48.0/20","name":"eu-west-1a","public":"10.180.32.0/20","workers":"10.180.0.0/19"}]}}` | [infrastructureConfig](https://github.com/gardener/gardener-extension-provider-aws/blob/master/docs/usage/usage.md) | | defaults.aws.workers | list | `[{"cri":{"name":"containerd"},"machine":{"architecture":"amd64","image":{"name":"gardenlinux","version":"1877.2.0"},"type":"c3.2xlarge"},"maxSurge":1,"maximum":4,"minimum":1,"name":"worker-hmyoy","providerConfig":{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","instanceMetadataOptions":{"httpPutResponseHopLimit":2,"httpTokens":"required"},"kind":"WorkerConfig"},"volume":{"size":"50Gi","type":"gp3"},"zones":["eu-central-1a"]}]` | [workers](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#core.gardener.cloud/v1beta1.Worker) is a list of worker groups. | | defaults.azure | object | - | azure contains [hypescaler specific](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#provider) information. | | defaults.azure.controlPlaneConfig | object | `{"apiVersion":"azure.provider.extensions.gardener.cloud/v1alpha1","kind":"ControlPlaneConfig"}` | [controlPlaneConfig](https://github.com/gardener/gardener-extension-provider-azure/blob/master/docs/usage/usage.md#controlplaneconfig) | From 6bbc6b659ca9873ad04b82c12433058b2f51d9a0 Mon Sep 17 00:00:00 2001 From: Yuanxun Gu Date: Tue, 9 Sep 2025 10:11:49 +0200 Subject: [PATCH 05/15] fix: update zone name from eu-west-1a to eu-central-1c in values.yaml --- helm/charts/crossplane-gardener-shoot-clusters/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml index 009e315..b520bee 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml @@ -134,7 +134,7 @@ defaults: vpc: cidr: 10.180.0.0/16 zones: - - name: eu-west-1a + - name: eu-central-1c workers: 10.180.0.0/19 public: 10.180.32.0/20 internal: 10.180.48.0/20 From a362a4fd66bd85807ac766a8f96fa1376d174f62 Mon Sep 17 00:00:00 2001 From: ricogu Date: Tue, 9 Sep 2025 08:12:22 +0000 Subject: [PATCH 06/15] chore(ci): update Helm Chart helm/charts/crossplane-gardener-shoot-clusters/README.md file --- helm/charts/crossplane-gardener-shoot-clusters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/README.md b/helm/charts/crossplane-gardener-shoot-clusters/README.md index 7ffdbac..b82e763 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/README.md +++ b/helm/charts/crossplane-gardener-shoot-clusters/README.md @@ -18,7 +18,7 @@ A Helm chart to template crossplane manifests to manage Gardener Shoot resources | defaults.addons | object | `{"kubernetesDashboard":{"enabled":false},"nginxIngress":{"enabled":false}}` | [addons](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#core.gardener.cloud/v1beta1.Addons) contains information about enabled/disabled addons and their configuration. | | defaults.aws | object | - | aws contains [hypescaler specific](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#provider) information. | | defaults.aws.controlPlaneConfig | object | `{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","cloudControllerManager":{"useCustomRouteController":true},"kind":"ControlPlaneConfig","storage":{"managedDefaultClass":true}}` | [controlPlaneConfig](https://github.com/gardener/gardener-extension-provider-aws/blob/master/docs/usage/usage.md) | -| defaults.aws.infrastructureConfig | object | `{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","kind":"InfrastructureConfig","networks":{"vpc":{"cidr":"10.180.0.0/16"},"zones":[{"internal":"10.180.48.0/20","name":"eu-west-1a","public":"10.180.32.0/20","workers":"10.180.0.0/19"}]}}` | [infrastructureConfig](https://github.com/gardener/gardener-extension-provider-aws/blob/master/docs/usage/usage.md) | +| defaults.aws.infrastructureConfig | object | `{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","kind":"InfrastructureConfig","networks":{"vpc":{"cidr":"10.180.0.0/16"},"zones":[{"internal":"10.180.48.0/20","name":"eu-central-1c","public":"10.180.32.0/20","workers":"10.180.0.0/19"}]}}` | [infrastructureConfig](https://github.com/gardener/gardener-extension-provider-aws/blob/master/docs/usage/usage.md) | | defaults.aws.workers | list | `[{"cri":{"name":"containerd"},"machine":{"architecture":"amd64","image":{"name":"gardenlinux","version":"1877.2.0"},"type":"c3.2xlarge"},"maxSurge":1,"maximum":4,"minimum":1,"name":"worker-hmyoy","providerConfig":{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","instanceMetadataOptions":{"httpPutResponseHopLimit":2,"httpTokens":"required"},"kind":"WorkerConfig"},"volume":{"size":"50Gi","type":"gp3"},"zones":["eu-central-1a"]}]` | [workers](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#core.gardener.cloud/v1beta1.Worker) is a list of worker groups. | | defaults.azure | object | - | azure contains [hypescaler specific](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#provider) information. | | defaults.azure.controlPlaneConfig | object | `{"apiVersion":"azure.provider.extensions.gardener.cloud/v1alpha1","kind":"ControlPlaneConfig"}` | [controlPlaneConfig](https://github.com/gardener/gardener-extension-provider-azure/blob/master/docs/usage/usage.md#controlplaneconfig) | From e421c4fa317d1e976c70bad2f3d9506f3c6a3d4d Mon Sep 17 00:00:00 2001 From: Yuanxun Gu Date: Tue, 9 Sep 2025 11:19:50 +0200 Subject: [PATCH 07/15] fix: update zone name from eu-central-1c to eu-central-1a in values.yaml --- helm/charts/crossplane-gardener-shoot-clusters/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml index b520bee..e814b2a 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml @@ -134,7 +134,7 @@ defaults: vpc: cidr: 10.180.0.0/16 zones: - - name: eu-central-1c + - name: eu-central-1a workers: 10.180.0.0/19 public: 10.180.32.0/20 internal: 10.180.48.0/20 From 1f90aa8be2e5d49ac092516eae8f6ab88762711d Mon Sep 17 00:00:00 2001 From: ricogu Date: Tue, 9 Sep 2025 09:20:16 +0000 Subject: [PATCH 08/15] chore(ci): update Helm Chart helm/charts/crossplane-gardener-shoot-clusters/README.md file --- helm/charts/crossplane-gardener-shoot-clusters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/README.md b/helm/charts/crossplane-gardener-shoot-clusters/README.md index b82e763..874b228 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/README.md +++ b/helm/charts/crossplane-gardener-shoot-clusters/README.md @@ -18,7 +18,7 @@ A Helm chart to template crossplane manifests to manage Gardener Shoot resources | defaults.addons | object | `{"kubernetesDashboard":{"enabled":false},"nginxIngress":{"enabled":false}}` | [addons](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#core.gardener.cloud/v1beta1.Addons) contains information about enabled/disabled addons and their configuration. | | defaults.aws | object | - | aws contains [hypescaler specific](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#provider) information. | | defaults.aws.controlPlaneConfig | object | `{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","cloudControllerManager":{"useCustomRouteController":true},"kind":"ControlPlaneConfig","storage":{"managedDefaultClass":true}}` | [controlPlaneConfig](https://github.com/gardener/gardener-extension-provider-aws/blob/master/docs/usage/usage.md) | -| defaults.aws.infrastructureConfig | object | `{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","kind":"InfrastructureConfig","networks":{"vpc":{"cidr":"10.180.0.0/16"},"zones":[{"internal":"10.180.48.0/20","name":"eu-central-1c","public":"10.180.32.0/20","workers":"10.180.0.0/19"}]}}` | [infrastructureConfig](https://github.com/gardener/gardener-extension-provider-aws/blob/master/docs/usage/usage.md) | +| defaults.aws.infrastructureConfig | object | `{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","kind":"InfrastructureConfig","networks":{"vpc":{"cidr":"10.180.0.0/16"},"zones":[{"internal":"10.180.48.0/20","name":"eu-central-1a","public":"10.180.32.0/20","workers":"10.180.0.0/19"}]}}` | [infrastructureConfig](https://github.com/gardener/gardener-extension-provider-aws/blob/master/docs/usage/usage.md) | | defaults.aws.workers | list | `[{"cri":{"name":"containerd"},"machine":{"architecture":"amd64","image":{"name":"gardenlinux","version":"1877.2.0"},"type":"c3.2xlarge"},"maxSurge":1,"maximum":4,"minimum":1,"name":"worker-hmyoy","providerConfig":{"apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1","instanceMetadataOptions":{"httpPutResponseHopLimit":2,"httpTokens":"required"},"kind":"WorkerConfig"},"volume":{"size":"50Gi","type":"gp3"},"zones":["eu-central-1a"]}]` | [workers](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#core.gardener.cloud/v1beta1.Worker) is a list of worker groups. | | defaults.azure | object | - | azure contains [hypescaler specific](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#provider) information. | | defaults.azure.controlPlaneConfig | object | `{"apiVersion":"azure.provider.extensions.gardener.cloud/v1alpha1","kind":"ControlPlaneConfig"}` | [controlPlaneConfig](https://github.com/gardener/gardener-extension-provider-azure/blob/master/docs/usage/usage.md#controlplaneconfig) | From 1d13bca15586448535477c976422ede7de4b79be Mon Sep 17 00:00:00 2001 From: Rico Gu Date: Tue, 9 Sep 2025 20:47:56 +0200 Subject: [PATCH 09/15] Apply suggestion from @sk31337 Co-authored-by: Steffen <5519671+sk31337@users.noreply.github.com> --- .../garden-manifests/gardener-shoot-cluster-azure.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-azure.yaml b/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-azure.yaml index 1dfcab8..437b522 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-azure.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/templates/garden-manifests/gardener-shoot-cluster-azure.yaml @@ -23,7 +23,7 @@ spec: annotations: confirmation.gardener.cloud/deletion: "true" # otherwise it can't be destroyed using IAD name: {{required "A valid Gardener Shoot Name is required! (.Values.shootClusters[].name)" $shootCluster.name}} - namespace: {{required "A valid Gardener Project Namespace is required! (.Values.shootClusters[]..projectNamespace)" $shootCluster.projectNamespace}} + namespace: {{required "A valid Gardener Project Namespace is required! (.Values.shootClusters[].projectNamespace)" $shootCluster.projectNamespace}} spec: secretBindingName: {{required "A valid Secret Binding Name is required! (.Values.shootClusters[]..secretBindingName)" $shootCluster.secretBindingName}} ## Set your SecretBinding name cloudProfileName: az From d8643acecd23a33758f03432a708f3421999af4e Mon Sep 17 00:00:00 2001 From: Yuanxun Gu Date: Tue, 9 Sep 2025 20:57:04 +0200 Subject: [PATCH 10/15] fix: update adminKubeconfigRequest to include secretNamespace in YAML files --- .../templates/mcp-manifests/admin-kubeconfig-request.yaml | 6 +++++- .../crossplane-gardener-shoot-clusters/values.ci.yaml | 3 ++- helm/charts/crossplane-gardener-shoot-clusters/values.yaml | 5 +++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/helm/charts/crossplane-gardener-shoot-clusters/templates/mcp-manifests/admin-kubeconfig-request.yaml b/helm/charts/crossplane-gardener-shoot-clusters/templates/mcp-manifests/admin-kubeconfig-request.yaml index 4f8c9d2..f2f67ae 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/templates/mcp-manifests/admin-kubeconfig-request.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/templates/mcp-manifests/admin-kubeconfig-request.yaml @@ -16,6 +16,10 @@ spec: name: {{ required "A valid value is required! (.Values.shootClusters[].gardenerOrchestrateCloudProviderConfigRefName)" $shootCluster.gardenerOrchestrateCloudProviderConfigRefName | quote}} writeConnectionSecretToRef: name: gardener-shoot-kubeconfig-{{required "A valid value is required! (.Values.shootClusters[].name)" $shootCluster.name}} - namespace: {{ $shootCluster.secretNamespace | default "default" | quote }} + {{- if $shootCluster.adminKubeconfigRequest }} + namespace: {{ $shootCluster.adminKubeconfigRequest.secretNamespace | default "default" | quote }} + {{- else }} + namespace: default + {{- end }} {{- end }} {{- end }} diff --git a/helm/charts/crossplane-gardener-shoot-clusters/values.ci.yaml b/helm/charts/crossplane-gardener-shoot-clusters/values.ci.yaml index f4474ed..601a000 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/values.ci.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/values.ci.yaml @@ -20,7 +20,8 @@ shootClusters: addons: {} networking: {} infrastructureConfig: {} - secretNamespace: "test-namespace" + adminKubeconfigRequest: + secretNamespace: "test-namespace" - name: "iad-test-gcp" kubernetesCrossplaneProviderConfigRefName: "garden-co-golden" gardenerOrchestrateCloudProviderConfigRefName: "garden-co-golden" diff --git a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml index e814b2a..9e7778a 100644 --- a/helm/charts/crossplane-gardener-shoot-clusters/values.yaml +++ b/helm/charts/crossplane-gardener-shoot-clusters/values.yaml @@ -211,6 +211,7 @@ shootClusters: extensions: [] # -- resources: [] - # namespace of the binding secret - secretNamespace: "" + # namespace of the secret from adminKubeconfigRequest: + adminKubeconfigRequest: + secretNamespace: "" ######################################################################################################### \ No newline at end of file From 756b0dd48d2857deb9d66507ef3553b620ac5dc5 Mon Sep 17 00:00:00 2001 From: Yuanxun Gu Date: Thu, 25 Sep 2025 15:01:32 +0200 Subject: [PATCH 11/15] feat: add HelmRepository configuration to helm-repository.yml and update values.yaml --- .../flux-config/templates/helm-repository.yml | 15 +++++++++++++++ helm/charts/flux-config/values.ci.yaml | 9 ++++++++- helm/charts/flux-config/values.yaml | 13 +++++++++++-- 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 helm/charts/flux-config/templates/helm-repository.yml diff --git a/helm/charts/flux-config/templates/helm-repository.yml b/helm/charts/flux-config/templates/helm-repository.yml new file mode 100644 index 0000000..fa44069 --- /dev/null +++ b/helm/charts/flux-config/templates/helm-repository.yml @@ -0,0 +1,15 @@ +{{- range $item := .Values.helmRepository}} + {{- if and ($item) (ne $item.name "")}} +--- +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: {{required "A valid value is required! (.Values.helmRepository[].name)" $item.name | lower | quote}} + namespace: {{ $item.namespace | default $.Values.defaults.namespace | lower | quote }} + labels: + openmcp.cloud/blueprint-building-block: "{{ $.Chart.Name }}" + openmcp.cloud/blueprint-building-block-version: "{{ $.Chart.Version }}" +spec: + {{- toYaml $item.spec | nindent 2 }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/helm/charts/flux-config/values.ci.yaml b/helm/charts/flux-config/values.ci.yaml index 0abe7a2..2f0c27f 100644 --- a/helm/charts/flux-config/values.ci.yaml +++ b/helm/charts/flux-config/values.ci.yaml @@ -8,7 +8,14 @@ ociRepositorys: interval: 5m0s url: oci://ghcr.io/stefanprodan/manifests/podinfo ref: - tag: lates + tag: latest +######################################################################################################################## +helmRepository: + - name: podinfo + namespace: "default" + spec: + interval: 5m0s + url: https://stefanprodan.github.io/podinfo ######################################################################################################################## helmReleases: - name: podinfo diff --git a/helm/charts/flux-config/values.yaml b/helm/charts/flux-config/values.yaml index 044d401..0f0d433 100644 --- a/helm/charts/flux-config/values.yaml +++ b/helm/charts/flux-config/values.yaml @@ -8,13 +8,22 @@ defaults: ######################################################################################################################## # -- defines [`kind: OCIRepository`](https://fluxcd.io/flux/components/source/api/v1/) manifest. ociRepositorys: - # ociRepositorys[0].name -- defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: GitRepository` + # ociRepositorys[0].name -- defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: OCIRepository` - name: "" - # -- *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: GitRepository` + # -- *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: OCIRepository` namespace: "default" # spec -- defines k8s `spec` structured value of `kind: OCIRepository`. See [API browser](https://fluxcd.io/flux/components/source/ocirepositories/) spec: ######################################################################################################################## +# -- defines [`kind: HelmRepository`](https://fluxcd.io/flux/components/source/api/v1/) manifest. +helmRepository: + # helmRepositorys[0].name -- defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: HelmRepository` + - name: "" + # -- *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: HelmRepository` + namespace: "default" + # spec -- defines k8s `spec` structured value of `kind: HelmRepository`. See [API browser](https://fluxcd.io/flux/components/source/helmrepositories/) + spec: +######################################################################################################################## # -- defines independent [`kind: HelmReleases`](https://fluxcd.io/flux/components/helm/api/v2/) manifest without the generation of `kind: GitRepository`. helmReleases: # helmReleases[0].name -- defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: GitRepository` From 5594fdca842e2bd3098e1b24157dfa366ec2b0f3 Mon Sep 17 00:00:00 2001 From: ricogu Date: Thu, 25 Sep 2025 13:02:29 +0000 Subject: [PATCH 12/15] chore(ci): update helm/charts/flux-config/Chart.yaml.version 0.0.20 -> 0.0.21 --- helm/charts/flux-config/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/charts/flux-config/Chart.yaml b/helm/charts/flux-config/Chart.yaml index e8bb554..a744880 100644 --- a/helm/charts/flux-config/Chart.yaml +++ b/helm/charts/flux-config/Chart.yaml @@ -17,7 +17,7 @@ icon: "https://avatars.githubusercontent.com/u/52158677?s=200&v=4" # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.0.20 +version: 0.0.21 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. From 426e8519fcd361492ab6cdef4ec6bf8e32dc5db1 Mon Sep 17 00:00:00 2001 From: ricogu Date: Thu, 25 Sep 2025 13:02:31 +0000 Subject: [PATCH 13/15] chore(ci): update Helm Chart helm/charts/flux-config/README.md file --- helm/charts/flux-config/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/helm/charts/flux-config/README.md b/helm/charts/flux-config/README.md index b0842b3..02654af 100644 --- a/helm/charts/flux-config/README.md +++ b/helm/charts/flux-config/README.md @@ -2,7 +2,7 @@ # flux-config -![Version: 0.0.20](https://img.shields.io/badge/Version-0.0.20-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.6.0](https://img.shields.io/badge/AppVersion-2.6.0-informational?style=flat-square) +![Version: 0.0.21](https://img.shields.io/badge/Version-0.0.21-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.6.0](https://img.shields.io/badge/AppVersion-2.6.0-informational?style=flat-square) A Helm Chart to template flux manifests to leverage GitOps on a OpenMCP cluster. @@ -58,6 +58,8 @@ A Helm Chart to template flux manifests to leverage GitOps on a OpenMCP cluster. | helmReleases | list | `[{"name":"","namespace":"default","spec":null}]` | defines independent [`kind: HelmReleases`](https://fluxcd.io/flux/components/helm/api/v2/) manifest without the generation of `kind: GitRepository`. | | helmReleases[0].name | string | `""` | defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: GitRepository` | | helmReleases[0].namespace | string | `"default"` | *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: GitRepository` | +| helmRepository | list | `[{"name":"","namespace":"default","spec":null}]` | defines [`kind: HelmRepository`](https://fluxcd.io/flux/components/source/api/v1/) manifest. | +| helmRepository[0].namespace | string | `"default"` | *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: HelmRepository` | | kustomizations | list | `[{"commonMetadata":[],"components":{},"decryption":[],"dependsOn":{},"force":null,"healthChecks":{},"images":{},"interval":null,"kubeConfig":[],"name":"","namePrefix":null,"nameSuffix":null,"namespace":"ns1","patches":null,"path":"","postBuild":[],"prune":null,"retryInterval":null,"serviceAccountName":null,"sourceRef":{"apiVersion":"","kind":"GitRepository","name":"","namespace":"ns1"},"suspend":null,"targetnamespace":"ns1","timeout":null,"wait":null}]` | defines independent [`kind: Kustomization`](https://fluxcd.io/flux/components/kustomize/api/v1/#kustomize.toolkit.fluxcd.io/v1.Kustomization) manifest without the generation of `kind: GitRepository`. | | kustomizations[0].commonMetadata | list | `[]` | [commonMetadata](https://fluxcd.io/flux/components/kustomize/kustomizations/#common-metadata) is an *(optional)*field used to specify any metadata that should be applied to all the Kustomization’s resources. | | kustomizations[0].components | object | `{}` | [components](https://fluxcd.io/flux/components/kustomize/kustomizations/#components) is an *(optional)*list used to specify Kustomize components. This allows using reusable pieces of configuration logic that can be included from multiple overlays. | @@ -88,8 +90,8 @@ A Helm Chart to template flux manifests to leverage GitOps on a OpenMCP cluster. | kustomizations[0].timeout | string | `nil` | *(optional)* [Timeout](https://fluxcd.io/flux/components/kustomize/api/v1/#kustomize.toolkit.fluxcd.io/v1.KustomizationSpec) for validation, apply and health checking operations. Defaults to ‘Interval’ duration. e.g. 1m | | kustomizations[0].wait | string | `nil` | [wait](https://fluxcd.io/flux/components/kustomize/kustomizations/#wait) is an *(optional)*boolean field to perform health checks for all reconciled resources as part of the Kustomization. If set to true, .spec.healthChecks is ignored. | | ociRepositorys | list | `[{"name":"","namespace":"default","spec":null}]` | defines [`kind: OCIRepository`](https://fluxcd.io/flux/components/source/api/v1/) manifest. | -| ociRepositorys[0].name | string | `""` | defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: GitRepository` | -| ociRepositorys[0].namespace | string | `"default"` | *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: GitRepository` | +| ociRepositorys[0].name | string | `""` | defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: OCIRepository` | +| ociRepositorys[0].namespace | string | `"default"` | *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: OCIRepository` | ---------------------------------------------- Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2) \ No newline at end of file From 9d004dac1e2963c42b1bb9b94ff3d86d7e91d55c Mon Sep 17 00:00:00 2001 From: Yuanxun Gu Date: Fri, 26 Sep 2025 08:56:25 +0200 Subject: [PATCH 14/15] fix: rename helmRepository to helmRepositorys in YAML files --- helm/charts/flux-config/templates/helm-repository.yml | 2 +- helm/charts/flux-config/values.ci.yaml | 2 +- helm/charts/flux-config/values.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/helm/charts/flux-config/templates/helm-repository.yml b/helm/charts/flux-config/templates/helm-repository.yml index fa44069..deae233 100644 --- a/helm/charts/flux-config/templates/helm-repository.yml +++ b/helm/charts/flux-config/templates/helm-repository.yml @@ -1,4 +1,4 @@ -{{- range $item := .Values.helmRepository}} +{{- range $item := .Values.helmRepositorys}} {{- if and ($item) (ne $item.name "")}} --- apiVersion: source.toolkit.fluxcd.io/v1 diff --git a/helm/charts/flux-config/values.ci.yaml b/helm/charts/flux-config/values.ci.yaml index 2f0c27f..dfaa853 100644 --- a/helm/charts/flux-config/values.ci.yaml +++ b/helm/charts/flux-config/values.ci.yaml @@ -10,7 +10,7 @@ ociRepositorys: ref: tag: latest ######################################################################################################################## -helmRepository: +helmRepositorys: - name: podinfo namespace: "default" spec: diff --git a/helm/charts/flux-config/values.yaml b/helm/charts/flux-config/values.yaml index 0f0d433..ca7292f 100644 --- a/helm/charts/flux-config/values.yaml +++ b/helm/charts/flux-config/values.yaml @@ -16,7 +16,7 @@ ociRepositorys: spec: ######################################################################################################################## # -- defines [`kind: HelmRepository`](https://fluxcd.io/flux/components/source/api/v1/) manifest. -helmRepository: +helmRepositorys: # helmRepositorys[0].name -- defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: HelmRepository` - name: "" # -- *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: HelmRepository` From f66dcb60b4bb294088da2b8e240868255cbc5a3a Mon Sep 17 00:00:00 2001 From: ricogu Date: Fri, 26 Sep 2025 06:56:52 +0000 Subject: [PATCH 15/15] chore(ci): update Helm Chart helm/charts/flux-config/README.md file --- helm/charts/flux-config/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/helm/charts/flux-config/README.md b/helm/charts/flux-config/README.md index 02654af..a960009 100644 --- a/helm/charts/flux-config/README.md +++ b/helm/charts/flux-config/README.md @@ -58,8 +58,9 @@ A Helm Chart to template flux manifests to leverage GitOps on a OpenMCP cluster. | helmReleases | list | `[{"name":"","namespace":"default","spec":null}]` | defines independent [`kind: HelmReleases`](https://fluxcd.io/flux/components/helm/api/v2/) manifest without the generation of `kind: GitRepository`. | | helmReleases[0].name | string | `""` | defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: GitRepository` | | helmReleases[0].namespace | string | `"default"` | *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: GitRepository` | -| helmRepository | list | `[{"name":"","namespace":"default","spec":null}]` | defines [`kind: HelmRepository`](https://fluxcd.io/flux/components/source/api/v1/) manifest. | -| helmRepository[0].namespace | string | `"default"` | *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: HelmRepository` | +| helmRepositorys | list | `[{"name":"","namespace":"default","spec":null}]` | defines [`kind: HelmRepository`](https://fluxcd.io/flux/components/source/api/v1/) manifest. | +| helmRepositorys[0].name | string | `""` | defines k8s [`metadata.name`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: HelmRepository` | +| helmRepositorys[0].namespace | string | `"default"` | *(optional)* defines k8s [`metadata.namespace`](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) value of `kind: HelmRepository` | | kustomizations | list | `[{"commonMetadata":[],"components":{},"decryption":[],"dependsOn":{},"force":null,"healthChecks":{},"images":{},"interval":null,"kubeConfig":[],"name":"","namePrefix":null,"nameSuffix":null,"namespace":"ns1","patches":null,"path":"","postBuild":[],"prune":null,"retryInterval":null,"serviceAccountName":null,"sourceRef":{"apiVersion":"","kind":"GitRepository","name":"","namespace":"ns1"},"suspend":null,"targetnamespace":"ns1","timeout":null,"wait":null}]` | defines independent [`kind: Kustomization`](https://fluxcd.io/flux/components/kustomize/api/v1/#kustomize.toolkit.fluxcd.io/v1.Kustomization) manifest without the generation of `kind: GitRepository`. | | kustomizations[0].commonMetadata | list | `[]` | [commonMetadata](https://fluxcd.io/flux/components/kustomize/kustomizations/#common-metadata) is an *(optional)*field used to specify any metadata that should be applied to all the Kustomization’s resources. | | kustomizations[0].components | object | `{}` | [components](https://fluxcd.io/flux/components/kustomize/kustomizations/#components) is an *(optional)*list used to specify Kustomize components. This allows using reusable pieces of configuration logic that can be included from multiple overlays. |