/bin/bash:第 123 行:kubectl:找不到命令
/bin/bash: line 123: kubectl: command not found
这是我第一次将 GitLab 用于 EKS,我感到很迷茫。我一直在关注文档,到目前为止我
- 在 GitLab 上创建了一个包含我的 kubernetes 清单文件的项目
- 在目录 .gitlab/agents/stockagent
的那个项目中创建了一个 config.yaml
这里是config.yaml,我的项目名称是“Stock-Market-API-K8s”,我的k8s清单在根目录那个项目
ci_access:
projects:
- id: "root/Stock-Market-API-K8s"
在我项目的根目录中,我还有一个 .gitlab-ci.yml 文件,这是
的内容
deploy:
image:
name: mpriv32/stock-api:latest
entrypoint: ['']
script:
- kubectl config get-contexts
- kubectl config use-context .gitlab/agents/stockagent
- kubectl get pods
使用文档中的默认示例,似乎是 get-contexts 脚本失败了。这是我日志中的完整错误
Executing "step_script" stage of the job script
00:01
Using docker image sha256:58ddf823e9d7ee4c0e75779b7e01dab9b11ac0d985d1b2d2fe6c6b95a849573d for mpriv32/stock-api:latest with digest mpriv32/stock-api@sha256:a2e79a2c3a57327f93e36ec55297a606626e4dc8d72e469dd4dc2f3c1f589bac ...
$ kubectl config get-contexts
/bin/bash: line 123: kubectl: command not found
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit code 1
这是我的 kubernetes pod 的 job.yaml 文件,以防它发挥作用
apiVersion: v1
kind: Pod
metadata:
name: stock-api
labels:
app: stock-api
spec:
containers:
- name: stock-api
image: mpriv32/stock-api:latest
envFrom:
- secretRef:
name: api-credentials
restartPolicy: Never
在你的情况下,我猜你正在使用的图像(mpriv32/stock-api:latest)没有依赖 kubectl 作为全局可执行文件,请使用图像作为示例 - bitnami/kubectl 其中“包含”kubectl
deploy:
image:
name: bitnami/kubectl
image 关键字是 Docker 图像的名称,Docker 执行程序用于 运行 CI/CD 作业。
更多信息https://docs.gitlab.com/ee/ci/docker/using_docker_images.html
或者您可以在 bitnami/kubectl
之上构建您的 docker 图像
FROM bitnami/kubectl:1.20.9 as kubectl
FROM ubuntu-or-whatever-image:tag
# Do whatever you need to with the
# ubuntu-or-whatever-image:tag image, then:
COPY --from=kubectl /opt/bitnami/kubectl/bin/kubectl /usr/local/bin/
或者您可以采用从头开始构建图像的方法,方法是
在那里安装您正在使用的依赖项
有点喜欢
FROM ubuntu:18.10
WORKDIR /root
COPY bootstrap.sh ./
RUN apt-get update && apt-get -y install --no-install-recommends \
gnupg \
curl \
wget \
git \
apt-transport-https \
ca-certificates \
zsh \
&& rm -rf /var/lib/apt/lists/*
ENV SHELL /usr/bin/zsh
# Install kubectl
RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list && \
apt-get update && apt-get -y install --no-install-recommends kubectl
这是我第一次将 GitLab 用于 EKS,我感到很迷茫。我一直在关注文档,到目前为止我
- 在 GitLab 上创建了一个包含我的 kubernetes 清单文件的项目
- 在目录 .gitlab/agents/stockagent 的那个项目中创建了一个 config.yaml
这里是config.yaml,我的项目名称是“Stock-Market-API-K8s”,我的k8s清单在根目录那个项目
ci_access:
projects:
- id: "root/Stock-Market-API-K8s"
在我项目的根目录中,我还有一个 .gitlab-ci.yml 文件,这是
的内容deploy:
image:
name: mpriv32/stock-api:latest
entrypoint: ['']
script:
- kubectl config get-contexts
- kubectl config use-context .gitlab/agents/stockagent
- kubectl get pods
使用文档中的默认示例,似乎是 get-contexts 脚本失败了。这是我日志中的完整错误
Executing "step_script" stage of the job script
00:01
Using docker image sha256:58ddf823e9d7ee4c0e75779b7e01dab9b11ac0d985d1b2d2fe6c6b95a849573d for mpriv32/stock-api:latest with digest mpriv32/stock-api@sha256:a2e79a2c3a57327f93e36ec55297a606626e4dc8d72e469dd4dc2f3c1f589bac ...
$ kubectl config get-contexts
/bin/bash: line 123: kubectl: command not found
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit code 1
这是我的 kubernetes pod 的 job.yaml 文件,以防它发挥作用
apiVersion: v1
kind: Pod
metadata:
name: stock-api
labels:
app: stock-api
spec:
containers:
- name: stock-api
image: mpriv32/stock-api:latest
envFrom:
- secretRef:
name: api-credentials
restartPolicy: Never
在你的情况下,我猜你正在使用的图像(mpriv32/stock-api:latest)没有依赖 kubectl 作为全局可执行文件,请使用图像作为示例 - bitnami/kubectl 其中“包含”kubectl
deploy:
image:
name: bitnami/kubectl
image 关键字是 Docker 图像的名称,Docker 执行程序用于 运行 CI/CD 作业。 更多信息https://docs.gitlab.com/ee/ci/docker/using_docker_images.html
或者您可以在 bitnami/kubectl
之上构建您的 docker 图像FROM bitnami/kubectl:1.20.9 as kubectl
FROM ubuntu-or-whatever-image:tag
# Do whatever you need to with the
# ubuntu-or-whatever-image:tag image, then:
COPY --from=kubectl /opt/bitnami/kubectl/bin/kubectl /usr/local/bin/
或者您可以采用从头开始构建图像的方法,方法是 在那里安装您正在使用的依赖项
有点喜欢
FROM ubuntu:18.10
WORKDIR /root
COPY bootstrap.sh ./
RUN apt-get update && apt-get -y install --no-install-recommends \
gnupg \
curl \
wget \
git \
apt-transport-https \
ca-certificates \
zsh \
&& rm -rf /var/lib/apt/lists/*
ENV SHELL /usr/bin/zsh
# Install kubectl
RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list && \
apt-get update && apt-get -y install --no-install-recommends kubectl