kubeconfig 简介
Kubernetes 配置文件
Kubernetes 使用名为 kubeconfig
的 YAML 文件来存储 kubectl
的集群身份验证信息。kubeconfig
包含 kubectl
在运行命令时引用的上下文列表。默认情况下,该文件保存在 $HOME/.kube/config
。
上下文是一组访问参数。每个上下文都包含一个 Kubernetes 集群、一个用户和一个命名空间。当前上下文是 kubectl
当前的默认集群:所有 kubectl
命令都针对该集群运行。
创建集群后,请按照生成 kubeconfig
条目将集群上下文添加到本地 kubeconfig
。
专用端点
所有集群都有一个规范端点。此端点公开了 kubectl
和其他服务用于通过 TCP 端口 443 与集群控制平面通信的 Kubernetes API 服务器。在 Azure 上,此端点是由面向内部的负载均衡器提供支持的单个专用 IP,例如 10.0.1.5
。此端点无法通过公共互联网访问。您可以从 gcloud container azure clusters describe
命令输出中的 endpoint
字段获取专用集群端点地址。
连接网关端点
默认情况下,gcloud container azure clusters get-credentials
命令会生成使用 Connect 网关的 kubeconfig
。借助此 kubeconfig
,kubectl
使用 Connect,然后代表您安全地将流量转发到专用端点。使用 Connect 网关时,端点类似于 https://connectgateway.googleapis.com/v1/projects/PROJECT_NUMBER/memberships/CLUSTER_NAME
,其中 PROJECT_NUMBER 是您的项目编号,CLUSTER_NAME 是集群名称。
如果您通过 VNet 访问集群的专用端点,则可以直接连接到专用端点。如需使用专用端点生成 kubeconfig
,请使用 gcloud container azure clusters get-credentials --private-endpoint
命令。
关于 kubectl
的身份验证
通过验证 kubectl
提供的凭据,并检索与用户或服务账号身份关联的电子邮件地址,所有 GKE on Azure 都配置为接受 Google Cloud 用户和服务账号身份。因此,这些账号的凭据必须包含 userinfo.email
OAuth 范围才能成功进行身份验证。
当您使用 gcloud
为新集群或现有集群设置环境的 kubeconfig
时,gcloud
会为 kubectl
提供 gcloud
自身使用的相同凭据。例如,如果使用 gcloud auth login
,您的个人凭据会提供给 kubectl
,包括 userinfo.email
范围。这样一来,GKE on Azure 就能够对 kubectl
客户端进行身份验证。
当用户或 Google Cloud 服务账号经过身份验证后,还必须获得授权才能对 GKE on Azure 执行任何操作。集群管理员负责设置适当的基于角色的访问权限控制来配置授权。