我在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获取的名称,以及如何覆盖它。
有人遇到这个问题吗?任何线索如何表明在哪里码头部署发生?
好的,很容易从文档中遗漏,但是必须做的是保持在创建工作负载时生成的yaml文件(否则很容易重新创建)。
否则,正如Gari Singh在对我的问题的评论中提到的那样,将生成新的工作负载(或取代以前的工作负载)。
因此,在工作负载配置文件中,不需要任何特定的标记(图像级别),只需将其放在Google Storage文件夹中。然后:
# GKE run deploy
- name: 'gcr.io/cloud-builders/gke-deploy'
args:
- run
- --filename=gs://path/to/config/myserviceconfig.yml
- ...
这样就可以在GKE集群上得到一个干净的部署。
文档有点遗漏,导致没有filename参数会发生什么,希望它能有所帮助。