AWS CodeBuild POST_BUILD阶段执行kubectl apply报认证错误如何修复
报错原因
你遇到的报错是因为CodeBuild运行环境未完成EKS集群的身份认证,kubectl无法获取合法的集群访问凭证。
修复步骤
- 配置CodeBuild服务角色的IAM权限
进入IAM控制台,找到当前CodeBuild项目使用的服务角色,为角色附加AmazonEKSClusterPolicy权限,确保角色拥有eks:DescribeCluster动作的访问权限。 - 修改buildspec.yml配置,提前生成kubeconfig认证文件
在POST_BUILD阶段执行kubectl apply命令前,先添加如下命令,替换尖括号内的参数为你的实际EKS集群信息:
该命令会自动将集群访问凭证写入到kubectl默认读取的配置路径中。aws eks update-kubeconfig --name <你的EKS集群名称> --region <集群所属AWS区域> - 配置EKS集群的访问权限映射
在本地已拥有EKS集群管理员权限的环境中执行kubectl edit configmap aws-auth -n kube-system,在mapRoles配置段添加如下内容,替换为你的CodeBuild服务角色ARN:
如果你不需要CodeBuild拥有集群全权限,可以自行创建对应权限的RBAC规则,替换- rolearn: arn:aws:iam::<你的AWS账号ID>:role/<CodeBuild服务角色名> username: codebuild groups: - system:masterssystem:masters为你自定义的角色组即可。 - 重新运行CodeBuild任务验证配置是否生效。
内容的提问来源于stack exchange,提问作者Mafusi Mokati
相关产品推荐
相关产品推荐

