使用 OCM

Open Cluster Management (OCM) 是一个强大的多集群管理工具,它可以让你的托管集群连接到集群的控制平面,甚至这些托管的集群并不能被控制平面直接访问到。它特别能处理托管集群和控制平面处于不同VPC的情况。

这篇文章主要介绍在 KubeVela 的环境下如何使用 OCM。

安装 OCM

OCM的安装可以通过命令vela addon来完成。但在 KubeVela 的环境下使用 OCM,有两个插件必须要安装。

  1. $ vela addon enable ocm-hub-control-plane

这个插件旨在提供 OCM 的基本功能。例如,你可以通过创建 OCM ManifestWorks 来直接分配资源。 但是目前 KubeVela 并不会使用 OCM 来管理应用。

  1. $ vela addon enable ocm-gateway-manager-addon

安装第二个应用可以让 KubeVela 通过 cluster gateway 来使用 OCM的托管集群。

加入集群

你可以使用 vela cluster join -t ocm 命令来加入 OCM ManagedCluster。请注意, 相比较通过 vela cluster join 命令来加入集群,加入 OCM ManagedCluster 并不需要你的托管集群的 APIServer 可以直接被中心的控制平面访问到。 但是你必须保证你的托管集群可以访问中心控制平面的 KAS (kube-apiserver)。

  1. # This command needs to use the kubeconfig of the control plane where KubeVela lives.
  2. $ vela cluster join managed-cluster.kubeconfig -t ocm --name ocm-cluster
  3. Successfully prepared registration config.
  4. Registration operator successfully deployed.
  5. Registration agent successfully deployed.
  6. Successfully found corresponding CSR from the agent.
  7. Approving the CSR for cluster "ocm-cluster".
  8. Successfully add cluster ocm-cluster, endpoint: https://127.0.0.1:6443.

检查集群状态

在运行命令后, 你可能需要几分钟时间来等待相关 OCM agents 就绪。

  1. # Change ocm-cluster to your cluster name.
  2. $ kubectl get managedclusteraddons -n ocm-cluster
  3. NAME AVAILABLE DEGRADED PROGRESSING
  4. cluster-proxy True
  5. managed-serviceaccount True
  6. cluster-gateway True

假如任何 ManagedClusterAddons 不可用, 你可能需要检查所有 OCM 相关的 pod 是否都正常运行。可以随时在 KubeVela Github Repo 提出 issues or discussions.

现在你可以通过命令 vela cluster probe 来验证插件的安装。

  1. $ vela cluster probe ocm-cluster
  2. Connect to cluster ocm-cluster successfully.
  3. ok

应用 KubeVela Application

很好! 现在你可以在 KubeVela 环境下像使用普通集群一样使用已经加入的 OCM 托管集群。

  1. $ cat <<EOF | vela up -f -
  2. apiVersion: core.oam.dev/v1beta1
  3. kind: Application
  4. metadata:
  5. name: example-app
  6. namespace: default
  7. spec:
  8. components:
  9. - name: hello-world
  10. properties:
  11. image: crccheck/hello-world
  12. type: webservice
  13. policies:
  14. - name: ocm-cluster
  15. properties:
  16. clusters: ["ocm-cluster"]
  17. type: topology
  18. EOF
  1. $ vela status example-app
  2. About:
  3. Name: example-app
  4. Namespace: default
  5. Created at: 2022-06-14 21:10:46 +0800 CST
  6. Status: running
  7. Workflow:
  8. mode: DAG
  9. finished: true
  10. Suspend: false
  11. Terminated: false
  12. Steps
  13. - id:vl17hfpjtv
  14. name:deploy-ocm-cluster
  15. type:deploy
  16. phase:succeeded
  17. message:
  18. Services:
  19. - Name: hello-world
  20. Cluster: ocm-cluster Namespace: default
  21. Type: webservice
  22. Healthy Ready:1/1
  23. No trait applied

参考

关于在 KubeVela 环境下使用 OCM 更多的信息,可以参与以下内容。