7.5. 使用 EAP Operator 在 OpenShift 上部署 Java 应用程序


EAP 操作器有助于在 OpenShift 上自动化 Java 应用部署。如需有关 EAP Operator API 的信息,请参阅 EAP Operator: API Information

先决条件

  • 已安装 EAP operator。如需有关安装 EAP 操作器的更多信息,请参阅使用 WebconsoleCLI 安装 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 文件。

流程

  1. 打开 Web 浏览器并登录到 OperatorHub。
  2. 选择您要用于 Java 应用程序的项目或命名空间
  3. 导航到 Installed Operator,再选择 JBoss EAP operator
  4. Overview 选项卡上,单击 Create Instance 链接。
  5. 指定应用程序镜像详情。

    应用镜像指定包含 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
  6. 指定应用程序的大小。例如:

    spec:
      replicas:2
  7. 使用 env spec 配置应用程序环境。环境变量 可以直接来自值,如 POSTGRESQL_SERVICE_HOST 或 Secret 对象,如 POSTGRESQL_USER。例如:

    spec:
      env:
      - name: POSTGRESQL_SERVICE_HOST
        value: postgresql
      - name: POSTGRESQL_SERVICE_PORT
        value: '5432'
      - name: POSTGRESQL_DATABASE
        valueFrom:
          secretKeyRef:
            key: database-name
            name: postgresql
      - name: POSTGRESQL_USER
        valueFrom:
          secretKeyRef:
            key: database-user
            name: postgresql
      - name: POSTGRESQL_PASSWORD
        valueFrom:
          secretKeyRef:
            key: database-password
            name: postgresql
  8. 完成与应用程序部署相关的以下可选配置:

    • 指定服务器数据目录的存储要求。如需更多信息,请参阅为应用程序配置持久性存储
    • 指定您在 WildFlyServerSpec 中创建的 Secret 名称,将其挂载为运行应用程序的 Pod 中的卷。例如:

      spec:
        secrets:
          - my-secret

      Secret 挂载于 /etc/secrets/<secret name>,每个键/值都保存为一个文件。文件的名称是键,内容是值。Secret 作为 pod 中的卷挂载。以下示例演示了可用于查找键值的命令:

      $ ls /etc/secrets/my-secret/
      my-key  my-password
      $ cat /etc/secrets/my-secret/my-key
      devuser
      $ cat /etc/secrets/my-secret/my-password
      my-very-secure-pasword
      注意

      修改 Secret 对象可能会导致项目不一致。红帽不修改现有的 Secret 对象,而是建议创建一个内容与旧对象相同的新对象。然后,您可以根据需要更新内容,并将 operator 自定义资源(CR)中的引用从旧改为 new。这被视为一个新的 CR 更新,pod 会被重新载入。

    • 指定您在 WildFlyServerSpec 中创建的 ConfigMap 名称,将其挂载为运行应用程序的 Pod 中的卷。例如:

      spec:
        configMaps:
        - my-config

      ConfigMap 挂载于 /etc/configmaps/<configmap name>,每个键/值都存储为一个文件。文件的名称是键,内容是值。ConfigMap 挂载为 pod 中的卷。查找键值:

      $ ls /etc/configmaps/my-config/
      key1 key2
      $ cat /etc/configmaps/my-config/key1
      value1
      $ cat /etc/configmaps/my-config/key2
      value2
      注意

      修改 ConfigMap 可能会导致项目不一致。红帽建议创建一个与旧 ConfigMap 相同内容的新 ConfigMap,而不是修改现有的 ConfigMap。然后,您可以根据需要更新内容,并将 operator 自定义资源(CR)中的引用从旧改为 new。这被视为一个新的 CR 更新,pod 会被重新载入。

    • 如果您选择有自己的独立 ConfigMap,请提供 ConfigMap 的名称以及 standalone.xml 文件的键:

        standaloneConfigMap:
          name: clusterbench-config-map
          key: standalone-openshift.xml
      注意

      JBoss EAP 7 不支持从 standalone.xml 文件创建 ConfigMap

    • 如果要禁用 OpenShift 中创建默认 HTTP 路由,请将 disableHTTPRoute 设置为 true

      spec:
        disableHTTPRoute: true

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'

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

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

7.5.4. 为应用程序配置持久性存储

如果您的应用程序需要对一些数据进行持久性存储,如在 pod 重启后必须保留的事务或消息传递日志,请配置存储规格。如果存储 spec 为空,应用程序的每个 pod 都会使用一个 EmptyDir 卷。但是,此卷在对应的 pod 停止后不会保留。

流程

  1. 指定 volumeClaimTemplate,以配置资源要求,以存储 JBoss EAP 单机数据目录。模板的名称派生自 JBoss EAP 的名称。对应的卷被挂载为 ReadWriteOnce 访问模式。

    spec:
      storage:
        volumeClaimTemplate:
          spec:
            resources:
              requests:
                storage: 3Gi

    满足此存储要求的持久卷挂载到 /eap/standalone/data 目录。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部