@@ -11,6 +11,8 @@ import (
11
11
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12
12
"k8s.io/utils/ptr"
13
13
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
14
+ bootstrapv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1"
15
+ controlplanev1 "sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1"
14
16
addonsv1 "sigs.k8s.io/cluster-api/exp/addons/api/v1beta1"
15
17
"sigs.k8s.io/cluster-api/test/framework"
16
18
@@ -25,6 +27,8 @@ const (
25
27
machineKind = "Machine"
26
28
clusterResourceSetKind = "ClusterResourceSet"
27
29
clusterResourceSetBindingKind = "ClusterResourceSetBinding"
30
+ kubeadmControlPlaneKind = "KubeadmControlPlane"
31
+ kubeadmConfigKind = "KubeadmConfig"
28
32
29
33
awsMachineKind = "AWSMachine"
30
34
awsMachineTemplateKind = "AWSMachineTemplate"
74
78
APIVersion : caaphv1 .GroupVersion .String (),
75
79
Controller : ptr .To (true ),
76
80
}
81
+ kubeadmControlPlaneGroupVersion = controlplanev1 .GroupVersion .String ()
82
+ kubeadmControlPlaneController = metav1.OwnerReference {
83
+ Kind : kubeadmControlPlaneKind ,
84
+ APIVersion : kubeadmControlPlaneGroupVersion ,
85
+ Controller : ptr .To (true ),
86
+ }
87
+ kubeadmConfigGroupVersion = bootstrapv1 .GroupVersion .String ()
88
+ kubeadmConfigController = metav1.OwnerReference {
89
+ Kind : kubeadmConfigKind ,
90
+ APIVersion : kubeadmConfigGroupVersion ,
91
+ Controller : ptr .To (true ),
92
+ }
77
93
78
94
// AddonReferenceAssertions maps addontypes to functions which return an error if the passed OwnerReferences
79
95
// aren't as expected.
@@ -167,9 +183,15 @@ var (
167
183
// https://github.com/kubernetes-sigs/cluster-api/tree/main/docs/book/src/reference/owner_references.md.
168
184
KubernetesReferenceAssertions = map [string ]func ([]metav1.OwnerReference ) error {
169
185
secretKind : func (owners []metav1.OwnerReference ) error {
170
- // TODO:deepakm-ntnx Currently pc-creds, pc-creds-for-csi, dockerhub-credentials,
171
- // registry-creds, and encryption config secrets have unexpected owners which needs more investigation.
172
- return nil
186
+ // Secrets for cluster certificates must be owned and controlled by the KubeadmControlPlane.
187
+ // The bootstrap secret should be owned and controlled by a KubeadmControlPlane.
188
+ // Other resources can be owned by the Cluster to ensure correct GC.
189
+ return framework .HasOneOfExactOwners (
190
+ owners ,
191
+ []metav1.OwnerReference {kubeadmControlPlaneController },
192
+ []metav1.OwnerReference {kubeadmConfigController },
193
+ []metav1.OwnerReference {clusterOwner },
194
+ )
173
195
},
174
196
configMapKind : func (owners []metav1.OwnerReference ) error {
175
197
// The only configMaps considered here are those owned by a ClusterResourceSet.
0 commit comments