我在GCP中使用GKE Kubernetes。我是GCP,GKE和kubectl的新手。我正在尝试创建新的Kubernetes用户,以便为其分配ClusterRoleBindings,然后以这些用户身份登录(kubectl)。
我看不到GCP用户和Kubernetes“用户”之间的关系(我知道Kubernetes中没有User对象类型)。
根据https://cloud.google.com/kubernetes-engine/docs/concepts/security-overview,Kubernetes用户帐户是Google帐户。
因此,我创建了一些Google帐户,然后通过IAM将其与我的GCP帐户相关联。我可以在IAM中看到这些帐户很好。
然后,我对这些新用户执行了gcloud auth登录,我可以在gcloud auth列表中看到他们。然后,我尝试以各种用户身份访问gcloud资源(gcloud计算磁盘列表)。这项工作符合预期-遵守了GCP用户权限。
然后我创建了一个Kubernetes UserRole。下一步是使用UserRoleBinding将这些用户绑定到那些角色。
ClusterRole.yaml(创建得很好):
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
# "namespace" omitted since ClusterRoles are not namespaced
name: cluster-role-pod-reader-1
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
ClusterRoleBinding.yaml(创建得很好):
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cluster-role-binding-pod-reader-1
subjects:
- kind: User
name: MYTESTUSER@gmail.com # not real userid
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: cluster-role-pod-reader-1
apiGroup: rbac.authorization.k8s.io
在Kubernetes中,我可以创建绑定,但是我的第一个问题是,我可以在现有UserRole和不存在的用户之间创建UserRoleBinding。我以为那会失败。这意味着我错过了重要的事情。
我的第二个问题是我不知道如何以新用户之一的身份登录kubectl。
总体而言,我缺少GCP / IAM用户和GKE用户之间的连接。帮助将不胜感激!
答案 0 :(得分:2)
Kubernetes没有用户数据库。用户生活在集群之外,通常由云提供商控制。
如果您使用的是GKE,则用户由GCP IAM控制。因此,您无法使用kubectl
列出用户。
您可以创建service accounts。但是,了解服务帐户和用户之间的区别很重要。用户是真实的人,而服务帐户是kubernetes内部和外部的进程。
创建ClusterRoleBinding时,这意味着对kubernetes:
如果用户名为 MYTESTUSER@gmail.com 的用户进入群集,请将其绑定到ClusterRole cluster-role-pod-reader-1 < / em>
要对GCP IAM用户使用kubernetes,必须执行以下操作:
roles/container.viewer
您可以使用以下命令列出各个IAM角色(不要误认为RBAC角色):
gcloud iam roles list | grep 'roles/container\.' -B2 -A2
请记住最小特权原则,您应仅向用户授予登录集群的最小权限。其他IAM角色(roles/container.clusterAdmin
除外)将自动授予对项目的所有集群中的对象具有更高权限的访问权限。
RBAC仅允许添加特权,因此,您应该选择具有最少特权的IAM角色,并通过RBAC在顶部添加所需的特权。