Skip to content

Commit 6ed848b

Browse files
egeguneshors
andauthored
K8SPSMDB-780: Fix upgrade from v1.15.0 (#1545)
* K8SPSMDB-780: Fix upgrade from v1.15.0 * adress review comments * disable TLS mode if user has unsafeConf in v1.15.0 * fix * fix diffs --------- Co-authored-by: Viacheslav Sarzhan <slava.sarzhan@percona.com>
1 parent 577568d commit 6ed848b

12 files changed

+56
-29
lines changed

e2e-tests/init-deploy/compare/statefulset_another-name-rs0-4-oc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ spec:
4848
- --replSet=rs0
4949
- --storageEngine=wiredTiger
5050
- --relaxPermChecks
51+
- --sslAllowInvalidCertificates
5152
- --clusterAuthMode=keyFile
5253
- --keyFile=/etc/mongodb-secrets/mongodb-key
5354
- --tlsMode=disabled

e2e-tests/init-deploy/compare/statefulset_another-name-rs0-oc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ spec:
4848
- --replSet=rs0
4949
- --storageEngine=wiredTiger
5050
- --relaxPermChecks
51+
- --sslAllowInvalidCertificates
5152
- --clusterAuthMode=keyFile
5253
- --keyFile=/etc/mongodb-secrets/mongodb-key
5354
- --tlsMode=disabled

e2e-tests/init-deploy/compare/statefulset_another-name-rs0.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ spec:
4848
- --replSet=rs0
4949
- --storageEngine=wiredTiger
5050
- --relaxPermChecks
51+
- --sslAllowInvalidCertificates
5152
- --clusterAuthMode=keyFile
5253
- --keyFile=/etc/mongodb-secrets/mongodb-key
5354
- --tlsMode=disabled

e2e-tests/tls-issue-cert-manager/compare/statefulset_some-name-cfg-tls-disabled.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ spec:
3030
serviceName: some-name-cfg
3131
template:
3232
metadata:
33+
annotations: {}
3334
labels:
3435
app.kubernetes.io/component: cfg
3536
app.kubernetes.io/instance: some-name
@@ -59,6 +60,7 @@ spec:
5960
- --replSet=cfg
6061
- --storageEngine=wiredTiger
6162
- --relaxPermChecks
63+
- --sslAllowInvalidCertificates
6264
- --clusterAuthMode=keyFile
6365
- --keyFile=/etc/mongodb-secrets/mongodb-key
6466
- --tlsMode=disabled

e2e-tests/tls-issue-cert-manager/compare/statefulset_some-name-mongos-tls-disabled.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ spec:
2828
serviceName: ""
2929
template:
3030
metadata:
31+
annotations: {}
3132
labels:
3233
app.kubernetes.io/component: mongos
3334
app.kubernetes.io/instance: some-name

e2e-tests/tls-issue-cert-manager/compare/statefulset_some-name-rs0-tls-disabled.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ spec:
3030
serviceName: some-name-rs0
3131
template:
3232
metadata:
33+
annotations: {}
3334
labels:
3435
app.kubernetes.io/component: mongod
3536
app.kubernetes.io/instance: some-name
@@ -47,6 +48,7 @@ spec:
4748
- --replSet=rs0
4849
- --storageEngine=wiredTiger
4950
- --relaxPermChecks
51+
- --sslAllowInvalidCertificates
5052
- --clusterAuthMode=keyFile
5153
- --keyFile=/etc/mongodb-secrets/mongodb-key
5254
- --tlsMode=disabled

pkg/apis/psmdb/v1/psmdb_defaults.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,17 @@ func (cr *PerconaServerMongoDB) CheckNSetDefaults(platform version.Platform, log
105105
cr.Spec.TLS.AllowInvalidCertificates = &t
106106
}
107107

108+
if cr.Spec.UnsafeConf {
109+
cr.Spec.Unsafe = UnsafeFlags{
110+
TLS: true,
111+
ReplsetSize: true,
112+
MongosSize: true,
113+
BackupIfUnhealthy: true,
114+
TerminationGracePeriod: true,
115+
}
116+
cr.Spec.TLS.Mode = TLSModeDisabled
117+
}
118+
108119
if !cr.TLSEnabled() && !cr.Spec.Unsafe.TLS {
109120
return errors.New("TLS must be enabled. Set spec.unsafeFlags.tls to true to disable this check")
110121
}

pkg/controller/perconaservermongodb/psmdb_controller.go

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,21 +1202,19 @@ func (r *ReconcilePerconaServerMongoDB) reconcileMongosStatefulset(ctx context.C
12021202
return errors.Wrapf(err, "create template spec for mongos")
12031203
}
12041204

1205-
if cr.TLSEnabled() {
1206-
sslAnn, err := r.sslAnnotation(ctx, cr)
1207-
if err != nil {
1208-
if err == errTLSNotReady {
1209-
return nil
1210-
}
1211-
return errors.Wrap(err, "failed to get ssl annotations")
1212-
}
1213-
if templateSpec.Annotations == nil {
1214-
templateSpec.Annotations = make(map[string]string)
1205+
sslAnn, err := r.sslAnnotation(ctx, cr)
1206+
if err != nil {
1207+
if errors.Is(err, errTLSNotReady) {
1208+
return nil
12151209
}
1210+
return errors.Wrap(err, "failed to get ssl annotations")
1211+
}
1212+
if templateSpec.Annotations == nil {
1213+
templateSpec.Annotations = make(map[string]string)
1214+
}
12161215

1217-
for k, v := range sslAnn {
1218-
templateSpec.Annotations[k] = v
1219-
}
1216+
for k, v := range sslAnn {
1217+
templateSpec.Annotations[k] = v
12201218
}
12211219

12221220
secret := new(corev1.Secret)
@@ -1357,9 +1355,15 @@ var errTLSNotReady = errors.New("waiting for TLS secret")
13571355
func (r *ReconcilePerconaServerMongoDB) sslAnnotation(ctx context.Context, cr *api.PerconaServerMongoDB) (map[string]string, error) {
13581356
annotation := make(map[string]string)
13591357

1358+
annotation["percona.com/ssl-hash"] = ""
1359+
annotation["percona.com/ssl-internal-hash"] = ""
1360+
13601361
sslHash, err := r.getTLSHash(ctx, cr, api.SSLSecretName(cr))
13611362
if err != nil {
13621363
if k8serrors.IsNotFound(err) {
1364+
if cr.UnsafeTLSDisabled() {
1365+
return annotation, nil
1366+
}
13631367
return nil, errTLSNotReady
13641368
}
13651369
return nil, errors.Wrap(err, "get secret hash error")
@@ -1369,6 +1373,9 @@ func (r *ReconcilePerconaServerMongoDB) sslAnnotation(ctx context.Context, cr *a
13691373
sslInternalHash, err := r.getTLSHash(ctx, cr, api.SSLInternalSecretName(cr))
13701374
if err != nil {
13711375
if k8serrors.IsNotFound(err) {
1376+
if cr.UnsafeTLSDisabled() {
1377+
return annotation, nil
1378+
}
13721379
return nil, errTLSNotReady
13731380
}
13741381
return nil, errors.Wrap(err, "get secret hash error")

pkg/controller/perconaservermongodb/ssl.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func (r *ReconcilePerconaServerMongoDB) doAllStsHasLatestTLS(ctx context.Context
100100

101101
sslAnn, err := r.sslAnnotation(ctx, cr)
102102
if err != nil {
103-
if err == errTLSNotReady {
103+
if errors.Is(err, errTLSNotReady) {
104104
return false, nil
105105
}
106106
return false, errors.Wrap(err, "failed to get ssl annotations")

pkg/controller/perconaservermongodb/statefulset.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,12 @@ func (r *ReconcilePerconaServerMongoDB) getStatefulsetFromReplset(ctx context.Co
118118
sfs.Labels = sfsSpec.Template.Labels
119119
sfs.Spec = sfsSpec
120120

121-
if cr.TLSEnabled() {
122-
sslAnn, err := r.sslAnnotation(ctx, cr)
123-
if err != nil {
124-
return nil, errors.Wrap(err, "failed to get ssl annotations")
125-
}
126-
for k, v := range sslAnn {
127-
sfsSpec.Template.Annotations[k] = v
128-
}
121+
sslAnn, err := r.sslAnnotation(ctx, cr)
122+
if err != nil {
123+
return nil, errors.Wrap(err, "failed to get ssl annotations")
124+
}
125+
for k, v := range sslAnn {
126+
sfsSpec.Template.Annotations[k] = v
129127
}
130128

131129
return sfs, nil

0 commit comments

Comments
 (0)