Skip to content

Commit 6b5aaf0

Browse files
committed
ESO-155: Updates to use different TLS Secret name when cert-manager enabled
Signed-off-by: Bharath B <[email protected]>
1 parent f088d0c commit 6b5aaf0

File tree

4 files changed

+49
-7
lines changed

4 files changed

+49
-7
lines changed

pkg/controller/common/utils.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -210,16 +210,17 @@ func deploymentSpecModified(desired, fetched *appsv1.Deployment) bool {
210210
return true
211211
}
212212
for _, desiredVolume := range desired.Spec.Template.Spec.Volumes {
213-
if desiredVolume.Secret != nil && desiredVolume.Secret.Items != nil {
213+
if desiredVolume.Secret != nil {
214214
for _, fetchedVolume := range fetched.Spec.Template.Spec.Volumes {
215-
if !reflect.DeepEqual(desiredVolume.Secret.Items, fetchedVolume.Secret.Items) {
216-
return true
217-
}
218-
if desiredVolume.Secret.SecretName != fetchedVolume.Secret.SecretName {
219-
return true
215+
if desiredVolume.Name == fetchedVolume.Name {
216+
if !reflect.DeepEqual(desiredVolume.Secret.Items, fetchedVolume.Secret.Items) {
217+
return true
218+
}
219+
if !reflect.DeepEqual(desiredVolume.Secret.SecretName, fetchedVolume.Secret.SecretName) {
220+
return true
221+
}
220222
}
221223
}
222-
223224
}
224225
}
225226

pkg/controller/external_secrets/certificate.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ func (r *Reconciler) createOrApplyCertificate(esc *operatorv1alpha1.ExternalSecr
8282
func (r *Reconciler) getCertificateObject(esc *operatorv1alpha1.ExternalSecretsConfig, resourceLabels map[string]string, fileName string) (*certmanagerv1.Certificate, error) {
8383
certificate := common.DecodeCertificateObjBytes(assets.MustAsset(fileName))
8484

85+
// update the secret name in the Certificate resource of the webhook component.
86+
if fileName == webhookCertificateAssetName {
87+
certificate.Spec.SecretName = certmanagerTLSSecretWebhook
88+
}
89+
8590
updateNamespace(certificate, esc)
8691
common.UpdateResourceLabels(certificate, resourceLabels)
8792

pkg/controller/external_secrets/constants.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ const (
4848
// externalsecretsDefaultNamespace is the namespace where the `external-secrets` operand required resources
4949
// will be created, when ExternalSecretsConfig.Spec.Namespace is not set.
5050
externalsecretsDefaultNamespace = "external-secrets"
51+
52+
// certmanagerTLSSecretWebhook is the TLS secret created by cert-manager for the webhook component. A different
53+
// name is used to avoiding clash with the secret created by the inbuilt cert-controller component.
54+
certmanagerTLSSecretWebhook = "external-secrets-webhook-cm"
5155
)
5256

5357
var (

pkg/controller/external_secrets/deployments.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ func (r *Reconciler) getDeploymentObject(assetName string, esc *operatorv1alpha1
123123
checkInterval = esc.Spec.ApplicationConfig.WebhookConfig.CertificateCheckInterval.Duration.String()
124124
}
125125
updateWebhookContainerSpec(deployment, image, logLevel, checkInterval)
126+
updateWebhookVolumeConfig(deployment, esc)
126127
case certControllerDeploymentAssetName:
127128
updateCertControllerContainerSpec(deployment, image, logLevel)
128129
case bitwardenDeploymentAssetName:
@@ -400,3 +401,34 @@ func updateBitwardenServerContainerSpec(deployment *appsv1.Deployment, image str
400401
}
401402
}
402403
}
404+
405+
func updateWebhookVolumeConfig(deployment *appsv1.Deployment, esc *operatorv1alpha1.ExternalSecretsConfig) {
406+
if isCertManagerConfigEnabled(esc) {
407+
updateSecretVolumeConfig(deployment, "certs", certmanagerTLSSecretWebhook)
408+
}
409+
}
410+
411+
func updateSecretVolumeConfig(deployment *appsv1.Deployment, volumeName, secretName string) {
412+
volumeExists := false
413+
for i := range deployment.Spec.Template.Spec.Volumes {
414+
if deployment.Spec.Template.Spec.Volumes[i].Name == volumeName {
415+
volumeExists = true
416+
}
417+
if deployment.Spec.Template.Spec.Volumes[i].Secret == nil {
418+
deployment.Spec.Template.Spec.Volumes[i].Secret = &corev1.SecretVolumeSource{}
419+
}
420+
deployment.Spec.Template.Spec.Volumes[i].Secret.SecretName = secretName
421+
break
422+
}
423+
424+
if !volumeExists {
425+
deployment.Spec.Template.Spec.Volumes = append(deployment.Spec.Template.Spec.Volumes, corev1.Volume{
426+
Name: volumeName,
427+
VolumeSource: corev1.VolumeSource{
428+
Secret: &corev1.SecretVolumeSource{
429+
SecretName: secretName,
430+
},
431+
},
432+
})
433+
}
434+
}

0 commit comments

Comments
 (0)