如何在.gitlab-ci.yml中使用AWS CLI和kubectl



我有一个.gitlab-ci.yml文件,我想在其中做以下操作:

  1. 构建Docker镜像并将其推送到AWS ECR
  2. 重新启动我的EKS集群中使用Docker映像的特定部署

构建和推送Docker映像工作正常,但是我无法连接到我的EKS集群。

我的想法是使用aws eks更新我的kubecconfig文件,kubectl重新启动我的部署,但我不知道如何使用AWS CLI和Kubectl在我的.gitlab-ci.yml文件。

我在CI/CD变量中定义了AWS_ACCESS_KEY_ID,AWS_ACCOUNT_IDAWS_DEFAULT_REGION。我有以下.gitlab-ci.yml文件:

stages:
- build
- deploy staging
<build stage omitted for brevity>
staging:
stage: deploy staging
image: bitnami/kubectl:latest
only:
- staging
script: |
# install AWS CLI
apk add --no-cache python3 py3-pip 
&& pip3 install --upgrade pip 
&& pip3 install awscli 
&& rm -rf /var/cache/apk/*
aws eks update-kubeconfig --region eu-west-1 --name my-cluster-name
kubectl rollout restart deployment my-deployment

这个管道失败,报错:

error: unknown command "sh" for "kubectl"
Did you mean this?
set
cp

我已经发现了这个问题和解决方案,但是相应地更改.gitlab-ci.yml文件会阻止我使用apk和安装AWS cli:

stages:
- build
- deploy staging
<build stage omitted for brevity>
staging:
stage: deploy staging
image:
name: bitnami/kubectl:latest
entrypoint: [""]
only:
- staging
script: |
# install AWS CLI
apk add --no-cache python3 py3-pip 
&& pip3 install --upgrade pip 
&& pip3 install awscli 
&& rm -rf /var/cache/apk/*
aws eks update-kubeconfig --region eu-west-1 --name my-cluster-name
kubectl rollout restart deployment my-deployment

导致错误:

$ # install AWS CLI # collapsed multi-line command
/bin/bash: line 140: apk: command not found
/bin/bash: line 144: aws: command not found

所以这让我想到了以下问题:我如何在我的.gitlab-ci.yml文件中使用AWS CLI和Kubectl ?或者是否有另一种更简单的方法允许我重新启动EKS集群中的部署?

我自己解决了。对于未来的读者:使用alpine/k8s图像解决了我的问题。它同时安装了Kubectl和AWScli。

相关内容

  • 没有找到相关文章

最新更新