本頁面說明如何使用 Cloud Build 將應用程式部署至 Kubernetes。
Cloud Build 提供 gke-deploy
建構工具,可讓您將容器化應用程式部署至 GKE 叢集。
gke-deploy
是 kubectl
的包裝函式,kubectl
是 Kubernetes 的指令列介面。這項工具會套用 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 開發人員角色新增至帳戶:
開啟 Cloud Build 設定頁面:
開啟 Cloud Build 「Settings」(設定) 頁面
畫面上會顯示「Service account permissions」(服務帳戶權限) 頁面:
將 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 上的各項工作負載設定自動部署作業。
- 瞭解如何使用 Cloud Build 建立以 Git 運作方式的 CI/CD 管道,並部署至 GKE。
- 瞭解其他
gke-deploy
選項。 - 瞭解如何在 Compute Engine 上執行藍綠部署作業。
- 瞭解其他雲端建構工具。
- 瞭解如何排解建構錯誤。