diff --git a/bom/runtime/pom.xml b/bom/runtime/pom.xml index d7f395df3d6c3..078f21581ddb1 100644 --- a/bom/runtime/pom.xml +++ b/bom/runtime/pom.xml @@ -139,7 +139,7 @@ 2.10.3 1.3.0 1.3.41 - 0.10.7 + 0.10.8 0.10.0 2.14.6 3.0.1 diff --git a/extensions/kubernetes/deployment/src/main/java/io/quarkus/kubernetes/deployment/KubernetesProcessor.java b/extensions/kubernetes/deployment/src/main/java/io/quarkus/kubernetes/deployment/KubernetesProcessor.java index 939cfab50c49f..2ddf821f678bc 100644 --- a/extensions/kubernetes/deployment/src/main/java/io/quarkus/kubernetes/deployment/KubernetesProcessor.java +++ b/extensions/kubernetes/deployment/src/main/java/io/quarkus/kubernetes/deployment/KubernetesProcessor.java @@ -27,9 +27,9 @@ import io.dekorate.kubernetes.configurator.AddPort; import io.dekorate.kubernetes.decorator.AddLivenessProbeDecorator; import io.dekorate.kubernetes.decorator.AddReadinessProbeDecorator; -import io.dekorate.kubernetes.decorator.AddRoleBindingDecorator; -import io.dekorate.kubernetes.decorator.AddServiceAccountDecorator; -import io.dekorate.kubernetes.decorator.ApplyServiceAccountDecorator; +import io.dekorate.kubernetes.decorator.AddRoleBindingResourceDecorator; +import io.dekorate.kubernetes.decorator.AddServiceAccountResourceDecorator; +import io.dekorate.kubernetes.decorator.ApplyServiceAccountNamedDecorator; import io.dekorate.processor.SimpleFileWriter; import io.dekorate.project.BuildInfo; import io.dekorate.project.FileProjectFactory; @@ -192,11 +192,10 @@ private void applyBuildItems(Session session, ApplicationInfoBuildItem applicati //Handle RBAC if (!kubernetesPortBuildItems.isEmpty()) { - session.resources().decorate(new ApplyServiceAccountDecorator(applicationInfo.getName(), - applicationInfo.getName())); - session.resources().decorate(new AddServiceAccountDecorator(session.resources())); - kubernetesRoleBuildItems.forEach(r -> session.resources() - .decorate(new AddRoleBindingDecorator(session.resources(), r.getRole()))); + session.resources().decorate(new ApplyServiceAccountNamedDecorator()); + session.resources().decorate(new AddServiceAccountResourceDecorator()); + kubernetesRoleBuildItems + .forEach(r -> session.resources().decorate(new AddRoleBindingResourceDecorator(r.getRole()))); } //Handle probes diff --git a/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/pom.xml b/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/pom.xml new file mode 100644 index 0000000000000..6a4856b7c3221 --- /dev/null +++ b/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/pom.xml @@ -0,0 +1,117 @@ + + + 4.0.0 + org.acme + kubernetes-with-quarkus-app-name + 0.1-SNAPSHOT + + UTF-8 + 2.22.0 + 1.8 + UTF-8 + 1.8 + + + + + io.quarkus + quarkus-bom + @project.version@ + pom + import + + + + + + io.quarkus + quarkus-resteasy + + + io.quarkus + quarkus-kubernetes + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + + io.quarkus + quarkus-maven-plugin + @project.version@ + + + + build + + + + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + + + + + + + + native + + + native + + + + + + io.quarkus + quarkus-maven-plugin + @project.version@ + + + + native-image + + + true + + + + + + maven-failsafe-plugin + ${surefire-plugin.version} + + + + integration-test + verify + + + + ${project.build.directory}/${project.build.finalName}-runner + + + + + + + + + + diff --git a/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/src/main/java/org/acme/Hello.java b/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/src/main/java/org/acme/Hello.java new file mode 100644 index 0000000000000..ad80766a17747 --- /dev/null +++ b/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/src/main/java/org/acme/Hello.java @@ -0,0 +1,16 @@ +package org.acme; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("/hello") +public class Hello { + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + return "hello"; + } +} \ No newline at end of file diff --git a/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/src/main/resources/application.properties b/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/src/main/resources/application.properties new file mode 100644 index 0000000000000..696921db248cd --- /dev/null +++ b/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/src/main/resources/application.properties @@ -0,0 +1,10 @@ +# Configuration file +quarkus.application.name=test +kubernetes.deployment.target=kubernetes,openshift +kubernetes.name=foo +kubernetes.group=bar +kubernetes.version=1.0-kube + +openshift.name=ofoo +openshift.group=obar +openshift.version=1.0-openshift diff --git a/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/verify.groovy b/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/verify.groovy new file mode 100644 index 0000000000000..e104551f45db6 --- /dev/null +++ b/integration-tests/kubernetes/src/it/kubernetes-with-quarkus-app-name/verify.groovy @@ -0,0 +1,38 @@ +import io.dekorate.utils.Serialization +import io.dekorate.deps.kubernetes.api.model.* +import io.dekorate.deps.kubernetes.api.model.apps.Deployment; + +//Check that file exits +String base = basedir + +File openshiftYml = new File(base, "target/kubernetes/openshift.yml") +assert openshiftYml.exists() + +openshiftYml.withInputStream { stream -> + //Check that its parse-able + KubernetesList list = Serialization.unmarshalAsList(stream) + assert list != null + list.items.each { + assert it.metadata.name == "ofoo" || it.metadata.name == "s2i-java" + assert it.metadata.labels.get("app") == "ofoo" + assert it.metadata.labels.get("version") == "1.0-openshift" + + } +} + +File kubernetesYml = new File(base, "target/kubernetes/kubernetes.yml") +assert kubernetesYml.exists() + +kubernetesYml.withInputStream { stream -> + //Check that its parse-able + KubernetesList list = Serialization.unmarshalAsList(stream) + assert list != null + list.items.each { + assert it.metadata.name == "foo" + assert it.metadata.labels.get("app") == "foo" + assert it.metadata.labels.get("version") == "1.0-kube" + + } + Deployment deployment = list.items.find{r -> r.kind == "Deployment"} + assert deployment != null +}