![](/img/trans.png)
[英]Cannot access Google Container Registry from Google Compute Engine
[英]Automatically deploy new container to Google Cloud Compute Engine from Google Container Registry
我有一個gcloud builds submit --tag gcr.io/<project-id>/<name>
容器,我將它推送到 GCR,就像gcloud builds submit --tag gcr.io/<project-id>/<name>
,當我將它部署在 GCE 實例上時,每次部署它時都會創建一個新實例和我必須手動刪除舊實例。 問題是,有沒有辦法部署容器並強制 GCE 實例獲取新容器? 我完全需要 GCE,而不是 Google Cloud Run 或其他,因為它不是 HTTP 服務。
我正在發布此Community Wiki
以獲得更好的可見性。 在評論部分已經有一些很好的解決方案,但是最后 OP 想要使用Cloud Run
。
首先我想澄清一些事情。
我有一個
gcloud builds submit
容器,可以像gcloud builds submit
一樣推送到 GCR
gcloud builds submit
是使用 Google Cloud Build 構建的命令。
Cloud Build 是一項在 Google Cloud Platform 基礎架構上執行構建的服務。 Cloud Build 可以從 Cloud Storage、Cloud Source Repositories、GitHub 或 Bitbucket 導入源代碼,根據您的規范執行構建,並生成工件,例如 Docker 容器或 Java 檔案。
在這個問題中,OP 指的是Container Registry ,但是 GCP 建議使用Artifact Registry ,它將很快取代Container Registry
。
從Artifact Registry
推送和拉取鏡像在推送和拉取鏡像文檔中有解釋。 它可以通過docker push
或docker pull
命令來完成,之前你必須標記一個圖像並創建Artifact Registry
。
部署在不同的 GCP 產品上
關於部署在GCE
、 GKE
和Cloud Run
,這些都是 GCP 產品,它們之間有很大的不同。
GCE是IaaS
,您可以在其中指定資源量並維護所有軟件的所有安裝(您需要安裝 Docker、Kubernetes、編程庫等)。
GKE就像Hybrid
因為您提到了您需要的資源量,但它是為在其上運行容器而定制的。 創建之后,您已經擁有了在其上運行容器所需的 docker、kubernetes 和其他軟件。
Cloud Run是無服務器 GCP 產品,您無需計算所需資源的數量、安裝軟件/庫,它是一個完全托管的無服務器平台。
當您想從Artifact Registry / Container Registry
部署容器應用程序時,您正在創建另一個 VM(GCE 和 GKE)或新服務(Cloud Run)。
如果您想在同一 VM 上部署新應用程序:
deployment
kubectl 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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.