在 OpenShift 中管理 Fuse
前言
Red Hat Fuse 提供两个企业监控工具来查看和管理 Fuse 集成:
- Fuse 控制台是一个基于 Web 的控制台,您可以从浏览器访问以监控和管理正在运行的 Fuse 容器。Fuse 控制台基于 Hawtio 开源软件(https://hawt.io/)。本指南介绍了如何使用 Fuse 控制台。
Prometheus 为 Fuse 发行版存储系统和集成级别指标。您可以使用图形分析界面(如 Grafana)来查看和分析存储的历史数据。如需了解更多有关使用 Prometheus 的信息,请参阅以下文档:
本指南的受众是关于 JBoss EAP 管理员的红帽 Fuse。本指南假定您熟悉红帽 Fuse 平台、Apache Camel 和组织处理要求。
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看我们的 CTO Chris Wright 信息。
第 1 章 关于 Fuse 控制台
Red Hat Fuse Console 是一个基于 HawtIO 开源软件的 Web 控制台。如需支持的浏览器列表,请转至 支持的配置。
Fuse 控制台提供了一个中央界面,用于检查和管理一个或多个部署的 Fuse 容器的详细信息。您还可以监控红帽 Fuse 和系统资源,执行更新,以及启动或停止服务。
当您安装红帽 Fuse 独立或在 OpenShift 中使用 Fuse 时,可以使用 Fuse 控制台。您可以在 Fuse 控制台中查看和管理的集成取决于正在运行的插件。可能的插件包括:
- Camel
- JMX
- OSGI
- Runtime
- 日志
第 2 章 在 OpenShift 4.x 中设置 Fuse 控制台
在 OpenShift 4.x 上,设置 Fuse 控制台涉及安装和部署它。您有安装和部署 Fuse 控制台的选项:
第 2.1 节 “使用 OperatorHub 在 OpenShift 4.x 上安装和部署 Fuse 控制台”
您可以使用 Fuse Console Operator 安装并部署 Fuse 控制台,以便它可以访问特定命名空间中的 Fuse 应用程序。Operator 处理 Fuse 控制台的安全。
第 2.2 节 “使用命令行在 OpenShift 4.x 上安装和部署 Fuse 控制台”
您可以使用命令行和其中一个 Fuse 控制台模板来安装和部署 Fuse 控制台,以便它能够访问 OpenShift 集群或特定命名空间中的多个命名空间中的 Fuse 应用程序。在部署前,您必须通过生成客户端证书来保护 Fuse 控制台。
另外,您可以为 Fuse 控制台自定义基于角色的访问控制(RBAC),如 第 2.3 节 “在 OpenShift 4.x 上对 Fuse 控制台进行基于角色的访问控制” 所述。
2.1. 使用 OperatorHub 在 OpenShift 4.x 上安装和部署 Fuse 控制台
要在 OpenShift 4.x 上安装 Fuse 控制台,您可以使用 OpenShift OperatorHub 提供的 Fuse Console Operator。要部署 Fuse 控制台,请创建一个已安装的 Operator 实例。
先决条件
-
您已使用
registry.redhat.io
配置身份验证,如 为容器镜像 使用registry.redhat.io
验证 中所述。 - 如果要为 Fuse 控制台自定义基于角色的访问控制(RBAC),则必须在安装 Fuse Console Operator 的同一 OpenShift 命名空间中有一个 RBAC 配置映射文件。如果要使用默认的 RBAC 行为,如 OpenShift 4.x 上 Fuse Console 的基于角色的访问控制 中所述,您不需要提供配置映射文件。
流程
安装和部署 Fuse 控制台:
-
以具有集群管理员访问权限的用户身份登录 Web 浏览器中的 OpenShift 控制台。
- 点 Operators,然后点 OperatorHub。
- 在搜索字段窗口中,键入 Fuse Console 以过滤 Operator 列表。
- 单击 Fuse Console Operator。
在 Fuse Console Operator 安装窗口中,单击 Install。
Create Operator Subscription 表单将打开。
- 对于 Update Channel,请选择 7.11.x。
对于 Installation Mode,接受默认命名空间(集群上的特定命名空间)。
请注意,在安装 Operator 后,当您部署 Fuse 控制台时,您可以选择监控集群中的所有命名空间中的所有应用程序,或仅在安装 Fuse Console Operator 的命名空间中监控应用程序。
- 对于 Installed Namespace,选择要在其中安装 Fuse Console Operator 的命名空间。
对于 Update Approval,您可以选择 Automatic 或 Manual 来配置 OpenShift 如何处理 Fuse Console Operator 的更新。
- 如果选择自动 更新,则当有 Fuse Console Operator 的新版本时,OpenShift Operator Lifecycle Manager(OLM)将自动升级运行 Fuse 控制台的运行实例,而无需人为干预。
- 如果选择手动 更新,则当有新版 Operator 可用时,OLM 会创建更新请求。作为集群管理员,您必须手动批准该更新请求,才能让 Fuse Console Operator 更新至新版本。
点 Install。
OpenShift 在当前命名空间中安装 Fuse Console Operator。
- 要验证安装,点 Operators,然后点 Installed Operators。您可以在 Operator 列表中看到 Fuse Console。
使用 OpenShift Web 控制台部署 Fuse 控制台:
- 在 Installed Operators 列表的 Name 列下,单击 Fuse Console。
在 Provided APIs 下的 Operator Details 页面中,点 Create Instance。
接受配置默认值或有选择性地编辑它们。
对于 Replicas,如果要提高 Fuse 控制台性能(例如在高可用性环境中),您可以增加分配给 Fuse 控制台的 pod 数量。
对于 Rbac (基于角色的访问控制),在 config Map 字段中指定一个值,如果您要自定义默认的 RBAC 行为,以及 ConfigMap 文件是否已存在于您安装 Fuse Console Operator 的命名空间中。如需有关 RBAC 的更多信息,请参阅 OpenShift 4.x 上 Fuse 控制台的基于角色的访问控制。
对于 Nginx,请参阅 Fuse Console Operator 安装的性能调优。
点 Create。
Fuse Console Operator Details 页面将打开,并显示部署的状态。
打开 Fuse 控制台:
对于 命名空间 部署:在 OpenShift Web 控制台中,打开您安装 Fuse Console operator 的项目,然后选择 Overview。在 Project Overview 页面中,向下滚动到 Launcher 部分,再单击 Fuse Console 链接。
对于 集群部署,在 OpenShift Web 控制台的标题栏中,点网格图标(
)。在弹出菜单中 红帽应用程序,单击 Fuse Console URL 链接。
登录到 Fuse 控制台。
在浏览器中打开一个 Authorize Access 页面,列出所需权限。
点击 Allow selected permissions。
Fuse 控制台在浏览器中打开,并显示您有权访问的 Fuse 应用程序 pod。
为您要查看的应用程序点 Connect。
这时将打开一个新的浏览器窗口,其中显示 Fuse 控制台中的应用程序。
2.2. 使用命令行在 OpenShift 4.x 上安装和部署 Fuse 控制台
在 OpenShift 4.x 中,您可以选择其中一个部署选项来从命令行安装和部署 Fuse 控制台:
- Cluster - Fuse 控制台可以发现并连接到在 OpenShift 集群上的多个命名空间(项目)部署的 Fuse 应用程序。要部署此模板,必须具有 OpenShift 集群的管理员角色。
- 具有基于角色的访问控制的集群 - 带有基于角色的访问控制(RBAC)的集群模板。如需更多信息,请参阅 OpenShift 4.x 上 Fuse 控制台的基于角色的访问控制。
- namespace - Fuse Console 有权访问特定的 OpenShift 项目(命名空间)。若要部署此模板,必须具有 OpenShift 项目的管理员角色。
- 具有基于角色的访问控制的命名空间 - 带有可配置 RBAC 的命名空间模板。如需更多信息,请参阅 OpenShift 4.x 上 Fuse 控制台的基于角色的访问控制。
要查看 Fuse Console 模板的参数列表,请运行以下命令:
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-namespace-os4.json
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-namespace-os4.json
先决条件
- 在安装和部署 Fuse 控制台前,您必须生成一个使用服务签名证书颁发机构签名的客户端证书,如生成证书以保护 OpenShift 4.x 上的 Fuse 控制台安全 中所述。
-
具有 OpenShift 集群的集群管理员角色。
-
您已使用
registry.redhat.io
配置身份验证,如 为容器镜像 使用registry.redhat.io
验证 中所述。 - 已安装 Fuse Console 镜像流(以及其他 Fuse 镜像流),如 在 OpenShift 4.x 服务器上安装 Fuse 镜像流和模板 中所述。
流程
使用以下命令检索所有模板列表,验证已安装了 Fuse Console 镜像流:
oc get template -n openshift
oc get template -n openshift
Copy to Clipboard Copied! 另外,如果要使用新发行版本标签更新已安装的镜像流,请使用以下命令将 Fuse Console 镜像导入到 openshift 命名空间:
oc import-image fuse7/fuse-console-rhel8:1.10 --from=registry.redhat.io/fuse7/fuse-console-rhel8:1.10 --confirm -n openshift
oc import-image fuse7/fuse-console-rhel8:1.10 --from=registry.redhat.io/fuse7/fuse-console-rhel8:1.10 --confirm -n openshift
Copy to Clipboard Copied! 运行以下命令来获取 Fuse Console APP_NAME 值:
oc process --parameters -f TEMPLATE-FILENAME
oc process --parameters -f TEMPLATE-FILENAME
Copy to Clipboard Copied! 其中
TEMPLATE-FILENAME
是以下模板之一:Cluster 模板:
`https://github.com/jboss-fuse/application-templates/blob/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002//fuse-console-cluster-os4.json`
`https://github.com/jboss-fuse/application-templates/blob/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002//fuse-console-cluster-os4.json`
Copy to Clipboard Copied! 带有可配置 RBAC 的集群模板:
`https://github.com/jboss-fuse/application-templates/blob/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002//fuse-console-cluster-rbac.yml`
`https://github.com/jboss-fuse/application-templates/blob/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002//fuse-console-cluster-rbac.yml`
Copy to Clipboard Copied! 命名空间模板:
`https://github.com/jboss-fuse/application-templates/blob/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002//fuse-console-namespace-os4.json`
`https://github.com/jboss-fuse/application-templates/blob/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002//fuse-console-namespace-os4.json`
Copy to Clipboard Copied! 使用可配置 RBAC 的命名空间模板:
`https://github.com/jboss-fuse/application-templates/blob/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002//fuse-console-namespace-rbac.yml`
`https://github.com/jboss-fuse/application-templates/blob/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002//fuse-console-namespace-rbac.yml`
Copy to Clipboard Copied! 例如,对于带有可配置的 RBAC 的集群模板,请运行这个命令:
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-cluster-rbac.yml
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-cluster-rbac.yml
Copy to Clipboard Copied!
从您在 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! 通过运行以下命令,基于 Fuse Console 模板的本地副本(其中 myproject 是 OpenShift 项目的名称,mytemp 是包含 Fuse 控制台模板的本地目录的路径),myhost 是用于访问 Fuse 控制台模板的主机名:
对于集群模板:
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-cluster-os4.json -p ROUTE_HOSTNAME=myhost
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-cluster-os4.json -p ROUTE_HOSTNAME=myhost
Copy to Clipboard Copied! 对于使用 RBAC 模板的集群:
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/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-sb2-7_11_1-00016-redhat-00002/fuse-console-cluster-rbac.yml -p ROUTE_HOSTNAME=myhost
Copy to Clipboard Copied! 对于命名空间模板:
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-namespace-os4.json
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-namespace-os4.json
Copy to Clipboard Copied! 对于带有 RBAC 模板的命名空间:
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-namespace-rbac.yml
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fuse-console-namespace-rbac.yml
Copy to Clipboard Copied!
要配置 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}`
oc set env dc/${APP_NAME} OPENSHIFT_WEB_CONSOLE_URL=`oc get -n openshift-config-managed cm console-public -o jsonpath={.data.consoleURL}`
Copy to Clipboard Copied! 运行以下命令,获取 Fuse Console 部署的状态和 URL:
oc status
oc status
Copy to Clipboard Copied! - 要从浏览器访问 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 集群生成并签名单独的客户端证书。不要为多个集群使用相同的证书。
先决条件
-
具有
集群 admin
访问权限,可以访问 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! 通过执行以下命令检索服务签名证书颁发机构密钥:
检索证书:
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! 检索私钥:
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!
生成客户端证书,如 Kubernetes 证书管理 中所述,使用简单的
rsa
、openssl
或cfssl
。以下是使用 openssl 的示例命令:
生成私钥:
openssl genrsa -out server.key 2048
openssl genrsa -out server.key 2048
Copy to Clipboard Copied! 编写 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
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
Copy to Clipboard Copied! 此处,
CN
参数中的值引用应用程序名称和应用程序所使用的命名空间。生成 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! 签发签名证书:
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!
后续步骤
您需要此证书来为 Fuse 控制台创建 secret,如 使用命令行在 OpenShift 4.x 上安装和部署 Fuse 控制台 中所述。
2.3. 在 OpenShift 4.x 上对 Fuse 控制台进行基于角色的访问控制
Fuse 控制台提供基于角色的访问控制(RBAC),根据 OpenShift 提供的用户授权访问。在 Fuse 控制台中,RBAC 决定用户对 pod 执行 MBean 操作的能力。
如需有关 OpenShift 授权的信息,请参阅 OpenShift 文档中的使用 RBAC 定义和应用权限 部分。
当使用 Operator 在 OpenShift 上安装 Fuse 控制台时,默认启用基于角色的访问控制。
如果要使用模板安装 Fuse 控制台,为它实施基于角色的访问权限,则必须使用可通过 RBAC 配置的模板之一(fuse-console-cluster-rbac.yml
或 fuse-console-namespace-rbac.yml
)来安装 Fuse 控制台,如 使用命令行在 OpenShift 4.x 上安装和部署 Fuse 控制台。
Fuse 控制台 RBAC 利用 OpenShift 中 pod 资源的用户 动词 访问权限,以确定用户在 Fuse 控制台中对 pod 的 MBean 操作的访问权限。默认情况下,Fuse 控制台有两个用户角色:
admin
如果用户可以在 OpenShift 中更新 pod,则该用户将延迟到 Fuse Console 的 admin 角色。用户可以在 Fuse Console 中为 pod 执行 write MBean 操作。
Viewer
如果用户可以在 OpenShift 中获取 pod,则该用户为 Fuse Console 会延迟到 查看器 角色。用户可在 Pod 的 Fuse Console 中执行 只读 MBean 操作。
如果您使用了非RBAC 模板来安装 Fuse 控制台,只有在 pod 资源上授予 update 动词的 OpenShift 用户才会被授权执行 Fuse Console MBeans 操作。在 pod 资源上授予 get 动词的 用户可以查看 pod,但它们无法执行任何 Fuse 控制台操作。
其他资源
2.3.1. 在 OpenShift 4.x 上确定 Fuse 控制台的访问角色
基于 Fuse 控制台角色的访问控制是从用户的 OpenShift 权限推断出来的。要确定授予特定用户的 Fuse Console 访问权限角色,请获取为 Pod 用户授予的 OpenShift 权限。
先决条件
- 您知道用户的名称。
- 您知道 pod 的名称。
流程
要确定用户是否具有 pod 的 Fuse Console admin 角色,请运行以下命令来查看用户是否可以在 OpenShift 上更新 pod:
oc auth can-i update pods/<pod> --as <user>
oc auth can-i update pods/<pod> --as <user>
Copy to Clipboard Copied! 如果响应是
yes
,该用户具有 pod 的 Fuse Console admin 角色。用户可以在 Fuse Console 中为 pod 执行 write MBean 操作。要确定用户是否具有 pod 的 Fuse Console viewer 角色,请运行以下命令来查看用户是否可以在 OpenShift 上获取 pod:
oc auth can-i get pods/<pod> --as <user>
oc auth can-i get pods/<pod> --as <user>
Copy to Clipboard Copied! 如果响应是
yes
,该用户具有 pod 的 Fuse Console viewer 角色。用户可在 Pod 的 Fuse Console 中执行 只读 MBean 操作。根据上下文,Fuse Console 通过禁用选项或在用户尝试 write MBean 操作时,Fuse Console 可防止具有 viewer 角色的用户执行 write MBean 操作的用户。如果没有
响应,用户不会绑定到任何 Fuse Console 角色,用户无法在 Fuse Console 中查看 pod。
2.3.2. 自定义 OpenShift 4.x 上的 Fuse 控制台基于角色的访问权限
如果您使用 OperatorHub 安装 Fuse 控制台,则默认启用 基于角色的访问控制(RBAC),如 OpenShift 4.x 上 Fuse Console 的基于角色的访问控制所述。如果要在部署 Fuse 控制台 RBAC 之前自定义 Fuse 控制台 RBAC 行为,您必须提供 ConfigMap 文件(定义自定义 RBAC 行为)。您必须将自定义 ConfigMap 文件放在安装 Fuse Console Operator 的同一命名空间中。
如果使用命令行模板来安装 Fuse 控制台,则 deployment-cluster-rbac.yml
和 deployment-namespace-rbac.yml
模板会创建一个包含配置文件(ACL.yml
)的 ConfigMap。配置文件定义 MBean 操作允许的角色。
前提条件
-
已使用 OperatorHub 或使用其中一个 Fuse 控制台 RBAC 模板(
deployment-cluster-rbac.yml
或deployment-namespace-rbac.yml
)安装 Fuse 控制台。
流程
自定义 Fuse 控制台 RBAC 角色:
如果使用命令行安装了 Fuse 控制台,安装模板会包括默认 ConfigMap 文件,以便您可以跳至下一步。
如果在部署 Fuse Console 创建 RBAC ConfigMap 前,使用 OperatorHub 安装 Fuse 控制台:
确保当前的 OpenShift 项目是您要安装 Fuse 控制台的项目。例如,如果您要在 fusetest 项目中安装 Fuse 控制台,请运行以下命令:
oc project fusetest
oc project fusetest
Copy to Clipboard Copied! 要从模板创建 Fuse 控制台 RBAC ConfigMap 文件,请运行以下命令:
oc process -f https://raw.githubusercontent.com/jboss-fuse/application-templates/2.1.x.sb2.redhat-7-8-x/fuse-console-operator-rbac.yml -p APP_NAME=fuse-console | oc create -f -
oc process -f https://raw.githubusercontent.com/jboss-fuse/application-templates/2.1.x.sb2.redhat-7-8-x/fuse-console-operator-rbac.yml -p APP_NAME=fuse-console | oc create -f -
Copy to Clipboard Copied!
运行以下命令在编辑器中打开 ConfigMap:
oc edit cm $APP_NAME-rbac
oc edit cm $APP_NAME-rbac
Copy to Clipboard Copied! 例如:
oc edit cm fuse-console-rbac
oc edit cm fuse-console-rbac
Copy to Clipboard Copied! - 编辑该文件。
- 保存文件以使改变生效。OpenShift 会自动重启 Fuse 控制台 Pod。
2.3.3. 在 OpenShift 4.x 上为 Fuse 控制台禁用基于角色的访问控制
如果您使用命令行安装了 Fuse 控制台,并且指定了其中一个 Fuse 控制台 RBAC 模板,则 Fuse Console 的 HAWTIO_ONLINE_RBAC_ACL
环境变量将基于角色的访问控制(RBAC)ConfigMap 配置文件路径传递给 OpenShift 服务器。如果没有指定 HAWTIO_ONLINE_RBAC_ACL
环境变量,则只禁用 RBAC 支持,只有在 pod 资源(OpenShift 中)上授予 更新 动词的用户才可以在 Fuse 控制台中调用 MBeans 操作。
请注意,当使用 OperatorHub 安装 Fuse 控制台时,默认启用基于角色的访问权限,而 HAWTIO_ONLINE_RBAC_ACL
环境变量不适用。
前提条件
您使用命令行安装 Fuse 控制台,并指定了其中一个 Fuse 控制台 RBAC 模板(deployment-cluster-rbac.yml
或 deployment-namespace-rbac.yml
)。
流程
为 Fuse 控制台禁用基于角色的访问控制访问:
- 在 OpenShift 中,编辑 Fuse 控制台的 Deployment Config 资源。
删除整个
HAWTIO_ONLINE_RBAC_ACL
环境变量定义。(请注意,仅清除其值就不足)。
- 保存文件以使改变生效。OpenShift 会自动重启 Fuse 控制台 Pod。
2.4. 在 OpenShift 4.x 上升级 Fuse 控制台
Red Hat OpenShift 4.x 处理对操作器的更新,包括红帽 Fuse 操作器。如需更多信息,请参阅 Operator OpenShift 文档。
然后,操作员更新可以根据应用程序的配置方式触发应用程序升级。
对于 Fuse Console 应用程序,您还可以通过编辑应用程序自定义资源定义的 .spec.version
字段来触发对应用程序的升级。
前提条件
- 有 OpenShift 集群 admin 权限。
流程
要升级 Fuse 控制台应用程序:
在终端窗口中,使用以下命令更改应用程序自定义资源定义的
.spec.version
字段:oc patch -n <project-name> <custom-resource-name> --type='merge' -p '{"spec":{"version":"1.7.1"}}'
oc patch -n <project-name> <custom-resource-name> --type='merge' -p '{"spec":{"version":"1.7.1"}}'
Copy to Clipboard Copied! 例如:
oc patch -n myproject hawtio/example-fuseconsole --type='merge' -p '{"spec":{"version":"1.7.1"}}'
oc patch -n myproject hawtio/example-fuseconsole --type='merge' -p '{"spec":{"version":"1.7.1"}}'
Copy to Clipboard Copied! 检查应用程序的状态已更新:
oc get -n myproject hawtio/example-fuseconsole
oc get -n myproject hawtio/example-fuseconsole
Copy to Clipboard Copied! 响应显示应用程序的信息,包括版本号:
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! 更改
.spec.version
字段的值时,OpenShift 会自动重新部署应用。检查版本更改触发的重新部署状态:
oc rollout status deployment.v1.apps/example-fuseconsole
oc rollout status deployment.v1.apps/example-fuseconsole
Copy to Clipboard Copied! 成功部署显示这个响应:
deployment "example-fuseconsole" successfully rolled out
deployment "example-fuseconsole" successfully rolled out
Copy to Clipboard Copied!
2.5. 在 OpenShift 4.x 服务器上升级 Fuse 镜像流和模板
OpenShift Container Platform 4.x 使用 Samples Operator,它运行在 OpenShift 命名空间中,升级和更新基于 Red Hat Enterprise Linux (RHEL)的 OpenShift Container Platform 镜像流和模板。
在 OpenShift 镜像流和模板上升级 Fuse:
- 重新配置 Samples Operator
将 Fuse 镜像流和模板添加到
Skipped Imagestreams 和 Skipped Templates
字段中。- skipped Imagestreams :位于 Samples Operator 清单中的 Imagestreams,但集群管理员希望 Operator 忽略或不予管理。
- skipped Templates:位于 Samples Operator 清单中的模板,但集群管理员希望 Operator 忽略或不予管理。
先决条件
- 您可以访问 OpenShift 服务器。
-
您已将身份验证配置为
registry.redhat.io
。
流程
- 启动 OpenShift 4 服务器。
以管理员身份登录 OpenShift 服务器。
oc login --user system:admin --token=my-token --server=https://my-cluster.example.com:6443
oc login --user system:admin --token=my-token --server=https://my-cluster.example.com:6443
Copy to Clipboard Copied! 验证您是否正在使用为其创建了 docker-registry secret 的项目。
oc project openshift
oc project openshift
Copy to Clipboard Copied! 查看 Samples operator 的当前配置。
oc get configs.samples.operator.openshift.io -n openshift-cluster-samples-operator -o yaml
oc get configs.samples.operator.openshift.io -n openshift-cluster-samples-operator -o yaml
Copy to Clipboard Copied! 配置 Samples operator 以忽略添加的 fuse 模板和镜像流。
oc edit configs.samples.operator.openshift.io -n openshift-cluster-samples-operator
oc edit configs.samples.operator.openshift.io -n openshift-cluster-samples-operator
Copy to Clipboard Copied! 添加 Fuse 镜像流 Skipped Imagestreams 部分,并将 Fuse 和 Spring Boot 2 模板添加到跳过的 Templates 部分。
[...] spec: architectures: - x86_64 managementState: Managed skippedImagestreams: - fuse-console-rhel8 - fuse-eap-openshift-jdk8-rhel7 - fuse-eap-openshift-jdk11-rhel8 - fuse-java-openshift-rhel8 - fuse-java-openshift-jdk11-rhel8 - fuse-karaf-openshift-rhel8 - fuse-karaf-openshift-jdk11-rhel8 - fuse-apicurito-generator-rhel8 - fuse-apicurito-rhel8 skippedTemplates: - s2i-fuse711-eap-camel-amq - s2i-fuse711-eap-camel-cdi - s2i-fuse711-eap-camel-cxf-jaxrs - s2i-fuse711-eap-camel-cxf-jaxws - s2i-fuse711-karaf-camel-amq - s2i-fuse711-karaf-camel-log - s2i-fuse711-karaf-camel-rest-sql - s2i-fuse711-karaf-cxf-rest - s2i-fuse711-spring-boot-2-camel-amq - s2i-fuse711-spring-boot-2-camel-config - s2i-fuse711-spring-boot-2-camel-drools - s2i-fuse711-spring-boot-2-camel-infinispan - s2i-fuse711-spring-boot-2-camel-rest-3scale - s2i-fuse711-spring-boot-2-camel-rest-sql - s2i-fuse711-spring-boot-2-camel - s2i-fuse711-spring-boot-2-camel-xa - s2i-fuse711-spring-boot-2-camel-xml - s2i-fuse711-spring-boot-2-cxf-jaxrs - s2i-fuse711-spring-boot-2-cxf-jaxws - s2i-fuse711-spring-boot-2-cxf-jaxrs-xml - s2i-fuse711-spring-boot-2-cxf-jaxws-xml
[...] spec: architectures: - x86_64 managementState: Managed skippedImagestreams: - fuse-console-rhel8 - fuse-eap-openshift-jdk8-rhel7 - fuse-eap-openshift-jdk11-rhel8 - fuse-java-openshift-rhel8 - fuse-java-openshift-jdk11-rhel8 - fuse-karaf-openshift-rhel8 - fuse-karaf-openshift-jdk11-rhel8 - fuse-apicurito-generator-rhel8 - fuse-apicurito-rhel8 skippedTemplates: - s2i-fuse711-eap-camel-amq - s2i-fuse711-eap-camel-cdi - s2i-fuse711-eap-camel-cxf-jaxrs - s2i-fuse711-eap-camel-cxf-jaxws - s2i-fuse711-karaf-camel-amq - s2i-fuse711-karaf-camel-log - s2i-fuse711-karaf-camel-rest-sql - s2i-fuse711-karaf-cxf-rest - s2i-fuse711-spring-boot-2-camel-amq - s2i-fuse711-spring-boot-2-camel-config - s2i-fuse711-spring-boot-2-camel-drools - s2i-fuse711-spring-boot-2-camel-infinispan - s2i-fuse711-spring-boot-2-camel-rest-3scale - s2i-fuse711-spring-boot-2-camel-rest-sql - s2i-fuse711-spring-boot-2-camel - s2i-fuse711-spring-boot-2-camel-xa - s2i-fuse711-spring-boot-2-camel-xml - s2i-fuse711-spring-boot-2-cxf-jaxrs - s2i-fuse711-spring-boot-2-cxf-jaxws - s2i-fuse711-spring-boot-2-cxf-jaxrs-xml - s2i-fuse711-spring-boot-2-cxf-jaxws-xml
Copy to Clipboard Copied! 在 OpenShift 镜像流上升级 Fuse。
BASEURL=https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002 oc replace -n openshift -f ${BASEURL}/fis-image-streams.json
BASEURL=https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002 oc replace -n openshift -f ${BASEURL}/fis-image-streams.json
Copy to Clipboard Copied! 在 OpenShift quickstart 模板上升级 Fuse:
for template in eap-camel-amq-template.json \ eap-camel-cdi-template.json \ eap-camel-cxf-jaxrs-template.json \ eap-camel-cxf-jaxws-template.json \ karaf-camel-amq-template.json \ karaf-camel-log-template.json \ karaf-camel-rest-sql-template.json \ karaf-cxf-rest-template.json ; do oc replace -n openshift \ ${BASEURL}/quickstarts/${template} done
for template in eap-camel-amq-template.json \ eap-camel-cdi-template.json \ eap-camel-cxf-jaxrs-template.json \ eap-camel-cxf-jaxws-template.json \ karaf-camel-amq-template.json \ karaf-camel-log-template.json \ karaf-camel-rest-sql-template.json \ karaf-cxf-rest-template.json ; do oc replace -n openshift \ ${BASEURL}/quickstarts/${template} done
Copy to Clipboard Copied! 升级 Spring Boot 2 Quickstart 模板:
for template in spring-boot-2-camel-amq-template.json \ spring-boot-2-camel-config-template.json \ spring-boot-2-camel-drools-template.json \ spring-boot-2-camel-infinispan-template.json \ spring-boot-2-camel-rest-3scale-template.json \ spring-boot-2-camel-rest-sql-template.json \ spring-boot-2-camel-template.json \ spring-boot-2-camel-xa-template.json \ spring-boot-2-camel-xml-template.json \ spring-boot-2-cxf-jaxrs-template.json \ spring-boot-2-cxf-jaxws-template.json \ spring-boot-2-cxf-jaxrs-xml-template.json \ spring-boot-2-cxf-jaxws-xml-template.json ; do oc replace -n openshift \ ${BASEURL}/quickstarts/${template} done
for template in spring-boot-2-camel-amq-template.json \ spring-boot-2-camel-config-template.json \ spring-boot-2-camel-drools-template.json \ spring-boot-2-camel-infinispan-template.json \ spring-boot-2-camel-rest-3scale-template.json \ spring-boot-2-camel-rest-sql-template.json \ spring-boot-2-camel-template.json \ spring-boot-2-camel-xa-template.json \ spring-boot-2-camel-xml-template.json \ spring-boot-2-cxf-jaxrs-template.json \ spring-boot-2-cxf-jaxws-template.json \ spring-boot-2-cxf-jaxrs-xml-template.json \ spring-boot-2-cxf-jaxws-xml-template.json ; do oc replace -n openshift \ ${BASEURL}/quickstarts/${template} done
Copy to Clipboard Copied! (可选) 查看 OpenShift 模板上的升级 Fuse:
oc get template -n openshift
oc get template -n openshift
Copy to Clipboard Copied!
2.6. 在 OpenShift 4.x 上调整 Fuse 控制台的性能
默认情况下,Fuse 控制台使用以下 Nginx 设置:
-
clientBodyBufferSize: 256k
-
proxyBuffers: 16 128k
-
subrequestOutputBufferSize: 10m
注: 有关这些设置的描述,请参阅 Nginx 文档 :http://nginx.org/en/docs/dirindex.html
要调整 Fuse 控制台的性能,您可以设置任何 clientBodyBufferSize
、proxyBuffers
和 subrequestOutputBufferSize
环境变量。例如,如果您使用 Fuse Console 监控多个 pod 和路由(例如,总共 100 个路由),您可以通过将 Fuse Console 的 subrequestOutputBufferSize
环境变量设置为 100
,从而解决加载超时问题。
m
如何设置这些环境变量取决于您如何在 Openshift 4.x 上安装 Fuse 控制台:
- 使用 Fuse Console Operator
- 使用 Fuse Console 模板
2.6.1. Fuse Console Operator 安装的性能调优
在 Openshift 4.x 上,您可以在部署 Fuse 控制台前或之后设置 Nginx 性能调优环境变量。如果您这样做了,OpenShift 会重新部署 Fuse 控制台。
先决条件
-
具有
集群 admin
访问权限,可以访问 OpenShift 集群。 - 您已安装 Fuse Console Operator,如使用 OperatorHub 在 OpenShift 4.x 上安装和部署 Fuse 控制台 中所述。
流程
您可以在部署 Fuse 控制台前或之后设置环境变量。
在部署 Fuse 控制台前设置环境变量:
- 在 OpenShift web 控制台中,在安装了 Fuse Console Operator 的项目中,选择 Operators> Installed Operators> Red Hat Integration - Fuse Console。
- 单击 Hawtio 选项卡,然后单击 Create Hawtio。
- 在 Create Hawtio 页面中,在 Form view 中滚动到 Config> Nginx 部分。
展开 Nginx 部分,然后设置环境变量。例如:
- clientBodyBufferSize: 256k
- proxyBuffers: 16 128k
- subrequestOutputBufferSize: 100m
- 保存配置。
- 点 Create 部署 Fuse 控制台。
- 部署完成后,打开 Deployments> fuse-console 页面,然后点 Environment 来验证环境变量是否位于列表中。
在部署 Fuse 控制台后设置环境变量:
- 在 OpenShift Web 控制台中,打开部署了 Fuse 控制台的项目。
- 选择 Operators> Installed Operators> Red Hat Integration - Fuse Console。
- 单击 Hawtio 选项卡,然后单击 fuse-console。
- 选择 Actions> Edit Hawtio。
-
在 Editor 窗口中,向下滚动到
spec
部分。 在
spec
部分,添加新的nginx
部分并指定一个或多个环境变量,例如:apiVersion: hawt.io/v1alpha1 kind: Hawtio metadata: name: fuse-console spec: type: Namespace nginx: clientBodyBufferSize: 256k proxyBuffers: 16 128k subrequestOutputBufferSize: 100m . . .
apiVersion: hawt.io/v1alpha1 kind: Hawtio metadata: name: fuse-console spec: type: Namespace nginx: clientBodyBufferSize: 256k proxyBuffers: 16 128k subrequestOutputBufferSize: 100m . . .
Copy to Clipboard Copied! 点击 Save。
OpenShift 重新部署 Fuse 控制台。
- 重新部署完成后,打开 Workloads> Deployments> fuse-console 页面,然后点 Environment 查看列表中的环境变量。
2.6.2. Fuse Console 模板安装的性能调优
在 Openshift 4.x 上,您可以在部署 Fuse 控制台前或之后设置 Nginx 性能调优环境变量。如果您这样做了,OpenShift 会重新部署 Fuse 控制台。
先决条件
-
具有
集群 admin
访问权限,可以访问 OpenShift 集群。 - 您已在 OpenShift 上安装 Fuse 控制台模板,如在 OpenShift 4.x 服务器 上安装 Fuse 镜像流和模板 中所述。
流程
您可以在部署 Fuse 控制台前或之后设置环境变量。
在部署 Fuse 控制台前设置环境变量:
确定您要使用的 Fuse Console 模板:
-
集群模板(
fuse-console-cluster-os4.json
) -
带有可配置 RBAC(
fuse-console-cluster-rbac.yml
)的集群模板。 -
命名空间模板(
fuse-console-namespace-os4.json
) -
带有可配置 RBAC(
fuse-console-namespace-rbac.yml
)的命名空间模板。
-
集群模板(
编辑用于 Fuse 控制台模板的本地副本,以包括
NGINX_CLIENT_BODY_BUFFER_SIZE
、NINX_PROXY_BUFFERS
和/或NGINX_SUBREQUEST_OUTPUT_BUFFER_SIZE
环境变量,如下例所示:apiVersion: apps.openshift.io/v1 kind: DeploymentConfig metadata: name: fuse-console spec: template: spec: containers: - env: - name: NGINX_CLIENT_BODY_BUFFER_SIZE value: 256k - name: NGINX_PROXY_BUFFERS value: 16 128k - name: NGINX_SUBREQUEST_OUTPUT_BUFFER_SIZE value: 100m
apiVersion: apps.openshift.io/v1 kind: DeploymentConfig metadata: name: fuse-console spec: template: spec: containers: - env: - name: NGINX_CLIENT_BODY_BUFFER_SIZE value: 256k - name: NGINX_PROXY_BUFFERS value: 16 128k - name: NGINX_SUBREQUEST_OUTPUT_BUFFER_SIZE value: 100m
Copy to Clipboard Copied! - 保存您的更改。
- 按照 在 OpenShift 4.x 中设置 Fuse 控制台 中所述,请按照安装和部署 Fuse 控制台 的步骤进行操作。
在部署 Fuse 控制台后设置环境变量:
- 在终端窗口中,登录 OpenShift 集群。
打开在其中部署 Fuse 控制台的项目。例如,如果在
myfuse
项目中部署了 Fuse 控制台,使用以下命令:oc project myfuse
获取 Fuse 控制台部署的名称:
oc get deployments
此命令返回当前项目中运行的部署列表。例如:
NAME READY UP-TO-DATE AVAILABLE AGE fuse-console 1/1 1 1 114m
NAME READY UP-TO-DATE AVAILABLE AGE fuse-console 1/1 1 1 114m
Copy to Clipboard Copied! 运行以下一个或多个命令来设置 Fuse 控制台部署的环境变量:
oc set env dc/fuse-console NGINX_CLIENT_BODY_BUFFER_SIZE="256k" oc set env dc/fuse-console NGINX_PROXY_BUFFERS="16 128k" oc set env dc/fuse-console NGINX_SUBREQUEST_OUTPUT_BUFFER_SIZE="10m"
oc set env dc/fuse-console NGINX_CLIENT_BODY_BUFFER_SIZE="256k" oc set env dc/fuse-console NGINX_PROXY_BUFFERS="16 128k" oc set env dc/fuse-console NGINX_SUBREQUEST_OUTPUT_BUFFER_SIZE="10m"
Copy to Clipboard Copied! OpenShift 重新部署 Fuse 控制台。
重新部署完成后,验证环境变量设置:
获取 Fuse Console pod 名称:
oc get pods
oc get pods
Copy to Clipboard Copied! 运行以下命令来查看环境设置
oc exec <fuse-console-podname> -- cat /opt/app-root/etc/nginx.d/nginx-gateway.conf | grep "Performance tuning" -A 3
oc exec <fuse-console-podname> -- cat /opt/app-root/etc/nginx.d/nginx-gateway.conf | grep "Performance tuning" -A 3
Copy to Clipboard Copied! 例如,如果 pod 名称是
fuse-console-6646cbbd4c-9rplg
,请运行以下命令:oc exec fuse-console-6646cbbd4c-9rplg -- cat /opt/app-root/etc/nginx.d/nginx-gateway.conf | grep "Performance tuning" -A 3
oc exec fuse-console-6646cbbd4c-9rplg -- cat /opt/app-root/etc/nginx.d/nginx-gateway.conf | grep "Performance tuning" -A 3
Copy to Clipboard Copied!
2.6.3. 在 Fuse Console 上查看应用程序的性能调整
通过提高 Fuse 控制台的性能调整功能,您可以查看有大量 MBeans 的应用程序。要使用这个功能,请执行以下步骤:
先决条件
-
具有
集群 admin
访问权限,可以访问 OpenShift 集群。 - 您已安装 Fuse Console Operator,如使用 OperatorHub 在 OpenShift 4.x 上安装和部署 Fuse 控制台 中所述。
流程
为应用程序增加内存限值。
将内存限制增加到 512 Mi,因此应用程序在到达 Fuse 控制台前不会发生 OOM 错误。对于 Fuse 快速入门,请编辑应用程序的
src/main/jkube/deployment.yml
文件。spec: template: spec: containers: - resources: [...] limits: cpu: "1.0" memory: 512Mi
spec: template: spec: containers: - resources: [...] limits: cpu: "1.0" memory: 512Mi
Copy to Clipboard Copied! - 确保 Fuse Console Deployment 或 DeploymentConfig 有足够内存限制。如果没有足够的值,将限制从 200Mi 增加到 512Mi。
- 如果您在 nginx 日志中看到"too big 子请求响应时发送到客户端"错误,请应用 第 2.6.1 节 “Fuse Console Operator 安装的性能调优” 部分提到的解决方案。
第 3 章 在 OpenShift 3.11 中设置 Fuse 控制台
在 OpenShift 3.11 中,您可以访问 Fuse 控制台:
- 通过将 Fuse 控制台添加到 OpenShift 项目,以便您可以监控项目中的所有正在运行的 Fuse 容器。
- 通过将 Fuse 控制台添加到 OpenShift 集群,以便您可以监控集群中所有项目中的所有运行 Fuse 容器。
- 从特定的 Fuse pod 打开它,以便您可以监控单个正在运行的 Fuse 容器。
您可以使用命令行部署 Fuse 控制台模板。
要在 Minishift 或 CDK based environmentiroments 上安装 Fuse Console,请按照以下 KCS 文章中介绍的步骤操作。
- 要在 Minishift 或 CDK based environmentiroments 上安装 Fuse Console,请参阅 KCS 4998441。
- 如果需要禁用 Jolokia 身份验证,请参阅 KCS 3988671 中描述的临时解决方案。
前提条件
- 如 OpenShift 的 Fuse 指南中所述,在 OpenShift 镜像流和 Fuse 控制台安装 Fuse。
- 对 Fuse 控制台的用户管理由 OpenShift 处理。
- 基于角色的访问控制(在部署后访问 Fuse 控制台的用户)尚不可用于 OpenShift 3.11 上的 Fuse。
第 3.1 节 “在 OpenShift 3.11 上部署 Fuse 控制台”
第 3.2 节 “从 OpenShift 3.11 上的 Fuse 控制台监控单个 Fuse pod”
3.1. 在 OpenShift 3.11 上部署 Fuse 控制台
表 3.1 “Fuse 控制台模板” 根据 Fuse 应用程序部署类型,描述可用于从命令行部署 Fuse 控制台的 OpenShift 3.11 模板。
类型 | 描述 |
---|---|
| Fuse 控制台可以发现并连接到部署在多个命名空间或项目中的 Fuse 应用程序。要部署此模板,必须具有 OpenShift cluster-admin 角色。 |
| 此模板限制 Fuse 控制台对当前 OpenShift 项目(命名空间)的访问,这种模板充当单一租户部署。若要部署此模板,必须具有当前 OpenShift 项目的 admin 角色。 |
另外,您可以通过运行以下命令查看所有模板的参数列表:
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fis-console-namespace-template.json
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fis-console-namespace-template.json
Fuse 控制台模板默认配置端到端加密,以使您的 Fuse 控制台请求安全,从浏览器到集群服务。
前提条件
对于 OpenShift 3.11 上的集群模式,您需要集群管理员角色和集群模式模板。运行以下命令:
oc adm policy add-cluster-role-to-user cluster-admin system:serviceaccount:openshift-infra:template-instance-controller
oc adm policy add-cluster-role-to-user cluster-admin system:serviceaccount:openshift-infra:template-instance-controller
Copy to Clipboard Copied!
流程
从命令行部署 Fuse 控制台:
通过运行以下命令之一(其中 myproject 是项目的名称),基于 Fuse Console 模板创建新应用:
对于 Fuse Console 集群 模板,其中
myhost
是用于访问 Fuse 控制台的主机名:oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fis-console-cluster-template.json -p ROUTE_HOSTNAME=myhost
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fis-console-cluster-template.json -p ROUTE_HOSTNAME=myhost
Copy to Clipboard Copied! 对于 Fuse Console 命名空间 模板:
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fis-console-namespace-template.json
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_11_1-00016-redhat-00002/fis-console-namespace-template.json
Copy to Clipboard Copied! 注意您可以省略 命名空间 模板的 route_hostname 参数,因为 OpenShift 会自动生成一个。
运行以下命令,获取 Fuse Console 部署的状态和 URL:
oc status
oc status
Copy to Clipboard Copied! 要从浏览器访问 Fuse 控制台,请使用提供的 URL。
Example:
3.2. 从 OpenShift 3.11 上的 Fuse 控制台监控单个 Fuse pod
您可以为 OpenShift 3.11 上运行的 Fuse pod 打开 Fuse 控制台。
前提条件
要将 OpenShift 配置为在 Pod 视图中显示 Fuse Console 的链接,在 OpenShift 镜像上运行的 Fuse 必须声明在 name 属性设置为
jolokia
的 TCP 端口:{ "kind": "Pod", [...] "spec": { "containers": [ { [...] "ports": [ { "name": "jolokia", "containerPort": 8778, "protocol": "TCP" }
{ "kind": "Pod", [...] "spec": { "containers": [ { [...] "ports": [ { "name": "jolokia", "containerPort": 8778, "protocol": "TCP" }
Copy to Clipboard Copied!
流程
在 OpenShift 项目中的 Applications → Pods 视图中,点击 pod 名称来查看正在运行的 Fuse Pod 的详情。在此页面的右侧,您会看到容器模板的摘要:
从此视图中,单击 Open Java Console 链接以打开 Fuse 控制台。
第 4 章 查看容器和应用程序
登录 OpenShift 的 Fuse 控制台时,Fuse Console 主页会显示可用的容器。
流程
- 要管理(创建、编辑或删除)容器,请使用 OpenShift 控制台。
- 要在 OpenShift 集群上查看 Fuse 应用程序和 AMQ Broker(如果适用),请点击 Online 选项卡。
第 5 章 查看并管理 Apache Camel 应用程序
在 Fuse Console 的 Camel 选项卡中,您可以查看和管理 Apache Camel 上下文、路由和依赖项。
您可以查看以下详情:
- 所有正在运行的 Camel 上下文的列表
- 每个 Camel 上下文的详细信息,如 Camel 版本号和运行时静态
- 每个 Camel 应用程序中的所有路由列表及其运行时统计
- 运行的路由的图形表示以及实时指标
您还可以通过以下方式与 Camel 应用程序交互:
- 启动和暂停上下文
- 管理所有 Camel 应用程序及其路由的生命周期,以便您可以重新启动、停止、暂停、恢复等。
- 对正在运行的路由进行实时跟踪和调试
- 浏览和将消息发送到 Camel 端点
前提条件
只有在连接到使用一个或多个 Camel 路由的容器时,Camel 选项卡才可用。
5.1. 启动、挂起或删除上下文
- 在 Camel 标签页的树视图中,单击 Camel 上下文。
- 选中列表中一个或多个上下文旁边的框。
- 点 Start 或 Suspend。
删除上下文:
- 停止上下文。
- 单击 ellipse 图标,然后从下拉菜单中选择 Delete。
当您删除上下文时,会从部署的应用程序中将其删除。
5.2. 查看 Camel 应用程序详情
- 在 Camel 标签页的树视图中,点 Camel 应用程序。
- 若要查看应用属性和值的列表,请单击 Attributes。
- 要查看应用程序属性的图形表示,请点击 Chart,然后点 Edit 来选择要在 chart 中看到的属性。
- 要查看 inflight 和 blocked Exchanges,点 Exchanges。
- 要查看应用程序端点,请点击 Endpoints。您可以根据 URL、路由 ID 和 方向 过滤列表。
- 要查看、启用和禁用与 Camel 内置类型转换机制相关的统计信息,用于将消息正文和消息标头转换为不同的类型,请点击 Type Converters。
- 要查看并执行 JMX 操作,如从 XML 添加或更新路由或查找类路径中所有可用的 Camel 组件,请单击 运营。
5.3. 查看 Camel 路由列表并与之交互
查看路由列表:
- 点 Camel 选项卡。
在 tree 视图中,点击应用程序的路由文件夹:
要启动、停止或删除一个或多个路由:
- 选中列表中一个或多个路由旁边的框。
- 点 Start 或 Stop。
要删除路由,您必须首先停止该路由。然后点击 ellipse 图标,然后从下拉菜单中选择 Delete。
注意- 当您删除路由时,您可以从部署的应用程序中将其删除。
- 您也可以在树视图中选择特定的路由,然后单击右上角菜单启动、停止或删除它。
- 要查看路由的图形图,请单击 Route 图表。
- 要查看 inflight 和 blocked Exchanges,点 Exchanges。
- 要查看端点,请单击 Endpoints。您可以根据 URL、Route ID 和方向过滤列表。
- 点 Type Converters 查看、启用和禁用与 Camel 内置类型转换机制相关的统计信息,该机制用于将消息正文和消息标头转换为不同的类型。
与特定路由交互:
- 在 Camel 标签页的树视图中,选择一个路由。
- 要查看路由属性和值的列表,请单击 Attributes。
- 要查看路由属性的图形表示,请点击 Chart。您可以点击 Edit 来选择要在 chart 中看到的属性。
- 要查看 inflight 和 blocked Exchanges,点 Exchanges。
- 点击 Operations 在路由上查看并执行 JMX 操作,如转储路由为 XML 或获取路由的 Camel ID 值。
跟踪通过路由的消息:
- 在 Camel 标签页的树视图中,选择一个路由。
- 选择 Trace,然后单击 Start tracing。
将信息发送到路由:
- 在 Camel 标签页的树视图中,打开上下文的端点文件夹,然后选择端点。
- 点 Send 子选项卡。
- 以 JSON 或 XML 格式配置消息。
- 点 Send。
- 返回路由的 Trace 选项卡,以查看通过路由的消息流。
5.4. 调试路由
- 在 Camel 标签页的树视图中,选择一个路由。
- 选择 Debug,然后单击 Start debug。
要添加断点,请在图表中选择节点,然后点 Add breakpoint。一个红色点会出现在节点中:
节点添加到 breakpoints 列表中:
- 点击下箭头以向下一节点或 Play 按钮恢复运行路由。
- 单击 暂停 按钮,以暂停路由的所有线程。
- 完成后点 Stop debug。所有断点都会被清除。
第 6 章 查看 AMQ Broker
您可以配置 Fuse 控制台,以查看 OpenShift 集群中部署的所有 AMQ 代理。
先决条件
每个 AMQ 代理镜像(您需要在 Fuse 控制台中查看)都必须:
- 在装有 Fuse Console 的同一 OpenShift 集群上安装。
- 配置 以便 Fuse 控制台可以识别和连接到它,如在 AMQ Broker 文档中的 启用 Fuse Console 中启用 Bugzilla 插件的部分中所述。
流程
- 单击 ROLES 以查看 AMQ 管理控制台,并监控 AMQ Broker 的状态。(AMQ Broker 基于 Apache ActiveMQ Artemis.)
有关使用 AMQ 管理控制台的详情,请参考 管理 AMQ Broker 指南中的使用 AMQ 管理控制台。
第 7 章 查看并管理 JMX 域和 MBeans
Java 管理扩展(JMX)是一种 Java 技术,可让您在运行时动态管理资源(服务、设备和应用程序)。资源由名为 MBeans(managed Bean)的对象表示。您可以在创建、实施或安装资源后立即管理和监控资源。
借助 Fuse 控制台上的 JMX 插件,您可以查看和管理 JMX 域和 MBeans。您可以查看 MBean 属性、运行命令并创建显示 MBeans 统计信息的 chart。
JMX 选项卡提供活动 JMX 域和 MBeans 在文件夹中组织的一个树视图。您可以查看 MBeans 的详细信息并执行命令。
流程
查看并编辑 MBean 属性:
- 在树视图中,选择一个 MBean。
- 单击 Attributes 选项卡。
- 点 属性查看其详情。
执行操作:
- 在树视图中,选择一个 MBean。
- 点 Operations 选项卡,展开列出的操作之一。
- 点 Execute 运行操作。
查看 chart:
- 在树视图中,选择一个项目。
- 点 Chart 选项卡。
第 8 章 查看并管理 Quartz 计划
Quartz(http://www.quartz-scheduler.org/)是丰富的开源作业调度库,您可以在大多数 Java 应用程序中集成。您可以使用 Quartz 为执行作业创建简单或复杂的计划。作业定义为标准 Java 组件,可虚拟执行它要执行的操作。
如果您的 Camel 路由部署 camel-quartz2
组件,则 Fuse 控制台会显示 Quartz 选项卡。请注意,您可以通过 JMX 树视图来访问 Quartz mbeans。
流程
在 Fuse Console 中,单击 Quartz 选项卡。
Quartz 页面包含 Quartz Schedulers 和 Scheduler、Triggers 和 Jobs 选项卡的树状视图。
- 要暂停或启动调度程序,请单击 Scheduler 选项卡上的按钮。
点 Triggers 选项卡查看决定作业何时运行的触发器。例如,触发器可在某一天(到毫秒)时指定启动作业,也可以指定天数或在特定时间重复指定的次数。
- 要过滤触发器列表,请从下拉列表中选择 State、Group、Name 或 Type。然后,您可以通过在 fill-on 字段中选择或键入 来进一步过滤列表。
- 要暂停、恢复、更新或手动触发触发器,请单击 Action 列中的选项。
- 点 Jobs 标签页,查看正在运行的作业列表。您可以在表中对列表进行排序: Group、Name、Durable、Recover、Job ClassName 和 Description。
第 9 章 查看诊断
使用 Diagnostics 选项卡,通过 JVM DiagnosticCommand 和 HotspotDiangostic 接口查看有关 JVM 的诊断信息。
这个功能类似于 Java Mission Control(jmc)或命令行工具 jcmd 中的 Diagnostic Commands 视图。该插件在某些情况下可以提供对应的 jcmd 命令。
流程
- 要检索载入类的实例数量及其所需字节数,请点击 Class Histogram。如果操作重复,则选项卡会显示自上次运行以来的区别。
- 若要查看 JVM 诊断标志设置,请单击 JVM 标志。
- 对于正在运行的 JVM,您还可以修改标志设置。
其他资源
支持的 JVM 依赖于平台,更多信息可进入以下源之一:
第 10 章 查看线程
您可以查看和监控线程的状态。
流程
- 单击 Runtime 选项卡,然后单击 Threads 子选项卡。Threads 页面列出了活跃的线程和每个线程的堆栈追踪详情。默认情况下,线程列表以降序显示所有线程。
- 要通过增加 ID 对列表进行排序,点 ID 列标签。
- (可选)按线程状态(如 Blocked)或线程名称过滤列表。
- 要深入查看特定线程的详细信息,如锁定类名称和该线程的完整堆栈追踪,请点击 Actions 列中。
第 11 章 确保数据在 Fuse 控制台中正确显示
如果 Fuse Console 中的队列和连接缺少队列、缺失的连接或显示不一致的图标,请调整 Jolokia 集合大小参数,用于指定 Jolokia marls 中 Jolokia marls 的数组中的最大元素数量。
流程
在 Fuse 控制台右上角,单击用户图标,然后单击 首选项。
- 增加 Maximum collection size 选项的值(默认值为 50,000)。
- 单击 Close。
附录 A. Fuse 控制台配置属性
默认情况下,Fuse 控制台配置在 hawtconfig.json
文件中定义。您可以自定义 Fuse 控制台配置信息,如标题、徽标和登录页面信息。
表 A.1 “Fuse 控制台配置属性” 提供属性的描述,并列出了每个属性是否需要值。
节 | 属性名称 | 默认值 | 描述 | 必需? |
---|---|---|---|---|
关于 | 标题 | Red Hat Fuse Management Console | 在 Fuse Console 的 About 页面中显示的标题。 | 必填 |
productInfo | 空值 | 有关 Fuse 控制台的 About 页面的产品信息。 | 选填 | |
additionalInfo | 空值 | 在 Fuse Console 的 About 页面中显示任何其他信息。 | 选填 | |
版权 | 空值 | 在 Fuse Console 的 About 页面中显示版权信息。 | 选填 | |
imgSrc |
| 出现在 Fuse 控制台的 About 页面中的镜像。 | 必填 | |
品牌 | appName | Red Hat Fuse Management Console | 应用程序的名称。此名称显示在 Fuse Console 的标题栏中。 | 必填 |
appLogoUrl |
| 在 Fuse Console }navigation 栏中显示的应用程序徽标镜像文件的路径。该值可以是相对于 Hawtio 状态 URL 或绝对 URL 的路径。 | 必填 | |
CSS | 外部 CSS 风格表的 URL,可用于编写应用程序。它可以是路径,相对于 Hawtio 状态 URL,也可以是一个绝对 URL。 | 选填 | ||
companyLogoUrl |
| 您的公司徽标镜像文件的路径。 | 必填 | |
Favicon | favicon 的 URL,通常显示在 Web 浏览器选项卡中。它可以是路径,相对于 Hawtio 状态 URL,也可以是一个绝对 URL。 | 选填 | ||
login | description | 空值 |
在 Fuse 控制台登录页面中显示的描述性文本(例如 | 选填 |
links | [ ] |
指定 | 选填 | |
disabledRoutes | none | [ ] | 在控制台中禁用特定路径(如插件)。不要更改本节。OpenShift 以外的发行版本都不支持任何更改。 | 选填 |