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

Bitbucket Pipeline部署EKS时认证失败问题求助

排查Bitbucket Pipeline EKS Kubectl认证失败问题

可能的原因及排查步骤

1. 校验AWS凭证的权限覆盖度

虽然你确认凭证有效,但需验证两项关键权限:

  • 执行 aws eks describe-cluster --name <集群名称>,确认能正常返回集群信息(此操作需要eks:DescribeCluster权限,是生成kubeconfig的前提)
  • 检查K8s集群中,该AWS IAM用户/角色是否绑定了对应RBAC权限(比如目标namespace的编辑权限或集群级cluster-admin权限)

2. 对比kubeconfig生成的完整性

在Pipeline中添加调试步骤,打印生成的kubeconfig内容,和本地手动生成的版本对比:

- step:
    name: Debug Kubeconfig
    image: atlassian/aws-eks-kubectl-run:2.2.1
    script:
      - aws eks update-kubeconfig --name <你的集群名称>
      - cat ~/.kube/config

重点核对:

  • users.user.exec.args是否包含正确的集群ARN和区域信息
  • users.user.exec.command是否为aws-iam-authenticator或aws eks get-token(不同EKS版本的认证命令有差异)

3. 检查内置AWS CLI版本兼容性

atlassian/aws-eks-kubectl-run:2.2.1内置的AWS CLI版本可能偏旧,导致生成的kubeconfig不符合当前EKS要求。可在Pipeline中添加版本检查:

script:
  - aws --version

如果版本低于2.x,建议升级AWS CLI或更换包含新版CLI的kubectl镜像。

4. 确认EKS集群的IAM认证映射

检查EKS集群是否配置了IAM OIDC提供商,且你的AWS凭证对应的IAM实体已正确映射到K8s权限:

  • 执行 aws eks describe-cluster --name <集群名称> --query "cluster.identity.oidc.issuer",确认OIDC提供商存在
  • 查看kube-system下的aws-auth ConfigMap,确认你的IAM用户ARN在mapUsers列表中,并绑定了合适的权限组(比如system:masters):
kubectl get configmap aws-auth -n kube-system -o yaml

5. 验证Pipeline环境变量传递

确保AWS凭证和区域变量在Pipeline中正确注入:

script:
  - echo "AWS_ACCESS_KEY_ID已设置: ${AWS_ACCESS_KEY_ID:+是}"
  - echo "AWS_SECRET_ACCESS_KEY已设置: ${AWS_SECRET_ACCESS_KEY:+是}"
  - echo "AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION"

注意集群所在区域必须和AWS_DEFAULT_REGION一致。

6. 绕开update-kubeconfig,手动测试认证

跳过自动生成kubeconfig的步骤,手动生成token并配置kubectl,验证认证是否可行:

script:
  - export AWS_REGION=<你的集群区域>
  - export CLUSTER_NAME=<你的集群名称>
  - export TOKEN=$(aws eks get-token --cluster-name $CLUSTER_NAME --query 'status.token' --output text)
  - kubectl config set-credentials aws-user --token=$TOKEN
  - kubectl config set-cluster $CLUSTER_NAME --server=$(aws eks describe-cluster --name $CLUSTER_NAME --query 'cluster.endpoint' --output text) --certificate-authority-data=$(aws eks describe-cluster --name $CLUSTER_NAME --query 'cluster.certificateAuthority.data' --output text)
  - kubectl config set-context $CLUSTER_NAME --cluster=$CLUSTER_NAME --user=aws-user
  - kubectl config use-context $CLUSTER_NAME
  - kubectl get nodes # 测试认证是否成功

如果以上步骤仍未解决问题,需排查Bitbucket Pipeline的网络环境,确认是否能正常访问EKS集群的API端点,是否存在防火墙或代理限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:40:08