使用完全限定域名 (FQDN) 登录
借助 GKE Identity Service,您可以使用第三方身份提供方提供的用户名和密码通过命令行登录已配置的集群。如果您的集群管理员已选择允许您使用完全限定域名 (FQDN) 直接在 GKE Identity Service 服务器上进行身份验证,请按照本页中的说明操作。对于 SAML 提供方,只有通过此身份验证方法才支持登录访问权限。
从 1.29 版开始,此身份验证方法仅适用于 VMware 本地集群 (Google Distributed Cloud) 和裸机集群。不支持其他集群类型。
使用您提供的 FQDN 登录所需的 gcloud
CLI 版本至少为 477.0.0 版。
登录工作流
以下是用户使用 FQDN 访问方法登录时的工作流步骤:
- 启动登录:用户运行命令
gcloud anthos auth login --server APISERVER-URL
以启动登录流程。 - 身份提供方选择:向用户提供已配置的身份提供方的列表。用户选择其凭据存储在哪个提供方。
通过身份提供方进行身份验证:身份验证流程因您选择的身份提供方协议而异:
- OIDC:系统会将用户重定向到 OIDC 提供方登录页面。登录成功后,提供方会将代码发送回 GKE Identity Service,后者通过反向渠道通信将其交换为访问令牌。
- SAML:用户会被重定向到 SAML 提供方登录页面。成功登录后,提供方会直接将令牌(断言)发送回 GKE Identity Service,从而避免额外回调。
- LDAP:GKE Identity Service 不会重定向到外部提供方,而是显示一个登录页面,用户可在其中输入其 LDAP 凭据,然后直接通过 LDAP 服务器进行验证。
令牌验证和 kubeconfig 文件生成:GKE Identity Service 会验证收到的令牌(或断言),为用户创建新的令牌,并返回包含此令牌的 kubeconfig 文件。
集群访问权限:用户可以使用
kubectl
命令访问集群。kubectl
客户端会在每次请求时自动发送来自 kubeconfig 文件的令牌。令牌验证和 RBAC 授权:Kubernetes API 服务器接收令牌,GKE Identity Service 验证此令牌,并检索用户的声明(用户名和群组)。验证成功后,API 服务器会运行基于角色的访问权限控制 (RBAC) 检查,以确定用户有权访问的资源。
使用受信任的 SNI 证书登录
SNI 证书利用公司设备上已有的受信任证书来简化集群访问权限。管理员可以在创建集群时指定此证书。如果您的集群在集群级别使用受信任的 SNI 证书,请将本部分中的命令与管理员提供的 FQDN 搭配使用,以登录集群并接收访问令牌。您还可以使用在身份验证成功后存储令牌的安全 kubeconfig
文件。
运行以下命令以向服务器进行身份验证:
gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE
请替换以下内容:
- APISERVER-URL:集群的 Kubernetes API 服务器的 FQDN。
- OUTPUT_FILE:如果
kubeconfig
文件位于默认位置之外的其他位置,请使用此标志。如果省略此标志,则身份验证令牌会添加到默认位置的kubeconfig
文件中。例如:--kubeconfig /path/to/custom.kubeconfig
。
使用集群 CA 颁发的证书登录
如果您未在集群级层使用受信任的 SNI 证书,则身份服务使用的证书由集群的证书授权机构 (CA) 颁发。管理员会将此 CA 证书分发给用户。使用集群的 CA 证书运行以下命令来登录集群:
gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --login-config-cert CLUSTER_CA_CERTIFICATE
跨设备身份验证
借助跨设备身份验证,您可以从那些未安装浏览器的设备登录 Google Distributed Cloud (GDC) 集群。您可以在主设备(未安装浏览器)上启动身份验证流程,然后在安装了浏览器的辅助设备上完成该流程。
按照以下步骤进行跨设备身份验证设置。
登录您的主设备
运行以下命令,在主设备上对服务器进行身份验证。指定参数
--no-browser
以指示您访问集群所需用到的设备未安装浏览器。gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --no-browser
GKE Identity Service 会返回一个命令,您在从第二个设备登录时需要使用该命令。以下是该命令外观的示例:
You are authorizing gcloud CLI without access to a web browser. Please run the following command on a machine with a web browser and copy its output back here. gcloud auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --remote-bootstrap="URL_TO_COPY_ON_THE_SECOND_DEVICE" Enter the output of the above command:
复制
gcloud
命令。在第二个设备上登录集群
从第二个设备登录之前,请验证您是否已安装浏览器,以及是否已与 Kubernetes API 服务器建立网络连接。在第二个设备上运行您在上一步中复制的命令。
gcloud auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --remote-bootstrap="URL_TO_COPY_ON_THE_SECOND_DEVICE"
当您尝试通过此设备登录时,系统会显示一条警告消息。按照浏览器中显示的标准身份验证流程操作。身份验证成功后,系统会向您提供一次性代码。复制此代码。
WARNING: The following line enables access to your Cluster resources. ONLY COPY IT TO A MACHINE YOU TRUST AND RUN 'gcloud auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --no-browser' EARLY ON. Or_mHYQFm90efgJdwhajx0KeC_WXkuvBPuWv_83nFX9J_Eawm3tQcBpxBBWszj6Ix8dAWCgc1QjJBrlt67bzIYIBTexU7dc_ggtkMTNkG7wCIGYZ75zfg9P1gBshP33STe0ks-AoVonzk01YekMbyNugeYSO18CBwFhaDDSMABq4PI-clgbaSh8CPqrvDKRLenbvfD9BSK6SW945I0bOgPURxNzUX4sICWcvFozhQdLYICuwRM0AgarNFwoeh-0wbJGyRqUjq2NJbaYdf-VCaByiZaGPR2B1QVGXO7deKGtUnk1_tTFOnB6sJQvT6UJ8Ge5nkR38rqBeeGkYdlVIBTXShENG80An1Ve524xZupSzCHNSVTJqYg
在您的主设备上完成登录
将上一步中复制的代码粘贴到主设备的提示符处。
Enter the code you received on the other device: Or_mHYQFm90efgJdwhajx0KeC_WXkuvBPuWv_83nFX9J_Eawm3tQcBpxBBWszj6Ix8dAWCgc1QjJBrlt67bzIYIBTexU7dc_ggtkMTNkG7wCIGYZ75zfg9P1gBshP33STe0ks-AoVonzk01YekMbyNugeYSO18CBwFhaDDSMABq4PI-clgbaSh8CPqrvDKRLenbvfD9BSK6SW945I0bOgPURxNzUX4sICWcvFozhQdLYICuwRM0AgarNFwoeh-0wbJGyRqUjq2NJbaYdf-VCaByiZaGPR2B1QVGXO7deKGtUnk1_tTFOnB6sJQvT6UJ8Ge5nkR38rqBeeGkYdlVIBTXShENG80An1Ve524xZupSzCHNSVTJqYg
您的设备会使用此代码生成一个存储在
kubeconfig
文件中的凭据。此文件可用于在您的主设备上访问集群。在您登录后,系统会显示以下消息:You are logged in! Context is stored under the name '{cluster-name}'