Skip to content

Commit e95da7d

Browse files
russgoldrjeberhard
andauthored
Don't roll on upgrades from 3.0 (#2292)
* Don't roll pods when upgrading from 3.0.* * Take downtime for operator while updating image Co-authored-by: Ryan Eberhard <[email protected]>
1 parent be2cba9 commit e95da7d

File tree

9 files changed

+641
-44
lines changed

9 files changed

+641
-44
lines changed

documentation/charts/index.yaml

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ entries:
33
weblogic-operator:
44
- apiVersion: v1
55
appVersion: 3.2.0
6-
created: "2021-03-01T11:49:25.929734-05:00"
6+
created: "2021-03-30T11:24:31.829893-04:00"
77
description: Helm chart for configuring the WebLogic operator.
8-
digest: d6862418f747e8d2d4d184242fb2518abfd5853be99d42bc5b9579878ead54a6
8+
digest: e1c9192b3590d10b8426b7e7bcae27213d9f2296ef4f2cf547e198fd2d89ab1b
99
name: weblogic-operator
1010
type: application
1111
urls:
1212
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-3.2.0.tgz
1313
version: 3.2.0
1414
- apiVersion: v1
1515
appVersion: 3.1.4
16-
created: "2021-03-01T11:49:25.928315-05:00"
16+
created: "2021-03-30T11:24:31.829174-04:00"
1717
description: Helm chart for configuring the WebLogic operator.
1818
digest: 9695fd3c29cd4f006f8e75ae0053683c9aa7213440525002f4f3d36eb8d86633
1919
name: weblogic-operator
@@ -23,7 +23,7 @@ entries:
2323
version: 3.1.4
2424
- apiVersion: v1
2525
appVersion: 3.1.3
26-
created: "2021-03-01T11:49:25.927245-05:00"
26+
created: "2021-03-30T11:24:31.827653-04:00"
2727
description: Helm chart for configuring the WebLogic operator.
2828
digest: e306bd590dbe84400c6b5bb7a64325330e597223dff63792bb5811c9cfae10ac
2929
name: weblogic-operator
@@ -33,7 +33,7 @@ entries:
3333
version: 3.1.3
3434
- apiVersion: v1
3535
appVersion: 3.1.2
36-
created: "2021-03-01T11:49:25.926206-05:00"
36+
created: "2021-03-30T11:24:31.826574-04:00"
3737
description: Helm chart for configuring the WebLogic operator.
3838
digest: 2d8b77038ba870cc66ddd45e07a593a5ac3159c8b9531b5309688028b5268a5f
3939
name: weblogic-operator
@@ -43,7 +43,7 @@ entries:
4343
version: 3.1.2
4444
- apiVersion: v1
4545
appVersion: 3.1.1
46-
created: "2021-03-01T11:49:25.925384-05:00"
46+
created: "2021-03-30T11:24:31.825577-04:00"
4747
description: Helm chart for configuring the WebLogic operator.
4848
digest: d839cb7bbce4421a59cd9c3df64b1df8649eeebcb6c6b7be34fec25ad00aa141
4949
name: weblogic-operator
@@ -53,7 +53,7 @@ entries:
5353
version: 3.1.1
5454
- apiVersion: v1
5555
appVersion: 3.1.0
56-
created: "2021-03-01T11:49:25.92447-05:00"
56+
created: "2021-03-30T11:24:31.824381-04:00"
5757
description: Helm chart for configuring the WebLogic operator.
5858
digest: 9e105bec11bab249973370a4d5e653f9104cd9fbaaa0c2090fb173805fb3a692
5959
name: weblogic-operator
@@ -62,123 +62,123 @@ entries:
6262
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-3.1.0.tgz
6363
version: 3.1.0
6464
- apiVersion: v1
65-
created: "2021-03-01T11:49:25.923639-05:00"
65+
created: "2021-03-30T11:24:31.823554-04:00"
6666
description: Helm chart for configuring the WebLogic operator.
6767
digest: 557d0df9958bbdd2f456134d8aff9edf33900bb65774fb0baf2054abd49fdc97
6868
name: weblogic-operator
6969
urls:
7070
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-3.0.4.tgz
7171
version: 3.0.4
7272
- apiVersion: v1
73-
created: "2021-03-01T11:49:25.922991-05:00"
73+
created: "2021-03-30T11:24:31.822787-04:00"
7474
description: Helm chart for configuring the WebLogic operator.
7575
digest: 83a0ac84a033ddd9939d4bc5884cc60b22225d7326c43ce8e54a6f403b453814
7676
name: weblogic-operator
7777
urls:
7878
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-3.0.3.tgz
7979
version: 3.0.3
8080
- apiVersion: v1
81-
created: "2021-03-01T11:49:25.922324-05:00"
81+
created: "2021-03-30T11:24:31.822027-04:00"
8282
description: Helm chart for configuring the WebLogic operator.
8383
digest: fa3af5d21f858ff93cc7d58664a6eb0a920207af09e4c669a7ffb12e9e15b88d
8484
name: weblogic-operator
8585
urls:
8686
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-3.0.2.tgz
8787
version: 3.0.2
8888
- apiVersion: v1
89-
created: "2021-03-01T11:49:25.921607-05:00"
89+
created: "2021-03-30T11:24:31.821251-04:00"
9090
description: Helm chart for configuring the WebLogic operator.
9191
digest: aa2b2afe75305bd69f6b07d61e64a37d3bfd249074c81f6a999cef6b4a217fd0
9292
name: weblogic-operator
9393
urls:
9494
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-3.0.1.tgz
9595
version: 3.0.1
9696
- apiVersion: v1
97-
created: "2021-03-01T11:49:25.920811-05:00"
97+
created: "2021-03-30T11:24:31.820527-04:00"
9898
description: Helm chart for configuring the WebLogic operator.
9999
digest: 6540a3a7c6a1c34fcf2ff66679947a1964a35e61232b2a8dea3da087a2d5411d
100100
name: weblogic-operator
101101
urls:
102102
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-3.0.0.tgz
103103
version: 3.0.0
104104
- apiVersion: v1
105-
created: "2021-03-01T11:49:25.92013-05:00"
105+
created: "2021-03-30T11:24:31.819655-04:00"
106106
description: Helm chart for configuring the WebLogic operator.
107107
digest: 5f4cd8f4f3282b52b5e90a1169f26986e8272671845053606ade9c855fb04151
108108
name: weblogic-operator
109109
urls:
110110
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-3.0.0-rc1.tgz
111111
version: 3.0.0-rc1
112112
- apiVersion: v1
113-
created: "2021-03-01T11:49:25.919169-05:00"
113+
created: "2021-03-30T11:24:31.818845-04:00"
114114
description: Helm chart for configuring the WebLogic operator.
115115
digest: e3596b2380b264a0a70ba438858ca9af102a79689bf2e21e237eb63ea2997d66
116116
name: weblogic-operator
117117
urls:
118118
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-2.6.0.tgz
119119
version: 2.6.0
120120
- apiVersion: v1
121-
created: "2021-03-01T11:49:25.918096-05:00"
121+
created: "2021-03-30T11:24:31.817876-04:00"
122122
description: Helm chart for configuring the WebLogic operator.
123123
digest: fe41421b7dc45dc8a3b2888d3a626a37f5d3c8e1fa292fb6699deedc5e1db33d
124124
name: weblogic-operator
125125
urls:
126126
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-2.5.0.tgz
127127
version: 2.5.0
128128
- apiVersion: v1
129-
created: "2021-03-01T11:49:25.917329-05:00"
129+
created: "2021-03-30T11:24:31.81703-04:00"
130130
description: Helm chart for configuring the WebLogic operator.
131131
digest: b36bd32083f67453a62d089a2c09ce38e6655d88ac8a7b38691230c55c40e672
132132
name: weblogic-operator
133133
urls:
134134
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-2.4.0.tgz
135135
version: 2.4.0
136136
- apiVersion: v1
137-
created: "2021-03-01T11:49:25.916001-05:00"
137+
created: "2021-03-30T11:24:31.81567-04:00"
138138
description: Helm chart for configuring the WebLogic operator.
139139
digest: a3eafe4c2c6ff49384e56421201e59a3737d651af8d5b605b87a19eb1f6f1dc3
140140
name: weblogic-operator
141141
urls:
142142
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-2.3.1.tgz
143143
version: 2.3.1
144144
- apiVersion: v1
145-
created: "2021-03-01T11:49:25.913214-05:00"
145+
created: "2021-03-30T11:24:31.813773-04:00"
146146
description: Helm chart for configuring the WebLogic operator.
147147
digest: cbc6caaa6eb28e3c7e906ede14b2ae511a0b35fc12a8e3ab629155b09993e8b2
148148
name: weblogic-operator
149149
urls:
150150
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-2.3.0.tgz
151151
version: 2.3.0
152152
- apiVersion: v1
153-
created: "2021-03-01T11:49:25.912405-05:00"
153+
created: "2021-03-30T11:24:31.812932-04:00"
154154
description: Helm chart for configuring the WebLogic operator.
155155
digest: 23d5a1c554fa8211cc1e86b7ade09460917cb2069e68fb4bfdddafc8db44fdcd
156156
name: weblogic-operator
157157
urls:
158158
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-2.2.1.tgz
159159
version: 2.2.1
160160
- apiVersion: v1
161-
created: "2021-03-01T11:49:25.911396-05:00"
161+
created: "2021-03-30T11:24:31.812192-04:00"
162162
description: Helm chart for configuring the WebLogic operator.
163163
digest: bba303686cb55d84fe8c0d693a2436e7e686b028085b56e012f6381699a3911f
164164
name: weblogic-operator
165165
urls:
166166
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-2.2.0.tgz
167167
version: 2.2.0
168168
- apiVersion: v1
169-
created: "2021-03-01T11:49:25.909964-05:00"
169+
created: "2021-03-30T11:24:31.810952-04:00"
170170
description: Helm chart for configuring the WebLogic operator.
171171
digest: 391e23c0969ada5f0cd2a088ddc6f11f237f57521801ed3925db2149a8437a0d
172172
name: weblogic-operator
173173
urls:
174174
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-2.1.tgz
175175
version: "2.1"
176176
- apiVersion: v1
177-
created: "2021-03-01T11:49:25.909117-05:00"
177+
created: "2021-03-30T11:24:31.810083-04:00"
178178
description: Helm chart for configuring the WebLogic operator.
179179
digest: 298acda78ab73db6b7ba6f2752311bfa40c65874e03fb196b70976192211c1a5
180180
name: weblogic-operator
181181
urls:
182182
- https://oracle.github.io/weblogic-kubernetes-operator/charts/weblogic-operator-2.0.1.tgz
183183
version: 2.0.1
184-
generated: "2021-03-01T11:49:25.907565-05:00"
184+
generated: "2021-03-30T11:24:31.808922-04:00"
0 Bytes
Binary file not shown.

kubernetes/charts/weblogic-operator/templates/_operator-dep.tpl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ metadata:
1111
labels:
1212
weblogic.operatorName: {{ .Release.Namespace | quote }}
1313
spec:
14+
strategy:
15+
type: Recreate
1416
selector:
1517
matchLabels:
1618
weblogic.operatorName: {{ .Release.Namespace | quote }}

operator/src/main/java/oracle/kubernetes/operator/helpers/PodHelper.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,11 @@ ServerSpec getServerSpec() {
298298
return getDomain().getAdminServerSpec();
299299
}
300300

301+
@Override
302+
Integer getOldMetricsPort() {
303+
return getAsPort();
304+
}
305+
301306
@Override
302307
String getServerName() {
303308
return getAsName();
@@ -446,6 +451,11 @@ Integer getLocalAdminProtocolChannelPort() {
446451
return scan.getLocalAdminProtocolChannelPort();
447452
}
448453

454+
@Override
455+
Integer getOldMetricsPort() {
456+
return getListenPort();
457+
}
458+
449459
@Override
450460
String getServerName() {
451461
return scan.getName();

operator/src/main/java/oracle/kubernetes/operator/helpers/PodStepContext.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.Objects;
1414
import java.util.Optional;
1515
import java.util.Set;
16+
import java.util.function.Consumer;
1617
import java.util.stream.Collectors;
1718
import javax.annotation.Nonnull;
1819
import javax.annotation.Nullable;
@@ -185,7 +186,7 @@ String getAsName() {
185186
return domainTopology.getAdminServerName();
186187
}
187188

188-
private Integer getAsPort() {
189+
Integer getAsPort() {
189190
return domainTopology
190191
.getServerConfig(domainTopology.getAdminServerName())
191192
.getLocalAdminProtocolChannelPort();
@@ -288,6 +289,7 @@ Integer getAdminPort() {
288289
return Optional.ofNullable(scan).map(WlsServerConfig::getAdminPort).orElse(null);
289290
}
290291

292+
abstract Integer getOldMetricsPort();
291293

292294
abstract String getServerName();
293295

@@ -466,9 +468,7 @@ private boolean mustPatchPod(V1Pod currentPod) {
466468

467469
private boolean canUseCurrentPod(V1Pod currentPod) {
468470

469-
boolean useCurrent =
470-
getRequiredHash(currentPod).equals(AnnotationHelper.getHash(currentPod))
471-
&& canUseNewDomainZip(currentPod);
471+
boolean useCurrent = hasCorrectPodHash(currentPod) && canUseNewDomainZip(currentPod);
472472

473473
if (!useCurrent && AnnotationHelper.getDebugString(currentPod).length() > 0) {
474474
LOGGER.fine(
@@ -480,25 +480,30 @@ private boolean canUseCurrentPod(V1Pod currentPod) {
480480
return useCurrent;
481481
}
482482

483-
private String getRequiredHash(V1Pod currentPod) {
484-
if (isLegacyPod(currentPod)) {
485-
return adjustedHash(currentPod);
483+
private boolean hasCorrectPodHash(V1Pod currentPod) {
484+
if (!isLegacyPod(currentPod)) {
485+
return AnnotationHelper.getHash(getPodModel()).equals(AnnotationHelper.getHash(currentPod));
486486
} else {
487-
return AnnotationHelper.getHash(getPodModel());
487+
return canAdjustHashToMatch(currentPod, AnnotationHelper.getHash(currentPod));
488488
}
489489
}
490490

491491
private boolean isLegacyPod(V1Pod currentPod) {
492492
return !hasLabel(currentPod, OPERATOR_VERSION);
493493
}
494494

495+
private boolean canAdjustHashToMatch(V1Pod currentPod, String requiredHash) {
496+
return requiredHash.equals(adjustedHash(currentPod, this::addLegacyPrometheusAnnotationsFrom_3_0))
497+
|| requiredHash.equals(adjustedHash(currentPod, this::addLegacyPrometheusAnnotationsFrom_3_1));
498+
}
499+
495500
private boolean hasLabel(V1Pod pod, String key) {
496501
return pod.getMetadata().getLabels().containsKey(key);
497502
}
498503

499-
private String adjustedHash(V1Pod currentPod) {
504+
private String adjustedHash(V1Pod currentPod, Consumer<V1Pod> prometheusAdjustment) {
500505
V1Pod recipe = createPodRecipe();
501-
addLegacyPrometheusAnnotations(recipe);
506+
prometheusAdjustment.accept(recipe);
502507

503508
if (isLegacyMiiPod(currentPod)) {
504509
copyLabel(currentPod, recipe, MODEL_IN_IMAGE_DOMAINZIP_HASH);
@@ -507,7 +512,11 @@ private String adjustedHash(V1Pod currentPod) {
507512
return AnnotationHelper.createHash(recipe);
508513
}
509514

510-
private void addLegacyPrometheusAnnotations(V1Pod pod) {
515+
private void addLegacyPrometheusAnnotationsFrom_3_0(V1Pod pod) {
516+
AnnotationHelper.annotateForPrometheus(pod.getMetadata(), "/wls-exporter", getOldMetricsPort());
517+
}
518+
519+
private void addLegacyPrometheusAnnotationsFrom_3_1(V1Pod pod) {
511520
AnnotationHelper.annotateForPrometheus(pod.getMetadata(), "/wls-exporter", getMetricsPort());
512521
}
513522

operator/src/test/java/oracle/kubernetes/operator/helpers/AdminPodHelperTest.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,22 @@ void setServerPort(int port) {
102102
}
103103

104104
@Override
105-
String getReferencePlainPortPodYaml() {
105+
String getReferencePlainPortPodYaml_3_0() {
106+
return ReferenceObjects.ADMIN_PLAINPORT_POD_3_0;
107+
}
108+
109+
@Override
110+
String getReferencePlainPortPodYaml_3_1() {
106111
return ReferenceObjects.ADMIN_PLAINPORT_POD_3_1;
107112
}
108113

109114
@Override
110-
String getReferenceSslPortPodYaml() {
115+
String getReferenceSslPortPodYaml_3_0() {
116+
return ReferenceObjects.ADMIN_SSLPORT_POD_3_0;
117+
}
118+
119+
@Override
120+
String getReferenceSslPortPodYaml_3_1() {
111121
return ReferenceObjects.ADMIN_SSLPORT_POD_3_1;
112122
}
113123

operator/src/test/java/oracle/kubernetes/operator/helpers/ManagedPodHelperTest.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,12 +1289,22 @@ void setServerPort(int port) {
12891289
}
12901290

12911291
@Override
1292-
String getReferencePlainPortPodYaml() {
1292+
String getReferencePlainPortPodYaml_3_0() {
1293+
return ReferenceObjects.MANAGED_PLAINPORT_POD_3_0;
1294+
}
1295+
1296+
@Override
1297+
String getReferencePlainPortPodYaml_3_1() {
12931298
return ReferenceObjects.MANAGED_PLAINPORT_POD_3_1;
12941299
}
12951300

12961301
@Override
1297-
String getReferenceSslPortPodYaml() {
1302+
String getReferenceSslPortPodYaml_3_0() {
1303+
return ReferenceObjects.MANAGED_SSLPORT_POD_3_0;
1304+
}
1305+
1306+
@Override
1307+
String getReferenceSslPortPodYaml_3_1() {
12981308
return ReferenceObjects.MANAGED_SSLPORT_POD_3_1;
12991309
}
13001310

0 commit comments

Comments
 (0)