Red Hat JBoss Web Server for OpenShift
安装并使用 Red Hat JBoss Web Server for OpenShift
摘要
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 简介 复制链接链接已复制到粘贴板!
1.1. Red Hat JBoss Web Server for OpenShift 概述 复制链接链接已复制到粘贴板!
Red Hat JBoss Web Server (JWS) 5.5 的 Apache Tomcat 9 组件作为专为 OpenShift 设计的容器化镜像提供。开发人员可以使用此镜像构建、扩展和测试 Java Web 应用程序,以便在混合云环境中进行部署。
如需有关 OpenShift 上运行的 Middleware 产品支持的配置的更多信息,请参阅 Red Hat Middleware 产品和组件的支持。
第 2 章 开始前 复制链接链接已复制到粘贴板!
2.1. Red Hat JBoss Web Server 和 JWS for OpenShift 的不同 复制链接链接已复制到粘贴板!
JWS for OpenShift 镜像与常规发行的 JWS 的不同包括:
-
JWS for OpenShift 镜像内的
JWS_HOME的位置是:/opt/jws-5.5/。 - 所有负载平衡都由 OpenShift 路由器处理,而不是 Apache HTTP 服务器 mod_cluster 或 mod_jk 连接器。
有关 JWS 功能的文档,请参阅 Red Hat JBoss Web Server 文档。
2.2. 版本兼容性和支持 复制链接链接已复制到粘贴板!
如需了解有关 OpenShift 镜像版本兼容性的详细信息,请参阅 OpenShift Container Platform Tested 3.X Integrations 页和 OpenShift Container Platform Tested 4.X Integrations 页。
部署新应用程序时,应使用 JWS for OpenShift 镜像和应用程序模板版本 5.5。
用于 OpenShift 镜像和应用程序模板的 JWS 5.4 版本已弃用,不再接收更新。
2.3. JBoss Web 服务器支持的构架 复制链接链接已复制到粘贴板!
JBoss Web 服务器支持以下构架:
- x86_64 (AMD64)
- OpenShift 环境中的 IBM Z (s390x)
- OpenShift 环境中的 IBM Power (ppc64le)
不同构架支持不同的镜像。本指南中的示例代码演示了 x86_64 架构的命令。如果您使用其他架构,请在命令中指定相关镜像名称。有关镜像的更多信息,请参阅 Red Hat Container Catalog。
2.4. 对红帽容器镜像进行健康检查 复制链接链接已复制到粘贴板!
OpenShift 可用的所有容器镜像都有一个与它关联的健康评级。您可以通过进入到 容器镜像目录、搜索 JBoss Web Server 并选择 5.5 版本来查找 Red Hat JBoss Web Server 的健康状况评级。
有关如何为实时和就绪测试 OpenShift 容器的更多信息,请参阅以下文档
第 3 章 开始使用 复制链接链接已复制到粘贴板!
3.1. 初始设置 复制链接链接已复制到粘贴板!
在按照本文档中的说明进行操作前,您必须确保 OpenShift 集群已安装并根据先决条件进行了配置。有关安装和配置 OpenShift 集群的更多信息,请参阅 OpenShift Container Platform 的安装指南。
用于 OpenShift 应用程序模板的 JWS 为 Tomcat 9 发布。
3.2. 为 Red Hat Container Registry 配置身份验证 复制链接链接已复制到粘贴板!
在导入并使用 Red Hat JBoss Web Server 镜像前,您必须首先为 Red Hat Container Registry 配置身份验证。
红帽建议您使用 registry 服务帐户创建身份验证令牌来配置对 Red Hat Container Registry 的访问。这意味着您不必在 OpenShift 配置中使用或存储您的红帽帐户的用户名和密码。
- 按照红帽客户门户网站中的说明,使用 registry 服务帐户创建身份验证令牌。
- 下载包含令牌的 OpenShift 机密的 YAML 文件。您可以从令牌的 Token Information 页面中的 OpenShift Secret 选项卡下载 YAML 文件。
使用您下载的 YAML 文件为 OpenShift 项目创建身份验证令牌 secret:
oc create -f 1234567_myserviceaccount-secret.yaml
oc create -f 1234567_myserviceaccount-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令,为 OpenShift 项目配置 secret,将示例中的机密名称替换为上一步中创建的机密的名称。
oc secrets link default 1234567-myserviceaccount-pull-secret --for=pull oc secrets link builder 1234567-myserviceaccount-pull-secret --for=pull
oc secrets link default 1234567-myserviceaccount-pull-secret --for=pull oc secrets link builder 1234567-myserviceaccount-pull-secret --for=pullCopy to Clipboard Copied! Toggle word wrap Toggle overflow
有关配置对安全 registry 的访问的更多信息,请参阅 OpenShift 文档。
有关为 Red Hat Container Registry 配置身份验证的更多信息,请参阅红帽客户门户网站。
3.3. 导入最新的 Red Hat JBoss Web Server 镜像流和模板 复制链接链接已复制到粘贴板!
您必须将 JDK 的最新 Red Hat JBoss Web Server for OpenShift 镜像流和模板导入到 OpenShift 项目的命名空间中。
使用您的客户门户网站凭证登录到 Red Hat Container Registry,以导入 Red Hat JBoss Web Server 镜像流、模板和更新镜像流。如需更多信息,请参阅 Red Hat Container Registry 身份验证。
JDK 8 的导入命令
此命令导入以下镜像流和模板。
- RHEL8 JDK 8 镜像流:jboss-webserver55-openjdk8-tomcat9-openshift-rhel8
- 命令中指定的所有模板。
JDK 11 的导入命令
此命令导入以下镜像流和模板。
- RHEL8 JDK 11 镜像流:jboss-webserver55-openjdk11-tomcat9-openshift-rhel8
- 命令中指定的所有模板。
3.3.1. 更新命令 复制链接链接已复制到粘贴板!
- 要更新核心 JWS 5.5 tomcat 9 OpenJDK8 RHEL8 OpenShift,您必须执行
oc -n openshift import-image \ jboss-webserver55-openjdk8-tomcat9-openshift-rhel8:1.0
$ oc -n openshift import-image \
jboss-webserver55-openjdk8-tomcat9-openshift-rhel8:1.0
- 要更新核心 JWS 5.5 tomcat 9 OpenJDK11 RHEL8 OpenShift 镜像,您必须执行
oc -n openshift import-image \ jboss-webserver55-openjdk11-tomcat9-openshift-rhel8:1.0
$ oc -n openshift import-image \
jboss-webserver55-openjdk11-tomcat9-openshift-rhel8:1.0
您导入的每个镜像末尾的 1.0 标签指的是镜像流中设置的 流 版本。
3.4. 将 JWS 用于 OpenShift Source-to-Image (S2I)流程 复制链接链接已复制到粘贴板!
要为 OpenShift 镜像运行并配置 JWS,请将 OpenShift S2I 进程与应用模板参数和环境变量一起使用。
用于 OpenShift 镜像的 JWS 的 S2I 流程可以正常工作:
如果
configuration/source 目录中有一个 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/jws-5.5/tomcat/webapps中。这包括$ARTIFACT_DIR环境变量指定的源目录中的所有 WAR 文件。$ARTIFACT_DIR的默认值为target/目录。使用
MAVEN_ARGS_APPEND环境变量来修改 Maven 参数。-
deployments/source 目录中的所有 WAR 文件都复制到/opt/jws-5.5/tomcat/webapps中。 -
configuration/source 目录中的所有文件都复制到/opt/jws-5.5/tomcat/conf/(不包括 Maven settings.xml 文件)。 lib/source 目录中的所有文件都复制到/opt/jws-5.5/tomcat/lib/中。注意如果要使用自定义 Tomcat 配置文件,文件名应当与普通 Tomcat 安装相同。例如: context.xml 和 server.xml。
有关配置 S2I 进程以使用自定义 Maven 工件存储库镜像的指南,请参阅 Artifact Repository Mirrors 部分。
3.4.1. 使用现有的 maven 二进制文件为 OpenShift 应用创建一个 JWS 复制链接链接已复制到粘贴板!
现有应用使用 oc start-build 命令在 OpenShift 上部署。
先决条件: 要在 OpenShift 的 JWS 上部署的应用程序的现有 .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/tomcat/webapps/目录中。要部署应用程序,包含 Web 应用程序数据的目录层次结构必须被正确构建(请参阅 第 3.4 节 “将 JWS 用于 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-webserver<version>-openjdk8-tomcat9-openshift-rhel8:latest \ --name=<my-jws-on-openshift-app>
$ oc new-build --binary=true \ --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel8:latest \ --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.4.2. 示例:使用现有 maven 二进制文件为 OpenShift 应用程序创建 JWS 复制链接链接已复制到粘贴板!
以下示例使用 第 3.4.1 节 “使用现有的 maven 二进制文件为 OpenShift 应用创建一个 JWS” 中的步骤使用 tomcat-websocket-chat Quickstart。
3.4.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.4.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.4.3. 从源代码为 OpenShift 应用创建一个 JWS 复制链接链接已复制到粘贴板!
有关从源代码创建新 OpenShift 应用程序的详细信息,请参阅 OpenShift.com - 从源代码创建应用程序。
在继续操作前,请确保应用程序的数据被正确结构化(请参阅 第 3.4 节 “将 JWS 用于 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-webserver<version>-openjdk8-tomcat9-openshift-rhel8\ --name=<openshift_application_name>
$ oc new-app \ <source_code_location>\ --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel8\ --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-webserver<version>-openjdk8-tomcat9-openshift-rhel8\ --context-dir='tomcat-websocket-chat' \ --name=jws-wsch-app
$ oc new-app \ https://github.com/jboss-openshift/openshift-quickstarts.git#master \ --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel8\ --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>
3.5. 在 tomcat/lib/ 目录中添加额外的 jar 文件 复制链接链接已复制到粘贴板!
可以使用 docker 将其他 jar 文件添加到 tomcat/lib/ 目录中。
在 tomcat/lib/中添加 jar 文件
获取在 docker 中启动的镜像
docker run --network host -i -t -p 8080:8080 ImageURL
docker run --network host -i -t -p 8080:8080 ImageURLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查找
CONTAINER IDdocker ps | grep <ImageName>
docker ps | grep <ImageName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将库复制到
tomcat/lib/目录docker cp <yourLibrary> <CONTAINER ID>:/opt/jws-5.5/tomcat/lib/
docker cp <yourLibrary> <CONTAINER ID>:/opt/jws-5.5/tomcat/lib/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将更改提交到新镜像
docker commit <CONTAINER ID> <NEW IMAGE NAME>
docker commit <CONTAINER ID> <NEW IMAGE NAME>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新镜像标签
docker tag <NEW IMAGE NAME>:latest <NEW IMAGE REGISTRY URL>:<TAG>
docker tag <NEW IMAGE NAME>:latest <NEW IMAGE REGISTRY URL>:<TAG>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像推送到 registry
docker push <NEW IMAGE REGISTRY URL>
docker push <NEW IMAGE REGISTRY URL>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 JWS Operator 复制链接链接已复制到粘贴板!
4.1. JBoss Web Server Operator 复制链接链接已复制到粘贴板!
4.1.1. OpenShift Operator 复制链接链接已复制到粘贴板!
Operator Framework 是一个工具包,用于以有效、自动化且可扩展的方式管理 Kubernetes 原生应用程序,即 Operator。Operator 可让您轻松管理 Kubernetes 上的复杂有状态应用程序。所有 Operator 都基于 3 个关键组件:Operator SDK、Operator Lifecycle Manager 和 OperatorHub.io。这些工具允许您开发自己的 Operator,管理 Kubernetes 集群上使用的任何 Operator,并发现或共享社区创建的任何 Operator。
Red Hat JBoss Web Server 项目提供了一个 Operator 来管理其 OpenShift 镜像。本节介绍如何为 JWS 构建、测试和打包 OpenShift Operator。
有关集群设置的完整说明,请参阅 Openshift Documentation 子部分 'Install'
另外,JWS 操作器使用与 JWS-on-OpenShift 设置不同的环境变量。您可以在此处找到这些参数 的完整列表。
目前,Use Session 集群 功能作为技术预览提供(不支持)。默认情况下,集群为 Off。当前操作器版本使用 DNS 成员资格提供程序,该提供程序会受 DNS 限制的限制。InetAddress.getAllByName () 结果会被缓存,因此在扩展时会话复制可能无法正常工作。
本指南详细介绍了 JWS Operator 的安装、部署和删除。如需更快但详情的指南 ,请参阅快速入门指南。
目前,我们只支持 JWS 5.4 镜像。早于 5.4 的镜像不被支持。
4.1.2. 安装 JWS Operator 复制链接链接已复制到粘贴板!
本节介绍在 OpenShift Container Platform 上安装 JWS Operator。
4.1.2.1. 先决条件 复制链接链接已复制到粘贴板!
-
使用具有集群管理员权限的账户(仅限 Web 控制台)进行 OpenShift Container Platform
集群 - 使用具有 Operator 安装权限的账户进行 OpenShift Container Platform 集群
-
在本地系统中安装
oc工具(仅限 CLI)
4.1.2.2. 安装 JWS Operator - Web 控制台 复制链接链接已复制到粘贴板!
- 导航到"Operators"选项卡,在左侧的菜单中找到
- 这将打开 OpenShift OperatorHub。在这里,搜索 JWS 并选择"JWS Operator"
- 应出现一个新菜单 - 选择所需容量级别,然后单击顶部的"Install"来安装 Operator。
现在,您可以设置 Operator 安装。您将指定以下 3 个选项:
- Installation Mode: 指定要安装的集群中的特定命名空间。如果没有指定,它将默认将 Operator 安装到集群中的所有命名空间中。
- 更新频道: JWS 操作器目前只能通过一个频道获得。
- 批准策略: 您可以选择 Automatic 或 Manual 更新。如果选择自动更新某个已安装的 Operator,则当相应 Operator 有可用的新版本时,Operator Lifecycle Manager(OLM)将自动升级该 Operator 的运行实例,而无需人为干预。如果选择手动更新,则当有新版 Operator 可用时,OLM 会创建更新请求。作为集群管理员,您必须手动批准该更新请求,才可将 Operator 更新至新版本。
-
点底部的"Install"。如果选择
手动批准策略,则必须在安装完成前批准安装计划。JWS Operator 现在将显示在"Operators"选项卡的"安装 Operator"部分。
4.1.2.3. 安装 JWS Operator - 命令行界面 复制链接链接已复制到粘贴板!
使用以下命令检查 JWS 操作器,以验证其支持的 installModes 和 available 频道:
oc get packagemanifests -n openshift-marketplace | grep jws
$ oc get packagemanifests -n openshift-marketplace | grep jws jws-operator Red Hat Operators 16hCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe packagemanifests jws-operator -n openshift-marketplace | grep "Catalog Source"
$ oc describe packagemanifests jws-operator -n openshift-marketplace | grep "Catalog Source" Catalog Source: redhat-operatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorGroup 是一个 OLM 资源用来选择目标命名空间。在这些目标命名空间中生成与 OperatorGroup 相同的命名空间中的所有 Operator 所需的 RBAC 访问。
订阅 Operator 的命名空间必须具有与 Operator 的 InstallMode 相匹配的 OperatorGroup,可采用 AllNamespaces 模式,也可采用 SingleNamespace 模式。如果您要使用 AllNamespaces 安装的 Operator,则 openshift-operators 命名空间已有适当的 OperatorGroup。
但是,如果 Operator 使用 SingleNamespace 模式,则必须在该命名空间中创建一个 OperatorGroup。运行以下命令,检查 OperatorGroup 的实际列表:
oc get operatorgroups -n <project_name>
$ oc get operatorgroups -n <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorGroup 列表的输出示例:
NAME AGE mygroup 17h
NAME AGE mygroup 17hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在选择 SingleNamespace 模式时,此流程的 Web 控制台版本会在后台自动为您处理 OperatorGroup 和 Subscription 对象的创建。
创建一个 OperatorGroup 对象 YAML 文件,例如:
OperatorGroupExample.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <project_name> 是安装 Operator (oc project -q)的项目的命名空间。<operatorgroup_name> 是 OperatorGroup 的名称。
使用以下命令创建 OperatorGroup 对象:
oc apply -f OperatorGroupExample.yaml
$ oc apply -f OperatorGroupExample.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个订阅对象 YAML 文件,如
jws-operator-sub.yaml。配置Subscription对象 YAML 文件,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <project_name> 是安装 Operator (oc project -q)的项目的命名空间。要在所有命名空间中安装,使用 openshift-operators。
源是目录源。这是$ oc describe packagemanifests jws-operator -n openshift-marketplace | grep "Catalog Source:"命令中的值,我们在本节的第 1 步中运行。该值应该是redhat-operators。使用以下命令,从 YAML 文件创建
Subscription对象:oc apply -f jws-operator-sub.yaml
$ oc apply -f jws-operator-sub.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证安装是否成功,请运行以下命令:
oc get csv -n <project_name>
$ oc get csv -n <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand NAME 显示 VERSION 替换 PHASE jws-operator.V1.0.0
JBoss Web Server Operator
1.0.0
Succeeded
4.1.3. 部署现有 JWS 镜像 复制链接链接已复制到粘贴板!
使用以下命令确保您的 Operator 已安装:
oc get deployment.apps/jws-operator
$ oc get deployment.apps/jws-operator NAME READY UP-TO-DATE AVAILABLE AGE jws-operator 1/1 1 1 15hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,如果您需要更详细的输出:
oc describe deployment.apps/jws-operator
$ oc describe deployment.apps/jws-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
准备您的镜像并将其推送到所需位置。在本例中,它被推送到
quay.io/<USERNAME>/tomcat-demo:latest 创建一个
Custom ResourceWebServer .yaml 文件。在本例中,使用名为webservers_cr.yaml的文件。文件内容应该采用以下格式:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令,从您创建的目录中部署您的过期:
oc apply -f webservers_cr.yaml
$ oc apply -f webservers_cr.yaml webserver/example-image-webserver createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意操作器将自动创建路由。您可以使用以下命令验证路由:
oc get routes
$ oc get routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需有关路由的更多信息 ,请参阅 OpenShift 文档
如果您需要删除在第 4 步中创建的
webserver:oc delete webserver example-image-webserver
$ oc delete webserver example-image-webserverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者
oc delete -f webservers_cr.yaml
$ oc delete -f webservers_cr.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.4. 从集群中删除 Operator 复制链接链接已复制到粘贴板!
4.1.4.1. 先决条件 复制链接链接已复制到粘贴板!
- 具有管理员特权的 OpenShift Container Platform 集群(通常,您可以 按照以下说明 绕过此要求)
-
在本地系统中安装
oc工具(仅限 CLI)
4.1.4.2. 从集群中删除 Operator - Web 控制台 复制链接链接已复制到粘贴板!
- 在左侧菜单中,点击 'Operators' → 'Installed Operators'
- 在"Operator Details"下,选择"Actions"菜单,然后单击"Uninstall Operator"
- 选择此选项将删除 Operator、任何 Operator 部署和 Pod。删除 Operator 的 HOWEVER 不会删除 任何自定义资源定义或自定义资源,包括 CRD 或 CR。如果 Operator 在集群中部署了应用程序,或者配置了非集群资源,则这些应用程序将继续运行,需要手动清理。
4.1.4.3. 从集群中删除 Operator - 命令行界面 复制链接链接已复制到粘贴板!
使用以下命令,在
currentCSV字段中检查订阅的 Operator 的当前版本:oc get subscription jws-operator -n <project_name> -o yaml | grep currentCSV
$ oc get subscription jws-operator -n <project_name> -o yaml | grep currentCSV f:currentCSV: {} currentCSV: jws-operator.v1.0.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在上述命令中,<
;project_name> 是指安装 Operator 的项目的命名空间。如果您的 Operator 安装至所有命名空间,请使用openshift-operators来代替 <project_name>。使用以下命令删除 Operator 的订阅:
oc delete subscription jws-operator -n <project_name>
$ oc delete subscription jws-operator -n <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在上述命令中,<
;project_name> 是指安装 Operator 的项目的命名空间。如果您的 Operator 安装至所有命名空间,请使用openshift-operators来代替 <project_name>。使用以下命令,使用上一步中的 currentCSV 值删除目标命名空间中的 Operator 的 CSV:
oc delete clusterserviceversion <currentCSV> -n <project_name>
$ oc delete clusterserviceversion <currentCSV> -n <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<currentCSV> 是在第 1 步中获取的值oc delete clusterserviceversion jws-operator.v1.0.0
$ oc delete clusterserviceversion jws-operator.v1.0.0 clusterserviceversion.operators.coreos.com "jws-operator.v1.0.0" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在上述命令中,<
;project_name> 是指安装 Operator 的项目的命名空间。如果您的 Operator 安装至所有命名空间,请使用openshift-operators来代替 <project_name>。
4.1.5. 其他资源 复制链接链接已复制到粘贴板!
如需有关 Operator 的更多信息,您可以参考正式的 OpenShift 文档:
和
第 5 章 参考 复制链接链接已复制到粘贴板!
5.1. Source-to-Image(S2I) 复制链接链接已复制到粘贴板!
Red Hat JBoss Web Server for OpenShift 镜像包括 S2I 脚本和 Maven。
5.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 依赖项从存储库管理器下载,而不是从默认的公共存储库下载。构建完成后,镜像包含构建期间检索和使用的所有依赖项。
5.1.2. Red Hat JBoss Web Server for OpenShift 镜像中包含的脚本 复制链接链接已复制到粘贴板!
run- 运行 Catalina (Tomcat)
assemble-
使用 Maven 构建源,创建软件包(
.war),并将它移到$JWS_HOME/tomcat/webapps目录。
5.1.3. JWS for OpenShift 数据源 复制链接链接已复制到粘贴板!
数据源有 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 列表,其中:
-
POOLNAME用作数据源中的 pool-name。 -
DATABASETYPE是要使用的数据库驱动程序。 -
PREFIX是用于配置数据源的环境变量名称中使用的前缀。
对于 DB_SERVICE_PREFIX_MAPPING 环境变量中定义的每个 POOLNAME-DATABASETYPE=PREFIX triplet,启动脚本会创建一个单独的数据源,该数据源在运行镜像时执行。
有关数据源配置环境变量的完整列表,请参阅 此处提供的数据源配置环境变量列表。
5.1.4. 用于 OpenShift 兼容环境变量的 JWS 复制链接链接已复制到粘贴板!
可通过将环境变量包含 Source-to-Image build 命令(请参阅 第 5.1.1 节 “将 maven 工件存储库镜像与 JWS 用于 OpenShift”)来修改构建配置。Red Hat JBoss Web Server for OpenShift 镜像的有效环境变量是:
| 变量名称 | 显示名称 | Description | 值示例 |
|---|---|---|---|
| ARTIFACT_DIR | N/A |
此目录中的 | 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 镜像的 ImageStreams 的命名空间 | 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 镜像的 ImageStreams 的命名空间 | openshift |
| MAVEN_MIRROR_URL | Maven Mirror URL | 用于配置的 Maven 镜像/存储库管理器的 URL。 | http://10.0.0.1:8080/repository/internal/ |
5.2. 用于 OpenShift 的 JWS 上的 valves 复制链接链接已复制到粘贴板!
5.2.1. 用于 OpenShift 兼容环境变量的 JWS (评估组件) 复制链接链接已复制到粘贴板!
您可以定义以下环境变量,将 valve 组件插入到关联的 Catalina 容器的请求处理管道中。
| 变量名称 | 描述 | 值示例 | 默认值 |
|---|---|---|---|
| ENABLE_ACCESS_LOG | 启用 Access Log Valve 将访问信息记录到标准输出频道。 | true | false |
5.3. 检查日志 复制链接链接已复制到粘贴板!
查看 OpenShift 日志或由正在运行的容器提供的日志:
oc logs -f <pod_name> <container_name>
$ oc logs -f <pod_name> <container_name>
访问日志存储在 /opt/jws-5.5/tomcat/logs/ 中。