Fix running operator image tests with prebuilt image
Closes #9898 Co-authored-by: Andrea Peruffo <andrea.peruffo1982@gmail.com>
This commit is contained in:
parent
5e5cfff4e2
commit
c4001ba198
4 changed files with 25 additions and 18 deletions
4
.github/workflows/operator-ci.yml
vendored
4
.github/workflows/operator-ci.yml
vendored
|
@ -81,7 +81,7 @@ jobs:
|
|||
- name: Test operator running locally
|
||||
run: |
|
||||
mvn clean verify -Poperator -pl :keycloak-operator -am \
|
||||
-Dquarkus.kubernetes.deployment-target=kubernetes \
|
||||
-Dquarkus.kubernetes.image-pull-policy=IfNotPresent \
|
||||
-Doperator.keycloak.image=keycloak:${{ steps.vars.outputs.version }} \
|
||||
-Dtest.operator.custom.image=custom-keycloak:${{ steps.vars.outputs.version }} \
|
||||
-Doperator.keycloak.image-pull-policy=Never \
|
||||
|
@ -128,7 +128,7 @@ jobs:
|
|||
eval $(minikube -p minikube docker-env)
|
||||
mvn clean verify -Poperator -pl :keycloak-operator -am \
|
||||
-Dquarkus.container-image.build=true \
|
||||
-Dquarkus.kubernetes.deployment-target=kubernetes \
|
||||
-Dquarkus.kubernetes.image-pull-policy=IfNotPresent \
|
||||
-Doperator.keycloak.image=keycloak:${{ steps.vars.outputs.version }} \
|
||||
-Dquarkus.jib.jvm-arguments="-Djava.util.logging.manager=org.jboss.logmanager.LogManager","-Doperator.keycloak.image-pull-policy=Never" \
|
||||
-Dtest.operator.custom.image=custom-keycloak:${{ steps.vars.outputs.version }} \
|
||||
|
|
|
@ -77,7 +77,7 @@ Testing allows 2 methods specified in the property `test.operator.deployment` :
|
|||
mvn clean verify \
|
||||
-Dquarkus.container-image.build=true \
|
||||
-Dquarkus.container-image.tag=test \
|
||||
-Dquarkus.kubernetes.deployment-target=kubernetes \
|
||||
-Dquarkus.kubernetes.image-pull-policy=IfNotPresent \
|
||||
-Dtest.operator.deployment=remote
|
||||
```
|
||||
|
||||
|
@ -102,3 +102,18 @@ And run the tests passing an extra Java property:
|
|||
```bash
|
||||
-Dtest.operator.custom.image=custom-keycloak:latest
|
||||
```
|
||||
|
||||
### Testing using a pre-built operator image from a remote registry
|
||||
You can run the testsuite using an already built operator image from a remote image registry.
|
||||
|
||||
To do this, you need to set `quarkus.container-image.build=false` and specify the desired image
|
||||
you want to use by setting `quarkus.container-image.image=<your-image>:<your-tag>`
|
||||
|
||||
#### Example:
|
||||
|
||||
```bash
|
||||
mvn clean verify \
|
||||
-Dquarkus.container-image.build=false \
|
||||
-Dquarkus.container-image.image=quay.io/keycloak/keycloak-operator:nightly \
|
||||
-Dtest.operator.deployment=remote
|
||||
```
|
||||
|
|
1
operator/app/src/main/kubernetes/minikube.yml
Symbolic link
1
operator/app/src/main/kubernetes/minikube.yml
Symbolic link
|
@ -0,0 +1 @@
|
|||
kubernetes.yml
|
|
@ -96,19 +96,9 @@ public abstract class ClusterOperatorTest {
|
|||
}
|
||||
|
||||
private static void createRBACresourcesAndOperatorDeployment() throws FileNotFoundException {
|
||||
Log.info("Creating RBAC into Namespace " + namespace);
|
||||
List<HasMetadata> hasMetadata = k8sclient.load(new FileInputStream(TARGET_KUBERNETES_GENERATED_YML_FOLDER + deploymentTarget + ".yml"))
|
||||
.inNamespace(namespace).get();
|
||||
hasMetadata.stream()
|
||||
.map(b -> {
|
||||
if ("Deployment".equalsIgnoreCase(b.getKind()) && b.getMetadata().getName().contains("operator")) {
|
||||
((Deployment) b).getSpec().getTemplate().getSpec().getContainers().get(0).setImagePullPolicy("Never");
|
||||
}
|
||||
return b;
|
||||
}).forEach(c -> {
|
||||
Log.info("processing part : " + c.getKind() + "--" + c.getMetadata().getName() + " -- " + namespace);
|
||||
k8sclient.resource(c).inNamespace(namespace).createOrReplace();
|
||||
});
|
||||
Log.info("Creating RBAC and Deployment into Namespace " + namespace);
|
||||
k8sclient.load(new FileInputStream(TARGET_KUBERNETES_GENERATED_YML_FOLDER + deploymentTarget + ".yml"))
|
||||
.inNamespace(namespace).createOrReplace();
|
||||
}
|
||||
|
||||
private static void cleanRBACresourcesAndOperatorDeployment() throws FileNotFoundException {
|
||||
|
@ -116,6 +106,7 @@ public abstract class ClusterOperatorTest {
|
|||
k8sclient.load(new FileInputStream(TARGET_KUBERNETES_GENERATED_YML_FOLDER +deploymentTarget+".yml"))
|
||||
.inNamespace(namespace).delete();
|
||||
}
|
||||
|
||||
private static void createCRDs() {
|
||||
Log.info("Creating CRDs");
|
||||
try {
|
||||
|
@ -134,7 +125,7 @@ public abstract class ClusterOperatorTest {
|
|||
private static void registerReconcilers() {
|
||||
Log.info("Registering reconcilers for operator : " + operator + " [" + operatorDeployment + "]");
|
||||
|
||||
for (Reconciler reconciler : reconcilers) {
|
||||
for (Reconciler<?> reconciler : reconcilers) {
|
||||
final var config = configuration.getConfigurationFor(reconciler);
|
||||
if (!config.isRegistrationDelayed()) {
|
||||
Log.info("Register and apply : " + reconciler.getClass().getName());
|
||||
|
@ -216,7 +207,7 @@ public abstract class ClusterOperatorTest {
|
|||
.withLabels(Constants.DEFAULT_LABELS)
|
||||
.list()
|
||||
.getItems();
|
||||
assertThat(kcDeployments.size()).isEqualTo(0);
|
||||
assertThat(kcDeployments.size()).isZero();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue