【问题标题】:Kubectl: command not found on travis ciKubectl:在 travis ci 上找不到命令
【发布时间】:2019-03-10 10:42:01
【问题描述】:

我正在尝试使用 Travis CI 部署 kubernetes 集群,但出现以下错误

编辑:

t 的无效参数“myAcc/imgName:”:无效参考格式

查看 docker build --help

./deploy.sh:第 1 行:kubectl:找不到命令

这是我的 travis 配置文件

travis.yml

sudo: required
services: 
  - docker
env:
  global:
    - SHA-$(git rev-parse HEAD)
    - CLOUDSDK_CORE_DISABLE_PROMPTS=1
before-install:
  - openssl aes-256-cbc -K $encrypted_0c35eebf403c_key -iv $encrypted_0c35eebf403c_iv -in service-account.json.enc -out service-account.json -d
  - curl https://sdk.cloud.google.com | bash > /dev/null
  - source $HOME/google-cloud-sdk/path.bash.inc
  - gcloud components update kubectl
  - gcloud auth activate-service-account --key-file service-account.json
  - gcloud config set project robust-chess-234104
  - gcloud config set compute/zone asia-south1-a
  - gcloud container clusters get-credentials standard-cluster-1
  - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin

deploy:
  provider: script
  script: bash ./deploy.sh
  on: 
    branch: master

这是我的部署脚本

deploy.sh

doccker build -t myAcc/imgName:$SHA
docker push myAcc/imgName:$SHA
kubectl apply -k8s

我猜gcloud components update kubectl 命令不起作用。有什么想法吗?

谢谢!

【问题讨论】:

  • 你是如何安装 kubectl 的?我在你的 yml 文件中看不到它
  • 在安装前的第四行。 gcloud components update kubectl 会安装 kubectl 对吗?
  • 这个错误invalid argument "myAcc/imgName:" for t: invalid reference format 因为$SHA 是空的
  • 应该是这样的:- SHA=$(git rev-parse HEAD)

标签: docker kubernetes travis-ci gcloud


【解决方案1】:

第一个问题invalid argument "myAcc/imgName:" for t: invalid reference format 因为变量$SHA 没有按预期定义。定义变量时存在语法问题,你应该在 SHA 之后使用 = 而不是 -,所以应该是这样的:

- SHA=$(git rev-parse HEAD)

第二个问题与kubectl有关,你需要根据docs使用以下命令安装它:

gcloud components install kubectl

更新

在 Travis-CI 上测试此文件后,我能够找出问题所在。您应该使用before_install 而不是before-install,因此在您的情况下,安装之前的步骤永远不会被执行。

# travis.yml
---
env:
  global:
    - CLOUDSDK_CORE_DISABLE_PROMPTS=1
before_install:
 - curl https://sdk.cloud.google.com | bash > /dev/null
 - source $HOME/google-cloud-sdk/path.bash.inc
 - gcloud components install kubectl

script: kubectl version

以及构建结果的最后部分:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.7", GitCommit:"65ecaf0671341311ce6aea0edab46ee69f65d59e", GitTreeState:"clean", BuildDate:"2019-01-24T19:32:00Z", GoVersion:"go1.10.7", Compiler:"gc", Platform:"linux/amd64"}

【讨论】:

  • 谢谢伙计。码头工人的错字是固定的。我在安装之前和 deploy.sh 文件中都添加了gcloud components install kubectl。它仍然说/deploy.sh: line 6: kubectl: command not found :(
  • @ShankarThyagarajan 我再次查看了我的答案,目前应该不错。您还有这方面的问题吗?
  • 是的,这两种方法我都试过了。但这似乎不起作用。我应该用我更新的脚本问另一个问题吗?这也包含 docker 错字,这有点离题
  • @ShankarThyagarajan 请检查更新的答案,不要忘记将其标记为答案
  • 成功了。谢谢。我认为 travis 可以对 yml 文件进行一些错误报告!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 2021-01-19
相关资源
最近更新 更多