輪替安全性憑證

本主題說明如何輪替 GKE on AWS 管理服務和使用者叢集的安全憑證。如要進一步瞭解 GKE on AWS 的安全防護功能,請參閱「安全性」。

事前準備

如要完成本頁的步驟,您必須有權存取包含 GKE on AWS 設定的目錄。

管理服務憑證

本節說明如何輪替管理服務的憑證。

管理憑證授權單位

本節說明如何輪替 GKE on AWS 元件的憑證授權單位 (CA) 簽署憑證。

Management API 伺服器根層級 CA

如要輪替 API 伺服器根 CA,請按照下列步驟操作:

  1. 切換至 GKE on AWS 設定所在的目錄。 您在安裝管理服務時建立了這個目錄。
    cd anthos-aws
  2. 在文字編輯器中開啟 anthos-gke.status.yaml
  3. 移除鍵 certificateAuthority 下的所有值。包括 encryptedPrivateKey.kmsKeyARNencryptedPrivateKey.valueencryptedPrivateKey.certificate
  4. 執行 anthos-gke aws management init 來更新 anthos-gke.status.yaml 檔案。

     anthos-gke aws management init
    
  5. 執行 anthos-gke aws management apply,更新管理服務。

     anthos-gke aws management apply
    

  1. anthos-aws 目錄使用 anthos-gke 將環境切換至管理服務。
    cd anthos-aws
    anthos-gke aws management get-credentials

其他管理 CA

本節說明如何輪替下列所有 CA:

  • 驗證 Webhook CA
  • Etcd CA
  • 服務帳戶簽署者 CA

您可以透過下列任一方法輪替這些 CA:

  • anthos-gke.status.yaml 中移除 certificateAuthority 區段。

    1. 切換至 GKE on AWS 設定所在的目錄。 您在安裝管理服務時建立了這個目錄。
      cd anthos-aws
    2. 在文字編輯器中開啟 anthos-gke.status.yaml
    3. 移除鍵 certificateAuthority 下的所有值。包括 encryptedPrivateKey.kmsKeyARNencryptedPrivateKey.valueencryptedPrivateKey.certificate
    4. 執行 anthos-gke aws management init 來更新 anthos-gke.status.yaml 檔案。

       anthos-gke aws management init
      
    5. 執行 anthos-gke aws management apply,更新管理服務。

       anthos-gke aws management apply
      

  • 如有新的 GKE on AWS 版本,請升級 GKE on AWS 管理服務

  • 重新建立管理服務 EC2 執行個體。

    1. anthos-aws 目錄中,使用 terraform 取得管理服務的 ID。
      cd anthos-aws
      terraform output cluster_id
      輸出內容會包含管理服務 ID。在下方範例中,ID 為 gke-12345abc
      terraform output cluster_id
      gke-12345abc
      
    2. 開啟 AWS EC2 控制台
    3. 按一下「執行個體」
    4. 找出名為 cluster-id-management-0 的執行個體。
    5. 選取「動作」->「執行個體狀態」->「終止」,即可移除執行個體。 EC2 會自動建立新的執行個體,並使用相同的 EBS 磁碟區。

管理 TLS 用戶端 / 伺服器金鑰和憑證

如要輪替管理服務的 TLS 用戶端 / 伺服器金鑰和憑證,請重新建立管理服務執行個體。如要重建執行個體,請按照下列步驟操作:

  1. anthos-aws 目錄中,使用 terraform 取得管理服務的 ID。
    cd anthos-aws
    terraform output cluster_id
    輸出內容會包含管理服務 ID。在下方範例中,ID 為 gke-12345abc
    terraform output cluster_id
    gke-12345abc
    
  2. 開啟 AWS EC2 控制台
  3. 按一下「執行個體」
  4. 找出名為 cluster-id-management-0 的執行個體。
  5. 選取「動作」->「執行個體狀態」->「終止」,即可移除執行個體。 EC2 會自動建立新的執行個體,並使用相同的 EBS 磁碟區。

Google Cloud 服務帳戶

管理服務帳戶

如要輪替管理服務的Google Cloud 服務帳戶,請完成下列步驟。

  1. 按照必要條件中的步驟,建立新的服務帳戶並下載服務帳戶金鑰
  2. 切換至 GKE on AWS 設定所在的目錄。 您在安裝管理服務時建立了這個目錄。
    cd anthos-aws
  3. 如果您將金鑰下載到其他路徑,請在文字編輯器中開啟 anthos-gke.yaml 檔案。將 .spec.googleCloud.serviceAccountKeys.managementService.status.googleCloud.serviceAccountKeys.connectAgent.spec.googleCloud.serviceAccountKeys.node 的值變更為新路徑。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
     name: management
    spec:
     googleCloud:
       serviceAccountKeys:
         managementService: MANAGEMENT_KEY_PATH
         connectAgent: CONNECT_KEY_PATH
         node: NODE_KEY_PATH
     ...
    
  4. 執行 anthos-gke aws management init 來更新 anthos-gke.status.yaml 檔案。

    anthos-gke aws management init
    
  5. 執行 anthos-gke aws management apply,更新管理服務。

    anthos-gke aws management apply
    

使用者叢集服務帳戶

如要在 AWSClusters 和 AWSNodePools 上套用這些服務帳戶,您必須升級刪除,然後重新建立這些項目。

使用者叢集憑證

本節說明如何輪替使用者叢集的憑證。

使用者叢集 CA 和 SSH 金鑰

使用者叢集的大部分 CA 都是在建立叢集時建立。

刪除使用者叢集時,GKE on AWS 會輪替下列憑證:

  • API 伺服器根層級 CA
  • API 前端 Proxy CA
  • etcd CA
  • Kubernetes 服務帳戶簽署者 CA
  • 控制層到節點的安全殼層金鑰組

使用者叢集驗證 webhook CA

如要輪替使用者叢集驗證 Webhook CA,請編輯 anthos-gke.status.yaml 檔案並套用變更。

  1. 切換至 GKE on AWS 設定所在的目錄。 您在安裝管理服務時建立了這個目錄。
    cd anthos-aws
  2. 在文字編輯器中開啟 anthos-gke.status.yaml
  3. 移除鍵 certificateAuthority 下的所有值。包括 encryptedPrivateKey.kmsKeyARNencryptedPrivateKey.valueencryptedPrivateKey.certificate
  4. 執行 anthos-gke aws management init 來更新 anthos-gke.status.yaml 檔案。

     anthos-gke aws management init
    
  5. 執行 anthos-gke aws management apply,更新管理服務。

     anthos-gke aws management apply
    

使用者叢集 TLS 金鑰組和憑證

在建立執行個體時,AWS 上的 GKE 會產生 TLS 金鑰組和憑證。如要輪替這些配對,請為控制層和節點集區執行下列步驟,重新建立執行個體。

控制層

  1. anthos-aws 目錄使用 anthos-gke 將環境切換至管理服務。
    cd anthos-aws
    anthos-gke aws management get-credentials
  2. 使用 kubectl 從 AWSCluster 取得控制層的 AWS EC2 目標群組。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get awscluster cluster-name \
      -o jsonpath='{.status.targetGroupName}{"\n"}'
    

    輸出內容會包含控制層 EC2 目標群組的名稱。例如 gke-123456a7-controlplane

  3. 開啟 AWS EC2 控制台。從左側窗格選擇「目標群組」

  4. 按一下搜尋列,找出目標群組。依序點選目標群組的「名稱」和「目標」。系統會顯示控制平面例項清單。

  5. 針對目標群組中的每個執行個體,執行下列步驟:

    1. 按一下執行個體的「Instance ID」(執行個體 ID)。系統會顯示 AWS EC2 執行個體控制台。

    2. 按一下「執行個體 ID」

    3. 選取「動作」->「執行個體狀態」->「終止」,即可移除執行個體。 EC2 會自動建立新的執行個體,並使用相同的 EBS 磁碟區。

    4. 返回「目標群組」頁面。

  6. 終止群組中的所有執行個體後,請返回「目標群組」頁面。

  7. 在頁面的「已註冊目標」部分,找到「狀態」欄。每個執行個體的「狀態」都應為「健康」。 如果任何執行個體健康狀態良好,請稍候幾分鐘,然後按一下「重新整理」圖示

  8. 目標群組中的所有執行個體都正常運作後,請繼續執行下一個步驟。

節點集區

如要輪替節點集區的傳輸層安全標準 (TLS) 憑證,請按照下列步驟操作:

  1. anthos-aws 目錄使用 anthos-gke 將環境切換至管理服務。
    cd anthos-aws
    anthos-gke aws management get-credentials
  2. 使用 kubectl 從 AWSNodePool 取得節點集區的 AWS EC2 目標群組。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get awsnodepool -o jsonpath='{.items[*].status.autoScalingGroupName}{"\n"}'
    

    輸出結果包含節點集區的 EC2 目標群組名稱。例如 gke-123456a7-nodepool-abc123

  3. 開啟 AWS EC2 控制台。從左側窗格選擇「目標群組」

  4. 按一下搜尋列,找出目標群組。依序點選目標群組的「名稱」和「目標」。系統會顯示控制平面例項清單。

  5. 針對目標群組中的每個執行個體,執行下列步驟:

    1. 按一下執行個體的「Instance ID」(執行個體 ID)。系統會顯示 AWS EC2 執行個體控制台。

    2. 按一下「執行個體 ID」

    3. 選取「動作」->「執行個體狀態」->「終止」,即可移除執行個體。 EC2 會自動建立新的執行個體,並使用相同的 EBS 磁碟區。

    4. 返回「目標群組」頁面。

  6. 終止群組中的所有執行個體後,請返回「目標群組」頁面。

  7. 在頁面的「已註冊目標」部分,找到「狀態」欄。每個執行個體的「狀態」都應為「健康」。 如果任何執行個體健康狀態良好,請稍候幾分鐘,然後按一下「重新整理」圖示

  8. 目標群組中的所有執行個體都正常運作後,請繼續執行下一個步驟。