7.5. 使用 EAP Operator 在 OpenShift 上部署 Java 应用程序
EAP 操作器有助于在 OpenShift 上自动化 Java 应用部署。如需有关 EAP Operator API 的信息,请参阅 EAP Operator: API Information。
先决条件
- 已安装 EAP operator。如需有关安装 EAP 操作器的更多信息,请参阅使用 Webconsole 和 CLI 安装 EAP Operator。
- 您已使用 JBoss EAP for OpenShift Source-to-Image(S2I)构建镜像构建了用户应用的 Docker 镜像。
-
如果要在 OpenShift 上部署应用后启用自动升级
,则 eap-s2i-build模板中的APPLICATION_IMAGE参数包含镜像流。有关使用eap-s2i-build 模板构建应用镜像的更多信息,请参阅使用 eap- s2i-build 模板构建应用镜像。 -
如果应用的 CustomResourceDefinition(CRD)文件引用了一个对象,则已创建了
Secret对象。有关创建新Secret对象的更多信息,请参阅 创建 Secret。 -
如果应用程序的 CRD 文件引用了
ConfigMap,则创建了 ConfigMap。有关创建ConfigMap的详情,请参阅 创建 ConfigMap。 -
如果您选择从
standalone.xml文件创建ConfigMap,请从该文件创建 ConfigMap。有关从standalone.xml文件创建ConfigMap的详情,请参考 从 standalone.xml 文件创建 ConfigMap。
JBoss EAP 7 不支持从 ConfigMap 提供 standalone.xml 文件。
流程
- 打开 Web 浏览器并登录到 OperatorHub。
- 选择您要用于 Java 应用程序的项目或命名空间。
- 导航到 Installed Operator,再选择 JBoss EAP operator。
- 在 Overview 选项卡上,单击 Create Instance 链接。
指定应用程序镜像详情。
应用镜像指定包含 Java 应用的 Docker 镜像。镜像必须使用 JBoss EAP for OpenShift Source-to-Image(S2I)构建镜像进行构建。如果
applicationImage字段与 imagestreamtag 对应,对镜像的任何更改都会触发应用程序的自动升级。您可以提供以下对 OpenShift 应用镜像的 JBoss EAP 的以下引用:
- 镜像名称:mycomp/myapp
- 标签:mycomp/myapp:1.0
- 摘要: mycomp/myapp:@sha256:0af38bc38be93116b6a1d86a9c78bd14cd527121970899d719baf78e5dc7bfd2
- imagestreamtag: my-app:latest
指定应用程序的大小。例如:
spec: replicas:2
spec: replicas:2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
env spec配置应用程序环境。环境变量 可以直接来自值,如 POSTGRESQL_SERVICE_HOST 或Secret对象,如 POSTGRESQL_USER。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 完成与应用程序部署相关的以下可选配置:
- 指定服务器数据目录的存储要求。如需更多信息,请参阅为应用程序配置持久性存储。
指定您在
WildFlyServerSpec中创建的Secret名称,将其挂载为运行应用程序的 Pod 中的卷。例如:spec: secrets: - my-secretspec: secrets: - my-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow Secret挂载于/etc/secrets/<secret name>,每个键/值都保存为一个文件。文件的名称是键,内容是值。Secret作为 pod 中的卷挂载。以下示例演示了可用于查找键值的命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意修改
Secret对象可能会导致项目不一致。红帽不修改现有的Secret对象,而是建议创建一个内容与旧对象相同的新对象。然后,您可以根据需要更新内容,并将 operator 自定义资源(CR)中的引用从旧改为 new。这被视为一个新的 CR 更新,pod 会被重新载入。指定您在
WildFlyServerSpec中创建的ConfigMap名称,将其挂载为运行应用程序的 Pod 中的卷。例如:spec: configMaps: - my-config
spec: configMaps: - my-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap挂载于/etc/configmaps/<configmap name>,每个键/值都存储为一个文件。文件的名称是键,内容是值。ConfigMap挂载为 pod 中的卷。查找键值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意修改
ConfigMap可能会导致项目不一致。红帽建议创建一个与旧ConfigMap相同内容的新ConfigMap,而不是修改现有的 ConfigMap。然后,您可以根据需要更新内容,并将 operator 自定义资源(CR)中的引用从旧改为 new。这被视为一个新的 CR 更新,pod 会被重新载入。如果您选择有自己的独立
ConfigMap,请提供ConfigMap的名称以及standalone.xml文件的键:standaloneConfigMap: name: clusterbench-config-map key: standalone-openshift.xmlstandaloneConfigMap: name: clusterbench-config-map key: standalone-openshift.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意JBoss EAP 7 不支持从
standalone.xml文件创建ConfigMap。如果要禁用 OpenShift 中创建默认 HTTP 路由,请将
disableHTTPRoute设置为true:spec: disableHTTPRoute: true
spec: disableHTTPRoute: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.1. 创建 Secret 复制链接链接已复制到粘贴板!
如果应用的 CustomResourceDefinition(CRD)文件引用了 Secret,您必须先创建 Secret,然后才能使用 EAP 操作器将应用部署到 OpenShift 中。
流程
-
创建
Secret:
oc create secret generic my-secret --from-literal=my-key=devuser --from-literal=my-password='my-very-secure-pasword'
$ oc create secret generic my-secret --from-literal=my-key=devuser --from-literal=my-password='my-very-secure-pasword'
7.5.2. 创建 ConfigMap 复制链接链接已复制到粘贴板!
如果应用程序的 CustomResourceDefinition(CRD)文件引用 spec.ConfigMaps 字段中的 ConfigMap,您必须先创建 ConfigMap,然后才能使用 EAP 操作器在 OpenShift 中部署应用程序。
流程
- 创建 configmap:
oc create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2 configmap/my-config created
$ oc create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2
configmap/my-config created
7.5.3. 从 standalone.xml 文件创建 ConfigMap 复制链接链接已复制到粘贴板!
您可以创建自己的 JBoss EAP 单机配置,而不使用来自 JBoss EAP for OpenShift Source-to-Image(S2I)的应用镜像中的配置。standalone.xml 文件必须放在可由 Operator 访问的 ConfigMap 中。
注意:JBoss EAP 7 不支持从 ConfigMap 提供 standalone.xml 文件。
流程
-
从
standalone.xml文件创建ConfigMap:
oc create configmap clusterbench-config-map --from-file examples/clustering/config/standalone-openshift.xml configmap/clusterbench-config-map created
$ oc create configmap clusterbench-config-map --from-file examples/clustering/config/standalone-openshift.xml
configmap/clusterbench-config-map created
7.5.4. 为应用程序配置持久性存储 复制链接链接已复制到粘贴板!
如果您的应用程序需要对一些数据进行持久性存储,如在 pod 重启后必须保留的事务或消息传递日志,请配置存储规格。如果存储 spec 为空,应用程序的每个 pod 都会使用一个 EmptyDir 卷。但是,此卷在对应的 pod 停止后不会保留。
流程
指定
volumeClaimTemplate,以配置资源要求,以存储 JBoss EAP 单机数据目录。模板的名称派生自 JBoss EAP 的名称。对应的卷被挂载为ReadWriteOnce访问模式。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 满足此存储要求的持久卷挂载到
/eap/standalone/data目录。