1.2. 在 OpenShift 4.x 中设置 Fuse 控制台
在 OpenShift 4.x 上,设置 Fuse 控制台涉及保护、安装和部署它。
首先,您必须生成客户端证书,以便可以保护 Fuse 控制台,如 第 1.2.1 节 “生成证书来保护 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 ../cluster2cd ../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.crtoc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.crt']}" | base64 --decode > ca.crtCopy 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.keyoc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.key']}" | base64 --decode > ca.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
生成客户端证书,如 Kubernetes 证书管理 中所述,使用
easyrsa、openssl或cfssl。以下是使用 openssl 的示例命令:
生成私钥:
openssl genrsa -out server.key 2048
openssl genrsa -out server.key 2048Copy 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.confCopy 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.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
您需要此证书来为 Fuse 控制台创建 secret,如 使用命令行在 OpenShift 4.x 上安装和部署 Fuse 控制台 中所述。
1.2.2. 使用命令行在 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.fuse-750056-redhat-00006/fuse-console-namespace-os4.json
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-750056-redhat-00006/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 openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果要使用新发行标签更新已安装的镜像流,请使用以下命令将 Fuse Console 镜像导入到 openshift 命名空间:
oc import-image fuse7/fuse7-console:1.5 --from=registry.redhat.io/fuse7/fuse-console:1.5 --confirm -n openshift
oc import-image fuse7/fuse7-console:1.5 --from=registry.redhat.io/fuse7/fuse-console:1.5 --confirm -n openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下 Fuse 控制台模板从原始格式
https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-750056-redhat-00006下载到您选择的本地目录(例如,mytemp)。-
集群模板:
fuse-console-cluster-os4.json -
命名空间模板:
fuse-console-namespace-os4.json
-
集群模板:
对于命名空间模板,请跳至下一步。
对于集群模板,在您选择的编辑器中编辑
fuse-console-cluster-os4.json文件的本地副本,将"grantMethod": "auto"属性添加到OAuthClient部分:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来获取 Fuse Console APP_NAME 值(其中 mytemp 是包含 Fuse Console 模板的本地目录的路径):
对于集群模板:
oc process --parameters -f mytemp/fuse-console-cluster-os4.json
oc process --parameters -f mytemp/fuse-console-cluster-os4.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于命名空间模板:
oc process --parameters -f mytemp/fuse-console-namespace-os4.json
oc process --parameters -f mytemp/fuse-console-namespace-os4.jsonCopy 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.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,基于 Fuse Console 模板的本地副本创建新应用程序(其中 myproject 是 OpenShift 项目的名称,mytemp 是包含 Fuse Console 模板的本地目录的路径,myhost 是用于访问 Fuse 控制台的主机名:
对于集群模板:
oc new-app -n myproject -f mytemp/fuse-console-cluster-os4.json -p ROUTE_HOSTNAME=myhost
oc new-app -n myproject -f mytemp/fuse-console-cluster-os4.json -p ROUTE_HOSTNAME=myhostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于命名空间模板:
oc new-app -n myproject -f mytemp/fuse-console-namespace-os4.json
oc new-app -n myproject -f mytemp/fuse-console-namespace-os4.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,获取 Fuse 控制台部署的状态和 URL:
oc status
oc statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要从浏览器访问 Fuse 控制台,请使用在第 6 步中返回的 URL (例如 https://fuse-console.192.168.64.12.nip.io)。
1.2.3. 在 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 myprojectCopy 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.1Copy 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-fuseconsoleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 成功部署会显示这个响应:
deployment "example-fuseconsole" successfully rolled out
deployment "example-fuseconsole" successfully rolled outCopy to Clipboard Copied! Toggle word wrap Toggle overflow