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.crtca.keyca.srl)。
    • 更改到其他工作目录。例如,如果您的当前工作目录命名为 cluster1,请创建一个新的 cluster2 目录,并将工作目录改为其中:

      mkdir ../cluster2

      cd ../cluster2

流程

  1. 以具有集群管理员访问权限的用户身份登录 OpenShift:

    oc login -u <user_with_cluster_admin_role>
  2. 执行以下命令来检索服务签名证书颁发机构密钥:

    • 检索证书:

      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\.key']}" | base64 --decode > ca.key
  3. 生成客户端证书,如 Kubernetes 证书管理 中所述,使用 easyrsaopensslcfssl

    以下是使用 openssl 的示例命令:

    1. 生成私钥:

      openssl genrsa -out server.key 2048
    2. 编写 CSR 配置文件。

      cat <<EOT >> csr.conf
        [ req ]
        default_bits = 2048
        prompt = no
        default_md = sha256
        distinguished_name = dn
      
        [ dn ]
        CN = fuse-console.fuse.svc
      
        [ v3_ext ]
        authorityKeyIdentifier=keyid,issuer:always
        keyUsage=keyEncipherment,dataEncipherment,digitalSignature
        extendedKeyUsage=serverAuth,clientAuth
      EOT
    3. 生成 CSR:

      openssl req -new -key server.key -out server.csr -config csr.conf
    4. 发布签名证书:

      openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf

后续步骤

您需要此证书来为 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

先决条件

流程

  1. 使用以下命令验证是否安装了 Fuse Console 镜像流,以检索所有模板的列表:

    oc get template -n openshift
  2. 另外,如果要使用新发行标签更新已安装的镜像流,请使用以下命令将 Fuse Console 镜像导入到 openshift 命名空间:

    oc import-image fuse7/fuse7-console:1.5 --from=registry.redhat.io/fuse7/fuse-console:1.5 --confirm -n openshift
  3. 将以下 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
  4. 对于命名空间模板,请跳至下一步。

    对于集群模板,在您选择的编辑器中编辑 fuse-console-cluster-os4.json 文件的本地副本,将 "grantMethod": "auto" 属性添加到 OAuthClient 部分:

    {
          "kind": "OAuthClient",
          "apiVersion": "v1",
          "metadata": {
            "name": "${APP_NAME}-oauth-client"
          },
          "grantMethod": "auto",
          "redirectURIs": [
            "https://${ROUTE_HOSTNAME}"
          ]
    }
  5. 运行以下命令来获取 Fuse Console APP_NAME 值(其中 mytemp 是包含 Fuse Console 模板的本地目录的路径):

    • 对于集群模板:

      oc process --parameters -f mytemp/fuse-console-cluster-os4.json
    • 对于命名空间模板:

      oc process --parameters -f mytemp/fuse-console-namespace-os4.json
  6. 从您在 OpenShift 4.x 上保护 Fuse 控制台 生成的证书,使用以下命令创建 secret 并将其挂载到 Fuse 控制台中(其中 APP_NAME 是 Fuse Console 应用程序的名称。

    oc create secret tls APP_NAME-tls-proxying --cert server.crt --key server.key
  7. 运行以下命令,基于 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-namespace-os4.json
  8. 运行以下命令,获取 Fuse 控制台部署的状态和 URL:

    oc status
  9. 要从浏览器访问 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 控制台应用程序:

  1. 在终端窗口中,使用以下命令更改应用程序自定义资源定义的 .spec.version 字段:

    oc patch <project-name> <custom-resource-name> --type='merge' -p '{"spec":{"version":"1.7.1"}}'

    例如:

    oc patch myproject example-fuseconsole --type='merge' -p '{"spec":{"version":"1.7.1"}}'
  2. 检查应用程序的状态是否已更新:

     oc get myproject

    响应显示有关应用程序的信息,包括版本号:

    NAME                  AGE   URL                                        IMAGE
    example-fuseconsole   1m    https://fuseconsole.192.168.64.38.nip.io   docker.io/fuseconsole/online:1.7.1

    当您更改 .spec.version 字段的值时,OpenShift 会自动重新部署应用。

  3. 检查版本更改触发的重新部署状态:

    oc rollout status deployment.v1.apps/example-fuseconsole

    成功部署会显示这个响应:

    deployment "example-fuseconsole" successfully rolled out
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.