[英]How to use AWS CLI and kubectl in .gitlab-ci.yml
我有一个.gitlab-ci.yml
文件,我想在其中执行以下操作:
构建和推送 Docker 图像工作正常,但我无法连接到我的 EKS 集群。
我的想法是使用aws eks
eks 更新我的 kubeconfig 文件,并kubectl
重新启动我的部署,但我不知道如何在我的.gitlab-ci.yml
文件中使用 AWS CLI 和 Kubectl。
我在我的 CI/CD 变量中定义了AWS_ACCESS_KEY_ID
、 AWS_ACCOUNT_ID
和AWS_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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.