1.2. 在 OpenShift 4.x 中设置 Fuse 控制台
在 OpenShift 4.x 上,设置 Fuse 控制台涉及保护、安装和部署它。
首先,您必须生成客户端证书,以便可以保护 Fuse 控制台,如 第 1.2.1 节 “生成证书来保护 OpenShift 4.x 上的 Fuse 控制台” 所述。
生成客户端证书后,您可以选择安装和部署 Fuse 控制台:
第 1.2.2 节 “使用 OperatorHub 在 OpenShift 4.x 上安装和部署 Fuse 控制台”
您可以使用 Fuse Console Operator 安装和部署 Fuse 控制台,以便它能够访问特定命名空间中的 Fuse 应用程序。
第 1.2.3 节 “使用命令行在 OpenShift 4.x 上安装和部署 Fuse 控制台”
您可以使用命令行和其中一个 Fuse 控制台模板来安装和部署 Fuse 控制台,以便它可以访问 OpenShift 集群或特定命名空间中的多个命名空间中的 Fuse 应用程序。
- Fuse 控制台的用户管理由 OpenShift 处理。
- 基于角色的访问控制(在部署后访问 Fuse 控制台的用户)还不适用于 OpenShift 上的 Fuse。
1.2.1. 生成证书来保护 OpenShift 4.x 上的 Fuse 控制台 复制链接链接已复制到粘贴板!
在 OpenShift 4.x 上,若要在 Fuse 控制台代理和 Jolokia 代理之间保持连接,您必须在部署 Fuse 控制台前生成客户端证书。您必须使用服务签名证书颁发机构私钥来为客户端证书签名。
您必须为每个 OpenShift 集群生成并签署单独的客户端证书。对于多个集群,不要使用相同的证书。
先决条件
-
有
集群管理员
对 OpenShift 集群的访问权限。 如果您要为多个 OpenShift 集群生成证书,并且之前在当前目录中为不同的集群生成证书,请执行以下操作之一以确保为当前集群生成不同的证书:
-
从当前目录中删除现有证书文件(如
ca.crt
、ca.key
和ca.srl
)。 更改到其他工作目录。例如,如果您的当前工作目录命名为
cluster1
,请创建一个新的cluster2
目录,并将工作目录改为其中:mkdir ../cluster2
cd ../cluster2
-
从当前目录中删除现有证书文件(如
流程
以具有集群管理员访问权限的用户身份登录 OpenShift:
oc login -u <user_with_cluster_admin_role>
oc login -u <user_with_cluster_admin_role>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令来检索服务签名证书颁发机构密钥:
检索证书:
oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.crt']}" | base64 --decode > ca.crt
oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.crt']}" | base64 --decode > ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索私钥:
oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.key']}" | base64 --decode > ca.key
oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.key']}" | base64 --decode > ca.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
生成客户端证书,如 Kubernetes 证书管理 中所述,使用
easyrsa
、openssl
或cfssl
。以下是使用 openssl 的示例命令:
生成私钥:
openssl genrsa -out server.key 2048
openssl genrsa -out server.key 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编写 CSR 配置文件。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 CSR:
openssl req -new -key server.key -out server.csr -config csr.conf
openssl req -new -key server.key -out server.csr -config csr.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 发布签名证书:
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
您需要此证书来为 Fuse 控制台创建 secret,如以下部分所述,具体取决于您要安装 Fuse 控制台的方式:
1.2.2. 使用 OperatorHub 在 OpenShift 4.x 上安装和部署 Fuse 控制台 复制链接链接已复制到粘贴板!
要在 OpenShift 4.x 上安装 Fuse 控制台,您可以使用 OpenShift OperatorHub 提供的 Fuse Console Operator。要部署 Fuse 控制台,请创建一个已安装的 Operator 实例。
前提条件
-
有
集群管理员
对 OpenShift 集群的访问权限。 - 您已为 Fuse 控制台生成客户端证书,如生成证书 以保护 OpenShift 4.x 上的 Fuse 控制台 中所述。
流程
安装和部署 Fuse 控制台:
-
以具有集群管理员访问权限的用户身份登录 Web 浏览器中的 OpenShift 控制台。
- 选择 Home > Projects,然后选择您要添加 Fuse 控制台的项目。
- 点 Operators,然后点 OperatorHub。
- 在搜索字段窗口中,键入 Fuse Console 来过滤操作器列表。
- 点 Fuse Console Operator。
在 Fuse Console Operator 安装窗口中,点 Install。
Create Operator Subscription 表单将打开。
对于 安装模式,您可以将 Fuse Console Operator 安装到特定命名空间(当前 OpenShift 项目)。
请注意,在安装操作器后,您可以选择部署 Fuse 控制台以监控集群中的所有命名空间中的应用程序,或者仅监控安装了 Fuse Console operator 的命名空间中的应用程序。
对于 Approval Strategy,您可以选择 Automatic 或 Manual 来配置 OpenShift 如何处理 Fuse Console Operator 的更新。
- 如果选择 Automatic 更新,当有新版本的 Fuse Console Operator 可用时,OpenShift Operator Lifecycle Manager (OLM)将自动升级 Fuse 控制台的运行实例,而无需人为干预。
- 如果选择手动 更新,则当有新版 Operator 可用时,OLM 会创建更新请求。作为集群管理员,您必须手动批准该更新请求,才可将 Fuse Console Operator 更新至新版本。
点 Subscribe.
OpenShift 在当前命名空间中安装 Fuse Console Operator。
- 要验证安装,点 Operators,然后点 Installed Operators。您可以在操作器列表中看到 Fuse 控制台。
在终端窗口中,使用以下命令,使用您在 OpenShift 4.x 上保护 Fuse 控制台 生成的证书来创建 secret 并在 Fuse 控制台中挂载它,其中 APP_NAME 是 Fuse Console Deployment 的名称(如
fuse-console
)。oc create secret tls APP_NAME-tls-proxying --cert server.crt --key server.key
oc create secret tls APP_NAME-tls-proxying --cert server.crt --key server.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,如果 Fuse Console 应用程序的名称是 fuse-console,请输入以下命令:
oc create secret tls fuse-console-tls-proxying --cert server.crt --key server.key
oc create secret tls fuse-console-tls-proxying --cert server.crt --key server.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果成功,这个命令会返回一个响应来确认创建了 secret,例如:
secret/fuse-console-operator-tls-proxying created
secret/fuse-console-operator-tls-proxying created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 OpenShift Web 控制台部署 Fuse 控制台:
- 在 Installed Operators 列表中,单击 Name 列下的 Fuse Console。
在 Provided APIs 下的 Overview 页面中,点 Create Instance。此时会打开一个新的自定义资源定义(CRD)文件。
默认情况下,Fuse Console 部署到当前命名空间中。
如果要部署 Fuse 控制台来发现和管理当前命名空间中的应用程序,请跳至下一步。
另外,如果要部署 Fuse 控制台,以在集群中的所有命名空间中发现和管理应用程序(以及您是一个经过身份验证的用户),请通过将
spec.type
字段的值从namespace
改为cluster
来编辑 CRD 文件。点 Create。
Fuse Console CRD 页面将打开显示新的 Fuse 控制台服务。
打开 Fuse 控制台:
获取 Fuse 控制台 URL:
- 在 OpenShift Web 控制台中,选择 Networking > Routes。
-
在命令行中键入
oc get routes
命令。
在 Web 浏览器中,打开 Fuse 控制台 URL,然后登录。
浏览器中打开了 Authorize Access 页面,其中列出了所需权限。
点击 Allow selected permissions。
Fuse 控制台在浏览器中打开,并显示您有权访问的 Fuse 应用程序 pod。
对于您要查看的应用程序,点 Connect。
此时将打开一个新浏览器窗口,显示 Fuse 控制台中的应用程序。
1.2.3. 使用命令行在 OpenShift 4.x 上安装和部署 Fuse 控制台 复制链接链接已复制到粘贴板!
在 OpenShift 4.x 中,您可以选择其中一个部署选项来从命令行安装和部署 Fuse 控制台:
- 集群 - Fuse 控制台可以发现并连接到在 OpenShift 集群上的多个命名空间(项目)间部署的 Fuse 应用程序。要部署此模板,您必须具有 OpenShift 集群的管理员角色。
- 命名空间 - Fuse 控制台可以访问特定的 OpenShift 项目(命名空间)。要部署此模板,您必须具有 OpenShift 项目的管理员角色。
要查看 Fuse 控制台模板的参数列表,请运行以下命令:
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-760043-redhat-00003/fuse-console-namespace-os4.json
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-760043-redhat-00003/fuse-console-namespace-os4.json
先决条件
- 在安装和部署 Fuse 控制台前,您必须生成一个使用服务签名证书颁发机构签名的客户端证书,如生成证书以保护 OpenShift 4.x 上的 Fuse 控制台安全 中所述。
-
有 OpenShift
集群的集群管理员角色
。 - 已安装 Fuse Console 镜像流(以及其他 Fuse 镜像流),如 在 OpenShift 4.x 服务器上安装 Fuse 镜像流和模板 中所述。
流程
使用以下命令验证是否安装了 Fuse Console 镜像流,以检索所有模板的列表:
oc get template -n openshift
oc get template -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果要使用新发行标签更新已安装的镜像流,请使用以下命令将 Fuse Console 镜像导入到 openshift 命名空间:
oc import-image fuse7/fuse7-console:1.6 --from=registry.redhat.io/fuse7/fuse-console:1.6 --confirm -n openshift
oc import-image fuse7/fuse7-console:1.6 --from=registry.redhat.io/fuse7/fuse-console:1.6 --confirm -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来获取 Fuse Console APP_NAME 值:
对于集群模板:
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-760043-redhat-00003/fuse-console-cluster-os4.json
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-760043-redhat-00003/fuse-console-cluster-os4.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于命名空间模板:
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-760043-redhat-00003/fuse-console-namespace-os4.json
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-760043-redhat-00003/fuse-console-namespace-os4.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
从您在 OpenShift 4.x 上保护 Fuse 控制台 生成的证书,使用以下命令创建 secret 并将其挂载到 Fuse 控制台中(其中 APP_NAME 是 Fuse Console 应用程序的名称)。
oc create secret tls APP_NAME-tls-proxying --cert server.crt --key server.key
oc create secret tls APP_NAME-tls-proxying --cert server.crt --key server.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令创建新应用(其中 $project 是 OpenShift 项目的名称,$APP_NAME 是以上步骤中获取的应用程序的名称,$DOMAIN_NAME 是用于访问 Fuse 控制台的主机名:
对于集群模板:
oc new-app -n $project -f {templates-base-url}/fuse-console-cluster-os4.json -p ROUTE_HOSTNAME=$APP_NAME.$DOMAIN_NAME -p APP_NAME=$APP_NAME
oc new-app -n $project -f {templates-base-url}/fuse-console-cluster-os4.json -p ROUTE_HOSTNAME=$APP_NAME.$DOMAIN_NAME -p APP_NAME=$APP_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于命名空间模板:
oc new-app -n myproject -f {templates-base-url}/fuse-console-namespace-os4.json
oc new-app -n myproject -f {templates-base-url}/fuse-console-namespace-os4.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,获取 Fuse 控制台部署的状态和 URL:
oc status
oc status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 要从浏览器访问 Fuse 控制台,请使用在第 6 步中返回的 URL (例如 https://fuse-console.192.168.64.12.nip.io)。
1.2.4. 在 OpenShift 4.x 上升级 Fuse 控制台 复制链接链接已复制到粘贴板!
Red Hat OpenShift 4.x 处理对 Operator 的更新,包括 Red Hat Fuse operator。如需更多信息,请参阅 Operator OpenShift 文档。
另外,Operator 更新可以根据应用程序的配置方式触发应用程序升级。
对于 Fuse 控制台应用程序,您还可以通过编辑应用程序自定义资源定义的 .spec.version
字段来触发对应用程序的升级。
前提条件
- 有 OpenShift 集群管理员权限。
流程
升级 Fuse 控制台应用程序:
在终端窗口中,使用以下命令更改应用程序自定义资源定义的
.spec.version
字段:oc patch <project-name> <custom-resource-name> --type='merge' -p '{"spec":{"version":"1.7.1"}}'
oc patch <project-name> <custom-resource-name> --type='merge' -p '{"spec":{"version":"1.7.1"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc patch myproject example-fuseconsole --type='merge' -p '{"spec":{"version":"1.7.1"}}'
oc patch myproject example-fuseconsole --type='merge' -p '{"spec":{"version":"1.7.1"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查应用程序的状态是否已更新:
oc get myproject
oc get myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应显示有关应用程序的信息,包括版本号:
NAME AGE URL IMAGE example-fuseconsole 1m https://fuseconsole.192.168.64.38.nip.io docker.io/fuseconsole/online:1.7.1
NAME AGE URL IMAGE example-fuseconsole 1m https://fuseconsole.192.168.64.38.nip.io docker.io/fuseconsole/online:1.7.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当您更改
.spec.version
字段的值时,OpenShift 会自动重新部署应用。检查版本更改触发的重新部署状态:
oc rollout status deployment.v1.apps/example-fuseconsole
oc rollout status deployment.v1.apps/example-fuseconsole
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功部署会显示这个响应:
deployment "example-fuseconsole" successfully rolled out
deployment "example-fuseconsole" successfully rolled out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow