當 Container Registry 存放區發生推送、標記或刪除映像檔等變更時,您可以使用 Pub/Sub 接收通知。
Pub/Sub 會將存放區的相關訊息發布到稱為「主題」的具名資源。這些訊息會由「訂閱」Pub/Sub 主題的應用程式接收。當存放區的狀態發生變更時,訂閱者應用程式就會傳送通知。
此外,您也可以設定 Pub/Sub 主題的角色和權限,以控管使用者與存放區的互動方式。
為了支援從 Artifact Registry 轉移至 Container Registry,Artifact Registry 會將訊息發布至與 Container Registry 相同的主題。
如要瞭解如何針對新安全漏洞掃描結果等活動設定 Artifact Analysis 通知,請參閱 Artifact Analysis 說明文件。
建立 Pub/Sub 主題
在 Google Cloud 專案中啟用 Container Registry API 時,Container Registry 會自動建立主題 ID 為 gcr
的 Pub/Sub 主題。
如果不慎刪除或遺失 gcr
主題,您可以自行加入。舉例來說,如果 Google Cloud貴機構有機構政策限制,要求使用客戶自行管理的加密金鑰 (CMEK) 進行加密,就可能會缺少主題。如果 Pub/Sub API 在這個限制的拒絕清單中,服務就無法使用 Google-owned and Google-managed encryption keys自動建立主題。
如何使用 Google-owned and Google-managed encryption keys建立 gcr
主題:
控制台
前往 Google Cloud 控制台的 Pub/Sub 主題頁面。
按一下 [Create Topic] (建立主題)。
輸入主題 ID
gcr
。按一下 [Create Topic] (建立主題)。
gcloud
執行下列指令:
gcloud pubsub topics create gcr --project=PROJECT-ID
將 PROJECT-ID 替換為您的 Google Cloud
專案 ID。如果省略 --project
旗標,指令會使用目前的專案。
如要進一步瞭解 gcloud pubsub topics
指令,請參閱 topics
說明文件。
如要使用 CMEK 加密功能建立 gcr
主題,請參閱 Pub/Sub 加密主題的操作說明。
建立 gcr
主題或確認主題存在後,您就可以建立主題訂閱項目。
建立 Pub/Sub 訂閱項目
每個 Pub/Sub 主題都應有訂閱項目。
訂閱者應用程式會接收來自存放區主題的訊息。訂閱者完成的工作包含事件通知、系統記錄和應用程式間的通訊等。
如要建立訂閱:
控制台
前往 Google Cloud 控制台的 Pub/Sub 主題頁面。
按一下專案的主題。
按一下 [Create Subscription] (建立訂閱)。
輸入訂閱名稱:
projects/[PROJECT-ID]/subscriptions/[SUBSCRIPTION-NAME]
將「傳送類型」的設定保留為「提取」。
按一下 [Create] (建立)。
gcloud
在推送或標記 Docker 映像檔的系統中,執行下列指令:
gcloud pubsub subscriptions create [SUBSCRIPTION-NAME] --topic=gcr
如要進一步瞭解 gcloud pubsub subscriptions
指令,請參閱 subscriptions
說明文件。
設定 Pub/Sub 權限
使用 Pub/Sub 存取權控管設定專案與資源的權限。存取權控管可維護存放區的安全,並讓您透過以角色為基礎的存取權來管理使用者權限。
您可以在 Google Cloud 主控台的 IAM 頁面中,或透過 IAM API 設定 Pub/Sub 存取權控管角色。
如要設定發布權限,請使用下列任何角色:擁有者、編輯者、pubsub.admin、pubsub.editor、pubsub.publisher。從登錄檔推送或刪除圖片的主體,必須具備
pubsub.topics.publish
權限,才能將訊息發布至 Pub/Sub。如要設定訂閱權限,請使用下列任何角色:擁有者、編輯者、pubsub.admin、pubsub.editor、pubsub.subscriber。
通知範例
通知會以 JSON 格式的字串傳送。以下是 Pub/Sub 傳送 Container Registry 通知時可預期收到的內容範例。
將映像檔推送至 Container Registry 時,通知酬載看起來會如下所示:
{
"action":"INSERT",
"digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5..."
}
將新標記推送至 Container Registry 時,通知酬載看起來會如下所示:
{
"action":"INSERT",
"digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5...",
"tag":"gcr.io/my-project/hello-world:1.1"
}
訊息可使用 digest
或 tag
鍵來識別相關的圖片。
從 Container Registry 刪除標記時,通知酬載看起來會如下所示:
{
"action":"DELETE",
"tag":"gcr.io/my-project/hello-world:1.1"
}
訊息可能包含 DELETE
或 INSERT
以做為 action
鍵的值。
後續步驟
- 參閱 Pub/Sub 說明文件。
- 如要深入瞭解 Pub/Sub,請參閱「什麼是 Pub/Sub?」一文。
- 進一步瞭解 Pub/Sub 存取權控管角色。