在整個機群中部署資源
本教學課程說明如何使用機群套件,在機群的叢集中部署 Kubernetes 資源資訊清單。使用 Config Sync 的機群套件等 GitOps 工具,有助於在大量叢集中擴充設定管理功能。
在本教學課程中,您將完成下列工作:
- 將 Git 存放區連結至 Cloud Build
- 建立叢集並註冊至機群
- 將 Config Sync 安裝為機群預設設定
- 將存放區中的資源部署至叢集機群
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
-
建立專案:如要建立專案,您需要具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用 GKE、Config Delivery (機群套件)、Cloud Build、Developer Connect API:
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable container.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com -
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
-
建立專案:如要建立專案,您需要具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用 GKE、Config Delivery (機群套件)、Cloud Build、Developer Connect API:
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable container.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - 建立或存取 GitHub 帳戶。
費用
在本文件中,您會使用下列 Google Cloud的計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
連結至 Git
Git 存放區包含要在整個機群中部署的資源。如要使用叢集套件部署這些資源,必須將 Git 存放區連結至 Cloud Build。
建立 Git 存放區
本教學課程使用 GitHub 做為 Git 供應商。如要建立新的 GitHub 存放區,請完成下列步驟:
在網路瀏覽器中開啟 GitHub。
如有需要,請登入 GitHub 帳戶。如果您有權存取 GitHub 上的其他機構或團隊,請務必使用個人帳戶建立存放區。
選取工具列中的「新增」add,然後按一下「新增存放區」。
輸入
fleet-package-tutorial做為存放區的名稱。請保持選取「公開」做為存放區顯示設定。
選取「建立存放區」。
將存放區連結至 Cloud Build
Config Sync 的機群套件服務會使用 Cloud Build,從 Git 存放區同步處理及擷取 Kubernetes 資源。
如要將 GitHub 存放區連結至 Cloud Build,請完成下列步驟:
在 Google Cloud 控制台中開啟 Cloud Build 頁面,然後選取「Repositories」(存放區)。
確認您位於第 2 代「存放區」頁面。視需要選取「查看存放區 (第 2 代)」。
按一下「建立主機連線」。
在「Region」(區域) 選單中,選取「us-central1 (Iowa)」(us-central1 (愛荷華州)) 做為區域。
在「Name」(名稱) 欄位中,輸入
fleet-package-quickstart-connection做為連線名稱。按一下「連線」。
如果是首次將 Cloud Build 連結至 GitHub 帳戶,請完成下列步驟:
- 接受 GitHub OAuth 權杖要求。權杖會儲存在 Secret Manager 中,供 Cloud Build GitHub 連線使用。按一下「繼續」。
- 在 GitHub 存放區中安裝 Cloud Build。選取「在新帳戶中安裝」。
- 在開啟的新 GitHub 視窗中,選取您先前建立 Cymbal Bank 分支的 GitHub 帳戶。在正式環境中,您可能會選取已委派存取權的其他帳戶或存放區。
- 按照驗證提示操作,在 GitHub 中確認身分。
- 在 Cloud Build 存放區存取權的 GitHub 視窗中,選擇「Only select repositories」。
- 在列出存放區的下拉式選單中,選取
fleet-package-tutorial存放區。 - 按一下 [儲存]。
在控制台的 Cloud Build 頁面中,按一下「Link repository」(連結存放區),將新的 Git 存放區連結至 Cloud Build。 Google Cloud
在「連線」選單中,選取
fleet-package-quickstart-connection。在「Repositories」(存放區) 選單中,選取存放區
fleet-package-tutorial。選取「連結」。
設定車隊
在本節中,您將建立叢集、向機群註冊叢集,並以機群套件的形式安裝 Config Sync,藉此設定機群。
建立叢集
為示範如何使用機群套件在多個叢集部署資源,本教學課程將說明如何建立兩個叢集。
如要建立這兩個叢集,並將其註冊至專案的機群,請按照下列步驟操作:
建立 GKE 叢集:
gcloud container clusters create-auto cluster1 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid更改下列內容:
PROJECT_ID為您的專案 ID。REGION改為您要在其中建立叢集的地區,例如us-central1。
建立第二個 GKE 叢集:
gcloud container clusters create-auto cluster2 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
將 Config Sync 安裝為機群預設設定
如要使用機群套件服務,必須在兩個叢集上安裝 Config Sync。如要一次在多個叢集上安裝 Config Sync,以及在日後註冊至機群的任何叢集上安裝,請完成下列步驟:
前往 Google Cloud 控制台的「Feature Manager」頁面。
在「Config Sync」窗格中,按一下「設定」。
按一下「自訂車隊設定」。在隨即顯示的對話方塊中,選取要安裝的 Config Sync 版本。
按一下 [設定]。
在「設定機群設定」確認對話方塊中,按一下「確認」。如果您先前未啟用 Config Sync,按一下「確認」也會啟用
anthosconfigmanagement.googleapis.comAPI。在「機群中的叢集」資料表中,選取指定的兩個叢集,然後按一下「與機群設定同步」。這會在兩個叢集上安裝 Config Sync,並套用您設定的設定。
叢集可能需要幾分鐘才能完成同步。Config Sync 顯示為「已安裝」時,即可繼續執行後續步驟。
設定 Cloud Build 的服務帳戶
如要建立服務帳戶並授予 Cloud Build 必要權限,請完成下列步驟:
建立服務帳戶:
gcloud iam service-accounts create "quickstart-service-account"新增 Resource Bundle Publisher 角色適用的 IAM 政策繫結,授予服務帳戶從 Git 存放區擷取資源的權限:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'如果系統出現提示,請選取「
None」做為政策條件。新增「記錄檔寫入者」角色的 IAM 政策繫結,授予服務帳戶寫入記錄的權限:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'如果系統出現提示,請選取「
None」做為政策條件。為「Artifact Registry Writer」角色新增 IAM 政策繫結:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'如果系統出現提示,請選取「
None」做為政策條件。
在整個機群中部署資源
在本教學課程中,您會在 Git 存放區中新增含有 nginx 部署作業的 Kubernetes 資訊清單、發布版本,然後建立車隊套件來部署 nginx 應用程式。
將 Kubernetes 資訊清單提交至存放區
如要將資源新增至 GitHub 並發布版本,請完成下列步驟:
在 GitHub 存放區的網路瀏覽器視窗中,依序點選「Add file」(新增檔案) 和「Create new file」(建立新檔案)。
將檔案命名為
deployment.yaml,然後將下列內容貼到檔案中:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.2 name: nginx ports: - containerPort: 80按一下「修訂版本」。
在確認對話方塊中,保持選取「直接提交至
main分支版本」,然後按一下「提交變更」。在存放區的主要頁面中,從側欄選取「Releases」。
選擇頁面頂端的「草擬新版本」。
選取「選擇代碼」選單,然後輸入
v1.0.0做為代碼。按一下「建立新代碼」。按一下「發布版本」。
使用機群套件將資源部署至叢集
如要部署新資源,請建立新的車隊套件:
這個機群套件會以機群中的所有叢集為目標,因為它未定義叢集選取器 (位於
target.fleet區段下方)。這個套件已設定為將部署變體 (衍生自deployment.yaml檔案) 部署至所有這些叢集。在 Cloud Shell 中,建立名為
fleet-package.yaml的檔案,並在當中加入下列內容:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/fleet-package-quickstart-connection/repositories/REPOSITORY_NAME tag: v1.0.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com path: # Match all files (including deployment.yaml) to generate variants variantsPattern: "*.yaml" target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1 variantSelector: # Explicitly match the variant generated from "deployment.yaml" variantNameTemplate: "deployment"請將
REPOSITORY_NAME改成 Cloud Build 的存放區名稱。這通常採用USERNAME-REPOSITORY_NAME格式。建立機群套件,開始推出作業:
gcloud container fleet packages create fp-nginx \ --source=fleet-package.yaml \ --project=PROJECT_ID確認機群套件已建立:
gcloud container fleet packages list您可以按一下提供的連結,查看 Cloud Build 工作的串流記錄。
機群套件會開始在機群中推出 Kubernetes 資源。
在 Google Cloud 控制台的 Google Kubernetes Engine 頁面中,前往「Workloads」(工作負載) 頁面,查看部署在所有 GKE 叢集上的工作負載匯總檢視畫面:
工作負載可能需要幾分鐘才會顯示。此外,Autopilot 為新部署作業調整資源要求時,您可能會發現可用性錯誤。
請注意,由於機群套件定義中的
maxConcurrent:設為1,機群套件 API 會等到nginx-deployment完全部署至一個叢集後,再開始部署至第二個叢集。如果將推出策略變更為maxConcurrent: 2以上,資源就會同時部署到兩個叢集。幾分鐘後,您會在兩個叢集上看到
nginx-deployment的兩個新工作負載。你可能需要重新整理頁面。
您可以繼續使用車隊套件,探索不同的部署策略。 舉例來說,您可以將新叢集加入機群,觀察工作負載是否會自動部署至該叢集。如要進一步瞭解部署策略和變化,請參閱「部署車隊套件」。
清除所用資源
為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
如要刪除儲存庫,請完成下列步驟:
在 GitHub 存放區的網路瀏覽器視窗中,按一下存放區名稱下方的「Settings」。
在「一般設定」頁面 (預設選取),前往「Danger Zone」部分,然後按一下「Delete this repository」(刪除這個存放區)。
按一下「我要刪除這個存放區」。
閱讀警告訊息,然後按一下「我已詳閱並瞭解這些影響」。
如要確認刪除的存放區是否正確,請在文字欄位中輸入存放區名稱。
按一下「Delete this repository」(刪除這個存放區)。
後續步驟
- 進一步瞭解車隊套裝方案。
- 瞭解如何部署機群套件。
- 請試試可擴充應用程式教學課程,這個系列教學課程會教您如何在 GKE 部署、執行及管理現代化應用程式環境。其中包含「集中管理變更」教學課程,探討如何使用 fleet 套件擴大設定變更。