Skip to content

Commit df5630f

Browse files
authored
[Bugfix] Reconcile after TLS secret recreation (#768)
1 parent 89004dd commit df5630f

File tree

4 files changed

+12
-11
lines changed

4 files changed

+12
-11
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ require (
3535
github.com/ghodss/yaml v1.0.0
3636
github.com/gin-gonic/gin v1.7.2
3737
github.com/github-release/github-release v0.10.0 // indirect
38-
github.com/golang-jwt/jwt v3.2.1+incompatible
3938
github.com/go-playground/validator/v10 v10.8.0 // indirect
39+
github.com/golang-jwt/jwt v3.2.1+incompatible
4040
github.com/golang/protobuf v1.5.2 // indirect
4141
github.com/google/addlicense v0.0.0-20210428195630-6d92264d7170 // indirect
4242
github.com/hashicorp/golang-lru v0.5.3 // indirect

pkg/deployment/resources/certificates_tls.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,14 @@ func createTLSCACertificate(ctx context.Context, log zerolog.Logger, secrets k8s
7878
// createTLSServerCertificate creates a TLS certificate for a specific server and stores
7979
// it in a secret with the given name.
8080
func createTLSServerCertificate(ctx context.Context, log zerolog.Logger, secrets v1.SecretInterface, serverNames []string, spec api.TLSSpec,
81-
secretName string, ownerRef *metav1.OwnerReference) error {
81+
secretName string, ownerRef *metav1.OwnerReference) (bool, error) {
8282

8383
log = log.With().Str("secret", secretName).Logger()
8484
// Load alt names
8585
dnsNames, ipAddresses, emailAddress, err := spec.GetParsedAltNames()
8686
if err != nil {
8787
log.Debug().Err(err).Msg("Failed to get alternate names")
88-
return errors.WithStack(err)
88+
return false, errors.WithStack(err)
8989
}
9090

9191
// Load CA certificate
@@ -94,12 +94,12 @@ func createTLSServerCertificate(ctx context.Context, log zerolog.Logger, secrets
9494
caCert, caKey, _, err := k8sutil.GetCASecret(ctxChild, secrets, spec.GetCASecretName(), nil)
9595
if err != nil {
9696
log.Debug().Err(err).Msg("Failed to load CA certificate")
97-
return errors.WithStack(err)
97+
return false, errors.WithStack(err)
9898
}
9999
ca, err := certificates.LoadCAFromPEM(caCert, caKey)
100100
if err != nil {
101101
log.Debug().Err(err).Msg("Failed to decode CA certificate")
102-
return errors.WithStack(err)
102+
return false, errors.WithStack(err)
103103
}
104104

105105
options := certificates.CreateCertificateOptions{
@@ -114,7 +114,7 @@ func createTLSServerCertificate(ctx context.Context, log zerolog.Logger, secrets
114114
cert, priv, err := certificates.CreateCertificate(options, &ca)
115115
if err != nil {
116116
log.Debug().Err(err).Msg("Failed to create server certificate")
117-
return errors.WithStack(err)
117+
return false, errors.WithStack(err)
118118
}
119119
keyfile := strings.TrimSpace(cert) + "\n" +
120120
strings.TrimSpace(priv)
@@ -128,8 +128,8 @@ func createTLSServerCertificate(ctx context.Context, log zerolog.Logger, secrets
128128
} else {
129129
log.Debug().Err(err).Msg("Failed to create server Secret")
130130
}
131-
return errors.WithStack(err)
131+
return false, errors.WithStack(err)
132132
}
133133
log.Debug().Msg("Created server Secret")
134-
return nil
134+
return true, nil
135135
}

pkg/deployment/resources/pod_creator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ func (r *Resources) createPodForMember(ctx context.Context, spec api.DeploymentS
570570
}
571571
}
572572
owner := apiObject.AsOwner()
573-
err := createTLSServerCertificate(ctx, log, secrets, serverNames, spec.Sync.TLS, tlsKeyfileSecretName, &owner)
573+
_, err := createTLSServerCertificate(ctx, log, secrets, serverNames, spec.Sync.TLS, tlsKeyfileSecretName, &owner)
574574
if err != nil && !k8sutil.IsAlreadyExists(err) {
575575
return errors.WithStack(errors.Wrapf(err, "Failed to create TLS keyfile secret"))
576576
}

pkg/deployment/resources/secrets.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,10 @@ func (r *Resources) EnsureSecrets(ctx context.Context, log zerolog.Logger, cache
166166
serverNames = append(serverNames, ip)
167167
}
168168
owner := member.AsOwner()
169-
errCert := createTLSServerCertificate(ctx, log, secrets, serverNames, spec.TLS, tlsKeyfileSecretName, &owner)
170-
if err := reconcileRequired.WithError(errCert); err != nil && !k8sutil.IsAlreadyExists(err) {
169+
if created, err := createTLSServerCertificate(ctx, log, secrets, serverNames, spec.TLS, tlsKeyfileSecretName, &owner); err != nil && !k8sutil.IsAlreadyExists(err) {
171170
return errors.WithStack(errors.Wrapf(err, "Failed to create TLS keyfile secret"))
171+
} else if created {
172+
reconcileRequired.Required()
172173
}
173174
}
174175
}

0 commit comments

Comments
 (0)