部署容器 (GKE、Distributed Cloud)

本頁面說明如何將容器映像檔部署至已啟用二進位授權的 GKE 叢集 (Google Cloud 或 Google Distributed Cloud)。您用來部署映像檔的 kubectl 指令,與將映像檔部署至未使用二進位授權的叢集時所用的指令相同。

事前準備

請確認專案已啟用 Binary Authorization API,且 GKE 叢集已啟用二進位授權。請參閱「在 Google Kubernetes Engine 上設定」或「在 Distributed Cloud 上設定」。

安裝 kubectl,以便與 GKE 互動。

設定「kubectl」

您必須更新 kubectl 安裝作業的本機 kubeconfig 檔案。這會提供存取 GKE 或 Distributed Cloud 叢集所需的憑證和端點資訊。

如要設定 kubectl,請執行下列 gcloud 指令:

GKE

gcloud container clusters get-credentials \
    --zone ZONE \
    CLUSTER_NAME

更改下列內容:

  • ZONE:叢集執行所在的 GKE 區域名稱,例如 us-central1-a
  • CLUSTER_NAME:叢集名稱

Distributed Cloud

gcloud container fleet memberships get-credentials \
    --location LOCATION \
    MEMBERSHIP_NAME

更改下列內容:

  • LOCATION:GKE 叢集機群成員資格的位置,例如 global
  • MEMBERSHIP_NAME:GKE 叢集的機群成員資格名稱

部署容器映像檔

按照下列步驟部署容器映像檔:

  1. 設定環境變數:

    POD_NAME=POD_NAME
    IMAGE_PATH=IMAGE_PATH
    IMAGE_DIGEST=IMAGE_DIGEST
    

    更改下列內容:

    • POD_NAME:您要用於 GKE 工作負載的名稱
    • IMAGE_PATH:Artifact Registry 或其他 Registry 中的映像檔路徑。
    • IMAGE_DIGEST:映文件資訊清單的摘要。示例如下:

      • Artifact Registry:
        • 路徑:us-docker.pkg.dev/google-samples/containers/gke/hello-app
        • 摘要:sha256:37e5287945774f27b418ce567cd77f4bbc9ef44a1bcd1a2312369f31f9cce567

      如要瞭解如何取得 Artifact Registry 中映像檔的摘要,請參閱「管理映像檔」。

  2. 使用 kubectl run 指令部署映像檔。

    您必須使用摘要部署映像檔,而非 1.0 或 latest 等標記,因為二進位授權會使用摘要查詢認證。

    如要部署映像檔,請執行下列 kubectl 指令:

    kubectl run ${POD_NAME} \
        --image ${IMAGE_PATH}@${IMAGE_DIGEST}
    

    現在,請確認二進位授權是否封鎖部署作業:

    kubectl get pods
    

    您會看到列出的 Pod。

限制

部署時,二進位授權只會掃描 PodSpec 的 containers 和 ephemeralContainers 欄位中的映像檔。系統不會掃描其他欄位。部署時不會掃描初始化容器和映像檔磁碟區。

失敗時維持開放狀態

如果 GKE 因任何原因無法連上二進位授權伺服器,或伺服器傳回錯誤,GKE 就無法判斷二進位授權是否會允許或拒絕映像檔。在這種情況下,GKE 會失敗時仍開放:預設允許部署映像檔,但在 Cloud 稽核記錄中建立記錄項目,記錄允許映像檔的原因。

GKE 違規處置失敗時仍開放,是因為要在可靠性和安全性之間取得平衡。每當建立或更新 Pod 時,GKE 都會向二進位授權傳送要求。這包括由較高層級的 Kubernetes 工作負載控制器 (例如 ReplicaSet 和 StatefulSet) 自動建立或更新 Pod 的情況。如果 GKE 失敗時關閉而非開啟,則任何二進位授權中斷都會導致這些 Pod 停止運作。此外,如果 Pod 遭到拒絕,容錯移轉可能會導致連鎖性故障,因為重新導向的流量會使仍在執行的 Pod 超載。任何二進位授權服務中斷,都可能導致叢集完全中斷,即使未部署任何新映像檔也一樣。

部署違反政策的映像檔

二進位授權支援稱為「急用權限」breakglass的功能,即使映像檔違反政策,也能部署。

詳情請參閱「使用急用權限」

清除所用資源

如要清除,請執行下列指令刪除 Pod:

  kubectl delete pod ${POD_NAME}
  

後續步驟