cloud-build + gke-deploy 应用名称或标签被忽略

cloud-build + gke-deploy app name or label are ignored

我在 cloudbuild.yaml 文件中有这个配置:

- name: 'gcr.io/cloud-builders/gke-deploy'
args:
  - run
  - --app=doc-io
  - --namespace=frontend
  - --cluster=cluster-dev
  - --location=europe-west1-b
  - --image=gcr.io/${PROJECT_ID}/github.com/ourprojet/docs-io:dev-${SHORT_SHA}
  - --version=dev-${SHORT_SHA}

但这会在 GKE 中创建一个名为“docs-io”的新工作负载,而不是将我最新的 docker 映像部署到现有工作负载“doc-io”。

无论我在云构建方面做什么,即使直接在云构建配置中添加环境变量 _K8S_APP_NAME_K8S_LABELS - 它也会在 GKE 上创建一个名为 docs-io.

我无法在任何地方找到 cloud-build 或 gke-deploy 采用的默认“工作负载”名称,也找不到如何覆盖它。

有人遇到过这个问题吗?任何线索如何指示必须在何处进行 docker 部署?

好吧,很容易从文档中遗漏,但必须要做的是保留在创建工作负载时生成的 yaml 文件(否则很容易重新创建)。

否则,正如 Gari Singh 在对我的问题的评论中提到的那样,将生成一个新的工作负载(或替换之前的工作负载)。

因此,在工作负载配置文件中,无需任何特定标签(图像级别),只需将其放在 Google 存储文件夹中即可。 那么:

# GKE run deploy
- name: 'gcr.io/cloud-builders/gke-deploy'
args:
  - run
  - --filename=gs://path/to/config/myserviceconfig.yml
  - ...

这样您就可以在 GKE 集群上进行干净的部署。

关于没有文件名参数会发生什么,该文档有点遗漏,希望它能有所帮助。