in internal/controller/appconfigurationprovider_controller.go [423:480]
func (reconciler *AzureAppConfigurationProviderReconciler) createOrUpdateSecrets(
ctx context.Context,
provider *acpv1.AzureAppConfigurationProvider,
processor *AppConfigurationProviderProcessor,
existingSecrets map[string]corev1.Secret) (reconcile.Result, error) {
if len(processor.Settings.SecretSettings) == 0 {
klog.V(3).Info("No secret settings are fetched from Azure AppConfiguration")
}
namespacedName := types.NamespacedName{
Name: provider.Name,
Namespace: provider.Namespace,
}
for secretName, secret := range processor.Settings.SecretSettings {
if !shouldCreateOrUpdateSecret(processor, secretName, existingSecrets) {
if _, ok := reconciler.ProvidersReconcileState[namespacedName].ExistingK8sSecrets[secretName]; ok {
processor.Settings.K8sSecrets[secretName].SecretResourceVersion = reconciler.ProvidersReconcileState[namespacedName].ExistingK8sSecrets[secretName].SecretResourceVersion
}
klog.V(5).Infof("Skip updating the secret %q in %q namespace since data is not changed", secretName, provider.Namespace)
continue
}
secretObj := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: secretName,
Namespace: provider.Namespace,
},
Type: secret.Type,
}
// Important: set the ownership of secret
if err := controllerutil.SetControllerReference(provider, secretObj, reconciler.Scheme); err != nil {
reconciler.logAndSetFailStatus(provider, err)
return reconcile.Result{Requeue: true, RequeueAfter: RequeueReconcileAfter}, err
}
annotations := make(map[string]string)
maps.Copy(annotations, provider.Annotations)
annotations[LastReconcileTimeAnnotation] = metav1.Now().UTC().String()
operationResult, err := ctrl.CreateOrUpdate(ctx, reconciler.Client, secretObj, func() error {
secretObj.Data = secret.Data
secretObj.Labels = provider.Labels
secretObj.Annotations = annotations
return nil
})
if err != nil {
reconciler.logAndSetFailStatus(provider, err)
return reconcile.Result{Requeue: true, RequeueAfter: RequeueReconcileAfter}, err
}
processor.Settings.K8sSecrets[secretName].SecretResourceVersion = secretObj.ResourceVersion
klog.V(5).Infof("Secret %q in %q namespace is %s", secretObj.Name, secretObj.Namespace, string(operationResult))
}
return reconcile.Result{}, nil
}