2.2. 使用命令行在 OpenShift 4.x 上安装和部署 Fuse 控制台


在 OpenShift 4.x 中,您可以选择其中一个部署选项来从命令行安装和部署 Fuse 控制台:

  • 集群 - Fuse 控制台可以发现并连接到在 OpenShift 集群上的多个命名空间(项目)间部署的 Fuse 应用程序。要部署此模板,您必须具有 OpenShift 集群的管理员角色。
  • 具有基于角色的访问控制的集群 - 具有可配置的基于角色的访问控制(RBAC)的集群模板。如需更多信息,请参阅 OpenShift 4.x 上 Fuse 控制台的基于角色的访问控制
  • 命名空间 - Fuse 控制台可以访问特定的 OpenShift 项目(命名空间)。要部署此模板,您必须具有 OpenShift 项目的管理员角色。
  • 带有基于角色的访问控制的命名空间 - 带有可配置 RBAC 的命名空间模板。如需更多信息,请参阅 OpenShift 4.x 上 Fuse 控制台的基于角色的访问控制

要查看 Fuse 控制台模板的参数列表,请运行以下命令:

oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-7_12_1-00011-redhat-00001/fuse-console-namespace-os4.json

先决条件

步骤

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

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

    oc import-image fuse7/fuse-console-rhel8:1.12 --from=registry.redhat.io/fuse7/fuse-console-rhel8:1.12 --confirm -n openshift
  3. 运行以下命令来获取 Fuse Console APP_NAME 值:

    oc process --parameters -f TEMPLATE-FILENAME

    其中 TEMPLATE-FILENAME 是以下模板之一:

  4. 从您在 OpenShift 4.x 上保护 Fuse 控制台 生成的证书,使用以下命令创建 secret 并将其挂载到 Fuse 控制台中(其中 APP_NAME 是 Fuse Console 应用程序的名称)。

    oc create secret tls APP_NAME-tls-proxying --cert server.crt --key server.key
  5. 运行以下命令,基于 Fuse Console 模板的本地副本创建新应用程序(其中 myproject 是 OpenShift 项目的名称,mytemp 是包含 Fuse Console 模板的本地目录的路径,myhost 是用于访问 Fuse 控制台的主机名:

    • 对于集群模板:

      oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-7_12_1-00011-redhat-00001/fuse-console-cluster-os4.json  -p ROUTE_HOSTNAME=myhost
    • 对于使用 RBAC 模板的集群:

      oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-7_12_1-00011-redhat-00001/fuse-console-cluster-rbac.yml -p ROUTE_HOSTNAME=myhost
    • 对于命名空间模板:

      oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-7_12_1-00011-redhat-00001/fuse-console-namespace-os4.json
    • 对于使用 RBAC 模板的命名空间:

      oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-7_12_1-00011-redhat-00001/fuse-console-namespace-rbac.yml
  6. 要配置 Fuse 控制台使其能够打开 OpenShift Web 控制台,请运行以下命令来设置 OPENSHIFT_WEB_CONSOLE_URL 环境变量:

    oc set env dc/${APP_NAME} OPENSHIFT_WEB_CONSOLE_URL=`oc get -n openshift-config-managed cm console-public -o jsonpath={.data.consoleURL}`
  7. 运行以下命令,获取 Fuse 控制台部署的状态和 URL:

    oc status
  8. 要从浏览器访问 Fuse 控制台,请使用在第 7 步中返回的 URL (例如 https://fuse-console.192.168.64.12.nip.io)。

2.2.1. 生成证书来保护 OpenShift 4.x 上的 Fuse 控制台

在 OpenShift 4.x 上,若要在 Fuse 控制台代理和 Jolokia 代理之间保持连接,必须在部署 Fuse 控制台前生成客户端证书。服务签名证书颁发机构私钥必须用于为客户端证书签名。

只有在您要使用命令行安装和部署 Fuse 控制台时,才必须 按照以下步骤操作。如果使用 Fuse Console Operator,它会为您处理此任务。

重要

您必须为每个 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

      在这里,CN 参数中的值指的是应用程序使用的命名空间。

    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 控制台 中所述。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.