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 集群上进行干净的部署。
关于没有文件名参数会发生什么,该文档有点遗漏,希望它能有所帮助。
我在 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 集群上进行干净的部署。
关于没有文件名参数会发生什么,该文档有点遗漏,希望它能有所帮助。