diff --git a/charts/rancher-turtles/questions.yml b/charts/rancher-turtles/questions.yml index eec8692c..1547c1fa 100644 --- a/charts/rancher-turtles/questions.yml +++ b/charts/rancher-turtles/questions.yml @@ -1,72 +1,66 @@ namespace: rancher-turtles-system questions: -- variable: rancherTurtles.features.default - default: "false" - description: "Customize install settings" - label: Customize install settings - type: boolean - show_subquestion_if: true - group: "Rancher Turtles Extra Settings" - subquestions: - - variable: cluster-api-operator.cert-manager.enabled - default: false + - variable: rancherTurtles.features.default + default: "false" + description: "Customize install settings" + label: Customize install settings type: boolean - description: "Flag to enable or disable installation of cert-manager. If set to false then you will need to install cert-manager manually" - label: "Enable Cert Manager" - - variable: rancherTurtles.cluster-api-operator.cleanup - default: true - description: "Specify that the CAPI Operator post-delete cleanup job will be performed" - type: boolean - label: Cleanup CAPI Operator installation - group: "CAPI Operator cleanup settings" show_subquestion_if: true + group: "Rancher Turtles Extra Settings" subquestions: - - variable: rancherTurtles.cluster-api-operator.kubectlImage - default: "registry.k8s.io/kubernetes/kubectl:v1.30.0" - description: "Specify the image to use when cleaning up the Cluster API Operator manifests" - type: string - label: Cleanup Image - group: "CAPI Operator cleanup settings" - - variable: rancherTurtles.features.rancher-webhook.cleanup - default: true - description: "Specify that the Rancher embedded cluster api webhooks should be removed" - type: boolean - label: Cleanup Rancher Embedded CAPI Webhooks - group: "Rancher webhook cleanup settings" - show_subquestion_if: true - subquestions: - - variable: rancherTurtles.features.rancher-webhook.kubectlImage - default: "registry.k8s.io/kubernetes/kubectl:v1.30.0" - description: "Specify the image to use when cleaning up the webhooks" - type: string - label: Webhook Cleanup Image - group: "Rancher webhook cleanup settings" - - variable: rancherTurtles.features.rancher-kubeconfigs.label - default: false - description: "(Experimental) Specify that the kubeconfigs generated by Rancher should be automatically patched to contain the CAPI expected labels" - type: boolean - label: Label Rancher Kubeconfigs - group: "Rancher Turtles Features Settings" - - variable: cluster-api-operator.cluster-api.rke2.enabled - default: "true" - description: "Flag to enable or disable installation of the RKE2 provider for Cluster API. By default this is enabled." - label: "Enable RKE2 Provider" - type: boolean - - variable: rancherTurtles.features.propagate-labels.enabled - default: false - description: "(Experimental) Specify that the labels from CAPI should be propagated to Rancher" - type: boolean - label: Propagate CAPI Labels - group: "Rancher Turtles Features Settings" - - variable: rancherTurtles.features.addon-provider-fleet.enabled - default: true - description: "Enable Fleet Addon Provider functionality in Rancher Turtles" - type: boolean - label: Seamless integration with Fleet and CAPI - group: "Rancher Turtles Features Settings" - - variable: rancherTurtles.features.agent-tls-mode.enabled - default: false - description: "If enabled Turtles will use the agent-tls-mode setting to determine CA cert trust mode for importing clusters" - type: boolean - label: Enable Agent TLS Mode - group: "Rancher Turtles Features Settings" + - variable: cluster-api-operator.cert-manager.enabled + default: false + type: boolean + description: "Flag to enable or disable installation of cert-manager. If set to false then you will need to install cert-manager manually" + label: "Enable Cert Manager" + - variable: rancherTurtles.cluster-api-operator.cleanup + default: true + description: "Specify that the CAPI Operator post-delete cleanup job will be performed" + type: boolean + label: Cleanup CAPI Operator installation + group: "CAPI Operator cleanup settings" + show_subquestion_if: true + subquestions: + - variable: rancherTurtles.cluster-api-operator.kubectlImage + default: "registry.k8s.io/kubernetes/kubectl:v1.30.0" + description: "Specify the image to use when cleaning up the Cluster API Operator manifests" + type: string + label: Cleanup Image + group: "CAPI Operator cleanup settings" + - variable: rancherTurtles.features.rancher-webhook.cleanup + default: true + description: "Specify that the Rancher embedded cluster api webhooks should be removed" + type: boolean + label: Cleanup Rancher Embedded CAPI Webhooks + group: "Rancher webhook cleanup settings" + show_subquestion_if: true + subquestions: + - variable: rancherTurtles.features.rancher-webhook.kubectlImage + default: "registry.k8s.io/kubernetes/kubectl:v1.30.0" + description: "Specify the image to use when cleaning up the webhooks" + type: string + label: Webhook Cleanup Image + group: "Rancher webhook cleanup settings" + - variable: rancherTurtles.features.rancher-kubeconfigs.label + default: false + description: "(Experimental) Specify that the kubeconfigs generated by Rancher should be automatically patched to contain the CAPI expected labels" + type: boolean + label: Label Rancher Kubeconfigs + group: "Rancher Turtles Features Settings" + - variable: cluster-api-operator.cluster-api.rke2.enabled + default: "true" + description: "Flag to enable or disable installation of the RKE2 provider for Cluster API. By default this is enabled." + label: "Enable RKE2 Provider" + type: boolean + - variable: rancherTurtles.features.addon-provider-fleet.enabled + default: true + description: "Enable Fleet Addon Provider functionality in Rancher Turtles" + type: boolean + label: Seamless integration with Fleet and CAPI + group: "Rancher Turtles Features Settings" + - variable: rancherTurtles.features.agent-tls-mode.enabled + default: false + description: "If enabled Turtles will use the agent-tls-mode setting to determine CA cert trust mode for importing clusters" + type: boolean + label: Enable Agent TLS Mode + group: "Rancher Turtles Features Settings" diff --git a/charts/rancher-turtles/templates/deployment.yaml b/charts/rancher-turtles/templates/deployment.yaml index b5c9ea67..efd37cfd 100644 --- a/charts/rancher-turtles/templates/deployment.yaml +++ b/charts/rancher-turtles/templates/deployment.yaml @@ -26,7 +26,7 @@ spec: containers: - args: - --leader-elect - - --feature-gates=propagate-labels={{ index .Values "rancherTurtles" "features" "propagate-labels" "enabled"}},rancher-kube-secret-patch={{ index .Values "rancherTurtles" "features" "rancher-kubeconfigs" "label"}},addon-provider-fleet={{ index .Values "rancherTurtles" "features" "addon-provider-fleet" "enabled"}},agent-tls-mode={{ index .Values "rancherTurtles" "features" "agent-tls-mode" "enabled"}} + - --feature-gates=rancher-kube-secret-patch={{ index .Values "rancherTurtles" "features" "rancher-kubeconfigs" "label"}},addon-provider-fleet={{ index .Values "rancherTurtles" "features" "addon-provider-fleet" "enabled"}},agent-tls-mode={{ index .Values "rancherTurtles" "features" "agent-tls-mode" "enabled"}} {{- range .Values.rancherTurtles.managerArguments }} - {{ . }} {{- end }} diff --git a/charts/rancher-turtles/values.yaml b/charts/rancher-turtles/values.yaml index 78ef0523..0d46fc9a 100644 --- a/charts/rancher-turtles/values.yaml +++ b/charts/rancher-turtles/values.yaml @@ -12,8 +12,6 @@ rancherTurtles: kubectlImage: registry.k8s.io/kubernetes/kubectl:v1.30.0 rancher-kubeconfigs: label: false - propagate-labels: - enabled: false etcd-snapshot-restore: enabled: false image: controller diff --git a/feature/feature.go b/feature/feature.go index 3ae67605..0094b3a1 100644 --- a/feature/feature.go +++ b/feature/feature.go @@ -26,10 +26,6 @@ const ( // secrets so that they can be used with CAPI 1.5.x. RancherKubeSecretPatch featuregate.Feature = "rancher-kube-secret-patch" //nolint:gosec - // PropagateLabels is used to enable copying the labels from the CAPI cluster - // to the Rancher cluster. - PropagateLabels featuregate.Feature = "propagate-labels" - // ExternalFleet allows to disable in-tree management of the Fleet clusters // in the imported rancher clusters, by setting "provisioning.cattle.io/externally-managed" // annotation. @@ -46,7 +42,6 @@ func init() { var defaultGates = map[featuregate.Feature]featuregate.FeatureSpec{ RancherKubeSecretPatch: {Default: false, PreRelease: featuregate.Beta}, - PropagateLabels: {Default: false, PreRelease: featuregate.Beta}, ExternalFleet: {Default: true, PreRelease: featuregate.Beta}, AgentTLSMode: {Default: false, PreRelease: featuregate.Beta}, } diff --git a/internal/controllers/import_controller_v3.go b/internal/controllers/import_controller_v3.go index 8f37f2e2..e109a15d 100644 --- a/internal/controllers/import_controller_v3.go +++ b/internal/controllers/import_controller_v3.go @@ -299,7 +299,6 @@ func (r *CAPIImportManagementV3Reconciler) reconcileNormal(ctx context.Context, r.optOutOfClusterOwner(ctx, rancherCluster) r.optOutOfFleetManagement(ctx, rancherCluster) - r.propagateLabels(ctx, capiCluster, rancherCluster) addedFinalizer := controllerutil.AddFinalizer(rancherCluster, managementv3.CapiClusterFinalizer) if addedFinalizer { @@ -572,26 +571,3 @@ func (r *CAPIImportManagementV3Reconciler) optOutOfFleetManagement(ctx context.C log.Info("Added fleet annotation to Rancher cluster") } } - -func (r *CAPIImportManagementV3Reconciler) propagateLabels( - ctx context.Context, - capiCluster *clusterv1.Cluster, - rancherCluster *managementv3.Cluster, -) { - log := log.FromContext(ctx) - - labels := rancherCluster.GetLabels() - if rancherCluster.Labels == nil { - labels = map[string]string{} - } - - if feature.Gates.Enabled(feature.PropagateLabels) { - for labelKey, labelVal := range capiCluster.Labels { - labels[labelKey] = labelVal - } - - rancherCluster.SetLabels(labels) - - log.V(5).Info("Propagated labels to Rancher cluster") - } -} diff --git a/internal/controllers/import_controller_v3_test.go b/internal/controllers/import_controller_v3_test.go index a38b54f0..0cf67397 100644 --- a/internal/controllers/import_controller_v3_test.go +++ b/internal/controllers/import_controller_v3_test.go @@ -183,7 +183,6 @@ var _ = Describe("reconcile CAPI Cluster", func() { Expect(cl.Update(ctx, ns)).To(Succeed()) capiCluster.Labels = map[string]string{ importLabelName: "true", - testLabelName: testLabelVal, } Expect(cl.Create(ctx, capiCluster)).To(Succeed()) capiCluster.Status.ControlPlaneReady = true @@ -204,7 +203,6 @@ var _ = Describe("reconcile CAPI Cluster", func() { g.Expect(cl.List(ctx, rancherClusters, selectors...)).ToNot(HaveOccurred()) g.Expect(rancherClusters.Items).To(HaveLen(1)) g.Expect(rancherClusters.Items[0].Name).To(ContainSubstring("c-")) - g.Expect(rancherClusters.Items[0].Labels).To(HaveKeyWithValue(testLabelName, testLabelVal)) g.Expect(rancherClusters.Items[0].Annotations).To(HaveKey(turtlesannotations.NoCreatorRBACAnnotation)) g.Expect(rancherClusters.Items[0].Finalizers).To(ContainElement(managementv3.CapiClusterFinalizer)) }).Should(Succeed()) @@ -258,7 +256,6 @@ var _ = Describe("reconcile CAPI Cluster", func() { g.Expect(cl.List(ctx, rancherClusters, selectors...)).ToNot(HaveOccurred()) g.Expect(rancherClusters.Items).To(HaveLen(1)) }).Should(Succeed()) - Expect(rancherClusters.Items[0].Annotations).To(HaveKeyWithValue(externalFleetAnnotation, testLabelVal)) }) It("should reconcile a CAPI cluster when rancher cluster exists, and have finalizers set", func() { @@ -268,9 +265,6 @@ var _ = Describe("reconcile CAPI Cluster", func() { })) defer server.Close() - capiCluster.Labels = map[string]string{ - testLabelName: testLabelVal, - } Expect(cl.Create(ctx, capiCluster)).To(Succeed()) capiCluster.Status.ControlPlaneReady = true Expect(cl.Status().Update(ctx, capiCluster)).To(Succeed()) @@ -329,7 +323,6 @@ var _ = Describe("reconcile CAPI Cluster", func() { g.Expect(cl.List(ctx, rancherClusters, selectors...)).ToNot(HaveOccurred()) g.Expect(rancherClusters.Items).To(HaveLen(1)) g.Expect(rancherClusters.Items[0].Name).To(ContainSubstring("c-")) - g.Expect(rancherClusters.Items[0].Labels).To(HaveKeyWithValue(testLabelName, testLabelVal)) g.Expect(rancherClusters.Items[0].Finalizers).To(ContainElement(managementv3.CapiClusterFinalizer)) }, 10*time.Second).Should(Succeed()) }) @@ -473,7 +466,6 @@ var _ = Describe("reconcile CAPI Cluster", func() { rancherCluster := cluster.DeepCopy() g.Expect(cl.Get(ctx, client.ObjectKeyFromObject(&cluster), rancherCluster)).To(Succeed()) - g.Expect(rancherCluster.Annotations).To(HaveKeyWithValue(externalFleetAnnotation, testLabelVal)) }, 5*time.Second).Should(Succeed()) }) @@ -556,7 +548,6 @@ var _ = Describe("reconcile CAPI Cluster", func() { Expect(cl.Update(ctx, ns)).To(Succeed()) capiCluster.Labels = map[string]string{ importLabelName: "true", - testLabelName: testLabelVal, } Expect(cl.Create(ctx, capiCluster)).To(Succeed()) capiCluster.Status.ControlPlaneReady = true @@ -591,7 +582,6 @@ var _ = Describe("reconcile CAPI Cluster", func() { g.Expect(rancherClusters.Items).To(HaveLen(1)) }).Should(Succeed()) Expect(rancherClusters.Items[0].Name).To(ContainSubstring("c-")) - Expect(rancherClusters.Items[0].Labels).To(HaveKeyWithValue(testLabelName, testLabelVal)) }) It("should reconcile a CAPI Cluster when V1 cluster exists and not migrated", func() { @@ -599,7 +589,6 @@ var _ = Describe("reconcile CAPI Cluster", func() { Expect(cl.Update(ctx, ns)).To(Succeed()) capiCluster.Labels = map[string]string{ importLabelName: "true", - testLabelName: testLabelVal, } Expect(cl.Create(ctx, capiCluster)).To(Succeed()) capiCluster.Status.ControlPlaneReady = true diff --git a/internal/controllers/suite_test.go b/internal/controllers/suite_test.go index 936ff6c7..fb1a603c 100644 --- a/internal/controllers/suite_test.go +++ b/internal/controllers/suite_test.go @@ -53,8 +53,7 @@ var ( func init() { utilruntime.Must(feature.MutableGates.SetFromMap(map[string]bool{ - string(feature.PropagateLabels): true, - string(feature.ExternalFleet): true, + string(feature.ExternalFleet): true, })) }