前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EKS 授权管理

EKS 授权管理

作者头像
云云众生s
发布2024-03-27 16:43:29
510
发布2024-03-27 16:43:29
举报
文章被收录于专栏:云云众生s云云众生s

EKS 授权管理

使用云服务提供的 Kubernetes 集群都要解决一个问题,即将云服务的账号映射到 kubernetes 集群,然后给相应的用户授权。

在 EKS 中,通过 eksctl 创建的集群会自动把创建者加到 system:masters 组中,拥有最高的权限。

其他 AWS 用户,可以通过本文的步骤授予相应的权限。

关联 AWS 用户到 Kubernetes 集群

EKS 使用 kube-system 下的 ConfigMap 存放 AWS 用户和 Kubernetes 用户的关联,可以使用这个命令直接编辑 mapUsers 部分:

代码语言:javascript
复制
kubectl edit -n kube-system configmap/aws-auth
···
  mapUsers: |
    - groups:
      - system:masters
      userarn: arn:aws-cn:iam::111111:user/someuser
      username: someuser
···

不过,直接编辑 yaml 文件容易出错,所以 eksctl 提供了一个命令实现了相同的功能。通过以下命令可以查看已经关联的用户(也可以是role):

代码语言:javascript
复制
eksctl get iamidentitymapping --cluster some-cluster

通过以下命令获取用户的 arn :

代码语言:javascript
复制
aws iam get-user --user-name someuser

通过以下命令创建关联,并加入到 system:masters 组,对应的 kubernetes 下的用户名是 someuser:

代码语言:javascript
复制
eksctl create iamidentitymapping --cluster some-cluster --arn arn:aws-cn:iam::111111:user/someuser --group system:masters --username someuser

但一般情况下我们需要创建一个一般权限的用户,所以不会加到 system:masters 组里:

代码语言:javascript
复制
eksctl create iamidentitymapping --cluster some-cluster --arn arn:aws-cn:iam::111111:user/someuser --username someuser

如果添加有误,可以用以下命令删除关联:

代码语言:javascript
复制
eksctl delete iamidentitymapping --cluster some-cluster --arn arn:aws-cn:iam::111111:user/someuser

用户授权 - 内置 Role

我们一般不能给 kubernetes 用户所有的权限,而只会给集群中某个命名空间的权限。

通过 kubectl get clusterroles 可以查看集群内置的 ClusterRole 。可以看到其中内置了一个 edit 角色 。我们创建一个 mynamespace-rolebinding.yaml :

代码语言:javascript
复制
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: mynamespace-edit
  namespace: mynamespace
subjects:
- kind: User
  name: "someuser"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit

执行 kubectl apply -f mynamespace-rolebinding.yaml 后,可以用以下命令验证用户是否有权限:

代码语言:javascript
复制
kubectl get deployments --as=someuser --namespace mynamespace

以后要增加其他用户,只需要在 subjects 下增加即可。

用户添加 kubeconfig

这时候用户可以添加 config 到自己的客户端。用户在自己的环境下执行:

代码语言:javascript
复制
aws eks --region cn-northwest-1 update-kubeconfig --name some-cluster

即可将 config 加入到本机环境。

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-242,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • EKS 授权管理
    • 关联 AWS 用户到 Kubernetes 集群
      • 用户授权 - 内置 Role
        • 用户添加 kubeconfig
          • 参考
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档