diff --git a/operator-framework/pom.xml b/operator-framework/pom.xml index 7fe42fff63..40ec6c9d20 100644 --- a/operator-framework/pom.xml +++ b/operator-framework/pom.xml @@ -12,7 +12,21 @@ <artifactId>operator-framework</artifactId> <name>Operator SDK - Framework - Plain Java</name> + <dependencies> + <!-- https://mvnrepository.com/artifact/org.testcontainers/k3s --> + <dependency> + <groupId>com.dajudge.kindcontainer</groupId> + <artifactId>kindcontainer</artifactId> + <version>1.4.2</version> + <scope>test</scope> + </dependency> +<!-- todo move to dependency management --> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-annotations</artifactId> + <version>2.15.2</version> + </dependency> <dependency> <groupId>io.javaoperatorsdk</groupId> <artifactId>operator-framework-core</artifactId> @@ -81,11 +95,6 @@ <version>${project.version}</version> <scope>test</scope> </dependency> - <dependency> - <groupId>io.javaoperatorsdk</groupId> - <artifactId>jenvtest</artifactId> - <scope>test</scope> - </dependency> </dependencies> <build> diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerRelatedBehaviorITS.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerRelatedBehaviorITS.java index 36e4fd23f6..89288313e1 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerRelatedBehaviorITS.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerRelatedBehaviorITS.java @@ -14,11 +14,11 @@ import io.fabric8.kubernetes.api.model.rbac.ClusterRoleBinding; import io.fabric8.kubernetes.api.model.rbac.Role; import io.fabric8.kubernetes.api.model.rbac.RoleBinding; +import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.fabric8.kubernetes.client.utils.KubernetesResourceUtil; -import io.javaoperatorsdk.jenvtest.junit.EnableKubeAPIServer; import io.javaoperatorsdk.operator.health.InformerHealthIndicator; import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension; import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource; @@ -26,6 +26,8 @@ import io.javaoperatorsdk.operator.sample.informerrelatedbehavior.InformerRelatedBehaviorTestCustomResource; import io.javaoperatorsdk.operator.sample.informerrelatedbehavior.InformerRelatedBehaviorTestReconciler; +import com.dajudge.kindcontainer.ApiServerContainer; + import static io.javaoperatorsdk.operator.sample.informerrelatedbehavior.InformerRelatedBehaviorTestReconciler.CONFIG_MAP_DEPENDENT_RESOURCE; import static io.javaoperatorsdk.operator.sample.informerrelatedbehavior.InformerRelatedBehaviorTestReconciler.INFORMER_RELATED_BEHAVIOR_TEST_RECONCILER; import static org.assertj.core.api.Assertions.assertThat; @@ -46,7 +48,8 @@ * The test ends with "ITS" (Special) since it needs to run separately from other ITs * </p> */ -@EnableKubeAPIServer(apiServerFlags = {"--min-request-timeout", "1"}, updateKubeConfigFile = true) +// @EnableKubeAPIServer(apiServerFlags = {"--min-request-timeout", "1"}, updateKubeConfigFile = +// true) class InformerRelatedBehaviorITS { private static final Logger log = LoggerFactory.getLogger(InformerRelatedBehaviorITS.class); @@ -54,15 +57,21 @@ class InformerRelatedBehaviorITS { public static final String TEST_RESOURCE_NAME = "test1"; public static final String ADDITIONAL_NAMESPACE_SUFFIX = "-additional"; - KubernetesClient adminClient = new KubernetesClientBuilder().build(); + KubernetesClient adminClient; InformerRelatedBehaviorTestReconciler reconciler; String actualNamespace; String additionalNamespace; Operator operator; + ApiServerContainer<?> apiServerContainer = new ApiServerContainer<>(); volatile boolean replacementStopHandlerCalled = false; @BeforeEach void beforeEach(TestInfo testInfo) { + apiServerContainer.start(); + + adminClient = new KubernetesClientBuilder() + .withConfig(Config.fromKubeconfig(apiServerContainer.getKubeconfig())) + .build(); LocallyRunOperatorExtension.applyCrd(InformerRelatedBehaviorTestCustomResource.class, adminClient); testInfo.getTestMethod().ifPresent(method -> { @@ -81,6 +90,7 @@ void cleanup() { } adminClient.resource(dependentConfigMap()).delete(); adminClient.resource(testCustomResource()).delete(); + apiServerContainer.stop(); } @Test @@ -299,13 +309,12 @@ private void assertRuntimeInfoForSecondaryPermission(Operator operator) { } KubernetesClient clientUsingServiceAccount() { - KubernetesClient client = new KubernetesClientBuilder() - .withConfig(new ConfigBuilder() + return new KubernetesClientBuilder() + .withConfig(new ConfigBuilder(Config.fromKubeconfig(apiServerContainer.getKubeconfig())) .withImpersonateUsername("rbac-test-user") .withNamespace(actualNamespace) .build()) .build(); - return client; } Operator startOperator(boolean stopOnInformerErrorDuringStartup) {