in controllers/stage/chain/configure_secret_manager.go [62:106]
func (h ConfigureSecretManager) configureEso(ctx context.Context, stage *cdPipeApi.Stage) error {
logger := ctrl.LoggerFrom(ctx)
logger.Info("Configuring external secret integration")
externalSecretIntegrationRole := &rbacApi.Role{}
if err := h.multiClusterClient.Get(ctx, client.ObjectKey{
Name: "external-secret-integration",
Namespace: stage.Namespace,
}, externalSecretIntegrationRole); err != nil {
return fmt.Errorf("failed to get %s role: %w", "external-secret-integration", err)
}
serviceAccount, err := h.createServiceAccount(ctrl.LoggerInto(ctx, logger), stage.Spec.Namespace)
if err != nil {
return err
}
if _, err = h.createRoleBinding(
ctrl.LoggerInto(ctx, logger),
stage.Namespace,
stage.Spec.Namespace,
serviceAccount.Name,
externalSecretIntegrationRole.Name,
); err != nil {
return err
}
secretStore, err := h.createSecretStore(ctrl.LoggerInto(ctx, logger), stage.Namespace, stage.Spec.Namespace, serviceAccount.Name)
if err != nil {
return err
}
if _, err = h.createExternalSecret(
ctrl.LoggerInto(ctx, logger),
stage.Spec.Namespace,
secretStore.GetName(),
); err != nil {
return err
}
logger.Info("External secret integration has been configured successfully")
return nil
}