使用 Terraform 建立 VPC 和叢集

總覽

Terraform 是一項開放原始碼工具,可設定 AWS 等雲端環境,並在這些環境中安裝 Kubernetes 等軟體。您可以使用 Terraform 或 GKE on AWS 安裝說明,設定 AWS 環境並在其中建立叢集。

本頁說明如何使用 Terraform 設定 AWS 環境,並透過儲存在 GitHub 的範例設定安裝叢集。本頁內容適用於 IT 管理員和操作員,說明如何設定、監控及管理雲端基礎架構、自動化部署作業,以及使用範本和宣告式設定。如要進一步瞭解內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。 Google Cloud

如要使用這些指令碼,您必須具備 Terraform 的基本知識。具體來說,您必須編輯 Terraform 設定檔,加入自己的使用者和專案資訊,並對預設叢集設定進行任何必要變更。

如要設定 AWS 環境及建立叢集,但不想使用 Terraform,請參閱 AWS 必要條件總覽,以及建立叢集的操作說明。

指令碼的用途

這個指令碼會設定 Terraform,以便建立 AWS VPC 並在其中部署叢集。產生的 VPC 會符合所有 GKE on AWS 必要條件,並與 Google 的手動 VPC 建立說明建立的 VPC 具有相同的網路拓撲。

指令碼集建立的叢集具有下列特徵:

  • 三個控制層節點 (每個設定的可用區各有一個)。這些節點的類型為 t3.large
  • 一個節點集區,其中包含兩個 t3.large 類型的節點。 這個節點集區部署在 AWS us-east-1 區域,最多可自動調度至五個節點。

如何變更預設 VPC 和叢集

如要變更 Terraform 指令碼建立的 VPC 和叢集特性,請編輯適當的 Terraform 檔案。

  • 編輯 variables.tf 檔案,調整區域和可用區。
  • 變更 AWS 執行個體類型
  • 如要變更虛擬私有雲的特性 (包括子網路、可用區和負載平衡器),請編輯 modules/vpc 子資料夾中的檔案。

如要查看特定 Google Cloud區域控管的 AWS 區域清單,以及相關聯的 Kubernetes 版本,請執行下列指令:

gcloud container aws get-server-config --location `GOOGLE_CLOUD_REGION`

GOOGLE_CLOUD_REGION 替換為您要 GKE on AWS 從中控管叢集的Google Cloud 區域名稱。

必要條件

  1. 按照 Google Cloud CLI 安裝說明安裝 Google Cloud CLI。 如果已安裝,請按照這些操作說明,確認您執行的是 412.0.0 以上版本。

  2. 按照 AWS CLI 安裝說明安裝 AWS CLI。

  3. 建立 AWS 存取金鑰

  4. 使用下列指令設定本機 AWS 環境:

    aws configure
    

準備 Terraform

  1. 執行下列指令,設定 Google Cloud CLI 驗證:

    gcloud config set project GOOGLE_PROJECT_ID
    gcloud auth application-default login --no-launch-browser
    
  2. 在 Google Cloud 專案中啟用必要服務。

    gcloud --project="GOOGLE_PROJECT_ID" services enable \
      gkemulticloud.googleapis.com \
      gkeconnect.googleapis.com \
      connectgateway.googleapis.com \
      cloudresourcemanager.googleapis.com \
      anthos.googleapis.com \
      logging.googleapis.com \
      monitoring.googleapis.com \
      opsconfigmonitoring.googleapis.com
    

    GOOGLE_PROJECT_ID 替換為您的 Google 專案 ID。

  3. 製作存放區的本機副本,並變更為 AWS 資料夾:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples.git
    cd anthos-samples/anthos-multi-cloud/AWS
    

部署 GKE on AWS

  1. 編輯 terraform.tfvars 檔案中的下列幾行,取代預設值:

    gcp_project_id = GOOGLE_PROJECT_ID
    admin_users = ["GCP_ACCOUNT_EMAIL"]
    cluster_version = GKE_VERSION
    

    更改下列內容:

    • GOOGLE_PROJECT_ID:您的 Google 專案 ID。您可以在Google Cloud 控制台的資訊主頁左側找到這項功能。

    • ACCOUNT_EMAILS:以半形逗號分隔的電子郵件地址清單,這些地址可在叢集建立後登入叢集,例如 "admin@example.com","operator@example.com"。至少一個地址必須有 Google Cloud 帳戶。如要為叢集新增其他身分識別提供者,請參閱「使用 GKE Identity Service 管理身分」。

    • GKE_VERSION:所選區域支援的 GKE 版本。如要查看支援的版本,請參閱「GKE on AWS 版本管理和支援服務」。

  2. 初始化並建立 Terraform 方案:

    terraform init
    

    Terraform 會安裝任何需要的程式庫,例如 Google Cloud供應商。

  3. 套用 Terraform 方案,建立 AWS 虛擬私有雲和叢集:

    terraform apply
    

    按照操作說明開始建立叢集。

安裝作業大約需要 12 分鐘。Terraform 完成建立 AWS 虛擬私有雲和叢集後,會列印叢集相關資訊,並建立名為 var.sh 的檔案。如果您建立其他節點集區,可以使用這個檔案中的值。

如要確認叢集是否已成功建立,請在專案的 Google Cloud 控制台,前往「Kubernetes Engine」頁面,查看叢集是否顯示在該頁面中。 Google Cloud

連結叢集

如要驗證叢集的連線並擷取詳細資料,請執行下列指令:

   gcloud container fleet memberships get-credentials CLUSTER_NAME
   kubectl get nodes

CLUSTER_NAME 替換為叢集名稱。您可以在 var.sh Terraform 輸出檔案中找到叢集名稱。

輸出結果包含叢集中的節點清單和節點狀態。

刪除叢集和 AWS 虛擬私有雲

刪除叢集和 AWS Virtual Private Cloud 前,請務必移除下列所有項目:

  • AWS 虛擬私有雲中的任何有效 AWS 負載平衡器
  • 叢集中不是使用 Terraform 建立的任何其他節點集區
  • AWS Virtual Private Cloud 中不是使用 Terraform 建立的任何其他叢集

如要移除您使用 Terraform 建立的叢集和 AWS 虛擬私有雲,請執行下列指令:

terraform destroy

Terraform 會從節點排空工作負載、刪除主要節點集區和叢集,以及刪除 AWS 虛擬私有雲。

授權 Cloud Logging 和 Cloud Monitoring

如要啟用 Cloud Logging 和 Cloud Monitoring,您必須在建立叢集後,將允許政策新增至 Google Cloud 專案。

使用 Google Cloud CLI 新增允許政策:

gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter

PROJECT_ID 替換為您的專案 ID。

後續步驟

如要進一步瞭解 Terraform GKE on AWS 指令碼,請參閱