@@ -226,7 +226,7 @@ func (r *HetznerClusterReconciler) reconcileNormal(ctx context.Context, clusterS
226226 // target cluster is ready
227227 conditions .MarkTrue (hetznerCluster , infrav1 .TargetClusterReadyCondition )
228228
229- result , err = reconcileTargetSecret (ctx , clusterScope )
229+ result , err = reconcileWorkloadClusterSecret (ctx , clusterScope )
230230 if err != nil {
231231 reterr := fmt .Errorf ("failed to reconcile target secret: %w" , err )
232232 conditions .MarkFalse (
@@ -472,21 +472,24 @@ func hcloudTokenErrorResult(
472472 return res , nil
473473}
474474
475- func reconcileTargetSecret (ctx context.Context , clusterScope * scope.ClusterScope ) (res reconcile.Result , reterr error ) {
475+ // reconcileWorkloadClusterSecret ensures that the workload-cluster has the secret needed by the ccm. The
476+ // name of the secret is read from HetznerCluster.Spec.HetznerSecret.Name. Creating the secret gets
477+ // skipped, if HetznerCluster.Spec.SkipCreatingHetznerSecretInWorkloadCluster is set.
478+ func reconcileWorkloadClusterSecret (ctx context.Context , clusterScope * scope.ClusterScope ) (res reconcile.Result , reterr error ) {
476479 if clusterScope .HetznerCluster .Spec .SkipCreatingHetznerSecretInWorkloadCluster {
477480 // If the secret should not be created in the workload cluster, we just return.
478481 // This means the ccm is running outside of the workload cluster (or getting the secret differently).
479482 return reconcile.Result {}, nil
480483 }
481484
482485 // Checking if control plane is ready
483- clientConfig , err := clusterScope .ClientConfig (ctx )
486+ wlClientConfig , err := clusterScope .ClientConfig (ctx )
484487 if err != nil {
485488 clusterScope .V (1 ).Info ("failed to get clientconfig with api endpoint" )
486489 return reconcile.Result {}, err
487490 }
488491
489- if err := scope .IsControlPlaneReady (ctx , clientConfig ); err != nil {
492+ if err := scope .IsControlPlaneReady (ctx , wlClientConfig ); err != nil {
490493 conditions .MarkFalse (
491494 clusterScope .HetznerCluster ,
492495 infrav1 .TargetClusterSecretReadyCondition ,
@@ -500,65 +503,66 @@ func reconcileTargetSecret(ctx context.Context, clusterScope *scope.ClusterScope
500503 // Control plane ready, so we can check if the secret exists already
501504
502505 // getting client
503- restConfig , err := clientConfig .ClientConfig ()
506+ restConfig , err := wlClientConfig .ClientConfig ()
504507 if err != nil {
505508 return reconcile.Result {}, fmt .Errorf ("failed to get rest config: %w" , err )
506509 }
507510
508- client , err := client .New (restConfig , client.Options {})
511+ // workload cluster client
512+ wlClient , err := client .New (restConfig , client.Options {})
509513 if err != nil {
510514 return reconcile.Result {}, fmt .Errorf ("failed to get client: %w" , err )
511515 }
512516
513- secret := & corev1.Secret {
517+ wlSecret := & corev1.Secret {
514518 ObjectMeta : metav1.ObjectMeta {
515519 Name : clusterScope .HetznerCluster .Spec .HetznerSecret .Name ,
516520 Namespace : metav1 .NamespaceSystem ,
517521 },
518522 }
519523
520524 // Make sure secret exists and has the expected values
521- _ , err = controllerutil .CreateOrUpdate (ctx , client , secret , func () error {
522- tokenSecretName := types.NamespacedName {
525+ _ , err = controllerutil .CreateOrUpdate (ctx , wlClient , wlSecret , func () error {
526+ mgtSecretName := types.NamespacedName {
523527 Namespace : clusterScope .HetznerCluster .Namespace ,
524528 Name : clusterScope .HetznerCluster .Spec .HetznerSecret .Name ,
525529 }
526530 secretManager := secretutil .NewSecretManager (clusterScope .Logger , clusterScope .Client , clusterScope .APIReader )
527- tokenSecret , err := secretManager .AcquireSecret (ctx , tokenSecretName , clusterScope .HetznerCluster , false , clusterScope .HetznerCluster .DeletionTimestamp .IsZero ())
531+ mgtSecret , err := secretManager .AcquireSecret (ctx , mgtSecretName , clusterScope .HetznerCluster , false , clusterScope .HetznerCluster .DeletionTimestamp .IsZero ())
528532 if err != nil {
529533 return fmt .Errorf ("failed to acquire secret: %w" , err )
530534 }
531535
532- hetznerToken , keyExists := tokenSecret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HCloudToken ]
536+ hetznerToken , keyExists := mgtSecret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HCloudToken ]
533537 if ! keyExists {
534538 return fmt .Errorf ("error key %s does not exist in secret/%s: %w" ,
535539 clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HCloudToken ,
536- tokenSecretName ,
540+ mgtSecretName ,
537541 err ,
538542 )
539543 }
540544
541- if secret .Data == nil {
542- secret .Data = make (map [string ][]byte )
545+ if wlSecret .Data == nil {
546+ wlSecret .Data = make (map [string ][]byte )
543547 }
544548
545- secret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HCloudToken ] = hetznerToken
549+ wlSecret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HCloudToken ] = hetznerToken
546550
547551 // Save robot credentials if available
548552 if clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HetznerRobotUser != "" {
549- robotUserName := tokenSecret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HetznerRobotUser ]
550- secret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HetznerRobotUser ] = robotUserName
551- robotPassword := tokenSecret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HetznerRobotPassword ]
552- secret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HetznerRobotPassword ] = robotPassword
553+ robotUserName := mgtSecret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HetznerRobotUser ]
554+ wlSecret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HetznerRobotUser ] = robotUserName
555+ robotPassword := mgtSecret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HetznerRobotPassword ]
556+ wlSecret .Data [clusterScope .HetznerCluster .Spec .HetznerSecret .Key .HetznerRobotPassword ] = robotPassword
553557 }
554558
555559 // Save network ID in secret
556560 if clusterScope .HetznerCluster .Spec .HCloudNetwork .Enabled {
557- secret .Data ["network" ] = []byte (strconv .FormatInt (clusterScope .HetznerCluster .Status .Network .ID , 10 ))
561+ wlSecret .Data ["network" ] = []byte (strconv .FormatInt (clusterScope .HetznerCluster .Status .Network .ID , 10 ))
558562 }
559563 // Save api server information
560- secret .Data ["apiserver-host" ] = []byte (clusterScope .HetznerCluster .Spec .ControlPlaneEndpoint .Host )
561- secret .Data ["apiserver-port" ] = []byte (strconv .Itoa (int (clusterScope .HetznerCluster .Spec .ControlPlaneEndpoint .Port )))
564+ wlSecret .Data ["apiserver-host" ] = []byte (clusterScope .HetznerCluster .Spec .ControlPlaneEndpoint .Host )
565+ wlSecret .Data ["apiserver-port" ] = []byte (strconv .Itoa (int (clusterScope .HetznerCluster .Spec .ControlPlaneEndpoint .Port )))
562566
563567 return nil
564568 })
0 commit comments