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

如何通过AWS命令获取EKS Pod角色而非Worker Node角色

解决EKS Pod获取专属IAM角色而非Worker Node角色的问题

要在EKS Pod中获取专属IAM角色(而非Worker Node角色)并用于Google外部账户凭证配置,需要通过**IRSA(IAM Roles for Service Accounts)**实现,以下是具体步骤:

1. 确认Pod已配置IRSA

EKS中Pod要使用专属IAM角色,必须通过IRSA绑定ServiceAccount和IAM角色:

  • 查看Pod使用的ServiceAccount:
    kubectl describe pod <你的Pod名称> | grep ServiceAccount
    
  • 检查该ServiceAccount是否关联了IAM角色:
    kubectl describe sa <ServiceAccount名称>
    
    若输出中包含eks.amazonaws.com/role-arn: arn:aws:iam::<账号ID>:role/<Pod角色名称>,说明已配置IRSA;若未配置,需先创建信任策略允许EKS OIDC提供商扮演目标IAM角色,再给ServiceAccount添加该注释。

2. 获取Pod专属IAM角色信息

IRSA会自动在Pod内注入环境变量和token文件:

  • 获取Pod角色ARN:直接读取环境变量
    echo $AWS_ROLE_ARN
    
  • Pod的Web Identity Token路径:默认挂载在/var/run/secrets/eks.amazonaws.com/serviceaccount/token,对应环境变量$AWS_WEB_IDENTITY_TOKEN_FILE

3. 调整Google外部账户凭证配置

你当前的配置指向EC2元数据服务,会拿到Worker Node角色,需修改为适配IRSA的配置:

{
  "type": "external_account",
  "audience": "~~~~~~~~",
  "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
  "token_url": "https://sts.googleapis.com/v1/token",
  "credential_source": {
    "file": "/var/run/secrets/eks.amazonaws.com/serviceaccount/token",
    "environment_id": "aws1",
    "region_url": "http://169.254.169.254/latest/meta-data/placement/availability-zone",
    "regional_cred_verification_url": "https://sts.{region}.amazonaws.com/?Action=GetCallerIdentity&Version=2011-06-15"
  },
  "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/!@#$!@#$!@#$.iam.gserviceaccount.com:generateAccessToken"
}

关键修改:

  • 移除原url字段,添加file字段指向IRSA的token文件路径
  • 将subject_token_type设置为urn:ietf:params:oauth:token-type:jwt(IRSA token为JWT格式)

4. 验证配置

设置GOOGLE_APPLICATION_CREDENTIALS环境变量指向修改后的配置文件,运行Google SDK或相关代码,验证是否能正确获取Google访问令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:25:25