本文件說明如何將應用程式部署至 Google Kubernetes Engine 叢集。
您可以使用 Cloud Deploy 將以容器為基礎的工作負載部署至任何 Google Kubernetes Engine 叢集。在部署至 GKE 目標時,您可以使用所有 Cloud Deploy 功能。
事前準備
擁有一或多個要部署的 GKE 叢集。
如果您沒有要部署的 GKE 叢集,可以建立。
在這個 skaffold.yaml
檔案中,deploy
節包含 kubectl
,表示 Skaffold 會為 Kubernetes (GKE) 轉譯並部署至該服務。您為此應用程式使用的資訊清單會列於下方。
建立目標設定
您可以在推送管道 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 叢集時使用。
以下是範例 skaffold.yaml
檔案,可部署至 GKE 叢集:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: gke-application
manifests:
rawYaml:
- deployment.yaml
deploy:
kubectl: {}
搭配使用 Skaffold 和 Cloud Deploy 一文會更詳細說明如何搭配使用 Skaffold 和提交管道。
準備 Kubernetes 資訊清單
如要將應用程式部署至 GKE,您必須向 Cloud Deploy 提供一或多個 Kubernetes 資訊清單,這些資訊清單會轉譯,然後套用至目標叢集或多個叢集,以便部署應用程式。
如果您沒有這些資訊清單,請先建立這些資訊清單,再嘗試使用 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
。 在 Cloud Build 中建立私人工作站集區,以便將應用程式部署至這個私人叢集。
-
您必須使用這個集區來執行
RENDER
。您也可以將其用於DEPLOY
和VERIFY
。以下是使用RENDER
和DEPLOY
的範例:executionConfigs: - usages: - RENDER - DEPLOY workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
詳情請參閱「使用 GKE 身分識別服務,從 Cloud Build 私人集區存取私人 GKE 叢集」和「使用 Cloud Build 私人集區存取私人 GKE 叢集」。
專案和權限注意事項
您可以設定目標,使用可部署至私人叢集的私人工作站集區。不過,如果資源位於不同專案中,則需要注意一些事項。
- Cloud Deploy 和工作站集區位於不同專案時
如要與具有虛擬私有雲存取權,且位於目標專案以外的私人集區進行通訊,Cloud Deploy 服務代理需要具備足夠的權限,才能與該專案通訊。
執行服務帳戶也需要 Cloud Storage 值區的存取權。
- 工作站集區和叢集位於不同專案時
如果私人 GKE 叢集位於私人工作站集區所在的專案之外,執行服務帳戶就必須具備足夠的權限,才能與叢集所在的專案通訊。
使用 GKE Enterprise 目標和連線閘道
您可以使用 Anthos 目標和連線閘道,將目標設定為部署至私人 GKE 叢集。
您不必使用虛擬私有雲或虛擬私人網路連線,即可採用這種方法。
後續步驟
叫用推送管道來建立版本
進一步瞭解如何設定 Cloud Deploy 目標
進一步瞭解如何搭配使用 Skaffold 與 Cloud Deploy
瞭解 Cloud Deploy 執行環境。
進一步瞭解 GKE