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

如何在.gitlab-ci.yml中同时使用AWS CLI与kubectl?

GitLab CI中连接EKS并重启Deployment的解决方案

一、解决工具共存的核心问题

你遇到的entrypoint报错和无法安装AWS CLI的问题,本质是kubectl镜像默认entrypoint为kubectl,导致无法直接执行bash/apk命令。只需覆盖entrypoint为bash,就能在同一个job里同时使用AWS CLI和kubectl:

方案1:基于kubectl镜像安装AWS CLI

deploy_to_eks:
  image: bitnami/kubectl:latest
  # 覆盖默认entrypoint,允许执行bash命令
  entrypoint: ["bash", "-c"]
  before_script:
    # 安装AWS CLI(alpine系统用apk)
    - apk add --no-cache aws-cli
    # 配置EKS集群kubeconfig
    - aws eks update-kubeconfig --region ${AWS_REGION} --name ${EKS_CLUSTER_NAME}
  script:
    # 重启指定Deployment
    - kubectl rollout restart deployment/${DEPLOYMENT_NAME} -n ${K8S_NAMESPACE}
  # 配置CI变量(建议在GitLab项目CI/CD变量中设置,避免硬编码)
  variables:
    AWS_REGION: "your-aws-region"
    EKS_CLUSTER_NAME: "your-eks-cluster-name"
    DEPLOYMENT_NAME: "your-target-deployment"
    K8S_NAMESPACE: "default"
  only:
    - main # 按需触发分支

方案2:基于AWS CLI镜像安装kubectl

如果更习惯用AWS官方镜像,也可以反过来操作:

deploy_to_eks:
  image: public.ecr.aws/aws-cli/aws-cli:latest
  before_script:
    # 安装kubectl
    - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    - install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    # 配置EKS集群kubeconfig
    - aws eks update-kubeconfig --region ${AWS_REGION} --name ${EKS_CLUSTER_NAME}
  script:
    - kubectl rollout restart deployment/${DEPLOYMENT_NAME} -n ${K8S_NAMESPACE}
  variables:
    # 同上配置变量

二、更简便的重启方式

如果不想手动处理工具安装,还可以:

  • 使用预集成工具的镜像:比如alpine/k8s,内置kubectl、helm等工具,只需安装AWS CLI即可
  • 利用GitLab Runner的IAM角色:如果你的GitLab Runner部署在AWS EC2上,给EC2实例附加能访问EKS的IAM角色,无需在CI中配置AWS密钥,直接执行aws eks update-kubeconfig即可

注意事项

  • 确保CI job拥有足够的AWS权限:需要eks:DescribeCluster权限(更新kubeconfig),以及EKS集群中对Deployment的rollout权限
  • AWS密钥建议通过GitLab项目的CI/CD变量设置为受保护变量,避免泄露

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:20:26