2

我试图了解这些用户名字段在 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
  1. 如果我将用户名从更改system:node:{{EC2PrivateDNSName}}为类似的名称,mynode:{{EC2PrivateDNSName}}它真的有什么不同吗?system:添加前缀对k8的集群有什么意义吗?。

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

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

提前致谢!

4

1 回答 1

0

将答案发布为社区 wiki,随时编辑和扩展。


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

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

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

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

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

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

于 2022-02-25T14:08:27.637 回答