為簡化建構和部署工作流程,我們預先為部分 Google Cloud 服務帳戶和執行階段環境設定權限,讓這些帳戶和環境可以存取儲存在同一個專案中的容器。
本頁面會概述常見的 Google Cloud 產品整合作業,以及存取容器的相關規定。
一般存取權要求
根據預設,某些常見整合作業的服務帳戶會設定 Cloud Storage 權限,以便存取同一個專案中的 Container Registry。
對於 Compute Engine VM 使用的服務帳戶 (包括 Google Kubernetes Engine 叢集中的 VM),存取權取決於 IAM 權限和儲存空間存取範圍。
如要設定或修改權限,請務必符合下列條件:
- 您使用某個專案中的服務帳戶存取其他專案中的 Container Registry
- 您使用的是具有儲存空間唯讀存取權的預設服務帳戶,但您想同時提取及推送映像檔
- 您使用自訂服務帳戶與 Container Registry 互動
如需更多資訊,請參閱產品專屬章節。
Cloud Build
根據預設,當 Container Registry 位於同一專案時,Cloud Build 服務帳戶就會擁有推送及提取映像檔的權限。
在下列情況下,您必須自行設定適當的權限:
- Cloud Build 位於不同專案中,而您希望建構作業存取的存放區位於其他專案中。
- 您的建構作業使用的是預設 Cloud Build 服務帳戶以外的服務帳戶。在這種情況下,您必須授予服務帳戶存取 Container Registry 的權限。
Compute Engine
您可以使用儲存在 Container Registry 中的映像檔建立 VM 執行個體。
所需權限
如果 VM 執行個體和 Container Registry 位於同一個 Google Cloud專案中,Compute Engine 預設服務帳戶就會設定提取映像檔的權限。
如果 VM 執行個體隸屬於另一項專案,或是 VM 執行個體使用的是其他服務帳戶,則您必須授予服務帳戶適當的權限,才能存取 Container Registry 使用的儲存空間值區。
根據預設,Compute Engine VM 設有儲存空間值區的 read-only
存取權限。如要推送私人 Docker 映像檔,VM 執行個體必須具備 read-write
儲存空間存取權範圍。
如要進一步瞭解權限和存取範圍,請參閱「與 Google Cloud 服務整合」。
部署映像檔
建立 VM 時,您可以將映像檔部署至該 VM。如需進一步瞭解,請參閱 Compute Engine 說明文件,瞭解如何部署容器和建立 VM 執行個體範本。
容器最佳化的 Compute Engine 執行個體
如要瞭解如何使用註冊資料庫中的映像檔啟動容器最佳化的 Compute Engine 執行個體,請參閱透過 cloud-config 啟動 Docker 容器。
如需其他資訊,請參閱建立並設定執行個體。
Google Kubernetes Engine
推送及提取映像檔時,Google Kubernetes Engine 會使用在叢集節點 VM 執行個體中設定的服務帳戶。
所需權限
如果 Google Kubernetes Engine 叢集與 Container Registry 儲存空間值區隸屬於同一項 Google Cloud 專案,系統就會為 Compute Engine 的預設服務帳戶設定合適的映像檔推送或提取權限。
如果叢集隸屬於另一項專案,或是叢集中 VM 使用的是其他服務帳戶,則您必須授予服務帳戶適當的權限,以便存取 Container Registry 使用的儲存空間值區。
根據預設,Compute Engine VM 設有儲存空間值區的 read-only
存取權限。如要推送私人 Docker 映像檔,VM 執行個體必須具備 read-write
儲存空間存取權範圍。
如要進一步瞭解權限和存取範圍,請參閱「與 Google Cloud 服務整合」。
執行映像檔
您可以使用下列指令,在 Google Kubernetes Engine 叢集中執行 Container Registry 映像檔:
kubectl run [NAME] --image=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
其中:
[NAME]
是資源名稱[HOSTNAME]
列在控制台的Location
下,為以下四個選項的其中之一:gcr.io
、us.gcr.io
、eu.gcr.io
或asia.gcr.io
。[PROJECT-ID]
是您的 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:
),請參閱網域範圍專案。[IMAGE]
是 Container Registry 中的映像檔名稱。[TAG]
是識別 Container Registry 映像檔版本的標記。如果您未指定標記,Container Registry 會搜尋預設標記latest
。
如要進一步瞭解 Kubernetes 指令,請參閱 kubectl 總覽。
Cloud Run
您可以將儲存在 Container Registry 中的映像檔部署至 Cloud Run。
所需權限
如要部署至 Cloud Run,您必須具備「擁有者」或「編輯者」角色,或是同時具備「Cloud Run 管理員」和「服務帳戶使用者」角色,或是具備包含此特定權限清單的任何自訂角色。
部署映像檔
如要瞭解如何將映像檔部署至 Cloud Run,請參閱 Cloud Run 說明文件。
App Engine 彈性環境
您可以使用 App Engine 彈性環境來自訂現有的執行階段 (例如 Java 8),或是提供自訂的 Docker 映像檔或 Dockerfile 以建立您專用的執行階段。
您可以使用 Cloud Build 自動建構容器、將容器推送至 Container Registry,然後部署至 App Engine。
所需權限
根據預設,App Engine 預設服務帳戶具備從同一個專案中的存放區提取及推送的權限。
如果 App Engine 位於其他專案中,您必須為 App Engine 服務帳戶授予權限,才能存取 Container Registry 存放區。
部署至 App Engine
您可以使用 Google Cloud CLI,將託管於 Container Registry 的映像檔部署至 App Engine。
- 為應用程式建立 App Engine 設定檔。
- 建構 Docker 映像檔,並推送至存放區。您可以使用 Cloud Build 建構並推送容器至存放區。
執行下列指令,將映像檔部署至 App Engine:
gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
其中:
[HOSTNAME]
列在控制台的Location
下,為以下四個選項的其中之一:gcr.io
、us.gcr.io
、eu.gcr.io
或asia.gcr.io
。[PROJECT-ID]
是您的 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:
),請參閱網域範圍專案。[IMAGE]
是 Container Registry 中的映像檔名稱。[TAG]
是識別 Container Registry 映像檔版本的標記。如果您未指定標記,Container Registry 會搜尋預設標記latest
。