@@ -241,7 +241,10 @@ func (r *KubeadmConfigReconciler) Reconcile(ctx context.Context, req ctrl.Reques
241
241
}
242
242
}
243
243
}()
244
-
244
+ // Ensure the bootstrap secret associated with this KubeadmConfig has the correct ownerReference.
245
+ if err := r .ensureBootstrapSecretOwnersRef (ctx , scope ); err != nil {
246
+ return ctrl.Result {}, err
247
+ }
245
248
switch {
246
249
// Wait for the infrastructure to be ready.
247
250
case ! cluster .Status .InfrastructureReady :
@@ -1022,3 +1025,32 @@ func (r *KubeadmConfigReconciler) storeBootstrapData(ctx context.Context, scope
1022
1025
conditions .MarkTrue (scope .Config , bootstrapv1 .DataSecretAvailableCondition )
1023
1026
return nil
1024
1027
}
1028
+
1029
+ // Ensure the bootstrap secret has the configOwner as a controller OwnerReference.
1030
+ func (r * KubeadmConfigReconciler ) ensureBootstrapSecretOwnersRef (ctx context.Context , scope * Scope ) error {
1031
+ secret := & corev1.Secret {}
1032
+ err := r .Client .Get (ctx , client.ObjectKey {Namespace : scope .Config .Namespace , Name : scope .Config .Name }, secret )
1033
+ if err != nil {
1034
+ // If the secret has not been created yet return early.
1035
+ if apierrors .IsNotFound (err ) {
1036
+ return nil
1037
+ }
1038
+ return errors .Wrapf (err , "failed to add KubeadmConfig %s as ownerReference to bootstrap Secret %s" , scope .ConfigOwner .GetName (), secret .GetName ())
1039
+ }
1040
+ patchHelper , err := patch .NewHelper (secret , r .Client )
1041
+ if err != nil {
1042
+ return errors .Wrapf (err , "failed to add KubeadmConfig %s as ownerReference to bootstrap Secret %s" , scope .ConfigOwner .GetName (), secret .GetName ())
1043
+ }
1044
+ secret .OwnerReferences = util .EnsureOwnerRef (secret .OwnerReferences , metav1.OwnerReference {
1045
+ APIVersion : scope .ConfigOwner .GetAPIVersion (),
1046
+ Kind : scope .ConfigOwner .GetKind (),
1047
+ UID : scope .ConfigOwner .GetUID (),
1048
+ Name : scope .ConfigOwner .GetName (),
1049
+ Controller : pointer .Bool (true ),
1050
+ })
1051
+ err = patchHelper .Patch (ctx , secret )
1052
+ if err != nil {
1053
+ return errors .Wrapf (err , "could not add KubeadmConfig %s as ownerReference to bootstrap Secret %s" , scope .ConfigOwner .GetName (), secret .GetName ())
1054
+ }
1055
+ return nil
1056
+ }
0 commit comments