
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个Hawtio控制台,可简化在OpenShift上部署的hawtio-enabled 1 应用的发现和管理。
可通过以下步骤在OpenShift集群上部署Hawtio Online控制台。如需了解oc客户端工具的更多信息,建议阅读CLI入门指南。
根据不同特性,提供以下OpenShift模板供选择:
| 模板 | 描述 |
|---|---|
| https://raw.githubusercontent.com/hawtio/hawtio-online/master/deployment-cluster.yml | 使用需要cluster-admin角色创建的OAuth客户端。Hawtio Online控制台可发现和连接跨多个命名空间/项目部署的hawtio-enabled 1 应用。 |
| https://raw.githubusercontent.com/hawtio/hawtio-online/master/deployment-cluster-os4.yml | 与deployment-cluster.yml功能相同,适用于OpenShift 4。默认情况下,部署前需生成由服务签名证书机构签名的客户端证书。详见OpenShift 4部分。 |
| https://raw.githubusercontent.com/hawtio/hawtio-online/master/deployment-namespace.yml | 使用服务账户作为OAuth客户端,仅需项目中的admin角色即可创建。此模板将Hawtio Online控制台访问限制在单个项目,适用于单租户部署。 |
| https://raw.githubusercontent.com/hawtio/hawtio-online/master/deployment-namespace-os4.yml | 与deployment-namespace.yml功能相同,适用于OpenShift 4。默认情况下,部署前需生成由服务签名证书机构签名的客户端证书。详见OpenShift 4部分。 |
| https://raw.githubusercontent.com/hawtio/hawtio-online/master/deployment-namespace-rbac.yml | 与deployment-namespace-os4.yml功能相同,支持Jolokia请求授权的可配置RBAC。详见RBAC部分。 |
| https://raw.githubusercontent.com/hawtio/hawtio-online/master/deployment-cluster-rbac.yml | 与deployment-cluster-os4.yml功能相同,支持Jolokia请求授权的可配置RBAC。详见RBAC部分。 |
部署Hawtio Online控制台,执行以下命令:
sh$ oc new-app -f https://raw.githubusercontent.com/hawtio/hawtio-online/master/deployment-namespace.yml \ -p ROUTE_HOSTNAME=<HOST>
使用deployment-namespace模板时,可省略ROUTE_HOSTNAME参数,此时OpenShift会自动生成路由主机名。
查看模板参数详情,执行:
sh$ oc process --parameters -f https://raw.githubusercontent.com/hawtio/hawtio-online/master/deployment-namespace.yml NAME DESCRIPTION GENERATOR VALUE ROUTE_HOSTNAME 路由到Hawtio Online服务的外部可访问主机名
查看部署状态:
sh$ oc status In project hawtio on server https://192.168.64.12:8443 https://hawtio-online-hawtio.192.168.64.12.nip.io (redirects) (svc/hawtio-online) dc/hawtio-online deploys istag/hawtio-online:latest deployment #1 deployed 2 minutes ago - 1 pod
通过浏览器访问上述路由URL即可打开Hawtio Online控制台。
为确保Hawtio Online与Jolokia代理之间的通信安全,需生成客户端证书并通过secret挂载到Hawtio Online pod中,用于TLS客户端认证。该客户端证书必须使用服务签名证书机构的私钥签名。
部署前,运行以下脚本生成并配置Hawtio Online的客户端证书:
sh$ ./scripts/generate-certificate.sh
若已安装Yarn,也可执行:
sh$ yarn generate-certificate
若不使用脚本,可手动执行以下步骤:
以cluster-admin用户身份执行以下命令,获取服务签名证书机构密钥:
sh# CA证书 $ oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.crt']}" | base64 --decode > ca.crt # CA私钥 $ oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.key']}" | base64 --decode > ca.key
参考https://kubernetes.io/docs/concepts/cluster-administration/certificates/%EF%BC%8C%E4%BD%BF%E7%94%A8%60easyrsa%60%E3%80%81%60openssl%60%E6%88%96%60cfssl%60%E7%94%9F%E6%88%90%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%AF%81%E4%B9%A6%E3%80%82%E4%BE%8B%E5%A6%82%EF%BC%8C%E4%BD%BF%E7%94%A8%60openssl%60%EF%BC%9A
sh# 生成私钥 $ openssl genrsa -out server.key 2048 # 编写CSR配置文件 $ cat <<EOT >> csr.conf [ req ] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [ dn ] CN = hawtio-online.hawtio.svc [ v3_ext ] authorityKeyIdentifier=keyid,issuer:always keyUsage=keyEncipherment,dataEncipherment,digitalSignature extendedKeyUsage=serverAuth,clientAuth EOT # 生成CSR $ openssl req -new -key server.key -out server.csr -config 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
使用生成的证书创建挂载到Hawtio Online的secret:
sh$ oc create secret tls hawtio-online-tls-proxying --cert server.crt --key server.key
注意,CN=hawtio-online.hawtio.svc必须被启用客户端证书认证的Jolokia代理信任。详见https://jolokia.org/reference/html/agents.html#agent-jvm-config%E4%B8%AD%E7%9A%84%60clientPrincipal%60%E5%8F%82%E6%95%B0%E3%80%82
完成后,即可继续部署。
deployment-cluster-rbac.yml和deployment-namespace-rbac.yml模板会创建包含MBean操作允许角色定义的ConfigMap。该ConfigMap挂载到Hawtio Online容器中,通过HAWTIO_ONLINE_RBAC_ACL环境变量将配置文件路径传递给服务器。若未设置该环境变量,RBAC支持将被禁用,仅授予pod资源update权限的用户可调用MBeans操作。
目前仅支持viewer和admin角色。请求认证后,这些角色根据模拟请求的用户对托管操作的pod所拥有的权限推断:
授予pod资源update权限的用户绑定admin角色,例如:
sh$ oc auth can-i update pods/<pod> --as <user> yes
授予pod资源get权限但无update权限的用户绑定viewer角色,例如:
sh$ oc auth can-i get pods/<pod> --as <user> yes
无pod资源get权限的用户不绑定任何角色,例如:
sh$ oc auth can-i get pods/<pod> --as <user> no
JMX操作的ACL定义规则如下:
基于JMX MBean的对象名(ObjectName),可使用<domain>.<type>格式声明由对象名域(domain)和可选的type属性组成的键。例如,对象名java.lang:type=Threading的MBean可声明为java.lang.Threading键。也可声明仅包含域的通用键(如java.lang)或顶级default键。键的值可为无序或有序映射,其键可为字符串或正则表达式,值可为字符串或字符串数组,表示允许调用MBean成员的角色。
默认ACL定义可在deployment-cluster-rbac.yml和deployment-namespace-rbac.yml模板的hawtio-rbac ConfigMap中找到。
系统按以下流程查找允许的角色:
首先尝试最具体的键(如上述示例中的java.lang.Threading)。若不存在,则查找域级键,最后查找default键。找到匹配键后,系统按以下顺序查找其映射值:
基于操作签名和参数的精确匹配,例如:
uninstall(java.lang.String)[0]: [] # 无角色可执行此操作
基于操作签名和参数的正则表达式匹配,例如:
/update\(java\.lang\.String,java\.lang\.String\)\[[1-4]?[0-9],.*\]/: admin
注意:若值为有序映射,将按迭代顺序查找,匹配的第一个正则表达式键被选中。
基于操作签名(不含参数)的精确匹配,例如:
delete(java.lang.String): admin
基于操作名的精确匹配,例如:
dumpStatsAsXml: admin, viewer
若键匹配操作调用,则使用该键且不再查找其他键(最具体的键优先)。其值用于将模拟请求的角色与允许调用操作的角色进行匹配。若当前键不匹配,则按上述步骤1-4查找较不具体的键,直至default键。若均不匹配,则拒绝操作调用。
需安装以下工具:
4.x)$ yarn install
为使Hawtio控制台通过OAuth认证获取访问令牌,从而有权限监视集群中部署的hawtio-enabled 1 应用,需创建匹配本地开发URL的OAuth客户端。
集群模式
sh$ oc create -f oauthclient.yml
详见OAuth客户端。
命名空间模式
sh$ oc create -f serviceaccount.yml
详见服务账户作为OAuth客户端。
集群模式
$ yarn start --master=`oc whoami --show-server` --mode=cluster
命名空间模式
$ yarn start --master=`oc whoami --show-server` --mode=namespace --namespace=`oc project -q`
可通过http://localhost:2772/访问控制台。
为使本地hawtio-online能检测到hawtio-enabled应用,每个应用容器需配置以下环境变量:
AB_JOLOKIA_AUTH_OPENSHIFT=false AB_JOLOKIA_PASSWORD_RANDOM=false AB_JOLOKIA_OPTS=useSslClientAuthentication=false,protocol=https
以下脚本可批量为所有带有provider=fabric8标签的部署应用上述环境变量:
sh$ ./scripts/disable-jolokia-auth.sh
1. 配置了名为jolokia的端口并暴露https://jolokia.org API的容器。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务