Amazon web services 只有创建者用户可以从kubectl管理AWS kubernetes群集(EKS)?

Amazon web services 只有创建者用户可以从kubectl管理AWS kubernetes群集(EKS)?,amazon-web-services,kubernetes,amazon-eks,Amazon Web Services,Kubernetes,Amazon Eks,我们有两个集群,名为: 我创建的MyCluster 其他群集不是由我创建的 其中我是我自己的AWS IAM用户 我能够使用kubectl管理我创建的集群: >>> aws eks update-kubeconfig --name MyCluster –profile MyUser >>> kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kuber

我们有两个集群,名为:

我创建的MyCluster 其他群集不是由我创建的 其中我是我自己的AWS IAM用户

我能够使用kubectl管理我创建的集群:

>>> aws eks update-kubeconfig --name MyCluster –profile MyUser
>>> kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   172.20.0.1   <none>        443/TCP   59d
在阅读了一些在这方面遇到相同问题的人的反馈之后,我尝试在最初创建OtherCluster的用户的上下文中进行此操作

我通过编辑“~/.kube/config”,在“users.user.env”中添加一个“AWS\u PROFILE”值来实现这一点。配置文件表示创建集群的用户

~/.kube/config:

…
users
- name: OtherCluster
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - token
      - -i
      - OtherCluster
      command: aws-iam-authenticator
      env:
      - name: AWS_PROFILE
        value: OTHER_USER_PROFILE
…
这起到了作用:

# ~/.kube/config is currently pointing to OtherCluster

>>> kubectl get svc 
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   172.20.0.1   <none>        443/TCP   1d
当我管理集群时,模仿他人显然并不理想。我更愿意授权我自己的用户通过kubectl管理集群。
我是否可以向原始创建者以外的用户授予管理群集的权限?这似乎过于严格

创建Amazon EKS群集时,创建群集的IAM实体用户或角色将作为管理员添加到Kubernetes RBAC授权表中。最初,只有IAM用户可以使用kubectl调用Kubernetes API服务器

要授予其他AWS用户与集群交互的能力,必须在Kubernetes内编辑AWS auth ConfigMap,为ConfigMap添加新的mapUsers条目。涵盖所有流程

要添加IAM用户:请将用户详细信息添加到的mapUsers部分 数据下的ConfigMap。如果尚未添加此部分,请添加此部分 存在于文件中。每个条目都支持以下参数:

userarn:要添加的IAM用户的ARN。 用户名:Kubernetes中要映射到IAM用户的用户名。默认情况下,用户名是IAM用户的ARN。 组:Kubernetes中用户映射到的组的列表。有关详细信息,请参见默认角色和角色绑定 在Kubernetes文档中。 例如:

apiVersion: v1
data:
  mapRoles: |
    - rolearn: arn:aws:iam::555555555555:role/devel-worker-nodes-NodeInstanceRole-74RF4UBDUKL6
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
  mapUsers: |
    - userarn: arn:aws:iam::555555555555:user/my-new-admin-user
      username: my-new-admin-user
      groups:
        - system:masters

为EKS重新配置kubectl,为新用户使用AWS auth配置文件,似乎达到了目的

aws eks update-kubeconfig --name ${CLUSTER_NAME} --profile ${OTHER_USER}
其中${OTHER_USER}是我试图授予对EKS集群访问权限的新用户,而不是最初创建集群的用户


我无法解释为什么这一步现在对我有效,但在我之前发布这个问题时对我无效。但希望这能帮助其他人。

很有趣。我来试一试。不起作用,仍然从服务器获取authN错误禁止:服务被禁止:用户无法在命名空间中列出服务默认-我在添加clusterrolebinding后也会收到此错误,按照这些说明:kubectl create clusterrolebinding-cluster admin binding-clusterrole=cluster admin-user=@JamesWierzba您不需要在集群上创建任何clusterrolebinding,您可以将默认的system:masters组授予您的新管理员。步骤如下:1-确保您拥有自己的IAM用户,不需要任何角色。2-将kubeconfig文件配置为使用aws iam验证器和aws_配置文件。3-将您的IAM用户添加到aws auth ConfigMap中的mapUsers。
aws eks update-kubeconfig --name ${CLUSTER_NAME} --profile ${OTHER_USER}