在整個機群中部署資源

本教學課程說明如何使用機群套件,在機群的叢集中部署 Kubernetes 資源資訊清單。使用 Config Sync 機群套件等 GitOps 工具,有助於大規模管理大量叢集的設定。

在本教學課程中,您將完成下列工作:

  • 將 Git 存放區連結至 Cloud Build
  • 建立叢集並註冊至機群
  • 將 Config Sync 安裝為機群預設設定
  • 將存放區中的資源部署至叢集機群

事前準備

  1. 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.
  2. Install the Google Cloud CLI.

  3. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

  4. 如要初始化 gcloud CLI,請執行下列指令:

    gcloud init
  5. 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.

  6. Make sure that billing is enabled for your Google Cloud project.

  7. 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
  8. Install the Google Cloud CLI.

  9. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

  10. 如要初始化 gcloud CLI,請執行下列指令:

    gcloud init
  11. 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.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. 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
  14. 建立或存取 GitHub 帳戶。
  15. 費用

    在本文件中,您會使用 Google Cloud的下列計費元件:

    如要根據預測用量估算費用,請使用 Pricing Calculator

    初次使用 Google Cloud 的使用者可能符合免費試用資格。

    連結至 Git

    Git 存放區包含要部署至整個機群的資源。如要使用機群套件部署這些資源,必須將 Git 存放區連結至 Cloud Build。

    建立 Git 存放區

    本教學課程使用 GitHub 做為 Git 供應商。如要建立新的 GitHub 存放區,請完成下列步驟:

    1. 在網路瀏覽器中開啟 GitHub

    2. 如有需要,請登入 GitHub 帳戶。如果您有權存取 GitHub 上的其他機構或團隊,請務必使用個人帳戶建立存放區。

    3. 選取工具列中的「新增」,然後按一下「新增存放區」

    4. 輸入 fleet-package-tutorial 做為存放區名稱。

    5. 請保持選取「Public」做為存放區瀏覽權限。

    6. 選取「建立存放區」

    將存放區連結至 Cloud Build

    Config Sync 的機群套件服務會使用 Cloud Build,從 Git 存放區同步及擷取 Kubernetes 資源。

    如要將 GitHub 存放區連結至 Cloud Build,請完成下列步驟:

    1. 在 Google Cloud 控制台中開啟 Cloud Build 頁面,然後選取「Repositories」(存放區)

      開啟「Repositories」(存放區) 頁面

    2. 確認您位於第 2 代「存放區」頁面。視需要選取「查看存放區 (第 2 代)」

    3. 按一下「建立主機連線」

    4. 在「Region」(區域) 選單中,選取「us-central1 (Iowa)」(us-central1 (愛荷華州)) 做為區域。

    5. 在「Name」(名稱) 欄位中,輸入 fleet-package-quickstart-connection 做為連線名稱。

    6. 按一下「連線」

    7. 如果這是您第一次將 Cloud Build 連結至 GitHub 帳戶,請完成下列步驟:

      1. 接受 GitHub OAuth 權杖要求。權杖會儲存在 Secret Manager 中,供 Cloud Build GitHub 連線使用。按一下「繼續」
      2. 在 GitHub 存放區中安裝 Cloud Build。選取「在新帳戶中安裝」
      3. 在開啟的新 GitHub 視窗中,選取您先前建立 Cymbal Bank 分支的 GitHub 帳戶。在正式環境中,您可能會選取已委派存取權的其他帳戶或存放區。
      4. 按照驗證提示操作,在 GitHub 中確認身分。
      5. 在 Cloud Build 存放區存取權的 GitHub 視窗中,選擇「Only select repositories」
      6. 在列出存放區的下拉式選單中,選取 fleet-package-tutorial 存放區。
      7. 按一下 [儲存]
    8. 在控制台的 Cloud Build 頁面中,按一下「Link repository」(連結存放區),將新的 Git 存放區連結至 Cloud Build。 Google Cloud

    9. 在「連線」選單中,選取 fleet-package-quickstart-connection

    10. 在「Repositories」(存放區) 選單中,選取存放區。fleet-package-tutorial

    11. 選取「連結」

    設定車隊

    在本節中,您將建立叢集、向機群註冊叢集,並以機群套件的形式安裝 Config Sync,藉此設定機群。

    建立叢集

    為示範如何使用機群套件在多個叢集部署資源,本教學課程將說明如何建立兩個叢集。

    如要建立這兩個叢集,並將其註冊至專案的機群,請按照下列步驟操作:

    1. 建立 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
    2. 建立第二個 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,以及在日後註冊至機群的任何叢集上安裝,請完成下列步驟:

    1. 前往 Google Cloud 控制台的「Feature Manager」頁面。

      前往功能管理工具

    2. 在「Config Sync」窗格中,按一下「Configure」

    3. 按一下「自訂車隊設定」。在隨即顯示的對話方塊中,選取要安裝的 Config Sync 版本。

    4. 按一下 [設定]

    5. 在「Configuring fleet settings」(設定車隊設定) 確認對話方塊中,按一下「Confirm」(確認)。如果您先前未啟用 Config Sync,按一下「確認」也會啟用 anthosconfigmanagement.googleapis.com API。

    6. 在「機群中的叢集」表格中,選取兩個叢集,然後按一下「與機群設定同步」。這會在兩個叢集上安裝 Config Sync,並套用您設定的設定。

      叢集可能需要幾分鐘才能完成同步。Config Sync 顯示為「已安裝」時,即可繼續執行後續步驟。

    設定 Cloud Build 的服務帳戶

    如要建立服務帳戶並授予 Cloud Build 必要權限,請完成下列步驟:

    1. 建立服務帳戶:

      gcloud iam service-accounts create "quickstart-service-account"
      
    2. 新增 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」做為政策條件。

    3. 新增「記錄檔寫入者」角色的 IAM 政策繫結,授予服務帳戶寫入記錄的權限:

      gcloud projects add-iam-policy-binding PROJECT_ID \
         --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \
         --role='roles/logging.logWriter'
      

      如果系統出現提示,請選取「None」做為政策條件。

    在整個機群中部署資源

    在本教學課程中,您會在 Git 存放區中新增含有 nginx 部署作業的 Kubernetes 資訊清單、發布版本,然後建立車隊套件來部署 nginx 應用程式。

    將 Kubernetes 資訊清單提交至存放區

    如要將資源新增至 GitHub 並發布版本,請完成下列步驟:

    1. 在 GitHub 存放區的網路瀏覽器視窗中,依序點選「Add file」(新增檔案) 和「Create new file」(建立新檔案)

    2. 將檔案命名為 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
      
    3. 按一下「Commit changes...」(提交變更...)

    4. 在確認對話方塊中,保持選取「直接提交至 main 分支」,然後按一下「提交變更」

    5. 在存放區的主要頁面中,從側欄選取「Releases」

    6. 選擇頁面頂端的「草擬新版本」

    7. 選取「選擇代碼」選單,然後輸入 v1.0.0 做為代碼。按一下「建立新代碼」

    8. 按一下「發布版本」

    使用機群套件將資源部署至叢集

    如要部署新資源,請建立新的車隊套件:

    1. 由於這個機群套件不含選取器欄位,因此會以機群中的所有叢集為目標。這也表示日後新增至機群的任何叢集,都會自動新增 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 格式。

    2. 建立機群套件,開始推出作業:

      gcloud alpha container fleet packages create fp-nginx \
         --source=fleet-package.yaml \
         --project=PROJECT_ID
      
    3. 確認機群套件是否已建立:

      gcloud alpha container fleet packages list
      

      您可以按一下提供的連結,查看 Cloud Build 工作的串流記錄。

      機群套件會開始在機群中推出 Kubernetes 資源。

    4. 在 Google Cloud 控制台的 Google Kubernetes Engine 頁面中,前往「Workloads」(工作負載) 頁面,查看部署在所有 GKE 叢集上的工作負載匯總檢視畫面:

      開啟「Workloads」(工作負載) 頁面

      工作負載可能需要幾分鐘才會顯示。此外,在 Autopilot 為新部署作業調整資源要求時,您可能會發現可用性錯誤。

      請注意,由於機群套件定義中的 maxConcurrent: 設為 1,機群套件 API 會等到 nginx-deployment 完全部署至一個叢集後,再開始部署至第二個叢集。如果將推出策略變更為 maxConcurrent: 2 以上,資源就會同時部署至兩個叢集。

      幾分鐘後,您會在兩個叢集上看到 nginx-deployment 的兩個新工作負載。你可能需要重新整理頁面。

    您可以繼續探索機群套件的不同部署策略。 舉例來說,您可以將新叢集加入機群,觀察工作負載是否會自動部署至該叢集。如要進一步瞭解部署策略和變化,請參閱「部署車隊套件」。

    清除所用資源

    如要避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。

    如要避免系統向您的 Google Cloud 帳戶收取本教學課程所用資源的費用,請刪除您建立的專案。

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

    如要刪除存放區,請完成下列步驟:

    1. 在 GitHub 分支 Cymbal Bank 的網路瀏覽器視窗中,按一下存放區名稱下方的「Settings」

    2. 在「一般設定」頁面 (預設選取),前往「Danger Zone」部分,然後按一下「Delete this repository」(刪除這個存放區)

    3. 按一下「我要刪除這個存放區」

    4. 詳閱警告訊息,然後按一下「我已詳閱並瞭解這些影響」

    5. 如要確認刪除的存放區是否正確,請在文字欄位中輸入存放區名稱。

    6. 按一下「Delete this repository」(刪除這個存放區)

    後續步驟