Jenkins部署Sock Shop至AWS EKS集群时遇权限认证错误求助
问题原因及解决方法
错误提示为认证失败,说明Jenkins执行kubectl时未获得访问EKS集群的合法权限,和将Jenkins用户加入sudo组无关——你在EC2实例直接执行命令成功,是因为当前登录用户(如ec2-user)已拥有正确的EKS认证配置,但Jenkins进程使用的jenkins用户没有。
解决步骤:
1. 在流水线中生成EKS认证配置
在执行kubectl create前,先通过AWS CLI生成kubeconfig文件,让Jenkins用户获取EKS集群的访问权限:
修改流水线的Deploy to EKS阶段:
stage("Deploy to EKS") { steps { script { dir('deploy/kubernetes') { // 替换<你的EKS集群名称>为实际集群名,生成kubeconfig sh "aws eks update-kubeconfig --name <你的EKS集群名称> --region us-east-1" sh "kubectl create -f complete-demo.yaml" } } } }
该命令会将EKS集群的认证信息写入Jenkins用户的~/.kube/config文件,让kubectl能完成身份认证。
2. 验证IAM权限
确保流水线中配置的AWS_ACCESS_KEY_ID对应的IAM用户拥有以下权限:
eks:DescribeCluster:用于获取集群信息生成kubeconfig- EKS集群的RBAC权限:需要在EKS集群中为该IAM用户绑定可创建资源的角色(如
edit或adminClusterRole)
如果你的EC2实例已绑定能访问EKS的IAM角色,也可以移除流水线中的AWS密钥配置,让Jenkins直接使用实例角色,安全性更高。
3. 检查kubectl配置(可选)
可在流水线中添加验证步骤,确认kubeconfig配置正确:
sh "kubectl config view" sh "kubectl get nodes"
若kubectl get nodes能返回节点列表,说明认证配置已生效。
内容的提问来源于stack exchange,提问作者user11631346
相关产品推荐
相关产品推荐

