Skip to content

Commit 90ed1a3

Browse files
szelenka-ciscotony-landreth
authored andcommitted
adding Postgres primary & replica cert to Secret
1 parent 86c89b6 commit 90ed1a3

File tree

4 files changed

+21
-10
lines changed

4 files changed

+21
-10
lines changed

internal/controller/postgrescluster/cluster.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,13 +238,13 @@ func (r *Reconciler) generateClusterReplicaService(
238238
// replica instances.
239239
func (r *Reconciler) reconcileClusterReplicaService(
240240
ctx context.Context, cluster *v1beta1.PostgresCluster,
241-
) error {
241+
) (*corev1.Service, error) {
242242
service, err := r.generateClusterReplicaService(cluster)
243243

244244
if err == nil {
245245
err = errors.WithStack(r.apply(ctx, service))
246246
}
247-
return err
247+
return service, err
248248
}
249249

250250
// reconcileDataSource is responsible for reconciling the data source for a PostgreSQL cluster.

internal/controller/postgrescluster/controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ func (r *Reconciler) Reconcile(
169169
patroniLeaderService *corev1.Service
170170
primaryCertificate *corev1.SecretProjection
171171
primaryService *corev1.Service
172+
replicaService *corev1.Service
172173
rootCA *pki.RootCertificateAuthority
173174
monitoringSecret *corev1.Secret
174175
exporterWebConfig *corev1.ConfigMap
@@ -294,10 +295,10 @@ func (r *Reconciler) Reconcile(
294295
primaryService, err = r.reconcileClusterPrimaryService(ctx, cluster, patroniLeaderService)
295296
}
296297
if err == nil {
297-
err = r.reconcileClusterReplicaService(ctx, cluster)
298+
replicaService, err = r.reconcileClusterReplicaService(ctx, cluster)
298299
}
299300
if err == nil {
300-
primaryCertificate, err = r.reconcileClusterCertificate(ctx, rootCA, cluster, primaryService)
301+
primaryCertificate, err = r.reconcileClusterCertificate(ctx, rootCA, cluster, primaryService, replicaService)
301302
}
302303
if err == nil {
303304
err = r.reconcilePatroniDistributedConfiguration(ctx, cluster)

internal/controller/postgrescluster/pki.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ func (r *Reconciler) reconcileRootCertificate(
118118
func (r *Reconciler) reconcileClusterCertificate(
119119
ctx context.Context, root *pki.RootCertificateAuthority,
120120
cluster *v1beta1.PostgresCluster, primaryService *corev1.Service,
121+
replicaService *corev1.Service,
121122
) (
122123
*corev1.SecretProjection, error,
123124
) {
@@ -133,7 +134,7 @@ func (r *Reconciler) reconcileClusterCertificate(
133134
r.Client.Get(ctx, client.ObjectKeyFromObject(existing), existing)))
134135

135136
leaf := &pki.LeafCertificate{}
136-
dnsNames := naming.ServiceDNSNames(ctx, primaryService)
137+
dnsNames := append(naming.ServiceDNSNames(ctx, primaryService), naming.ServiceDNSNames(ctx, replicaService)...)
137138
dnsFQDN := dnsNames[0]
138139

139140
if err == nil {

internal/controller/postgrescluster/pki_test.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ func TestReconcileCerts(t *testing.T) {
8686
primaryService.Namespace = namespace
8787
primaryService.Name = "the-primary"
8888

89+
replicaService := new(corev1.Service)
90+
replicaService.Namespace = namespace
91+
replicaService.Name = "the-replicas"
92+
8993
t.Run("check root certificate reconciliation", func(t *testing.T) {
9094

9195
initialRoot, err := r.reconcileRootCertificate(ctx, cluster1)
@@ -295,14 +299,14 @@ func TestReconcileCerts(t *testing.T) {
295299
assert.NilError(t, err)
296300

297301
t.Run("check standard secret projection", func(t *testing.T) {
298-
secretCertProj, err := r.reconcileClusterCertificate(ctx, initialRoot, cluster1, primaryService)
302+
secretCertProj, err := r.reconcileClusterCertificate(ctx, initialRoot, cluster1, primaryService, replicaService)
299303
assert.NilError(t, err)
300304

301305
assert.DeepEqual(t, testSecretProjection, secretCertProj)
302306
})
303307

304308
t.Run("check custom secret projection", func(t *testing.T) {
305-
customSecretCertProj, err := r.reconcileClusterCertificate(ctx, initialRoot, cluster2, primaryService)
309+
customSecretCertProj, err := r.reconcileClusterCertificate(ctx, initialRoot, cluster2, primaryService, replicaService)
306310
assert.NilError(t, err)
307311

308312
assert.DeepEqual(t, customSecretProjection, customSecretCertProj)
@@ -319,7 +323,7 @@ func TestReconcileCerts(t *testing.T) {
319323
testSecretProjection := clusterCertSecretProjection(testSecret)
320324

321325
// reconcile the secret project using the normal process
322-
customSecretCertProj, err := r.reconcileClusterCertificate(ctx, initialRoot, cluster2, primaryService)
326+
customSecretCertProj, err := r.reconcileClusterCertificate(ctx, initialRoot, cluster2, primaryService, replicaService)
323327
assert.NilError(t, err)
324328

325329
// results should be the same
@@ -349,7 +353,7 @@ func TestReconcileCerts(t *testing.T) {
349353
assert.NilError(t, err)
350354

351355
// pass in the new root, which should result in a new cluster cert
352-
_, err = r.reconcileClusterCertificate(ctx, returnedRoot, cluster1, primaryService)
356+
_, err = r.reconcileClusterCertificate(ctx, returnedRoot, cluster1, primaryService, replicaService)
353357
assert.NilError(t, err)
354358

355359
// get the new cluster cert secret
@@ -371,11 +375,16 @@ func TestReconcileCerts(t *testing.T) {
371375
"got %q", leaf.Certificate.CommonName())
372376

373377
if dnsNames := leaf.Certificate.DNSNames(); assert.Check(t, len(dnsNames) > 1) {
374-
assert.DeepEqual(t, dnsNames[1:], []string{
378+
assert.DeepEqual(t, dnsNames[1:4], []string{
375379
"the-primary." + namespace + ".svc",
376380
"the-primary." + namespace,
377381
"the-primary",
378382
})
383+
assert.DeepEqual(t, dnsNames[5:8], []string{
384+
"the-replicas." + namespace + ".svc",
385+
"the-replicas." + namespace,
386+
"the-replicas",
387+
})
379388
}
380389
})
381390
})

0 commit comments

Comments
 (0)