Skip to content

Commit 445f022

Browse files
committed
fix
1 parent 44b6d56 commit 445f022

6 files changed

Lines changed: 46 additions & 12 deletions

File tree

e2e-tests/tests/cert-management-policy/03-delete-cluster-and-secrets.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ commands:
1616
kubectl -n "$NAMESPACE" wait --for=delete "perconapgcluster/$cluster" --timeout=120s
1717
kubectl -n "$NAMESPACE" wait --for=delete "postgrescluster/$cluster" --timeout=120s
1818
19+
kubectl -n "$NAMESPACE" delete pvc \
20+
-l postgres-operator.crunchydata.com/cluster="$cluster" \
21+
--ignore-not-found
22+
1923
kubectl -n "$NAMESPACE" delete secret \
2024
-l postgres-operator.crunchydata.com/cluster="$cluster" \
2125
--ignore-not-found

e2e-tests/tests/cert-management-policy/05-assert.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,28 @@ metadata:
99
postgres-operator.crunchydata.com/cluster: cert-management-policy
1010
postgres-operator.crunchydata.com/data: postgres
1111
postgres-operator.crunchydata.com/instance-set: instance1
12+
---
13+
apiVersion: pgv2.percona.com/v2
14+
kind: PerconaPGCluster
15+
metadata:
16+
name: cert-management-policy
17+
status:
18+
conditions:
19+
- reason: PGBackRestRepoHostReady
20+
status: "False"
21+
type: ReadyForBackup
22+
- reason: TLSSecretsMissing
23+
status: "False"
24+
type: TLSSecretsReady
25+
- reason: Paused
26+
status: "False"
27+
type: Progressing
28+
- reason: RepoHostNotReady
29+
status: "False"
30+
type: PGBackRestRepoHostReady
31+
- reason: StanzaNotCreated
32+
status: "False"
33+
type: PGBackRestReplicaRepoReady
34+
- reason: RepoBackupNotComplete
35+
status: "False"
36+
type: PGBackRestReplicaCreate

e2e-tests/tests/cert-management-policy/05-restore-secrets.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,7 @@ commands:
77
88
source ../../functions
99
10-
kubectl -n "$NAMESPACE" apply -f "$TEMP_DIR/tls-secrets.yaml"
10+
yq eval \
11+
'del(.items[] | select(.metadata.name | test("-certs$")))' \
12+
"$TEMP_DIR/tls-secrets.yaml" \
13+
| kubectl -n "$NAMESPACE" apply -f -

e2e-tests/tests/cert-management-policy/06-restore-instance-secret.yaml

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,11 @@ commands:
1313
-l postgres-operator.crunchydata.com/cluster="$cluster",postgres-operator.crunchydata.com/data=postgres \
1414
-o jsonpath='{.items[0].metadata.name}')
1515
16-
old_instance_secret=$(yq eval -r \
17-
'[.items[].metadata.name | select(test("-certs$"))][0] // ""' \
18-
"$TEMP_DIR/tls-secrets.yaml")
1916
new_instance_secret="${instance}-certs"
2017
21-
if [[ -n "$old_instance_secret" && "$old_instance_secret" != "$new_instance_secret" ]]; then
22-
old_instance_secret="$old_instance_secret" new_instance_secret="$new_instance_secret" yq eval \
23-
'.items[] | select(.metadata.name == strenv(old_instance_secret)) | .metadata.name = strenv(new_instance_secret)' \
24-
"$TEMP_DIR/tls-secrets.yaml" \
25-
| kubectl -n "$NAMESPACE" apply -f -
26-
fi
18+
instance="$instance" new_instance_secret="$new_instance_secret" yq eval \
19+
'.items[] | select(.metadata.name | test("-certs$")) |
20+
.metadata.name = strenv(new_instance_secret) |
21+
.metadata.labels."postgres-operator.crunchydata.com/instance" = strenv(instance)' \
22+
"$TEMP_DIR/tls-secrets.yaml" \
23+
| kubectl -n "$NAMESPACE" apply -f -

internal/controller/postgrescluster/instance.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1491,7 +1491,12 @@ func (r *Reconciler) reconcileInstanceCertificates(
14911491
if cluster.Spec.CustomTLSSecret == nil {
14921492
if cluster.Spec.TLS.GetCertManagementPolicy() == v1beta1.CertManagementUserProvidedOnly {
14931493
existing := &corev1.Secret{ObjectMeta: naming.InstanceCertificates(instance)}
1494-
if err := r.Client.Get(ctx, client.ObjectKeyFromObject(existing), existing); err != nil {
1494+
// Allow the StatefulSet to be created so its generated name is visible
1495+
// to the user. The next reconciliation checks its certificate Secret
1496+
// and pauses until the user provides it.
1497+
if err := client.IgnoreNotFound(
1498+
r.Client.Get(ctx, client.ObjectKeyFromObject(existing), existing),
1499+
); err != nil {
14951500
return nil, errors.Wrapf(err, "get user-provided instance TLS secret %s", existing.Name)
14961501
}
14971502
return existing, nil

internal/controller/postgrescluster/pki.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ func (r *Reconciler) reconcileClusterCertificate(
324324
return cluster.Spec.CustomTLSSecret, nil
325325
}
326326

327-
if cluster.Spec.TLS.CertManagementPolicy == v1beta1.CertManagementUserProvidedOnly {
327+
if cluster.Spec.TLS.GetCertManagementPolicy() == v1beta1.CertManagementUserProvidedOnly {
328328
return r.reconcileUserProvidedClusterCertificate(ctx, cluster)
329329
}
330330
certManagerManaged, err := r.isRootCACertManagerManaged(ctx, cluster)

0 commit comments

Comments
 (0)