必備條件

本頁說明安裝 GKE on AWS 前必須完成的步驟。

環境

如要安裝 GKE on AWS,您需要一個環境,以便安裝及執行各種工具。下列步驟假設您在 Linux 或 macOS 上使用 bash shell。如果無法存取 Bash Shell 環境,可以使用 Cloud Shell

AWS 需求

如要完成本主題,您需要具備指令列存取權的 AWS 帳戶,以及與使用者叢集位於相同區域的兩個 AWS Key Management Service (KMS) 金鑰。

如要進一步瞭解其他必要的 AWS 資源,請參閱「需求條件」。

設定 AWS

事前準備

填寫本節前,請先完成下列操作:

  • 下載並安裝 AWS CLI。執行 aws --version 確認安裝。如果找不到可執行檔,請將 aws 工具新增至 PATH
  • 使用 aws configure 設定 AWS IAM 憑證和 AWS 區域。

管理員使用者權限

在 GKE on AWS 中,管理服務的建立者必須具備特定權限。建立管理服務或使用者叢集之前,請先建立或取得符合需求的 AWS IAM 憑證。

建立 KMS 金鑰

GKE on AWS 需要兩個 AWS KMS 金鑰。KMS 金鑰會加密:

  • 在安裝程序期間,使用信封式加密保護資料。
  • 使用者叢集中的應用程式層密鑰。

請按照下列步驟建立兩個 AWS KMS 金鑰。

指令列

  1. 在 AWS 帳戶中建立 KMS 金鑰。

    aws kms create-key
    

    輸出內容會包含金鑰的中繼資料。

  2. 在上一個指令的輸出內容中,從 Arn 欄位複製金鑰的 Amazon Resource Name (ARN)。舉例來說,us-west-2 地區中的金鑰具有 ARN arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

  3. 使用 aws kms create-alias 為金鑰建立別名。別名可讓您依名稱管理 AWS KMS 金鑰。

    aws kms create-alias \
        --alias-name=alias/key-name \
        --target-key-id=key-arn
    
  4. 針對其他金鑰重複上述步驟。

主控台

  1. 登入 AWS 控制台
  2. 前往 KMS,然後從側欄選取「客戶管理的金鑰」
  3. 按一下 [Create Key] (建立金鑰)
  4. 保留已選取的預設選項。
  5. 建立完成後,請從清單中選取金鑰。
  6. 複製金鑰的 ARN。
  7. 針對其他金鑰重複上述步驟。

Google Cloud 需求條件

貴機構定義的安全性限制,可能會導致您無法完成下列步驟。如需疑難排解資訊,請參閱「在受限的 Google Cloud 環境中開發應用程式」。

事前準備

  • 請確認您在 Google 帳戶中擁有專案擁有者權限,以便在 Google Cloud 專案中啟用 API,並連結 GKE on AWS 環境。您只會使用「擁有者」權限,在下一節中建立 GKE on AWS 服務帳戶。

  • 安裝 Google Cloud CLI

  • 您必須為 Google Cloud 專案啟用 GKE Enterprise API。啟用這項 API 後,您就能在 Google Cloud 專案中使用其他 GKE Enterprise 功能。

建立 GKE on AWS 服務帳戶

在本節中,您將為 GKE on AWS 建立三個 IAM 服務帳戶和金鑰。這些服務帳戶如下所示:

名稱 角色 說明
management-sa gkehub.admin 管理 Hub 成員資格的權限
hub-sa gkehub.connect 設定使用者叢集與 Hub 之間的連線。
node-sa storage.objectViewer 存取 Container Registry 的權限。

指令列

  1. 使用 Google Cloud CLI 進行驗證。

    gcloud auth login &&\
    gcloud auth application-default login
    

    系統會兩次提示您前往 cloud.google.com,並使用 Google 帳戶進行驗證。

  2. 使用 gcloud CLI 將 Google Cloud 專案設為環境變數,並設定預設project-id

    export PROJECT_ID=project-id
    
    gcloud config set project $PROJECT_ID
    

    project-id 的值替換成您的 Google Cloud 專案。

  3. 啟用 Google Cloud API。

    gcloud services enable anthos.googleapis.com
    gcloud services enable cloudresourcemanager.googleapis.com
    gcloud services enable gkehub.googleapis.com
    gcloud services enable gkeconnect.googleapis.com
    gcloud services enable logging.googleapis.com
    gcloud services enable monitoring.googleapis.com
    gcloud services enable serviceusage.googleapis.com
    gcloud services enable stackdriver.googleapis.com
    gcloud services enable storage-api.googleapis.com
    gcloud services enable storage-component.googleapis.com
    
  4. 執行下列指令,使用 gcloud 建立服務帳戶。

    gcloud iam service-accounts create management-sa
    gcloud iam service-accounts create hub-sa
    gcloud iam service-accounts create node-sa
    
  5. 執行下列指令,下載每個服務帳戶的金鑰。gcloud

    gcloud iam service-accounts keys create management-key.json \
         --iam-account management-sa@$PROJECT_ID.iam.gserviceaccount.com
    gcloud iam service-accounts keys create hub-key.json \
         --iam-account hub-sa@$PROJECT_ID.iam.gserviceaccount.com
    gcloud iam service-accounts keys create node-key.json \
         --iam-account node-sa@$PROJECT_ID.iam.gserviceaccount.com
    
  6. 將角色授予管理服務帳戶。

    gcloud projects add-iam-policy-binding \
        $PROJECT_ID \
        --member serviceAccount:management-sa@$PROJECT_ID.iam.gserviceaccount.com \
        --role roles/gkehub.admin
    
  7. 將角色授予中樞服務帳戶。

    gcloud projects add-iam-policy-binding \
        $PROJECT_ID \
        --member serviceAccount:hub-sa@$PROJECT_ID.iam.gserviceaccount.com \
        --role roles/gkehub.connect
    
  8. 將角色授予節點服務帳戶。

    gcloud projects add-iam-policy-binding \
          $PROJECT_ID \
          --member serviceAccount:node-sa@$PROJECT_ID.iam.gserviceaccount.com \
          --role roles/storage.objectViewer
    

主控台

  1. 開啟Google Cloud 控制台 API 程式庫頁面
  2. 從畫面頂端的下拉式選單中選取偏好的專案。
  3. 找出並啟用下列 API。

    • Anthos
    • Cloud Resource Manager
    • Cloud Storage
    • Cloud Logging
    • Google Cloud Storage JSON API
    • GKE Hub
    • GKE Connect API
    • 服務使用情形
    • Stackdriver
    • Stackdriver Monitoring
  4. 開啟「服務帳戶」頁面。

  5. 接著,建立服務帳戶,並為 management-sa 服務帳戶指派角色。

    1. 按一下「建立服務帳戶」
    2. 命名帳戶管理員,然後按一下「建立」。 系統會顯示「將專案存取權授予這個服務帳戶」畫面。
    3. 新增 GKE Hub 管理員角色。
    4. 按一下「繼續」。系統會顯示「將這個服務帳戶的存取權授予使用者」畫面。
    5. 按一下 [完成]。系統會顯示「Service accounts for project」(專案的服務帳戶) 畫面
    6. 找出包含服務帳戶「電子郵件」的資料列:management-sa@project_id.iam.gserviceaccount.com
    7. 按一下服務帳戶的 動作選單,然後選取「管理金鑰」
    8. 按一下「Add key」(新增金鑰) 下拉式選單。
    9. 按一下「建立新的金鑰」
    10. 選取「JSON」做為金鑰類型,然後按一下「建立」。瀏覽器會下載服務帳戶金鑰。
    11. 將檔案重新命名為 management-key.json
  6. 接著,請建立服務帳戶,並為 hub-sa 服務帳戶指派角色。

    1. 按一下「建立服務帳戶」
    2. 將帳戶中心命名為 hub-sa,然後按一下「建立」。 系統會顯示「將專案存取權授予這個服務帳戶」畫面。
    3. 新增 GKE Hub 連結代理人角色。
    4. 按一下「繼續」。系統會顯示「將這個服務帳戶的存取權授予使用者」畫面。
    5. 按一下 [完成]。系統會顯示「Service accounts for project」(專案的服務帳戶) 畫面
    6. 找出包含服務帳戶「電子郵件」的資料列:hub-sa@project_id.iam.gserviceaccount.com
    7. 按一下服務帳戶的 動作選單,然後選取「管理金鑰」
    8. 按一下「Add key」(新增金鑰) 下拉式選單。
    9. 按一下「建立新的金鑰」
    10. 選取「JSON」做為金鑰類型,然後按一下「建立」。瀏覽器會下載服務帳戶金鑰。
    11. 將檔案重新命名為 hub-key.json
  7. 接著,請建立服務帳戶,並為 node-sa 服務帳戶指派角色。

    1. 按一下「建立服務帳戶」
    2. 命名帳戶節點 node-sa,然後按一下「建立」。 系統會顯示「將專案存取權授予這個服務帳戶」畫面。
    3. 新增 Storage 物件檢視者角色。
    4. 按一下 [完成]。系統會顯示「Service accounts for project」(專案的服務帳戶) 畫面
    5. 找出包含服務帳戶「電子郵件」的資料列:node-sa@project_id.iam.gserviceaccount.com
    6. 按一下服務帳戶的 動作選單,然後選取「管理金鑰」
    7. 按一下「Add key」(新增金鑰) 下拉式選單。
    8. 按一下「建立新的金鑰」
    9. 選取「JSON」做為金鑰類型,然後按一下「建立」。瀏覽器會下載服務帳戶金鑰。
    10. 將檔案重新命名為 node-key.json

anthos-gke 指令列工具

anthos-gke 是 GKE on AWS 的指令列工具,您可以使用 anthos-gke 建立設定,並安裝管理服務。最新版本為 aws-1.14.1-gke.0。anthos-gke

anthos-gke 指令列工具僅支援 Linux 和 macOS。

  1. 從 Cloud Storage 下載二進位檔。

    Linux

    gcloud storage cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/linux/amd64/anthos-gke .
    

    macOS

    gcloud storage cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/darwin/amd64/anthos-gke .
    
  2. 更新 anthos-gke 的權限,然後複製到 /usr/local/bin

    chmod 755 anthos-gke
    sudo mv anthos-gke /usr/local/bin
    
  3. 確認版本為 aws-1.14.1-gke.0

    anthos-gke version
    

anthos-gke 指令列工具的權限

如要使用 anthos-gke 指令列工具,執行指令的使用者必須具備 ServiceUsageViewer 和 StorageAdmin 角色。如要將角色新增至 IAM 主體,請執行下列指令:

gcloud projects add-iam-policy-binding PROJECT_NAME \
    --member user:USER_NAME \
    --role roles/serviceusage.serviceUsageViewer
gcloud projects add-iam-policy-binding PROJECT_NAME \
    --member user:USER_NAME \
    --role roles/storage.admin

更改下列內容:

  • PROJECT_NAME:您的 Google Cloud 專案
  • USER_NAME:執行 anthos-gke 指令列工具的使用者名稱。如果您使用服務帳戶,請使用 serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

Terraform

anthos-gke 工具會產生 Terraform 設定檔,並呼叫 terraform 指令列工具。

GKE on AWS 需要高於 v0.14.3 的 Terraform 版本。您可以使用下列指令檢查 Terraform 版本:

terraform version

如果沒有 v0.14.3 以上版本,請下載並安裝 Terraform,再建立管理服務。

升級 Terraform

在安裝 GKE on AWS 後升級 Terraform 時,您必須依序升級每個子版本,才能升級 Terraform 二進位檔。

舉例來說,如要將 Terraform 從 v0.12.x 升級至 v0.14.x,您必須暫時安裝 v0.13.x。安裝 v0.13.x 後,請執行 anthos-gke aws management initanthos-gke aws management apply。GKE on AWS 會更新設定。然後升級至 v0.14.x。

Kubernetes

GKE on AWS 必須使用 kubectl 1.17 以上版本。如要查看 kubectl 版本,請執行下列指令:

kubectl version --client -o yaml | grep gitVersion

如果沒有 1.17 以上版本,請安裝新版 kubectl

後續步驟