Skip to content

Commit e9a588f

Browse files
authored
Merge pull request #8328 from killianmuldoon/remove-v1alpha2-adoption
🌱 Remove v1alpha2 adoption logic from KCP
2 parents e755063 + 22ad6f3 commit e9a588f

File tree

2 files changed

+7
-90
lines changed

2 files changed

+7
-90
lines changed

controlplane/kubeadm/internal/controllers/helpers.go

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func (r *KubeadmControlPlaneReconciler) reconcileKubeconfig(ctx context.Context,
7676
return ctrl.Result{}, errors.Wrap(err, "failed to retrieve kubeconfig Secret")
7777
}
7878

79-
if err := r.adoptKubeconfigSecret(ctx, cluster, configSecret, kcp); err != nil {
79+
if err := r.adoptKubeconfigSecret(ctx, configSecret, kcp); err != nil {
8080
return ctrl.Result{}, err
8181
}
8282

@@ -101,7 +101,7 @@ func (r *KubeadmControlPlaneReconciler) reconcileKubeconfig(ctx context.Context,
101101
}
102102

103103
// Ensure the KubeadmConfigSecret has an owner reference to the control plane if it is not a user-provided secret.
104-
func (r *KubeadmControlPlaneReconciler) adoptKubeconfigSecret(ctx context.Context, cluster *clusterv1.Cluster, configSecret *corev1.Secret, kcp *controlplanev1.KubeadmControlPlane) (reterr error) {
104+
func (r *KubeadmControlPlaneReconciler) adoptKubeconfigSecret(ctx context.Context, configSecret *corev1.Secret, kcp *controlplanev1.KubeadmControlPlane) (reterr error) {
105105
patchHelper, err := patch.NewHelper(configSecret, r.Client)
106106
if err != nil {
107107
return errors.Wrap(err, "failed to create patch helper for the kubeconfig secret")
@@ -127,17 +127,6 @@ func (r *KubeadmControlPlaneReconciler) adoptKubeconfigSecret(ctx context.Contex
127127
configSecret.SetOwnerReferences(util.RemoveOwnerRef(configSecret.GetOwnerReferences(), *controller))
128128
}
129129
configSecret.SetOwnerReferences(util.EnsureOwnerRef(configSecret.GetOwnerReferences(), *metav1.NewControllerRef(kcp, controlplanev1.GroupVersion.WithKind(kubeadmControlPlaneKind))))
130-
131-
// If the kubeconfig secret was created by v1alpha2 controllers, and thus it has the Cluster as the owner instead of KCP.
132-
// In this case remove the ownerReference to the Cluster.
133-
if util.IsOwnedByObject(configSecret, cluster) {
134-
configSecret.SetOwnerReferences(util.RemoveOwnerRef(configSecret.GetOwnerReferences(), metav1.OwnerReference{
135-
APIVersion: clusterv1.GroupVersion.String(),
136-
Kind: "Cluster",
137-
Name: cluster.Name,
138-
UID: cluster.UID,
139-
}))
140-
}
141130
}
142131
return nil
143132
}

controlplane/kubeadm/internal/controllers/helpers_test.go

Lines changed: 5 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434
bootstrapv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1"
3535
"sigs.k8s.io/cluster-api/controllers/external"
3636
controlplanev1 "sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1"
37-
"sigs.k8s.io/cluster-api/internal/test/builder"
3837
"sigs.k8s.io/cluster-api/util/conditions"
3938
"sigs.k8s.io/cluster-api/util/kubeconfig"
4039
"sigs.k8s.io/cluster-api/util/secret"
@@ -139,75 +138,6 @@ func TestReconcileKubeconfigMissingCACertificate(t *testing.T) {
139138
g.Expect(r.Client.Get(ctx, secretName, kubeconfigSecret)).To(MatchError(ContainSubstring("not found")))
140139
}
141140

142-
func TestReconcileKubeconfigSecretAdoptsV1alpha2Secrets(t *testing.T) {
143-
g := NewWithT(t)
144-
145-
cluster := &clusterv1.Cluster{
146-
TypeMeta: metav1.TypeMeta{
147-
Kind: "Cluster",
148-
APIVersion: clusterv1.GroupVersion.String(),
149-
},
150-
ObjectMeta: metav1.ObjectMeta{
151-
Name: "foo",
152-
Namespace: metav1.NamespaceDefault,
153-
},
154-
Spec: clusterv1.ClusterSpec{
155-
ControlPlaneEndpoint: clusterv1.APIEndpoint{Host: "test.local", Port: 8443},
156-
},
157-
}
158-
159-
kcp := &controlplanev1.KubeadmControlPlane{
160-
TypeMeta: metav1.TypeMeta{
161-
Kind: "KubeadmControlPlane",
162-
APIVersion: controlplanev1.GroupVersion.String(),
163-
},
164-
ObjectMeta: metav1.ObjectMeta{
165-
Name: "foo",
166-
Namespace: metav1.NamespaceDefault,
167-
},
168-
Spec: controlplanev1.KubeadmControlPlaneSpec{
169-
Version: "v1.16.6",
170-
},
171-
}
172-
173-
existingKubeconfigSecret := kubeconfig.GenerateSecretWithOwner(
174-
client.ObjectKey{Name: "foo", Namespace: metav1.NamespaceDefault},
175-
[]byte{},
176-
metav1.OwnerReference{
177-
APIVersion: clusterv1.GroupVersion.String(),
178-
Kind: "Cluster",
179-
Name: cluster.Name,
180-
UID: cluster.UID,
181-
}, // the Cluster ownership defines v1alpha2 controlled secrets
182-
)
183-
184-
fakeClient := newFakeClient(kcp.DeepCopy(), existingKubeconfigSecret.DeepCopy())
185-
r := &KubeadmControlPlaneReconciler{
186-
Client: fakeClient,
187-
recorder: record.NewFakeRecorder(32),
188-
}
189-
190-
result, err := r.reconcileKubeconfig(ctx, cluster, kcp)
191-
g.Expect(err).ToNot(HaveOccurred())
192-
g.Expect(result).To(Equal(ctrl.Result{}))
193-
194-
kubeconfigSecret := &corev1.Secret{}
195-
secretName := client.ObjectKey{
196-
Namespace: metav1.NamespaceDefault,
197-
Name: secret.Name(cluster.Name, secret.Kubeconfig),
198-
}
199-
g.Expect(r.Client.Get(ctx, secretName, kubeconfigSecret)).To(Succeed())
200-
g.Expect(kubeconfigSecret.Labels).To(Equal(existingKubeconfigSecret.Labels))
201-
g.Expect(kubeconfigSecret.Data).To(Equal(existingKubeconfigSecret.Data))
202-
g.Expect(kubeconfigSecret.OwnerReferences).ToNot(ContainElement(metav1.OwnerReference{
203-
APIVersion: clusterv1.GroupVersion.String(),
204-
Kind: "Cluster",
205-
Name: cluster.Name,
206-
UID: cluster.UID,
207-
}))
208-
g.Expect(kubeconfigSecret.OwnerReferences).To(ContainElement(*metav1.NewControllerRef(kcp, controlplanev1.GroupVersion.WithKind("KubeadmControlPlane"))))
209-
}
210-
211141
func TestReconcileKubeconfigSecretDoesNotAdoptsUserSecrets(t *testing.T) {
212142
g := NewWithT(t)
213143

@@ -755,12 +685,10 @@ func TestKubeadmControlPlaneReconciler_adoptKubeconfigSecret(t *testing.T) {
755685
Controller: pointer.Bool(true),
756686
BlockOwnerDeletion: pointer.Bool(true),
757687
}
758-
clusterName := "test1"
759-
cluster := builder.Cluster(metav1.NamespaceDefault, clusterName).Build()
760688

761689
// A KubeadmConfig secret created by CAPI controllers with no owner references.
762690
capiKubeadmConfigSecretNoOwner := kubeconfig.GenerateSecretWithOwner(
763-
client.ObjectKey{Name: clusterName, Namespace: metav1.NamespaceDefault},
691+
client.ObjectKey{Name: "test1", Namespace: metav1.NamespaceDefault},
764692
[]byte{},
765693
metav1.OwnerReference{})
766694
capiKubeadmConfigSecretNoOwner.OwnerReferences = []metav1.OwnerReference{}
@@ -771,7 +699,7 @@ func TestKubeadmControlPlaneReconciler_adoptKubeconfigSecret(t *testing.T) {
771699

772700
// A user provided KubeadmConfig secret with no owner reference.
773701
userProvidedKubeadmConfigSecretNoOwner := kubeconfig.GenerateSecretWithOwner(
774-
client.ObjectKey{Name: clusterName, Namespace: metav1.NamespaceDefault},
702+
client.ObjectKey{Name: "test1", Namespace: metav1.NamespaceDefault},
775703
[]byte{},
776704
metav1.OwnerReference{})
777705
userProvidedKubeadmConfigSecretNoOwner.Type = corev1.SecretTypeOpaque
@@ -787,7 +715,7 @@ func TestKubeadmControlPlaneReconciler_adoptKubeconfigSecret(t *testing.T) {
787715
},
788716
ObjectMeta: metav1.ObjectMeta{
789717
Name: "testControlPlane",
790-
Namespace: cluster.Namespace,
718+
Namespace: metav1.NamespaceDefault,
791719
},
792720
}
793721
tests := []struct {
@@ -832,12 +760,12 @@ func TestKubeadmControlPlaneReconciler_adoptKubeconfigSecret(t *testing.T) {
832760
}
833761
for _, tt := range tests {
834762
t.Run(tt.name, func(t *testing.T) {
835-
fakeClient := newFakeClient(cluster, kcp, tt.configSecret)
763+
fakeClient := newFakeClient(kcp, tt.configSecret)
836764
r := &KubeadmControlPlaneReconciler{
837765
APIReader: fakeClient,
838766
Client: fakeClient,
839767
}
840-
g.Expect(r.adoptKubeconfigSecret(ctx, cluster, tt.configSecret, kcp)).To(Succeed())
768+
g.Expect(r.adoptKubeconfigSecret(ctx, tt.configSecret, kcp)).To(Succeed())
841769
actualSecret := &corev1.Secret{}
842770
g.Expect(fakeClient.Get(ctx, client.ObjectKey{Namespace: tt.configSecret.Namespace, Name: tt.configSecret.Namespace}, actualSecret))
843771
g.Expect(tt.configSecret.GetOwnerReferences()).To(ConsistOf(tt.expectedOwnerRef))

0 commit comments

Comments
 (0)