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

Bitbucket Pipelines部署ECR镜像至EKS的命令问题排查

ECR镜像部署到EKS的问题解决与最优CI/CD方案

一、"deployments.apps 'xxx-app' not found" 错误排查

出现这个错误的核心是kubectl找不到指定部署资源,常见排查点:

  • 核对部署名称拼写,或确认资源是否在目标命名空间下:执行kubectl get deployments -n <你的命名空间>验证资源存在性
  • 检查Bitbucket Pipelines关联的AWS IAM权限:确保角色拥有访问目标EKS集群及对应命名空间部署资源的权限(需包含eks:DescribeCluster、apps:UpdateDeployment等操作权限)
  • 确认集群上下文配置正确:管道中需切换到目标EKS集群,可通过aws eks update-kubeconfig --name <集群名> --region <区域>重新配置

二、正确的kubectl镜像更新命令

推荐两种适配CI/CD场景的命令:

1. 直接更新部署镜像(最快捷)

kubectl set image deployment/xxx-app <容器名称>=<ECR镜像地址>:<镜像标签> -n <命名空间>

示例:

kubectl set image deployment/xxx-app app=123456789012.dkr.ecr.us-east-1.amazonaws.com/xxx-app:v1.0.0 -n prod

2. 通过YAML文件更新(适合多配置变更场景)

先替换YAML中的镜像字段,再应用配置:

# 替换YAML内的镜像内容
sed -i 's|image: .*xxx-app|image: 123456789012.dkr.ecr.us-east-1.amazonaws.com/xxx-app:v1.0.0|' deployment.yaml
# 应用更新后的配置
kubectl apply -f deployment.yaml -n prod

三、Bitbucket Pipelines最优部署流程

1. 安全配置AWS身份认证

优先使用OIDC身份提供商(无需存储长期密钥):

  • 在AWS IAM中创建OIDC提供商,关联Bitbucket的OIDC地址
  • 创建IAM角色,赋予EKS集群访问权限(如AmazonEKSClusterPolicy)及部署资源的操作权限
  • 在Bitbucket仓库变量中配置AWS_REGION、EKS_CLUSTER_NAME等参数

2. Pipelines.yml示例配置

image: atlassian/aws-cli:latest

pipelines:
  branches:
    main:
      - step:
          name: Deploy to EKS
          oidc: true
          script:
            # 配置EKS集群上下文
            - aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region $AWS_REGION
            # 验证集群连接状态
            - kubectl get nodes
            # 更新部署镜像
            - kubectl set image deployment/xxx-app app=$ECR_IMAGE_URI:$IMAGE_TAG -n $NAMESPACE
            # 等待部署完成并验证状态
            - kubectl rollout status deployment/xxx-app -n $NAMESPACE
          variables:
            - ECR_IMAGE_URI: '123456789012.dkr.ecr.us-east-1.amazonaws.com/xxx-app'
            - IMAGE_TAG: 'v1.0.0'
            - NAMESPACE: 'prod'
            - EKS_CLUSTER_NAME: 'your-eks-cluster'
            - AWS_REGION: 'us-east-1'

3. 关键注意事项

  • 部署步骤中添加kubectl rollout status,确保部署成功再结束流程
  • 镜像标签建议使用Git commit hash或语义化版本号,避免用latest标签导致版本不可控
  • 生产环境需前置测试步骤(如单元测试、镜像安全扫描),保障镜像可用性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:05:17