diff --git a/.github/workflows/operator-ci.yml b/.github/workflows/operator-ci.yml index 667ddc9a776..14a3a54c392 100644 --- a/.github/workflows/operator-ci.yml +++ b/.github/workflows/operator-ci.yml @@ -145,7 +145,7 @@ jobs: -Dquarkus.container-image.build=true \ -Dquarkus.kubernetes.image-pull-policy=IfNotPresent \ -Doperator.keycloak.image=keycloak:${{ env.version_remote }} \ - -Dquarkus.jib.jvm-arguments="-Djava.util.logging.manager=org.jboss.logmanager.LogManager","-Doperator.keycloak.image-pull-policy=Never" \ + -Dquarkus.kubernetes.env.vars.operator-keycloak-image-pull-policy=Never \ -Dtest.operator.custom.image=custom-keycloak:${{ env.version_remote }} \ --no-transfer-progress -Dtest.operator.deployment=remote \ -Dtest.operator.kubernetes.ip=$(minikube ip) diff --git a/operator/Dockerfile b/operator/Dockerfile new file mode 100644 index 00000000000..6145179ac6f --- /dev/null +++ b/operator/Dockerfile @@ -0,0 +1,21 @@ +FROM registry.access.redhat.com/ubi9 AS ubi-micro-build + +ADD target/ubi-null.sh /tmp/ +RUN bash /tmp/ubi-null.sh java-17-openjdk-headless glibc-langpack-en + +FROM registry.access.redhat.com/ubi9-micro +ENV LANG en_US.UTF-8 + +COPY --from=ubi-micro-build /tmp/null/rootfs/ / + +ADD --chown=1000:0 target/quarkus-app/ /opt/keycloak + +RUN chmod -R g+rwX /opt/keycloak && \ + echo "keycloak:x:0:root" >> /etc/group && \ + echo "keycloak:x:1000:0:keycloak user:/opt/keycloak:/sbin/nologin" >> /etc/passwd + +USER 1000 + +WORKDIR /opt/keycloak + +ENTRYPOINT [ "java", "-Djava.util.logging.manager=org.jboss.logmanager.LogManager", "-jar", "quarkus-run.jar" ] diff --git a/operator/README.md b/operator/README.md index 5b895142a79..79dec3be3d3 100644 --- a/operator/README.md +++ b/operator/README.md @@ -19,6 +19,12 @@ Build the Docker image with: mvn clean package -Doperator -Dquarkus.container-image.build=true ``` +This will build a container image from `src/main/docker/Dockerfile.jvm`, using `docker` by default. `podman` is also supported if you do these steps beforehand: + +- Follow [this guide](https://quarkus.io/guides/podman#setting-docker_host-on-linux) to enable the podman user socket +- Set the `DOCKER_HOST` environment variable to point at this user socket. For example: `DOCKER_HOST=unix:///run/user/1000/podman/podman.sock`. +- You may also have to set `QUARKUS_DOCKER_EXECUTABLE_NAME=podman` + ## Configuration The Keycloak image can be configured, when starting the operator, using the Java property: diff --git a/operator/assembly.xml b/operator/assembly.xml new file mode 100644 index 00000000000..eed00454a90 --- /dev/null +++ b/operator/assembly.xml @@ -0,0 +1,26 @@ + + + operator + + + zip + + + true + + + + ${project.build.directory}/quarkus-app/ + + + **/** + + + + + + + + + + diff --git a/operator/pom.xml b/operator/pom.xml index aa3e896d0db..77fa643d985 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -35,7 +35,6 @@ 4.0.7 2.13.7.Final keycloak - registry.access.redhat.com/ubi9/openjdk-11-runtime @@ -93,6 +92,10 @@ io.quarkus quarkus-kubernetes-client + + io.quarkus + quarkus-container-image-docker + @@ -202,6 +205,24 @@ + + copy-ubi-null + validate + + copy-resources + + + ${project.build.directory} + + + ${basedir}/../quarkus/container/ + + **/ubi-null.sh + + + + + @@ -258,6 +279,27 @@ + + + org.apache.maven.plugins + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + false + ${project.build.directory}/assembly/work + + + + diff --git a/operator/src/main/resources/application.properties b/operator/src/main/resources/application.properties index d424a846450..8542c276b11 100644 --- a/operator/src/main/resources/application.properties +++ b/operator/src/main/resources/application.properties @@ -1,5 +1,6 @@ quarkus.operator-sdk.crd.apply=true -quarkus.container-image.builder=jib +quarkus.container-image.builder=docker +quarkus.docker.dockerfile-jvm-path=Dockerfile quarkus.operator-sdk.crd.validate=false # Operator config diff --git a/quarkus/container/ubi-null.sh b/quarkus/container/ubi-null.sh index bd5e9388f75..c19fd9eb8e4 100644 --- a/quarkus/container/ubi-null.sh +++ b/quarkus/container/ubi-null.sh @@ -44,7 +44,7 @@ dnf install -y findutils diffutils # Install core packages to chroot rootfs="$(realpath rootfs)" mkdir -p "$rootfs" -/dev/null