在整個機群中部署資源
本教學課程說明如何使用機群套件,在機群的叢集中部署 Kubernetes 資源資訊清單。使用 Config Sync 機群套件等 GitOps 工具,有助於大規模管理大量叢集的設定。
在本教學課程中,您將完成下列工作:
- 將 Git 存放區連結至 Cloud Build
- 建立叢集並註冊至機群
- 將 Config Sync 安裝為機群預設設定
- 將存放區中的資源部署至叢集機群
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
gcloud services enable anthos.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com -
Install the Google Cloud CLI.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
gcloud services enable anthos.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - 建立或存取 GitHub 帳戶。
在網路瀏覽器中開啟 GitHub。
如有需要,請登入 GitHub 帳戶。如果您有權存取 GitHub 上的其他機構或團隊,請務必使用個人帳戶建立存放區。
選取工具列中的「新增」add,然後按一下「新增存放區」。
輸入
fleet-package-tutorial
做為存放區名稱。請保持選取「Public」做為存放區瀏覽權限。
選取「建立存放區」。
在 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
選取「連結」。
建立 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
前往 Google Cloud 控制台的「Feature Manager」頁面。
在「Config Sync」窗格中,按一下「Configure」。
按一下「自訂車隊設定」。在隨即顯示的對話方塊中,選取要安裝的 Config Sync 版本。
按一下 [設定]。
在「Configuring fleet settings」(設定車隊設定) 確認對話方塊中,按一下「Confirm」(確認)。如果您先前未啟用 Config Sync,按一下「確認」也會啟用
anthosconfigmanagement.googleapis.com
API。在「機群中的叢集」表格中,選取兩個叢集,然後按一下「與機群設定同步」。這會在兩個叢集上安裝 Config Sync,並套用您設定的設定。
叢集可能需要幾分鐘才能完成同步。Config Sync 顯示為「已安裝」時,即可繼續執行後續步驟。
建立服務帳戶:
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
」做為政策條件。在 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
按一下「Commit changes...」(提交變更...)。
在確認對話方塊中,保持選取「直接提交至
main
分支」,然後按一下「提交變更」。在存放區的主要頁面中,從側欄選取「Releases」。
選擇頁面頂端的「草擬新版本」。
選取「選擇代碼」選單,然後輸入
v1.0.0
做為代碼。按一下「建立新代碼」。按一下「發布版本」。
由於這個機群套件不含選取器欄位,因此會以機群中的所有叢集為目標。這也表示日後新增至機群的任何叢集,都會自動新增 nginx 部署作業。
在 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: target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1
請將
REPOSITORY_NAME
改成 Cloud Build 的存放區名稱。這通常採用USERNAME-REPOSITORY_NAME
格式。建立機群套件,開始推出作業:
gcloud alpha container fleet packages create fp-nginx \ --source=fleet-package.yaml \ --project=PROJECT_ID
確認機群套件是否已建立:
gcloud alpha container fleet packages list
您可以按一下提供的連結,查看 Cloud Build 工作的串流記錄。
機群套件會開始在機群中推出 Kubernetes 資源。
在 Google Cloud 控制台的 Google Kubernetes Engine 頁面中,前往「Workloads」(工作負載) 頁面,查看部署在所有 GKE 叢集上的工作負載匯總檢視畫面:
工作負載可能需要幾分鐘才會顯示。此外,在 Autopilot 為新部署作業調整資源要求時,您可能會發現可用性錯誤。
請注意,由於機群套件定義中的
maxConcurrent:
設為1
,機群套件 API 會等到nginx-deployment
完全部署至一個叢集後,再開始部署至第二個叢集。如果將推出策略變更為maxConcurrent: 2
以上,資源就會同時部署至兩個叢集。幾分鐘後,您會在兩個叢集上看到
nginx-deployment
的兩個新工作負載。你可能需要重新整理頁面。在 GitHub 分支 Cymbal Bank 的網路瀏覽器視窗中,按一下存放區名稱下方的「Settings」。
在「一般設定」頁面 (預設選取),前往「Danger Zone」部分,然後按一下「Delete this repository」(刪除這個存放區)。
按一下「我要刪除這個存放區」。
詳閱警告訊息,然後按一下「我已詳閱並瞭解這些影響」。
如要確認刪除的存放區是否正確,請在文字欄位中輸入存放區名稱。
按一下「Delete this repository」(刪除這個存放區)。
- 進一步瞭解車隊套裝方案。
- 瞭解如何部署機群套件。
- 請試試可擴充應用程式教學課程,這個系列的教學課程會說明如何在 GKE Enterprise 上部署、執行及管理現代化應用程式環境。其中包含「集中管理變更」教學課程,探討如何使用叢集套件大規模變更設定。
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
連結至 Git
Git 存放區包含要部署至整個機群的資源。如要使用機群套件部署這些資源,必須將 Git 存放區連結至 Cloud Build。
建立 Git 存放區
本教學課程使用 GitHub 做為 Git 供應商。如要建立新的 GitHub 存放區,請完成下列步驟:
將存放區連結至 Cloud Build
Config Sync 的機群套件服務會使用 Cloud Build,從 Git 存放區同步及擷取 Kubernetes 資源。
如要將 GitHub 存放區連結至 Cloud Build,請完成下列步驟:
設定車隊
在本節中,您將建立叢集、向機群註冊叢集,並以機群套件的形式安裝 Config Sync,藉此設定機群。
建立叢集
為示範如何使用機群套件在多個叢集部署資源,本教學課程將說明如何建立兩個叢集。
如要建立這兩個叢集,並將其註冊至專案的機群,請按照下列步驟操作:
將 Config Sync 安裝為機群預設設定
如要使用機群套件服務,必須在兩個叢集上安裝 Config Sync。如要一次在多個叢集上安裝 Config Sync,以及在日後註冊至機群的任何叢集上安裝,請完成下列步驟:
設定 Cloud Build 的服務帳戶
如要建立服務帳戶並授予 Cloud Build 必要權限,請完成下列步驟:
在整個機群中部署資源
在本教學課程中,您會在 Git 存放區中新增含有 nginx 部署作業的 Kubernetes 資訊清單、發布版本,然後建立車隊套件來部署 nginx 應用程式。
將 Kubernetes 資訊清單提交至存放區
如要將資源新增至 GitHub 並發布版本,請完成下列步驟:
使用機群套件將資源部署至叢集
如要部署新資源,請建立新的車隊套件:
您可以繼續探索機群套件的不同部署策略。 舉例來說,您可以將新叢集加入機群,觀察工作負載是否會自動部署至該叢集。如要進一步瞭解部署策略和變化,請參閱「部署車隊套件」。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。
如要避免系統向您的 Google Cloud 帳戶收取本教學課程所用資源的費用,請刪除您建立的專案。
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
如要刪除存放區,請完成下列步驟: