DevOps 工程师连接到 vSphere IaaS control plane,以置备和管理 TKG 服务 集群的生命周期。开发人员连接到 TKG 服务 集群以部署软件包、工作负载和服务。管理员可能需要直接访问 TKG 服务 集群节点以进行故障排除。平台提供支持每个用例和角色的身份和访问管理工具和方法。

TKG 服务 集群访问范围限定为 vSphere 命名空间

您可以在 vSphere 命名空间 中置备 TKG 服务 集群。配置 vSphere 命名空间 时,可以设置其 DevOps 权限,包括标识源、用户和组以及角色。平台会将这些权限传播到在该 vSphere 命名空间 中置备的每个 TKG 服务 集群。平台支持两种身份验证方法:vCenter Single Sign-On符合 OIDC 的外部身份提供程序。

使用 vCenter Single Sign-On 和 Kubectl 进行身份验证

默认情况下,系统使用 vCenter Single Sign-On 对环境进行身份验证,包括 主管 集群和 TKG 服务 集群。vCenter Single Sign-On 为 vSphere 基础架构提供身份验证,并可与 AD/LDAP 系统集成。有关详细信息,请参见使用 vCenter Single Sign-On 进行 vSphere 身份验证

要使用 vCenter Single Sign-On 进行身份验证,请使用 kubectl 的 vSphere 插件。通过身份验证后,您可以使用 kubectl 以声明方式置备和管理 TKG Service 集群的生命周期,并与 主管 进行交互。

kubectl 的 vSphere 插件 插件依赖于 kubectl。使用 kubectl vsphere login 命令进行身份验证时,该插件会对 主管 上的 /wcp/login 端点发出具有基本身份验证的 POST 请求。vCenter Server 颁发 主管 信任的 JSON Web 令牌 (JWT)。

要使用 vCenter Single Sign-On 进行连接,请参见使用 vCenter SSO 身份验证连接到 TKG 服务 集群

使用外部身份提供程序和 Tanzu CLI 进行身份验证

您可以为 主管 配置支持 OpenID Connect 协议的外部身份提供程序。配置后,主管 将用作 OAuth 2.0 客户端,并使用 Pinniped 身份验证服务通过 Tanzu CLI 提供客户端连接。Tanzu CLI 支持置备和管理 TKG 服务 集群的生命周期。每个 主管 实例支持单个外部身份提供程序。

适当配置身份验证插件和 OIDC 颁发者以使 pinniped-auth CLI 正常工作后,当您使用 tanzu login --endpoint 登录到 主管 时,系统会查找一些众所周知的配置映射以构建 pinniped config 配置文件。

要使用外部 OIDC 提供程序进行连接,请参见使用外部身份提供程序连接到 主管 上的 TKG 集群

使用混合方法进行身份验证:vCenter SSO 和 Tanzu CLI

如果使用 vCenter Single Sign-On 作为身份提供程序,并且要使用 Tanzu CLI,则可以采用混合方法,同时使用这两种工具登录到 主管。此方法对于安装标准软件包可能非常有用。请参见使用 Tanzu CLI 和 vCenter SSO 身份验证连接到 主管

DevOps 的用户和组

配置 vSphere 命名空间 时建立的权限供 DevOps 用户管理 TKG 服务 集群的生命周期。为其分配权限的 DevOps 用户或组必须存在于标识源中。DevOps 用户使用其身份提供程序凭据进行身份验证。

DevOps 用户负责向下游用户(例如,希望将工作负载部署到已置备集群的开发人员)授予集群访问权限。这些用户将使用身份提供程序或在 Kubernetes 上使用集群角色和绑定进行身份验证。以下部分将对此进行更详细的介绍。
注: vSphere 命名空间 权限仅适用于需要创建和管理 TKG 服务 集群的 DevOps 用户。这些集群的用户(如开发人员)将使用 Kubernetes 身份验证机制。

角色权限和绑定

TKGS 集群有两种基于角色的访问控制 (RBAC) 系统:vSphere 命名空间 权限和 Kubernetes RBAC 授权。作为 vSphere 管理员,您可以分配 vSphere 命名空间 权限以允许用户创建和操作 TKG Service 集群。集群运维人员使用 Kubernetes RBAC 授予集群访问权限并向开发人员分配角色权限。请参见向开发人员授予对 TKG 服务 集群的 vCenter SSO 访问权限

vSphere 命名空间 支持三个角色:可编辑可查看所有者。角色权限在托管 TKG 服务 集群的 vSphere 命名空间 中进行分配,并且权限范围也限于此命名空间。请参见配置 vSphere 命名空间 以便托管 TKG 服务 集群

授予了 vSphere 命名空间可以编辑角色权限的用户/组可以在该 vSphere 命名空间 中创建、读取、更新和 TKG 服务 集群。此外,将用户/组分配给 可编辑角色时,系统会在该 vSphere 命名空间 中的每个集群上创建一个 RoleBinding 并将该特权绑定到名为 cluster-admin 的 Kubernetes ClusterRole。 cluster-admin 角色允许用户在目标 vSphere 命名空间 中置备和操作 TKG Service 集群。您可以在目标 vSphere 命名空间 中使用命令 kubectl get rolebinding 查看此映射。
kubectl get rolebinding -n tkgs-cluster-namespace
NAME                                                           ROLE                         AGE
wcp:tkg-cluster-namespace:group:vsphere.local:administrators   ClusterRole/edit             33d
wcp:tkg-cluster-namespace:user:vsphere.local:administrator     ClusterRole/edit             33d

授予了 vSphere 命名空间可查看角色权限的用户/组对该 vSphere 命名空间 中置备的 TKG 服务 集群对象具有只读访问权限。但与可编辑特权不同,对于可查看角色,不会在该 vSphere 命名空间 中的 TKGS 集群上创建 Kubernetes RoleBinding。这是因为,在 Kubernetes 中,没有可以将授予了可查看权限的用户/组绑定到的等效只读角色。对于除 cluster-admin 以外的用户,您可以使用 Kubernetes RBAC 授予访问权限。请参见向开发人员授予对 TKG 服务 集群的 vCenter SSO 访问权限

授予了 vSphere 命名空间所有者权限的用户/组可以管理该 vSphere 命名空间 中的 TKG 服务 集群,并且可以使用 kubectl 创建和删除其他 vSphere 命名空间。将用户/组分配给所有者角色时,系统会创建 ClusterRoleBinding 并将其映射到允许用户/组使用 kubectl 创建和删除 vSphere 命名空间 的 ClusterRole。无法使用相同的方法查看此映射。必须通过 SSH 登录到 主管 节点才能查看此映射。
注: 来自 vCenter Single Sign-On 标识源的用户支持所有者角色。不能将所有者角色用于外部身份提供程序中的用户/组。

vSphere 权限

下表列出了各种 vSphere IaaS control plane 用户配置所需的 vSphere 权限类型。如果需要,您可以创建自定义 vSphere SSO 组和角色,以进行工作负载管理。请参见为平台运维人员创建专用组和角色

表 1. vSphere with Tanzu 用户配置的 vSphere 权限
用户配置 vSphere 角色 vSphere SSO 组 vSphere 命名空间
VI/云管理员 管理员 管理员 SSO 用户和/或 AD 用户
DevOps/平台运维人员 非管理员或自定义角色 ServiceProviderUsers SSO 用户和/或 AD 用户
开发人员 只读或无 SSO 用户和/或 AD 用户

系统管理员连接

管理员可以以 kubernetes-admin 用户身份连接到 TKG 服务 集群节点。如果 vCenter Single Sign-On 身份验证不可用,则此方法可能适用。要进行故障排除,系统管理员可以使用 SSH 和私钥以 vmware-system-user 用户身份连接到 TKG 服务。请参见以 Kubernetes 管理员和系统用户身份连接到 TKG 服务 集群