《OpenShift / RHEL / DevSecOps 汇总目录》
本文在 OpenShift 4.17 + RHACM 2.12 环境中进行验证。
什么是 RHACM
RHACM(Advanced Cluster Management for Kubernetes)是 RedHat 面向 OpenShift 的多云管理产品,可以用来对分布在多云环境中 自建或托管 OpenShift 集群以及经认证的 Kubernetes 集群进行生命周期管理、发布和升级应用、统一安全策略管理、运行集中监控。
在 RHACM 的多云管理运行环境中包含以下两种角色:
1)Hub 是多云管理的控制平面,它可以运行在任一个 OpenShift 集群上。
2)Managed Cluster 是被管理的集群,它通过运行在本地的 Agent 接受 Hub 的管理指令。
安装 RHACM
- 在 OpenShift 控制台的 OperatorHub 中使用缺省选项安装 Advanced Cluster Management for Kubernetes Operator。
- 在 Advanced Cluster Management for Kubernetes Operator 中使用缺省配置创建一个 MultiClusterHub 实例。
- 在创建完 MultiClusterHub 后可以在 open-cluster-management 项目中的拓扑中看到如下部署资源:
- 在安装 ACM Operator 的同时会自动安装 MultiCluster Engine for Kubernetes Operator,可在 multicluster-engine 项目中看到如下部署资源:
- 同时还可查看在 open-cluster-management-hub 项目中部署的资源。说明,显示的数量取决于集群中 master 和 worker 节点数量。
$ oc get pods -n open-cluster-management-hub
NAME READY STATUS RESTARTS AGE
cluster-manager-addon-manager-controller-55dd67d98b-2lpwt 1/1 Running 0 17m
cluster-manager-placement-controller-7d9bb6fb7-hjx6f 1/1 Running 0 17m
cluster-manager-registration-controller-c8997b476-lg6ht 1/1 Running 0 17m
cluster-manager-registration-webhook-55bb4978c-xfbnf 1/1 Running 0 17m
cluster-manager-work-webhook-579c58c7d6-qrmtt 1/1 Running 0 17m
- 安装 MultiClusterHub 的过程会自动将当前 OpenShift 集群加入到 RHACM 的被管集群中。因此可以执行以下命令确认在当前 OpenShift 集群中自动创建了 open-cluster-management-agent 和 open-cluster-management-agent-addon 项目,并在项目中部署了 Agent 等资源。
$ oc get pods -n open-cluster-management-agent
NAME READY STATUS RESTARTS AGE
klusterlet-agent-77cdc4dc9c-m4rn4 1/1 Running 0 17m
klusterlet-b67b456d-wcn62 1/1 Running 0 17m
$ oc get pods -n open-cluster-management-agent-addon
NAME READY STATUS RESTARTS AGE
application-manager-546487647b-pxxg7 1/1 Running 0 14m
cert-policy-controller-584f7b4b5-nbckl 1/1 Running 0 16m
cluster-proxy-proxy-agent-85467c4cc6-z4sj4 3/3 Running 0 17m
config-policy-controller-7b4644f545-qqf78 2/2 Running 0 16m
governance-policy-framework-79cbbb899d-gtd6t 2/2 Running 0 16m
hypershift-addon-agent-67c59ffdc4-ft978 2/2 Running 0 17m
hypershift-install-job-2hp8t-ng6hd 0/1 Completed 0 17m
klusterlet-addon-workmgr-6bb9959986-mg4cp 1/1 Running 0 17m
managed-serviceaccount-addon-agent-5bf7c6df5b-jjwpm 1/1 Running 0 17m
- 此时安装好的 MultiClusterHub 的实例显示 Running 状态。
- 在看到刷新 OpenShift 控制台的提示后刷新页面,然后可以看到 OpenShift 控制台上方已经多了一个下拉框,点击下拉框中的 “所有集群” 即可进入 ACM 控制台。
- 可以在 “概述” 中查看当前 ACM 管理的集群资源。
- 在 Clusters 中目前只有一个 local-cluster 集群,即 ACM Hub 部署运行的 OpenShift 集群。
- 可以查看被管集群的节点。
导入已有 OpenShift 集群
- 在被导入进群中的控制台通过 “复制登录命令” 获取 API Token 和 API Server 地址。
- 在 Clusters 中点击 “导入集群” 按钮。在 “导入一个现存集群” 页面中为 “导入模式” 选择 “为现有集群输入服务器 URL 和 API 令牌”,然后提供这个集群的 “服务器 URL” 和 “API 令牌”。最后接受其他步骤的配置完成导入即可。
- 在导入后会自动向被管集群安装 Add-on 运行环境。可以在被管集群中查看部署在 open-cluster-management-agent 和 open-cluster-management-agent-addon 项目中的资源。
$ oc get pods -n open-cluster-management-agent
NAME READY STATUS RESTARTS AGE
klusterlet-7979b686c8-qrkbc 1/1 Running 0 5m25s
klusterlet-agent-6786f9b78-sjnln 1/1 Running 0 5m25s
$ oc get pods -n open-cluster-management-agent-addon
NAME READY STATUS RESTARTS AGE
application-manager-5798bf9957-99xzl 1/1 Running 0 5m29s
cert-policy-controller-55f5845f49-ll9cp 1/1 Running 0 5m28s
cluster-proxy-proxy-agent-697cf67f9c-6s98t 3/3 Running 0 5m32s
config-policy-controller-7fb8687ff7-hkm4f 2/2 Running 0 4m57s
governance-policy-framework-5668b8fc8b-n5hpb 2/2 Running 0 4m57s
klusterlet-addon-search-6f9599c889-q7sgj 1/1 Running 0 5m32s
klusterlet-addon-workmgr-758d94bdfc-6h74f 1/1 Running 0 5m32s
managed-serviceaccount-addon-agent-5df5d49994-b5d4t 1/1 Running 0 5m32s
- 可以在 ACM 控制台的 “集群” 的 “集群列表” 中看到被成功纳管的 OpenShift 集群。
演示视频
参考
https://github.com/michaelkotelnikov/rhacm-workshop
https://github.com/wael2000/rh-rhacm-workshop
https://github.com/stolostron/multicluster-observability-operato
https://medium.com/@dlakshma/multi-cluster-observability-with-red-hat-acm-39f6b3cdbbe4
https://docs.google.com/document/d/1mdY6J6Jimsw7A2n7sv9vFjzM2IHD8-Ku9ZNy2iKfgb8/edit?tab=t.0
https://www.redhat.com/en/blog/observability-for-istio-multicluster-service-mesh-in-red-hat-advanced-cluster-management-for-kubernetes
https://www.redhat.com/en/blog/leveraging-netobserv-metrics-red-hat-advanced-cluster-management-kubernetes
https://www.redhat.com/en/blog/observability-across-openshift-cluster-boundaries-with-distributed-data-collection
https://www.redhat.com/en/blog/custom-queries-for-observability-using-grafana-and-apis
https://www.redhat.com/en/blog/your-guide-to-openshift-observability-part-1