本頁說明如何使用 Cloud Build 將應用程式部署至 Kubernetes。
Cloud Build 提供 gke-deploy 建構工具,可讓您將容器化應用程式部署至 GKE 叢集。
gke-deploy 是 Kubernetes 指令列介面 kubectl 的包裝函式。這項服務會套用 Google 建議的 Kubernetes 應用程式部署做法,包括:
更新應用程式的 Kubernetes 資源檔,改用容器映像檔摘要,而非標記。
在 Kubernetes 資源檔案中加入建議標籤。
擷取要部署映像檔的 GKE 叢集憑證。
等待提交的 Kubernetes 資源檔案準備就緒。
如果您想直接使用 kubectl 部署應用程式,且不需要其他功能,Cloud Build 也提供 kubectl 建構工具,可用於將應用程式部署至 GKE 叢集。
事前準備
如果還沒有 GKE 叢集,請先建立一個。
以原始碼和
Dockerfile形式提供容器化應用程式。原始碼必須儲存在存放區中,例如 Cloud Source Repositories、GitHub 或 Bitbucket。您至少需要一個 Kubernetes 資源檔案,說明用於執行應用程式的 Kubernetes 資源。如果沒有 Kubernetes 資源檔案,請按照下列步驟為應用程式產生檔案:
必要 IAM 權限
將 Google Kubernetes Engine 開發人員角色新增至帳戶:
-
前往 Google Cloud 控制台的「Cloud Build 權限」settings頁面:
將 Kubernetes Engine 開發人員角色的狀態設為「Enabled」(已啟用)。
部署預先建構的容器映像檔
如要使用 gke-deploy 部署特定版本的應用程式,請執行下列操作:
請確認 Kubernetes 資源檔案參照的容器映像檔標記或摘要正確無誤。
在建構設定檔中新增
gke-deploy步驟:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=KUBERNETES_RESOURCE_FILE - --location=CLUSTER_LOCATION - --cluster=CLUSTERJSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=KUBERNETES_RESOURCE_FILE", "--location=CLUSTER_LOCATION", "--cluster=CLUSTER" ] } ] }其中:
- KUBERNETES_RESOURCE_FILE 是 Kubernetes 資源檔案的路徑,或是包含 Kubernetes 資源檔案的目錄路徑。
- CLUSTER_LOCATION 是叢集的所在區域。
- CLUSTER 是要部署應用程式的 GKE 叢集名稱。
如要進一步瞭解可用的標記,請參閱
gke-deploy run標記。開始建構:
gcloud builds submit --region=LOCATION --project=PROJECT --config BUILD_CONFIG其中:
- LOCATION 是支援的建構位置之一。
- PROJECT 是專案 ID。
- BUILD_CONFIG 是建構設定檔的名稱。
建構及部署新的容器映像檔
如要建構新的容器映像檔並部署,請按照下列步驟操作:
使用
--image屬性,以新的容器映像檔更新 Kubernetes 資源檔案:YAML
steps: # build the container image - name: "gcr.io/cloud-builders/docker" args: ["build", "-t", "LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE_NAME:TAG", "."] # push container image - name: "gcr.io/cloud-builders/docker" args: ["push", "LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE_NAME:TAG"] # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=KUBERNETES_RESOURCE_FILE - --image=LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE_NAME:TAG - --location=CLUSTER_LOCATION - --cluster=CLUSTERJSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE_NAME:TAG", "." ] }, { "name": "gcr.io/cloud-builders/docker", "args": [ "push", "LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE_NAME:TAG" ] }, { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=KUBERNETES_RESOURCE_FILE", "--image=LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE_NAME:TAG", "--location=CLUSTER_LOCATION", "--cluster=CLUSTER" ] } ] }其中:
開始建構:
gcloud builds submit --region=LOCATION --project=PROJECT --config BUILD_CONFIG其中:
- LOCATION 是支援的建構區域之一。
- PROJECT 是專案 ID。
- BUILD_CONFIG 是建構設定檔的名稱。
自動化部署作業
您可以在 Cloud Build 中建立觸發條件,自動將應用程式部署至 GKE。您可以設定觸發條件,在將變更推送至程式碼時,建構及部署映像檔。
如要建立自動建構觸發條件,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Triggers」(觸發條件) 頁面:
在頁面頂端的專案選取器下拉式選單中,選取您的專案。
按一下「開啟」。
按一下「建立觸發條件」。
在「Create trigger」(建立觸發條件) 頁面中輸入下列設定:
輸入觸發條件的名稱。
選取要觸發的存放區事件。
選取含有原始碼和建構設定檔的存放區。
指定分支版本或標記名稱的規則運算式,做為觸發條件。
為觸發條件選擇「設定」。
如果您選擇 Cloud Build 建構設定檔,可以提供變數名稱和要與該變數建立關聯的值,指定替代變數。在下列範例中,使用者定義的替代變數
_CLOUDSDK_CONTAINER_CLUSTER會指定要部署的叢集,而使用者定義的替代變數_CLOUDSDK_COMPUTE_ZONE則會指定叢集位置。如要部署至其他叢集,可以使用相同的建構設定,只需要變更替代變數的值:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=KUBERNETES_RESOURCE_FILE - --image=LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE_NAME:TAG - --location=${_CLOUDSDK_COMPUTE_ZONE} - --cluster=${_CLOUDSDK_CONTAINER_CLUSTER}JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=KUBERNETES_RESOURCE_FILE", "--image=LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE_NAME:TAG", "--location=${_CLOUDSDK_COMPUTE_ZONE}", "--cluster=${_CLOUDSDK_CONTAINER_CLUSTER}" ] } ] }其中:
- KUBERNETES_RESOURCE_FILE 是 Kubernetes 設定檔的路徑,或是包含 Kubernetes 資源檔案的目錄路徑。
- PROJECT 是專案 ID。
- IMAGE_NAME 是您要為容器映像檔指定的名稱,通常是應用程式名稱。
- TAG 是容器映像檔的標記。
如要進一步瞭解如何為建構設定檔定義替代字元,請參閱「使用使用者定義的替代字元」。
按一下「建立」即可儲存自動建構觸發條件。
將程式碼推送至存放區時,Cloud Build 會自動觸發建構作業。如要進一步瞭解自動建構觸發條件,請參閱建立及管理自動建構觸發條件。
後續步驟
- 瞭解如何為 GKE 上的工作負載設定自動部署作業。
- 瞭解如何建立以 Git 運作方式的 CI/CD 管道,並使用 Cloud Build 部署至 GKE。
- 瞭解其他
gke-deploy選項。 - 瞭解如何在 Compute Engine 上執行藍綠部署。
- 瞭解其他 Cloud Builder。
- 瞭解如何排解建構錯誤。