Reconcile Cluster Secret
reconcileClusterSecretKey
reconciles an secret due to controller resync
or an event on the secret
func (c *controller) reconcileClusterSecretKey(key string) error
// which looks up secret and delegates to
func (c *controller) reconcileClusterSecret(ctx context.Context, secret *corev1.Secret) error
Usage
Worker go-routines are created for this as below
worker.Run(c.secretQueue,
"ClusterSecret",
worker.DefaultMaxRetries,
true,
c.reconcileClusterSecretKey,
stopCh,
&waitGroup)
Flow
controller.reconcileClusterSecretkey
basically adds the MCFinalizerName (value: machine.sapcloud.io/machine-controller
) to the list of finalizers for all secrets that are referenced by machine classes within the same namespace.
%%{init: {'themeVariables': { 'fontSize': '10px'}, "flowchart": {"useMaxWidth": false }}}%% flowchart TD a[ns, name = cache.SplitMetaNamespaceKey] b["sec=secretLister.Secrets(ns).Get(name)"] c["machineClasses=findMachineClassForSecret(name) // Gets the slice of MachineClasses referring to the passed secret //iterates through machine classes and // checks whether mc.SecretRef.Name or mcCredentialSecretRef.Name // matches secret name "] d{machineClasses empty?} e["controller.addSecretFinalizers(sec)"] z(("return err")) a-->b b-->c c-->d d--Yes-->DeleteFinalizers["controller.deleteSecretFinalizers"]-->z e--success-->z d--No-->e
controller.addSecretFinalizers
func (c *controller) addSecretFinalizers(ctx context.Context, secret *corev1.Secret) error {
Basicaly adds machine.sapcloud.io/machine-controller
to the secret and uses controlCoreClient
to update the secret.