Red Hat JBoss Web Server for OpenShift
安装并使用 Red Hat JBoss Web Server for OpenShift
摘要
第 1 章 简介 复制链接链接已复制到粘贴板!
1.1. 什么是 Red Hat JBoss Web Server for OpenShift? 复制链接链接已复制到粘贴板!
Red Hat JBoss Web Server (JWS) 5.2 的 Apache Tomcat 9 组件作为专为 OpenShift 设计的容器化镜像提供。开发人员可以使用此镜像构建、扩展和测试 Java Web 应用程序,以便在混合云环境中进行部署。
第 2 章 开始前 复制链接链接已复制到粘贴板!
2.1. Red Hat JBoss Web Server 和 JWS for OpenShift 的不同 复制链接链接已复制到粘贴板!
JWS for OpenShift 镜像与常规发行的 JWS 的不同包括:
-
JWS for OpenShift 镜像内的
JWS_HOME/tomcat<version>/的位置是:/opt/webserver/。 - JWS for OpenShift 镜像 JWS 不包含 Apache HTTP 服务器。所有负载平衡都由 OpenShift 路由器处理,而不是 Apache HTTP 服务器 mod_cluster 或 mod_jk 连接器。
有关 JWS 功能的文档,请参阅 Red Hat JBoss Web Server 文档。
2.2. 版本兼容性和支持 复制链接链接已复制到粘贴板!
如需了解有关 OpenShift 镜像版本兼容性的详细信息,请参阅 OpenShift Container Platform Tested Integrations 页面中的 xPaaS 表。
部署新应用程序时,应使用 JWS for OpenShift 镜像和应用程序模板版本 5.2。
JWS for OpenShift 镜像和应用程序模板版本 5.1 已弃用,不再接收更新。
2.3. 对红帽容器镜像进行健康检查 复制链接链接已复制到粘贴板!
OpenShift 可用的所有容器镜像都有一个与它关联的健康评级。您可以通过进入到 容器镜像目录、搜索 JBoss Web Server 并选择 5.2 版本来查找 Red Hat JBoss Web Server 的健康状况评级。
有关如何为实时和就绪测试 OpenShift 容器的更多信息,请参阅以下文档
第 3 章 开始使用 复制链接链接已复制到粘贴板!
3.1. 初始设置 复制链接链接已复制到粘贴板!
本指南中的说明遵循 OpenShift Primer,假设受支持的 OpenShift 配置或非生产环境的 OpenShift 实例,如 OpenShift Primer 所述。
JWS for OpenShift 在安装 OpenShift 期间自动创建,以及其他默认镜像流和模板。
用于 OpenShift 应用程序模板的 JWS 为 Tomcat 9 发布。
3.2. 使用 JWS for OpenShift Source-to-Image (S2I) 过程 复制链接链接已复制到粘贴板!
要运行并配置 JWS for OpenShift 镜像,使用带有应用程序参数和环境变量的 OpenShift S2I 流程。
用于 JWS for OpenShift 的 S2I 流程可以正常工作:
如果
configuration/源目录中有一个 Maven settings.xml 文件,则会将其移到新镜像的$HOME/.m2/中。有关 Maven 和 Maven settings.xml 文件的更多信息,请参阅 Apache Maven 项目网站。
如果源存储库中有一个 pom.xml 文件,则使用
$MAVEN_ARGS环境变量的内容触发 Maven 构建。默认情况下,
package目标与openshift配置集一起使用,包括跳过测试的参数 (-DskipTests),并启用 Red Hat GA 存储库 (-Dcom.redhat.xpaas.repo.redhatga)。成功 Maven 构建的结果被复制到
/opt/webserver/webapps/中。这包括$ARTIFACT_DIR环境变量指定的源目录中的所有 WAR 文件。$ARTIFACT_DIR的默认值为target/目录。使用
MAVEN_ARGS_APPEND环境变量来修改 Maven 参数。-
deployments/源目录中的所有 WAR 文件都复制到/opt/webserver/webapps/中。 -
configuration/源目录中的所有文件都复制到/opt/webserver/conf/(不包括 Maven settings.xml 文件)。 lib/源目录中的所有文件都复制到/opt/webserver/lib/中。注意如果要使用自定义 Tomcat 配置文件,文件名应与普通的 Tomcat 安装相同。例如:context.xml 和 server.xml。
有关配置 S2I 进程以使用自定义 Maven 工件存储库镜像的指南,请参阅 Artifact Repository Mirrors 部分。
3.2.1. 使用现有的 maven 二进制文件为 OpenShift 应用创建一个 JWS 复制链接链接已复制到粘贴板!
使用 oc start-build 命令在 OpenShift 上部署现有的应用程序。
先决条件:要在 JWS for OpenShift 上部署的应用程序的 .war、.ear 或 .jar。
在本地文件系统上准备目录结构。
创建包含未包含在二进制文件中的任何内容的源目录(如果需要,请参阅 使用 JWS for OpenShift Source-to-Image (S2I)进程),然后创建一个子目录
deployments/:mkdir -p <build_dir>/deployments
$ mkdir -p <build_dir>/deploymentsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件(
.war,.ear,.jar)复制到deployments/:cp /path/to/binary/<filenames_with_extensions> <build_dir>/deployments/
$ cp /path/to/binary/<filenames_with_extensions> <build_dir>/deployments/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意源目录的
deployments/子目录中的应用程序存档被复制到 OpenShift 上构建的镜像的$JWS_HOME/webapps/目录中。要部署应用程序,包含 Web 应用程序数据的目录层次结构必须被正确构建(请参阅 第 3.2 节 “使用 JWS for OpenShift Source-to-Image (S2I) 过程”)。登录到 OpenShift 实例:
oc login <url>
$ oc login <url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,创建一个新项目:
oc new-project <project-name>
$ oc new-project <project-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc get 识别用于应用程序的 OpenShift 镜像流的 JWS 是 -n openshift:oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
$ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' ' jboss-webserver50-tomcat9-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意选项
-n openshift指定要使用的项目。oc get 是 -n openshift从openshift项目检索(get)镜像流资源(即)。创建新构建配置,指定镜像流和应用程序名称:
oc new-build --binary=true \ --image-stream=jboss-webserver50-tomcat9-openshift \ --name=<my-jws-on-openshift-app>
$ oc new-build --binary=true \ --image-stream=jboss-webserver50-tomcat9-openshift \ --name=<my-jws-on-openshift-app>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指示 OpenShift 使用之前创建的 源目录进行 OpenShift 镜像构建的二进制输入:
oc start-build <my-jws-on-openshift-app> --from-dir=./<build_dir> --follow
$ oc start-build <my-jws-on-openshift-app> --from-dir=./<build_dir> --followCopy to Clipboard Copied! Toggle word wrap Toggle overflow 根据镜像创建新 OpenShift 应用程序:
oc new-app <my-jws-on-openshift-app>
$ oc new-app <my-jws-on-openshift-app>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 公开服务使应用程序可以被用户访问:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索公开路由的地址:
oc get routes --no-headers -o custom-columns='host:spec.host' my-jws-on-openshift-app
oc get routes --no-headers -o custom-columns='host:spec.host' my-jws-on-openshift-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要在浏览器中访问应用程序: http:// <address_of_exposed_route> / & lt ;my-war-ear-jar-filename-without-extension>
3.2.2. 示例:使用现有 maven 二进制文件为 OpenShift 应用程序创建 JWS 复制链接链接已复制到粘贴板!
以下示例使用 第 3.2.1 节 “使用现有的 maven 二进制文件为 OpenShift 应用创建一个 JWS” 中的步骤使用 tomcat-websocket-chat Quickstart。
3.2.2.1. 先决条件 复制链接链接已复制到粘贴板!
获取 WAR 应用程序存档或在本地构建应用程序。
克隆源代码:
git clone https://github.com/jboss-openshift/openshift-quickstarts.git
$ git clone https://github.com/jboss-openshift/openshift-quickstarts.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 构建应用程序:
cd openshift-quickstarts/tomcat-websocket-chat/
$ cd openshift-quickstarts/tomcat-websocket-chat/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在本地文件系统上准备目录结构。
在本地文件系统和
deployments/子目录上为二进制构建创建源目录。将 WAR 归档复制到deployments/中:ls
[tomcat-websocket-chat]$ ls pom.xml README.md src/ target/Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir -p ocp/deployments
$ mkdir -p ocp/deploymentsCopy to Clipboard Copied! Toggle word wrap Toggle overflow cp target/websocket-chat.war ocp/deployments/
$ cp target/websocket-chat.war ocp/deployments/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.2.2. 在 OpenShift 中设置示例应用程序 复制链接链接已复制到粘贴板!
登录到 OpenShift 实例:
oc login <url>
$ oc login <url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,创建一个新项目:
oc new-project jws-bin-demo
$ oc new-project jws-bin-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc get 识别用于应用程序的 OpenShift 镜像流的 JWS 是 -n openshift:oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
$ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' ' jboss-webserver50-tomcat9-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新构建配置,指定镜像流和应用程序名称:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动二进制构建。指示 OpenShift 将源目录用于 OpenShift 镜像构建的二进制输入:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据镜像创建新 OpenShift 应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 公开服务使应用程序可以被用户访问:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索公开路由的地址:
oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-app
oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在浏览器中访问应用程序: http:// <address_of_exposed_route>/websocket-chat
3.2.3. 从源代码为 OpenShift 应用创建一个 JWS 复制链接链接已复制到粘贴板!
有关从源代码创建新 OpenShift 应用程序的详细信息,请参阅 OpenShift.com - 从源代码创建应用程序。
在继续操作前,请确保应用程序的数据被正确结构化(请参阅 第 3.2 节 “使用 JWS for OpenShift Source-to-Image (S2I) 过程”)。
登录到 OpenShift 实例:
oc login <url>
$ oc login <url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,创建一个新项目:
oc new-project <project-name>
$ oc new-project <project-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc get 识别用于应用程序的 OpenShift 镜像流的 JWS 是 -n openshift:oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
$ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' ' jboss-webserver50-tomcat9-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Red Hat JBoss Web Server for OpenShift 镜像从源代码创建新的 OpenShift 应用程序,使用
--image-stream选项:oc new-app \ <source_code_location> \ --image-stream=jboss-webserver50-tomcat9-openshift \ --name=<openshift_application_name>
$ oc new-app \ <source_code_location> \ --image-stream=jboss-webserver50-tomcat9-openshift \ --name=<openshift_application_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc new-app \ https://github.com/jboss-openshift/openshift-quickstarts.git#master \ --image-stream=jboss-webserver50-tomcat9-openshift \ --context-dir='tomcat-websocket-chat' \ --name=jws-wsch-app
$ oc new-app \ https://github.com/jboss-openshift/openshift-quickstarts.git#master \ --image-stream=jboss-webserver50-tomcat9-openshift \ --context-dir='tomcat-websocket-chat' \ --name=jws-wsch-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 源代码添加到镜像中,并编译源代码。也创建了构建配置和服务。
公开应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索公开路由的地址:
oc get routes --no-headers -o custom-columns='host:spec.host' <openshift_application_name>
oc get routes --no-headers -o custom-columns='host:spec.host' <openshift_application_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 要在浏览器中访问应用程序: http:// <address_of_exposed_route> / <java_application_name>
第 4 章 参考 复制链接链接已复制到粘贴板!
4.1. Source-to-Image(S2I) 复制链接链接已复制到粘贴板!
Red Hat JBoss Web Server for OpenShift 镜像包括 S2I 脚本和 Maven。
4.1.1. 将 maven 工件存储库镜像与 JWS 用于 OpenShift 复制链接链接已复制到粘贴板!
Maven 存储库包含构建工件和依赖项,如项目 jar、库 jar、插件或任何其他项目特定工件。它还定义了在执行 S2I 构建时从中下载工件的位置。除了使用 Maven Central 存储库 外,一些组织还会部署本地自定义存储库(mirror)。
使用本地镜像的好处是:
- 同步镜像的可用性,这是更接近且更快地进行的。
- 更好地控制存储库内容。
- 有可能在不同团队(开发者、CI)之间共享工件,而无需依赖公共服务器和存储库。
- 改进了构建时间。
Maven 存储库管理器 可以充当镜像的本地缓存。假设存储库管理器已在 http://10.0.0.1:8080/repository/internal/ 外部部署并可访问,S2I 构建可以使用此存储库。要使用内部 Maven 存储库,请将 MAVEN_MIRROR_URL 环境变量添加到应用的构建配置中。
对于新的构建配置,在 oc new-app 或 oc new-build 中使用 --build-env 选项:
对于现有的构建配置:
识别需要
MAVEN_MIRROR_URL变量的构建配置:oc get bc -o name
$ oc get bc -o name buildconfig/jwsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
MAVEN_MIRROR_URL环境变量添加到buildconfig/jws:oc env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/"
$ oc env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/" buildconfig "jws" updatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证构建配置是否已更新:
oc env bc/jws --list buildconfigs jws
$ oc env bc/jws --list # buildconfigs jws MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
oc start-build调度应用程序的新构建
在应用构建期间,Maven 依赖项从存储库管理器下载,而不是从默认的公共存储库下载。构建完成后,镜像包含构建期间检索和使用的所有依赖项。
4.1.2. Red Hat JBoss Web Server for OpenShift 镜像中包含的脚本 复制链接链接已复制到粘贴板!
run- 运行 Catalina (Tomcat)
assemble-
使用 Maven 构建源,创建软件包(
.war),并将它移到$JWS_HOME/webapps目录。
4.1.3. 用于 OpenShift 数据源的 JWS 复制链接链接已复制到粘贴板!
数据源有 3 个类型:
-
默认内部数据源: 它们是 PostgreSQL、MySQL 和 MongoDB。这些数据源默认通过 Red Hat Registry 在 OpenShift 上提供,不需要为镜像流配置额外的环境文件。要使数据库发现并用作数据源,请将
DB_SERVICE_PREFIX_MAPPING环境变量设置为 OpenShift 服务的名称。 - 其他内部数据源: 这些数据源默认无法通过 Red Hat Registry 提供,但在 OpenShift 上运行。这些数据源的配置由添加到 OpenShift Secret 的环境文件提供。
- External Datasources : 外部数据源的 OpenShift.Configuration 上运行的数据源由添加到 OpenShift Secret 的环境文件提供。
datasources 环境文件添加到项目的 OpenShift Secret 中。然后,使用 ENV_FILES 环境属性在模板中调用这些环境文件。
数据源会根据某些环境变量的值自动创建。最重要的环境变量是 DB_SERVICE_PREFIX_MAPPING。DB_SERVICE_PREFIX_MAPPING 为数据源定义 JNDI 映射。这个变量允许的值是以逗号分隔的 POOLNAME-DATABASETYPE=PREFIX triplets 列表,其中:
可通过将环境变量包含 Source-to-Image build 命令(请参阅 第 4.1.1 节 “将 maven 工件存储库镜像与 JWS 用于 OpenShift”)来修改构建配置。Red Hat JBoss Web Server for OpenShift 镜像的有效环境变量是:
-
POOLNAME用作数据源中的 pool-name。 -
DATABASETYPE是要使用的数据库驱动程序。 -
PREFIX是用于配置数据源的环境变量名称中使用的前缀。
对于 DB_SERVICE_PREFIX_MAPPING 环境变量中定义的每个 POOLNAME-DATABASETYPE=PREFIX triplet,启动脚本会创建一个单独的数据源,该数据源在运行镜像时执行。
有关数据源配置环境变量的完整列表,请参阅 此处提供的数据源配置环境变量列表。
4.1.4. 用于 OpenShift 兼容环境变量的 JWS 复制链接链接已复制到粘贴板!
可通过将环境变量包含 Source-to-Image build 命令(请参阅 第 4.1.1 节 “将 maven 工件存储库镜像与 JWS 用于 OpenShift”)来修改构建配置。Red Hat JBoss Web Server for OpenShift 镜像的有效环境变量是:
| 变量名称 | 显示名称 | 描述 | 值示例 |
|---|---|---|---|
| ARTIFACT_DIR | 不适用 |
| target |
| APPLICATION_NAME | 应用程序名称 | 应用程序的名称 | jws-app |
| CONTEXT_DIR | 上下文目录 | 要构建的 Git 项目中的路径;根项目目录为空 | tomcat-websocket-chat |
| GITHUB_WEBHOOK_SECRET | GitHub Webhook Secret | GitHub 触发器 secret | 表达式: [a-zA-Z0-9]{8} |
| GENERIC_WEBHOOK_SECRET | 通用 Webhook Secret | 通用构建触发器 secret | 表达式: [a-zA-Z0-9]{8} |
| HOSTNAME_HTTP | 自定义 HTTP 路由主机名 | http 服务路由的自定义主机名。为默认主机名保留空白 | <application-name>-<project>.<default-domain-suffix> |
| HOSTNAME_HTTPS | 自定义 HTTPS 路由主机名 | https 服务路由的自定义主机名。为默认主机名保留空白 | <application-name>-<project>.<default-domain-suffix> |
| IMAGE_STREAM_NAMESPACE | 镜像流命名空间 | 安装 Red Hat Middleware 镜像的 ImageStream 的命名空间 | openshift |
| JWS_HTTPS_SECRET | Secret 名称 | 包含证书文件的 secret 名称 | jws-app-secret |
| JWS_HTTPS_CERTIFICATE | 证书名称 | secret 中证书文件的名称 | server.crt |
| JWS_HTTPS_CERTIFICATE_KEY | 证书密钥名称 | secret 中证书密钥文件的名称 | server.key |
| JWS_HTTPS_CERTIFICATE_PASSWORD | 证书密码 | 证书密码 | P5ssw0rd |
| JWS_ADMIN_USERNAME | JWS Admin Username | JWS Admin 帐户用户名 | ADMIN |
| JWS_ADMIN_PASSWORD | JWS 管理密码 | JWS Admin 帐户密码 | P5sw0rd |
| SOURCE_REPOSITORY_URL | Git 存储库 URL | 应用的 Git 源 URI | https://github.com/jboss-openshift/openshift-quickstarts.git |
| SOURCE_REPOSITORY_REFERENCE | Git 参考 | Git 分支/标签参考 | 1.2 |
| IMAGE_STREAM_NAMESPACE | 镜像流命名空间 | 安装 Red Hat Middleware 镜像的 ImageStream 的命名空间 | openshift |
| MAVEN_MIRROR_URL | Maven Mirror URL | 要配置 Maven mirror/repository Manager 的 URL。 | http://10.0.0.1:8080/repository/internal/ |
4.2. OpenShift 的 JWS 上的 valves 复制链接链接已复制到粘贴板!
4.2.1. 用于 OpenShift 兼容环境变量的 JWS (评估组件) 复制链接链接已复制到粘贴板!
您可以定义以下环境变量,将 valve 组件插入到关联的 Catalina 容器的请求处理管道中。
| 变量名称 | 描述 | 值示例 | 默认值 |
|---|---|---|---|
| ENABLE_ACCESS_LOG | 启用 Access Log Valve,将访问信息记录到标准输出频道。 | true | false |
4.3. 检查日志 复制链接链接已复制到粘贴板!
查看 OpenShift 日志或由正在运行的容器提供的日志:
oc logs -f <pod_name> <container_name>
$ oc logs -f <pod_name> <container_name>
访问日志存储在 /opt/webserver/logs/ 中。