aws-auth configmap 中的用户名字段有什么作用?

kis*_*HoR 7 kubernetes configmap amazon-eks kubernetes-rbac

我试图了解这些用户名字段映射到 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
Run Code Online (Sandbox Code Playgroud)
  1. 如果我将用户名更改为system:node:{{EC2PrivateDNSName}}类似的名称mynode:{{EC2PrivateDNSName}},这真的有什么区别吗?添加前缀对 k8 集群有意义吗system:

  2. 我在 k8 中哪里可以看到这些用户。我可以使用kubectllike k get pods, as 来查询它吗kubectl get usernames?它是我们提供用于映射的虚拟用户名还是拥有任何特殊权限。

  3. 这些名字从何{{EC2PrivateDNSName}}而来。还有其他可用的变量吗?我从文档中看不到与此相关的任何信息。

提前致谢!

Rad*_*ekW 1

将答案发布为社区维基,随意编辑和扩展。


  1. 正如您可以在文档中阅读的那样,system:node需要有前缀system。如果删除system,它将无法正常工作:

system:node
允许访问 kubelet 所需的资源, 包括对所有 Secret 的读访问,以及对所有 Pod 状态对象的写访问。您应该使用 Node 授权者和 NodeRestriction 准入插件而不是 system:node 角色,并允许根据计划在 kubelet 上运行的 Pod 授予对 kubelet 的 API 访问权限。system:node 角色的存在只是为了与从 v1.8 之前的版本升级的 Kubernetes 集群兼容。

  1. 您可以使用外部插件示例RBAC Lookup查看 RBAC 用户并使用命令:rbac-lookup

RBAC Lookup 是一个 CLI,可让您轻松查找绑定到任何用户、服务帐户或组名称的 Kubernetes 角色和集群角色。使用 goreleaser 为每个版本生成二进制文件,以便于安装。

  1. 名称将来自您的 AWS IAM。你可以在这里读更多关于它的内容:

使用 AWS IAM 实体访问集群是由在 Amazon EKS 控制平面上运行的适用于 Kubernetes 的 AWS IAM 身份验证器启用的。身份验证器从aws-auth ConfigMap. 对于所有aws-auth ConfigMap设置。

  • 回复:3,他们的文档中没有描述如何在配置映射中替换 IAM 名称。 (2认同)