有没有办法为 Cloud 运行 服务设置 "imagePullPolicy"?
Is there a way to set "imagePullPolicy" for Cloud Run Service?
我希望能够在 Google Container Registry 上更新我的映像后自动更新我的 Google Cloud 运行 服务。
我需要根据同一张图片(标签为 :latest )更新多个 Cloud 运行 服务,所以我希望它能工作。
# build & push the container image
- name: "gcr.io/kaniko-project/executor:latest"
args: ["--cache=true", "--cache-ttl=48h", "--destination=gcr.io/project/titan:latest"]
目前,我的 titan 映像已更新,但没有新的修订版部署到 Cloud 运行。
默认的拉取策略是 IfNotPresent
,这会导致 Kubelet
跳过拉取已存在的映像。如果您想始终强制拉动,可以执行以下操作之一:
- 设置容器的imagePullPolicy为Always。
- 省略 imagePullPolicy 并使用 :latest 作为要使用的图像的标签。
- 省略 imagePullPolicy 和要使用的图像的标签。
- 启用 AlwaysPullImages 准入控制器。
请注意,您应避免使用 :latest 标签,有关详细信息,请参阅 Best Practices for Configuration。
例如创建YAML文件dummy.yaml
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: whatever
image: index.docker.io/DOCKER_USER/PRIVATE_REPO_NAME:latest
imagePullPolicy: Always
command: [ "echo", "SUCCESS" ]
imagePullSecrets:
- name: myregistrykey
然后运行:
kubectl create -f dummy.yaml
Google Cloud 运行 将新图像推送到标签引用时不会自动部署修订。它没有的原因有很多。
部署云 运行 修订版时,它会计算图像引用的 sha256 哈希值。
因此,当您使用 :latest
标记指定容器映像时,云 运行 使用其 sha256 引用来部署和扩展您的服务修订版。当您更新 :latest
标签以指向新图像时,Cloud 运行 仍将使用之前的图像。否则,这将是一个危险而湿滑的斜坡。
如果您需要auto-deploy基于新镜像推送对Cloud 运行进行新的修改,我推荐两种解决方案:
- 使“gcloud beta 运行 部署”命令成为 Google 云构建过程中的一个步骤。 (简单)https://cloud.google.com/run/docs/continuous-deployment
- 编写一个 GCF/Run 服务,在每次通过 PubSub 订阅 Google Cloud Build(或 GCR)通知推送新图像时,将您的应用程序部署到云端 运行。 (更难)
我希望能够在 Google Container Registry 上更新我的映像后自动更新我的 Google Cloud 运行 服务。
我需要根据同一张图片(标签为 :latest )更新多个 Cloud 运行 服务,所以我希望它能工作。
# build & push the container image
- name: "gcr.io/kaniko-project/executor:latest"
args: ["--cache=true", "--cache-ttl=48h", "--destination=gcr.io/project/titan:latest"]
目前,我的 titan 映像已更新,但没有新的修订版部署到 Cloud 运行。
默认的拉取策略是 IfNotPresent
,这会导致 Kubelet
跳过拉取已存在的映像。如果您想始终强制拉动,可以执行以下操作之一:
- 设置容器的imagePullPolicy为Always。
- 省略 imagePullPolicy 并使用 :latest 作为要使用的图像的标签。
- 省略 imagePullPolicy 和要使用的图像的标签。
- 启用 AlwaysPullImages 准入控制器。
请注意,您应避免使用 :latest 标签,有关详细信息,请参阅 Best Practices for Configuration。
例如创建YAML文件dummy.yaml
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: whatever
image: index.docker.io/DOCKER_USER/PRIVATE_REPO_NAME:latest
imagePullPolicy: Always
command: [ "echo", "SUCCESS" ]
imagePullSecrets:
- name: myregistrykey
然后运行:
kubectl create -f dummy.yaml
Google Cloud 运行 将新图像推送到标签引用时不会自动部署修订。它没有的原因有很多。
部署云 运行 修订版时,它会计算图像引用的 sha256 哈希值。
因此,当您使用 :latest
标记指定容器映像时,云 运行 使用其 sha256 引用来部署和扩展您的服务修订版。当您更新 :latest
标签以指向新图像时,Cloud 运行 仍将使用之前的图像。否则,这将是一个危险而湿滑的斜坡。
如果您需要auto-deploy基于新镜像推送对Cloud 运行进行新的修改,我推荐两种解决方案:
- 使“gcloud beta 运行 部署”命令成为 Google 云构建过程中的一个步骤。 (简单)https://cloud.google.com/run/docs/continuous-deployment
- 编写一个 GCF/Run 服务,在每次通过 PubSub 订阅 Google Cloud Build(或 GCR)通知推送新图像时,将您的应用程序部署到云端 运行。 (更难)