Skip to content

Commit c012ad4

Browse files
committed
Merge branch 'backport-traefikimagefix' into 'release/4.0'
backport ItMiiSample* traefik image fix to release/4.0 See merge request weblogic-cloud/weblogic-kubernetes-operator!4226
2 parents f75c791 + f4e1ea9 commit c012ad4

File tree

5 files changed

+90
-4
lines changed

5 files changed

+90
-4
lines changed

integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/TestActions.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,17 @@ public static boolean installTraefik(TraefikParams params) {
574574
return Traefik.install(params);
575575
}
576576

577+
/**
578+
* Upgrade Traefik ingress controller.
579+
*
580+
* @param params the parameters to upgrade command, such as image.repository, image.registry,
581+
* and image.tag
582+
* @return true on success, false otherwise
583+
*/
584+
public static boolean upgradeTraefikImage(TraefikParams params) {
585+
return Traefik.upgradeTraefikImage(params);
586+
}
587+
577588
/**
578589
* Install Apache ingress controller.
579590
*

integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/Traefik.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
// Copyright (c) 2020, 2021, Oracle and/or its affiliates.
1+
// Copyright (c) 2020, 2023, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.weblogic.kubernetes.actions.impl;
55

66
import oracle.weblogic.kubernetes.actions.impl.primitive.Helm;
77
import oracle.weblogic.kubernetes.actions.impl.primitive.HelmParams;
88

9+
import static oracle.weblogic.kubernetes.actions.impl.primitive.Helm.exec;
10+
import static oracle.weblogic.kubernetes.actions.impl.primitive.Helm.valuesToString;
11+
912
public class Traefik {
1013
/**
1114
* install helm chart.
@@ -27,6 +30,37 @@ public static boolean upgrade(TraefikParams params) {
2730
return Helm.upgrade(params.getHelmParams(), params.getValues());
2831
}
2932

33+
/**
34+
* Upgrade a helm release.
35+
* @param params the helm parameters to override. This method is mainly to upgrade
36+
* Traefik image related infor, such as image.repository, image.registry,
37+
* and image.tag. See TraefikParams getValues() for more details
38+
* @return true on success, false otherwise
39+
*/
40+
public static boolean upgradeTraefikImage(TraefikParams params) {
41+
42+
HelmParams helmParams = params.getHelmParams();
43+
String chartRef = null;
44+
45+
if (helmParams.getRepoUrl() != null && helmParams.getChartName() != null) {
46+
if (helmParams.getRepoName() != null) {
47+
chartRef = helmParams.getRepoName() + "/" + helmParams.getChartName();
48+
} else {
49+
chartRef = helmParams.getChartName() + " --repo " + helmParams.getRepoUrl();
50+
}
51+
}
52+
53+
// build Helm upgrade command
54+
String upgradeCmd = String.format("helm upgrade %1s %2s --namespace %3s --reuse-values",
55+
helmParams.getReleaseName(), chartRef,
56+
helmParams.getNamespace());
57+
58+
// add override values
59+
upgradeCmd = upgradeCmd + valuesToString(params.getValues());
60+
61+
return exec(upgradeCmd);
62+
}
63+
3064
/**
3165
* Uninstall a helm release.
3266
* @param params the parameters to helm uninstall command, release name and namespace

integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Helm.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2020, 2021, Oracle and/or its affiliates.
1+
// Copyright (c) 2020, 2023, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.weblogic.kubernetes.actions.impl.primitive;
@@ -206,7 +206,7 @@ public static String valuesToString(Map<String, Object> helmValues) {
206206
* @param command the command to execute
207207
* @return true on success, false otherwise
208208
*/
209-
private static boolean exec(String command) {
209+
public static boolean exec(String command) {
210210
getLogger().info("Running command - \n" + command);
211211
try {
212212
ExecResult result = ExecCommand.exec(command, true);

integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/ItMiiSampleHelper.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2021, 2022, Oracle and/or its affiliates.
1+
// Copyright (c) 2021, 2023, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.weblogic.kubernetes.utils;
@@ -29,6 +29,7 @@
2929
import static oracle.weblogic.kubernetes.TestConstants.OKE_CLUSTER;
3030
import static oracle.weblogic.kubernetes.TestConstants.RESULTS_ROOT;
3131
import static oracle.weblogic.kubernetes.TestConstants.TEST_IMAGES_REPO_SECRET_NAME;
32+
import static oracle.weblogic.kubernetes.TestConstants.TRAEFIK_RELEASE_NAME;
3233
import static oracle.weblogic.kubernetes.TestConstants.WEBLOGIC_IMAGE_TAG;
3334
import static oracle.weblogic.kubernetes.TestConstants.WEBLOGIC_IMAGE_TO_USE_IN_SPEC;
3435
import static oracle.weblogic.kubernetes.actions.ActionConstants.WDT_DOWNLOAD_URL;
@@ -40,6 +41,7 @@
4041
import static oracle.weblogic.kubernetes.utils.ImageUtils.createBaseRepoSecret;
4142
import static oracle.weblogic.kubernetes.utils.ImageUtils.createTestRepoSecret;
4243
import static oracle.weblogic.kubernetes.utils.ImageUtils.imageRepoLoginAndPushImageToRegistry;
44+
import static oracle.weblogic.kubernetes.utils.LoadBalancerUtils.upgradeAndVerifyTraefik;
4345
import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator;
4446
import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger;
4547
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -119,6 +121,7 @@ public void initAll(List<String> namespaces, DomainType domainTypeParam, ImageTy
119121
envMap.put("TRAEFIK_NAMESPACE", traefikNamespace);
120122
envMap.put("TRAEFIK_HTTP_NODEPORT", "0"); // 0-->dynamically choose the np
121123
envMap.put("TRAEFIK_HTTPS_NODEPORT", "0"); // 0-->dynamically choose the np
124+
envMap.put("TRAEFIK_NAME", TRAEFIK_RELEASE_NAME + "-" + traefikNamespace.substring(3));
122125
envMap.put("WORKDIR", miiSampleWorkDir);
123126
envMap.put("BASE_IMAGE_NAME", WEBLOGIC_IMAGE_TO_USE_IN_SPEC
124127
.substring(0, WEBLOGIC_IMAGE_TO_USE_IN_SPEC.lastIndexOf(":")));
@@ -145,6 +148,8 @@ public void initAll(List<String> namespaces, DomainType domainTypeParam, ImageTy
145148

146149
// install traefik using the mii sample script
147150
execTestScriptAndAssertSuccess(DomainType.WLS, "-traefik", "Traefik deployment failure");
151+
//Helm upgrade traefik and verify traefik pod is ready
152+
upgradeAndVerifyTraefik(traefikNamespace);
148153

149154
logger.info("Setting up image registry secrets");
150155
// Create the repo secret to pull the domain image

integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/LoadBalancerUtils.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import static oracle.weblogic.kubernetes.actions.TestActions.installTraefik;
6767
import static oracle.weblogic.kubernetes.actions.TestActions.installVoyager;
6868
import static oracle.weblogic.kubernetes.actions.TestActions.listIngresses;
69+
import static oracle.weblogic.kubernetes.actions.TestActions.upgradeTraefikImage;
6970
import static oracle.weblogic.kubernetes.assertions.TestAssertions.isApacheReady;
7071
import static oracle.weblogic.kubernetes.assertions.TestAssertions.isHelmReleaseDeployed;
7172
import static oracle.weblogic.kubernetes.assertions.TestAssertions.isNginxReady;
@@ -520,6 +521,41 @@ public static HelmParams installAndVerifyTraefik(String traefikNamespace,
520521
return traefikHelmParams;
521522
}
522523

524+
/** Upgrade Traefik and wait for up to five minutes for the Traefik pod to be ready.
525+
*
526+
* @param traefikNamespace the namespace in which the Traefik ingress controller is installed
527+
* @return the Traefik Helm upgrade parameters
528+
*/
529+
public static HelmParams upgradeAndVerifyTraefik(String traefikNamespace) {
530+
LoggingFacade logger = getLogger();
531+
// Helm install parameters
532+
HelmParams traefikHelmParams = new HelmParams()
533+
.releaseName(TRAEFIK_RELEASE_NAME + "-" + traefikNamespace.substring(3))
534+
.namespace(traefikNamespace)
535+
.repoUrl(TRAEFIK_REPO_URL)
536+
.repoName(TRAEFIK_REPO_NAME)
537+
.chartName(TRAEFIK_CHART_NAME);
538+
539+
// Traefik chart values to override
540+
TraefikParams traefikParams = new TraefikParams()
541+
.helmParams(traefikHelmParams);
542+
543+
// upgrade Traefik with new image infor
544+
assertThat(upgradeTraefikImage(traefikParams))
545+
.as("Test Traefik upgrade succeeds")
546+
.withFailMessage("Traefik upgrade is failed")
547+
.isTrue();
548+
549+
// wait until the Traefik pod is ready.
550+
testUntil(
551+
assertDoesNotThrow(() -> isTraefikReady(traefikNamespace), "isTraefikReady failed with ApiException"),
552+
logger,
553+
"Traefik to be ready in namespace {0}",
554+
traefikNamespace);
555+
556+
return traefikHelmParams;
557+
}
558+
523559
/**
524560
* Create an ingress for the domain with domainUid in the specified namespace.
525561
*

0 commit comments

Comments
 (0)