《OpenShift 4.x HOL教程汇总》
已在 OpenShift 4.13 环境中运行
我们除了可以参考《 OpenShift 4 之 Quarkus(1)创建第一个Quarkus应用》外,还可以自动从应用源码完成在OpenShift上的应用部署。
在本地容器中运行
- 生成可执行程序
$ mvn package -Pnative -Dquarkus.native.container-runtime=podman -Dquarkus.native.remote-container-build=true -Dquarkus.container-image.build=true
$ ll target/hello-1.0.0-SNAPSHOT-runner
- 将应用打包成镜像 quarkus/hello-app
$ podman build -f src/main/docker/Dockerfile.native -t quarkus/hello-app .
$ podman image ls hello-app
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/quarkus/hello-app latest 56c8e9278121 About a minute ago 141 MB
- 运行容器,然后可进行测试。
$ podman run -i --rm -p 8080:8080 quarkus/hello-app
$ curl localhost:8080/hello
Hello from RESTEasy Reactive
将Quarkus按Java应用部署到OpenShift
$ QUARKUS_VERSION=3.2.2
$ mvn io.quarkus.platform:quarkus-maven-plugin:${QUARKUS_VERSION}.Final:create \
-DplatformVersion=${QUARKUS_VERSION}.Final \
-DprojectGroupId=org.acme \
-DprojectArtifactId=getting-started \
-Dextensions='resteasy'
$ mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-openshift"
$ PROJECT_NAME=quarkus
$ oc new-project ${PROJECT_NAME}
$ mvnw clean package \
-Dquarkus.openshift.build-strategy=docker \
-Dquarkus.kubernetes.deploy=true \
-Dquarkus.openshift.deployment-kind=Deployment \
-Dquarkus.container-image.group=${PROJECT_NAME} \
-Dquarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000 \
-Dquarkus.openshift.route.expose=true
$ oc get pod
NAME READY STATUS RESTARTS AGE
getting-started-1-build 0/1 Completed 0 4m47s
getting-started-74bcbb8f57-c5kng 1/1 Running 0 3m18s
$ curl $(oc get route getting-started -ojsonpath='{.spec.host}')/hello
Hello RESTEasy
说明:以下方法可以使用 DeploymentConfig 部署。
$ mvnw clean package \
-Dquarkus.openshift.build-strategy=docker \
-Dquarkus.kubernetes.deploy=true \
-Dquarkus.openshift.route.expose=true
将Quarkus应用按可执行程序部署到OpenShift
$ QUARKUS_VERSION=3.2.2
$ mvn io.quarkus.platform:quarkus-maven-plugin:${QUARKUS_VERSION}.Final:create \
-DplatformVersion=${QUARKUS_VERSION}.Final \
-DprojectGroupId=org.acme \
-DprojectArtifactId=getting-started \
-Dextensions='resteasy'
$ mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-openshift"
$ PROJECT_NAME=quarkus
$ oc new-project ${PROJECT_NAME}
$ mvnw clean package \
-Pnative \
-Dquarkus.native.container-build=true \
-Dquarkus.openshift.build-strategy=docker \
-Dquarkus.kubernetes.deploy=true \
-Dquarkus.openshift.deployment-kind=Deployment \
-Dquarkus.container-image.group=${PROJECT_NAME} \
-Dquarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000 \
-Dquarkus.openshift.route.expose=true
$ oc get pod
NAME READY STATUS RESTARTS AGE
getting-started-1-build 0/1 Completed 0 103s
getting-started-59bd996b54-8khvb 1/1 Running 0 53s
$ curl $(oc get route getting-started -ojsonpath='{.spec.host}')/hello
Hello RESTEasy
说明:以下方法可以使用 DeploymentConfig 部署。
$ mvnw clean package \
-Pnative \
-Dquarkus.native.container-build=true \
-Dquarkus.openshift.build-strategy=docker \
-Dquarkus.kubernetes.deploy=true \
-Dquarkus.openshift.route.expose=true
参考
https://quarkus.io/guides/deploying-to-openshift
https://quarkus.pro/guides/deploying-to-openshift-s2i.html