本頁說明如何使用 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=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--location=location", "--cluster=cluster" ] } ] }
其中:
- kubernetes-resource-file 是 Kubernetes 資源檔案的路徑,或是包含 Kubernetes 資源檔案的目錄路徑。
- cluster 是要部署應用程式的 GKE 叢集名稱。
- location 是叢集的區域/地區。
如要進一步瞭解可用的旗標,請參閱
gke-deploy run
旗標。開始建構:
gcloud builds submit --region=REGION --project=project-id --config build-config
其中:
- project-id 是專案 ID。
- build-config 是建構設定檔的名稱。
REGION
是支援的建構區域之一。
建構及部署新的容器映像檔
如要建構新的容器映像檔並部署,請按照下列步驟操作:
使用
--image
屬性,以新的容器映像檔更新 Kubernetes 資源檔案:YAML
steps: # build the container image - name: "gcr.io/cloud-builders/docker" args: ["build", "-t", "gcr.io/project-id/image:tag", "."] # push container image - name: "gcr.io/cloud-builders/docker" args: ["push", "gcr.io/project-id/image:tag"] # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/project-id/image:tag", "." ] }, { "name": "gcr.io/cloud-builders/docker", "args": [ "push", "gcr.io/project-id/image:tag" ] }, { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=location", "--cluster=cluster" ] } ] }
其中:
- project-id 是專案 ID。
- image 是容器映像檔的所需名稱,通常是應用程式名稱。
- tag 是容器映像檔的標記。
- 如果您在每次提交時都建立新的容器映像檔,建議使用提交的簡短 SHA 做為標記。Cloud Build 會將此值做為預設替代值
$SHORT_SHA
。
- 如果您在每次提交時都建立新的容器映像檔,建議使用提交的簡短 SHA 做為標記。Cloud Build 會將此值做為預設替代值
- kubernetes-resource-file 是 Kubernetes 資源檔案的路徑,或是包含 Kubernetes 資源檔案的目錄路徑。
- cluster 是要部署應用程式的 GKE 叢集名稱。
- location 是叢集部署的區域/可用區。
開始建構:
gcloud builds submit --region=REGION --project=project-id --config build-config
其中:
- project-id 是專案 ID。
- build-config 是建構設定檔的名稱。
REGION
是支援的建構區域之一。
自動化部署作業
您可以在 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=gcr.io/project-id/image: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=gcr.io/project-id/image:tag", "--location=${_CLOUDSDK_COMPUTE_ZONE}", "--cluster=${_CLOUDSDK_CONTAINER_CLUSTER}" ] } ] }
其中:
- kubernetes-resource-file 是 Kubernetes 設定檔的檔案路徑,或是包含 Kubernetes 資源檔案的目錄路徑。
- project-id 是專案 ID。
- image 是容器映像檔的所需名稱,通常是應用程式名稱。
- tag 是容器映像檔的標記。
如要進一步瞭解如何為建構設定檔定義替代字元,請參閱「使用使用者定義的替代字元」。
按一下「建立」即可儲存建構觸發條件。
將程式碼推送至存放區時,Cloud Build 會自動觸發建構作業。如要進一步瞭解自動建構觸發條件,請參閱建立及管理自動建構觸發條件。
後續步驟
- 瞭解如何為 GKE 上的工作負載設定自動部署作業。
- 瞭解如何建立以 Git 運作方式持續整合/持續推送軟體更新管道,並使用 Cloud Build 部署至 GKE。
- 瞭解其他
gke-deploy
選項。 - 瞭解如何在 Compute Engine 上執行藍綠部署。
- 瞭解其他 Cloud Builder。
- 瞭解如何排解建構錯誤。