You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何授权联邦用户访问Azure DevOps Pipeline创建的EKS集群?

解决EKS集群kubectl未授权访问问题

一、给已存在的EKS集群添加你的角色权限

如果集群已经创建,你需要借助拥有集群管理员权限的实体(比如创建集群的Azure DevOps Pipeline角色)来配置RBAC:

  • 先准备一个ClusterRoleBinding配置文件(命名为add-federated-admin.yaml):

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: federated-admins-cluster-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - apiGroup: rbac.authorization.k8s.io
      kind: User
      name: arn:aws:sts:************:assumed-role/admins/{accountname}
    

    注意:这里的name必须是你STS返回的完整ARN,EKS会将IAM实体的ARN作为Kubernetes中的用户标识。

  • 让Pipeline执行这个配置(因为你无法直接访问代理,只能通过Pipeline操作):
    在Azure DevOps Pipeline中添加步骤,运行kubectl apply -f add-federated-admin.yaml,确保Pipeline使用的是创建集群的IAM凭据(它拥有集群管理员权限)。

  • 配置本地kubectl使用你的角色:
    本地执行以下命令更新kubeconfig,关联你的admins角色:

    aws eks update-kubeconfig --region <你的集群区域> --name <集群名称> --role-arn arn:aws:iam::************:role/admins
    

    这里用的是你角色的ARN(而非assumed-role的ARN),命令会自动处理STS角色扮演流程,之后你就能用kubectl访问集群了。

二、用Terraform重新创建集群时预先配置权限

如果要重新创建集群,直接在Terraform配置中添加IAM授权映射,避免后续权限问题:

使用aws_aws_auth_configmap资源(EKS专属的IAM-K8s授权配置),把你的admins角色加入system:masters组(拥有集群最高权限):

resource "aws_aws_auth_configmap" "eks_auth" {
  cluster_name = aws_eks_cluster.my_eks_cluster.name

  # 授权你的admins角色
  role_mappings {
    rolearn  = "arn:aws:iam::************:role/admins"
    username = "admin:{{SessionName}}" # SessionName会自动替换为你的accountname
    groups = [
      "system:masters"
    ]
  }

  # 保留创建集群的角色权限,避免Pipeline失去访问权
  role_mappings {
    rolearn  = aws_iam_role.eks_cluster_creator_role.arn
    username = "eks-cluster-creator"
    groups = [
      "system:masters"
    ]
  }
}

这样集群创建完成后,你扮演admins角色时就能直接用kubectl访问,无需额外配置。

内容的提问来源于stack exchange,提问作者gklucard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 01:02:29