我试图了解这些用户名字段在 Kubernetes 集群中映射到的位置。
这是一个示例配置映射:
apiVersion: v1
data:
mapRoles: |
- rolearn: arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
mapUsers: |
- userarn: arn:aws:iam::111122223333:user/admin
username: admin
groups:
- system:masters
- userarn: arn:aws:iam::444455556666:user/ops-user
username: ops-user
groups:
- eks-console-dashboard-full-access-group
如果我将用户名从
system:node:{{EC2PrivateDNSName}}
更改为类似mynode:{{EC2PrivateDNSName}}
真的有什么区别吗?通过添加system:
前缀对 k8 的集群有任何意义吗?我在哪里可以在 k8 中看到这些用户。我可以像
k get pods
一样使用kubectl
查询它吗,就像kubectl get usernames
一样。它是我们提供的用于映射的虚拟用户名,还是拥有任何特殊权限。这些名字
{{EC2PrivateDNSName}}
从何而来。还有其他变量可用吗?我无法从文档中看到与此相关的任何信息。
提前感谢!
将答案发布为社区维基,请随意编辑和扩展。
- 正如您在文档中读到的那样,
system:node
需要前缀system
。如果删除system
,它将无法正常工作:
system:node<</strong>br/> 允许访问 kubelet 所需的资源,包括对所有密钥的读取访问权限,以及对所有 pod 状态对象的写入访问权限。 您应该使用 Node 授权方和 NodeRestriction 准入插件而不是 system:node 角色,并允许根据计划在其上运行的 Pod 授予对 kubelet 的 API 访问权限。 system:node 角色仅用于与从 v1.8 之前版本升级的 Kubernetes 集群兼容。
- 您可以使用外部插件示例 RBAC 查找查看 RBAC 用户并使用命令:
rbac-lookup
RBAC 查找是一个 CLI,可让您轻松查找绑定到任何用户、服务帐户或组名称的 Kubernetes 角色和群集角色。二进制文件是使用 goreleaser 为每个版本生成的,以便于简单安装。
- 名称将来自您的 AWS IAM。您可以在此处阅读有关它的更多信息:
实体访问您的集群由在 Amazon EKS 控制平面上运行的适用于 Kubernetes 的 AWS IAM 身份验证器启用。身份验证器从
aws-auth
ConfigMap
获取其配置信息。对于所有aws-auth
ConfigMap
设置。