我有一个码头容器,我把它像gcloud builds submit --tag gcr.io/<project-id>/<name>一样推到GCR上,当我在GCE实例上部署它时,每次部署它都会创建一个新的实例,并且我必须手动删除旧的实例。问题是,是否有一种方法来部署容器并强制GCE实例获取新的容器?我需要确切的GCE,而不是Google运行或其他,因为它不是一个HTTP服务。
我使用Deploy to Cloud Run按钮从Google控制台部署容器

发布于 2021-11-22 15:26:34
为了更好的能见度,我发布了这个Community Wiki。在注释部分,已经有了一些好的解决方案,但是OP最后想要使用Cloud Run。
首先,我想澄清几件事。
我有一个码头集装箱,我把它像
gcloud builds submit一样推到GCR
gcloud builds submit是一个使用Google 云构建构建的命令。
云构建是一种在Google平台基础设施上执行构建的服务。云构建可以从云存储、云源存储库、GitHub或Bitbucket导入源代码,按照您的规范执行构建,并生成工件,如Docker容器或Java归档文件。
在这个问题中,OP指的是集装箱登记处,但是GCP建议使用工件登记处来代替Container Registry。
在Artifact Registry文档中解释了从推拉图像中推拉图像的过程。这可以通过docker push或docker pull命令来完成,在此之前,您必须标记一个图像并创建Artifact Registry。
在不同产品上的部署
关于在GCE、GKE和Cloud Run上的部署,这些都是GCP产品,它们与每个产品都有很大的不同。
GCE是IaaS,您将指定资源的数量,并维护所有软件的安装(您需要安装Docker、Kubernetes、编程库等等)。
GKE与Hybrid类似,因为您提到了所需的资源数量,但它是自定义的,以便在其上运行容器。创建之后,您已经拥有了运行容器所需的docker、kubernetes和其他软件。
云运行是一个无服务器的GCP产品,您不需要计算所需资源的数量,安装软件/libs,它是一个完全管理的无服务器平台。
当您想从Artifact Registry / Container Registry部署容器应用程序时,您正在创建另一个VM (GCE和GKE)或新服务(Cloud )。
如果您想在同一个VM上部署新应用程序:
deploymentkubectl create deployment test --image=<location>-docker.pkg.dev/<projectname>/<artifactRegistryName>/<imageName>删除旧的。
在Cloud Run中,您可以部署一个应用程序,而不需要考虑资源或硬件,这些步骤都是这里描述的。您可以为图像中的特定更改创建revisions。然而,Cloud Run也允许使用GitHub、BitBucket或Cloud Source Repositories进行CI/CD。这个过程在GCP文档- 连续部署中也有很好的描述。
可能的解决方案:
Cloud Run与CI/CD结合使用。基于OP的一个注释,所选择的解决方案是将Cloud Run与CI/CD结合使用。
https://stackoverflow.com/questions/69908932
复制相似问题