聚合层 APIServer

新引入的 karmada-aggregated-apiserver ,允许用户通过 proxy 端点从 Karmada 控制面统一访问成员集群。

有关详细的讨论主题,请参见这里

以下是一个快速开始。

快速开始

为了快速体验这个功能,我们尝试通过使用 karmada-apiserver 证书来进行访问。

步骤 1:获取 karmada-apiserver 证书

对于使用 hack/local-up-karmada.sh 部署的 Karmada,您可以直接从 $HOME/.kube/ 目录中复制它。

  1. cp $HOME/.kube/karmada.config karmada-apiserver.config

步骤 2:授予用户 system:admin 权限

system:admin 是 karmada-apiserver 证书的用户。我们需要显式地授予它 clusters/proxy 权限。

执行以下 YAML 文件:

cluster-proxy-rbac.yaml:

unfold me to see the yaml

  1. apiVersion: rbac.authorization.k8s.io/v1
  2. kind: ClusterRole
  3. metadata:
  4. name: cluster-proxy-clusterrole
  5. rules:
  6. - apiGroups:
  7. - 'cluster.karmada.io'
  8. resources:
  9. - clusters/proxy
  10. resourceNames:
  11. - member1
  12. - member2
  13. - member3
  14. verbs:
  15. - '*'
  16. ---
  17. apiVersion: rbac.authorization.k8s.io/v1
  18. kind: ClusterRoleBinding
  19. metadata:
  20. name: cluster-proxy-clusterrolebinding
  21. roleRef:
  22. apiGroup: rbac.authorization.k8s.io
  23. kind: ClusterRole
  24. name: cluster-proxy-clusterrole
  25. subjects:
  26. - kind: User
  27. name: "system:admin"
  1. kubectl --kubeconfig $HOME/.kube/karmada.config --context karmada-apiserver apply -f cluster-proxy-rbac.yaml

步骤 3:访问成员集群

运行以下命令(用您的实际集群名称替换 {clustername}):

  1. kubectl --kubeconfig karmada-apiserver.config get --raw /apis/cluster.karmada.io/v1alpha1/clusters/{clustername}/proxy/api/v1/nodes

或者将 /apis/cluster.karmada.io/v1alpha1/clusters/{clustername}/proxy 追加到 karmada-apiserver.config 的服务器地址,您可以直接使用以下命令:

  1. kubectl --kubeconfig karmada-apiserver.config get node

注意:对于以拉取模式接入 Karmada 且仅允许从集群对 Karmada 进行访问的成员集群,我们可以 Deploy apiserver-network-proxy (ANP) For Pull mode 来访问它。