本文說明如何將應用程式部署至 Google Kubernetes Engine 叢集。
Cloud Deploy 可讓您將以容器為基礎的工作負載部署至任何 Google Kubernetes Engine 叢集。部署至 GKE 目標時,系統支援所有 Cloud Deploy 功能。
事前準備
擁有要部署的一或多個 GKE 叢集。
如果沒有可供部署的 GKE 叢集,可以建立叢集。
在這個 skaffold.yaml 檔案中,deploy 節包含 kubectl,表示 Skaffold 會為 Kubernetes (GKE) 算繪及部署。您用於此應用程式的資訊清單會列在下方。
建立目標設定
您可以在推送 pipeline YAML 中設定每個目標,也可以將目標放在個別檔案中。此外,您可以在同一個檔案中設定多個目標,但必須位於不同的 kind: Target 節中。
目標必須與推送管道位於相同專案和區域。不過,只要服務帳戶有權存取這些專案,目標部署的叢集就能位於不同專案和區域。
在目標定義中,建立 gke 節,指向 GKE 叢集:
gke:
cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
這個 GKE 資源 ID 使用下列元素:
[
project_name] 是您執行這個叢集的專案名稱。 Google Cloud您要部署的叢集不必與推送管道位於同一專案。
[
location] 是建立叢集的地區。[
cluster_name] 是叢集建立時的名稱。您可以在Google Cloud 控制台的專案叢集清單中找到這個名稱。

以下是目標設定範例,指向 GKE 叢集:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development cluster
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
建立 Skaffold 設定
本節提供並說明簡單的 Skaffold 設定範例,供您部署至 GKE 叢集時使用。
以下是部署至 GKE 叢集的範例 skaffold.yaml 檔案:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: gke-application
manifests:
rawYaml:
- deployment.yaml
deploy:
kubectl: {}
搭配使用 Skaffold 與 Cloud Deploy一文更詳細地說明如何搭配使用 Skaffold 與發布管道。
準備 Kubernetes 資訊清單
如要將應用程式部署至 GKE,請提供一或多個 Kubernetes 資訊清單給 Cloud Deploy,這些資訊清單會經過算繪,然後套用至目標叢集,以部署應用程式。
如果沒有這些資訊清單,請先建立,再嘗試使用 Cloud Deploy 推送管道部署。
您可以使用 Kustomize 或 Helm 建立資訊清單。如果資訊清單已套用範本,且需要算繪,您也可以使用 Kustomize 或 Helm。
全面整合使用
您已備妥 Kubernetes 資訊清單、skaffold.yaml 設定和 Cloud Deploy 目標定義,並將目標註冊為 Cloud Deploy 資源,現在可以叫用推送管道,建立發布版本,並透過管道中定義的目標進度逐步進行。
使用 Proxy 部署
您可以為目標 GKE 叢集指定 Proxy。這適用於設定為僅透過 HTTP Proxy 存取叢集的機構。
如要這麼做,請在目標設定的 gke 節中新增 proxyUrl 屬性:
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
proxyUrl: [URL]
其中 URL 是 Proxy 的網址。
部署至私人叢集
您可以透過下列三種方式之一,將應用程式部署至私人 GKE 叢集:
使用 DNS 端點
這是連線至私人叢集最簡單的方式。
在目標設定中,將
gke下的dnsEndpoint設為true。如果叢集未設定以 IP 為基礎的端點,可以略過這個步驟;Cloud Deploy 會預設連線至 DNS 端點,因為這是控制平面的唯一端點。
使用虛擬私有雲網路
您可以設定目標,將應用程式部署至連線至虛擬私有雲網路的私人 GKE 叢集:
-
私人叢集是虛擬私有雲原生叢集,根據預設,節點和 Pod 會與公開網際網路隔離。
如果您打算使用私有叢集目標的內部 IP 位址,請在目標設定中,將
gke下的internalIp設為true。internalIp 在 Cloud Build 中,建立私人工作站集區,用於部署至這個私人叢集。
-
您必須使用這個集區進行
RENDER。您也可以使用這項功能來DEPLOY和VERIFY。以下是使用RENDER和DEPLOY的範例:executionConfigs: - usages: - RENDER - DEPLOY workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
詳情請參閱「使用 GKE 專用 Identity Service,透過 Cloud Build 私人集區存取私人 GKE 叢集」和「使用 Cloud Build 私人集區存取私人 GKE 叢集」。
專案和權限注意事項
您可以設定目標,使用可部署至私有叢集的私有工作站集區。但如果資源位於不同專案中,請注意以下事項。
- Cloud Deploy 和工作站集區位於不同專案時
如要與可存取虛擬私有雲的私人集區通訊,且該集區與目標位於不同專案,Cloud Deploy 服務代理程式必須具備足夠的權限,才能與該專案通訊。
執行服務帳戶也需要 Cloud Storage bucket 的存取權限。
- 工作人員集區和叢集位於不同專案中
如果私人 GKE 叢集與私人 worker 集區位於不同專案,執行服務帳戶必須具備足夠的權限,才能與叢集所在的專案通訊。
使用 GKE 附加叢集目標和連線閘道
您可以設定目標,使用 GKE 連結叢集和 Connect 閘道,將應用程式部署至私人 GKE 叢集。
這種做法不需要使用虛擬私有雲或虛擬私有網路連線。
後續步驟
叫用推送管道來建立版本
進一步瞭解如何設定 Cloud Deploy 目標
瞭解 Cloud Deploy 執行環境。
進一步瞭解 GKE