Skip to content

Commit 0aca088

Browse files
authored
Owls 91143 - Move internal certificate initialization logic to operator initalization (#2486)
* Move internal certificate initialization logic to operator initalization * Changes to fail the Operator in case of unexpected exceptions from bouncycastle lib or IOException. * Fix for liveness probe script and increase initialDelaySeconds to 40.
1 parent 4702937 commit 0aca088

File tree

12 files changed

+427
-132
lines changed

12 files changed

+427
-132
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ spec:
112112
command:
113113
- "bash"
114114
- "/operator/livenessProbe.sh"
115-
initialDelaySeconds: 20
115+
initialDelaySeconds: 40
116116
periodSeconds: 5
117117
readinessProbe:
118118
exec:

operator/scripts/initialize-internal-operator-identity.sh

Lines changed: 0 additions & 125 deletions
This file was deleted.

operator/scripts/livenessProbe.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
RETVAL=$(test -f /operator/debug-config/livenessProbeSuccessOverride ; echo $?)
88

99
FILE=/operator/.alive
10+
if [ ! -f ${FILE} ]; then
11+
exit $RETVAL
12+
fi
1013
OLDTIME=60
1114
CURTIME=$(date +%s)
1215
FILETIME=$(stat $FILE -c %Y)

operator/scripts/operator.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ function relay_SIGTERM {
1515

1616
trap relay_SIGTERM SIGTERM
1717

18-
/operator/initialize-internal-operator-identity.sh
19-
2018
/operator/initialize-external-operator-identity.sh
2119

2220
if [[ ! -z "$REMOTE_DEBUG_PORT" ]]; then

operator/src/main/java/oracle/kubernetes/operator/Main.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import oracle.kubernetes.operator.rest.RestConfigImpl;
4747
import oracle.kubernetes.operator.rest.RestServer;
4848
import oracle.kubernetes.operator.steps.DefaultResponseStep;
49+
import oracle.kubernetes.operator.steps.InitializeInternalIdentityStep;
4950
import oracle.kubernetes.operator.work.Component;
5051
import oracle.kubernetes.operator.work.Container;
5152
import oracle.kubernetes.operator.work.ContainerResolver;
@@ -84,6 +85,8 @@ public class Main {
8485
private NamespaceWatcher namespaceWatcher;
8586
protected OperatorEventWatcher operatorNamespaceEventWatcher;
8687
private boolean warnedOfCrdAbsence;
88+
private static NextStepFactory NEXT_STEP_FACTORY =
89+
(next) -> createInitializeInternalIdentityStep(next);
8790

8891
private static String getConfiguredServiceAccount() {
8992
return TuningParameters.getInstance().get("serviceaccount");
@@ -310,7 +313,12 @@ void startOperator(Runnable completionAction) {
310313
}
311314

312315
private Step createStartupSteps() {
313-
return Namespaces.getSelection(new StartupStepsVisitor());
316+
317+
return NEXT_STEP_FACTORY.createInternalInitializationStep(Namespaces.getSelection(new StartupStepsVisitor()));
318+
}
319+
320+
private static Step createInitializeInternalIdentityStep(Step next) {
321+
return new InitializeInternalIdentityStep(next);
314322
}
315323

316324
private Step createOperatorNamespaceEventListStep() {
@@ -594,4 +602,9 @@ public void onThrowable(Packet packet, Throwable throwable) {
594602
}
595603
}
596604

605+
// an interface to provide a hook for unit testing.
606+
interface NextStepFactory {
607+
Step createInternalInitializationStep(Step next);
608+
}
609+
597610
}

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

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,11 @@ public <T> T execute(
167167
wrap(
168168
createConfigMapAsync(
169169
usage, requestParams.namespace, (V1ConfigMap) requestParams.body, callback));
170+
private final CallFactory<V1Secret> createSecret =
171+
(requestParams, usage, cont, callback) ->
172+
wrap(
173+
createSecretAsync(
174+
usage, requestParams.namespace, (V1Secret) requestParams.body, callback));
170175
private final CallFactory<V1ConfigMap> replaceConfigmap =
171176
(requestParams, usage, cont, callback) ->
172177
wrap(
@@ -185,6 +190,15 @@ public <T> T execute(
185190
requestParams.namespace,
186191
(V1Patch) requestParams.body,
187192
callback));
193+
private final CallFactory<V1Secret> replaceSecret =
194+
(requestParams, usage, cont, callback) ->
195+
wrap(
196+
replaceSecretAsync(
197+
usage,
198+
requestParams.name,
199+
requestParams.namespace,
200+
(V1Secret) requestParams.body,
201+
callback));
188202
private final CallFactory<V1Pod> createPod =
189203
(requestParams, usage, cont, callback) ->
190204
wrap(
@@ -990,6 +1004,28 @@ responseStep, new RequestParams("createConfigMap", namespace, null, body, callPa
9901004
createConfigmap);
9911005
}
9921006

1007+
private Call createSecretAsync(
1008+
ApiClient client, String namespace, V1Secret body, ApiCallback<V1Secret> callback)
1009+
throws ApiException {
1010+
return new CoreV1Api(client)
1011+
.createNamespacedSecretAsync(namespace, body, pretty, null, null, callback);
1012+
}
1013+
1014+
/**
1015+
* Asynchronous step for creating secret.
1016+
*
1017+
* @param namespace Namespace
1018+
* @param body Body
1019+
* @param responseStep Response step for when call completes
1020+
* @return Asynchronous step
1021+
*/
1022+
public Step createSecretAsync(
1023+
String namespace, V1Secret body, ResponseStep<V1Secret> responseStep) {
1024+
return createRequestAsync(
1025+
responseStep, new RequestParams("createSecret", namespace, null, body, callParams),
1026+
createSecret);
1027+
}
1028+
9931029
private Call deleteConfigMapAsync(
9941030
ApiClient client,
9951031
String name,
@@ -1086,6 +1122,34 @@ public Step patchConfigMapAsync(
10861122
patchConfigMap);
10871123
}
10881124

1125+
/**
1126+
* Asynchronous step for replacing secret.
1127+
*
1128+
* @param name Name
1129+
* @param namespace Namespace
1130+
* @param body Body
1131+
* @param responseStep Response step for when call completes
1132+
* @return Asynchronous step
1133+
*/
1134+
public Step replaceSecretAsync(
1135+
String name, String namespace, V1Secret body, ResponseStep<V1Secret> responseStep) {
1136+
return createRequestAsync(
1137+
responseStep,
1138+
new RequestParams("replaceSecretAsync", namespace, name, body, ""),
1139+
replaceSecret);
1140+
}
1141+
1142+
private Call replaceSecretAsync(
1143+
ApiClient client,
1144+
String name,
1145+
String namespace,
1146+
V1Secret body,
1147+
ApiCallback<V1Secret> callback)
1148+
throws ApiException {
1149+
return new CoreV1Api(client)
1150+
.replaceNamespacedSecretAsync(name, namespace, body, pretty, dryRun, null, callback);
1151+
}
1152+
10891153
private Call listPodAsync(
10901154
ApiClient client, String namespace, String cont, ApiCallback<V1PodList> callback)
10911155
throws ApiException {

operator/src/main/java/oracle/kubernetes/operator/logging/MessageKeys.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ public class MessageKeys {
142142
public static final String DOMAIN_ROLL_COMPLETED = "WLSKO-0191";
143143
public static final String EXECUTE_MAKE_RIGHT_DOMAIN = "WLSKO-0192";
144144
public static final String LOG_WAITING_COUNT = "WLSKO-0193";
145+
public static final String INTERNAL_IDENTITY_INITIALIZATION_FAILED = "WLSKO-0194";
146+
145147

146148
// domain status messages
147149
public static final String DUPLICATE_SERVER_NAME_FOUND = "WLSDO-0001";

0 commit comments

Comments
 (0)