在Google容器注册表上更新了我的图像后,我希望能够自动更新我的Google Cloud Run服务。
我需要基于同一图像(具有:latest的标记)更新多个Cloud Run服务,所以我希望它可以正常工作。
# build & push the container image
- name: "gcr.io/kaniko-project/executor:latest"
args: ["--cache=true", "--cache-ttl=48h", "--destination=gcr.io/project/titan:latest"]
当前,我的泰坦映像已更新,但是没有新的修订版本部署到Cloud Run。
答案 0 :(得分:2)
当您将新图像推送到标签引用时,Google Cloud Run不会自动部署修订。没有的原因很多。
在部署Cloud Run修订版时,它将计算映像参考的sha256哈希。
因此,当您使用:latest
标签指定容器映像时,Cloud Run将使用其sha256参考来部署和扩展该服务的修订版。当您更新:latest
标记以指向新图像时,Cloud Run仍将使用先前的图像。否则将是危险和湿滑的斜坡。
如果您需要基于新的映像推送将新修订版自动部署到Cloud Run,我建议两种解决方案:
答案 1 :(得分:-1)
默认的拉取策略是IfNotPresent
,它会导致Kubelet
跳过拉取已存在的图像。如果您想始终强制拉动,则可以执行以下操作之一:
请注意,您应该避免使用: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