1.10. 启用集群代理附加组件
在某些情况下,受管集群位于防火墙后面,无法由 hub 集群直接访问。要获取访问权限,您可以设置代理附加组件来访问受管集群的 kube-api
服务器,以提供更安全的连接。
需要的访问权限 : Editor
要为 hub 集群和受管集群配置集群代理附加组件,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management for Kubernetes hub 集群中启用集群代理附加组件。请参阅 高级配置 以了解更多信息。
通过完成以下步骤,配置
kubeconfig
文件以访问受管集群kube-apiserver
:为受管集群提供有效的访问令牌。您可以使用服务帐户对应的令牌,假设默认服务帐户位于 default 命名空间。
-
确保您在使用受管集群的上下文。假设名为
managed-cluster.kubeconfig
的文件是受管集群的kubeconfig
文件。提示: 带有--kubeconfig=managed-cluster.kubeconfig
的命令在受管集群上运行,此流程中的所有命令都应在同一控制台中运行。不要在不同控制台中运行命令。 在服务帐户中添加一个角色,允许它通过运行以下命令来访问 pod:
oc create role -n default test-role --verb=list,get --resource=pods --kubeconfig=managed-cluster.kubeconfig oc create rolebinding -n default test-rolebinding --serviceaccount=default:default --role=test-role --kubeconfig=managed-cluster.kubeconfig
运行以下命令来查找服务帐户令牌的 secret:
oc get secret -n default --kubeconfig=managed-cluster.kubeconfig | grep default-token
运行以下命令复制令牌:
export MANAGED_CLUSTER_TOKEN=$(kubectl --kubeconfig=managed-cluster.kubeconfig -n default get secret <default-token> -o jsonpath={.data.token} | base64 -d)
将
default-token
替换为您的 secret 的名称。
-
确保您在使用受管集群的上下文。假设名为
在 Red Hat Advanced Cluster Management hub 集群中配置
kubeconfig
文件。运行以下命令,在 hub 集群中导出当前的
kubeconfig
文件:oc config view --minify --raw=true > cluster-proxy.kubeconfig
使用编辑器修改
server
文件。本例使用sed
。如果您使用 OSX,运行alias sed=gsed
。export TARGET_MANAGE_CLUSTER=<cluster1> export NEW_SERVER=https://$(oc get route -n open-cluster-management cluster-proxy-addon-user -o=jsonpath='{.spec.host}')/$TARGET_MANAGE_CLUSTER sed -i'' -e '/server:/c\ server: '"$NEW_SERVER"'' cluster-proxy.kubeconfig export CADATA=$(oc get configmap -n openshift-service-ca kube-root-ca.crt -o=go-template='{{index .data "ca.crt"}}' | base64) sed -i'' -e '/certificate-authority-data:/c\ certificate-authority-data: '"$CADATA"'' cluster-proxy.kubeconfig
使用您要访问的受管集群名称替换
cluster1
。输入以下命令删除原始用户凭证:
sed -i'' -e '/client-certificate-data/d' cluster-proxy.kubeconfig sed -i'' -e '/client-key-data/d' cluster-proxy.kubeconfig sed -i'' -e '/token/d' cluster-proxy.kubeconfig
添加服务帐户的令牌:
sed -i'' -e '$a\ token: '"$MANAGED_CLUSTER_TOKEN"'' cluster-proxy.kubeconfig
运行以下命令,列出目标受管集群的目标命名空间中的所有 pod:
oc get pods --kubeconfig=cluster-proxy.kubeconfig -n <default>
将
default
命名空间替换为您要使用的命名空间。
您的 hub 集群现在与受管集群 的 kube-api
通信。