輪替服務帳戶金鑰

本頁面說明如何輪替下列服務帳戶的金鑰:

如要輪替服務帳戶金鑰,請按照下列步驟操作:

  1. 建立目錄,用來儲存目前密鑰的備份:

    mkdir backup
  2. 請記下相關服務帳戶的下列資訊:

    元件存取權

    叢集 密鑰 命名空間
    管理員 admin-cluster-creds kube-system
    管理員 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    管理員 private-registry-creds kube-system
    使用者 private-registry-creds kube-system
    • 如果您未使用私有登錄檔private-registry-creds Secret 會保留元件存取服務帳戶的金鑰。
    • 如果您使用私有登錄檔,private-registry-creds Secret 會保留私有登錄檔的憑證,而非元件存取服務帳戶金鑰。

    Connect-register

    叢集 密鑰 命名空間
    管理員 admin-cluster-creds kube-system
    管理員 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt

    記錄檔監控

    叢集 密鑰 命名空間
    管理員 admin-cluster-creds kube-system
    管理員 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    使用者 google-cloud-credentials kube-system
    使用者 stackdriver-service-account-key knative-serving

    稽核記錄

    叢集 密鑰 命名空間
    管理員 admin-cluster-creds kube-system
    管理員 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    管理員 kube-apiserver CLUSTER_NAME

    Stackdriver

    叢集 密鑰 命名空間
    管理員 admin-cluster-creds kube-system
    管理員 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    使用者 google-cloud-credentials kube-system
    使用者 stackdriver-service-account-key knative-serving
  3. 使用下列指令備份每個密鑰:

    kubectl get secret SECRET --namespace NAMESPACE \
        --kubeconfig KUBECONFIG -o json > backup/SECRET-NAMESPACE.json

    更改下列內容:

    • NAMESPACE:密鑰所在的命名空間。例如:kube-system
    • KUBECONFIG:管理員或使用者叢集的 kubeconfig 檔案路徑。
    • SECRET:密鑰名稱。例如:admin-cluster-creds

    舉例來說,請為稽核記錄服務帳戶執行下列指令:

    kubectl get secret admin-cluster-creds --namespace kube-system \
            --kubeconfig KUBECONFIG -o json > backup/admin-cluster-creds-kube-system.json
    
    kubectl get secret user-cluster-creds --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/user-cluster-creds-NAMESPACE.json
    
    kubectl get secret kube-apiserver --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/kube-apiserver-NAMESPACE.json
  4. 如要建立新的服務帳戶金鑰檔案,請執行下列指令:

    gcloud iam service-accounts keys create NEW_KEY_FILE --iam-account IAM_ACCOUNT

    更改下列內容:

    • NEW_KEY_FILE:新服務帳戶金鑰檔案的名稱
    • IAM_ACCOUNT:服務帳戶的電子郵件地址
  5. 在管理叢集設定檔中,找出 componentAccessServiceAccountKeyPath 欄位、gkeConnect 區段、stackdriver 區段和 cloudAuditLogging 區段。在這些位置,請替換服務帳戶金鑰檔案的路徑。

  6. 在使用者叢集設定檔中,找出 componentAccessServiceAccountKeyPath 欄位、gkeConnect 區段、stackdriver 區段和 cloudAudigLogging 區段。在這些位置,將服務帳戶金鑰檔案的路徑替換為實際路徑。

  7. 執行下列指令,儲存所做的變更:

    您可以一次輪替一個元件的金鑰,也可以將元件設為 sakeys,一次輪替所有金鑰。

    gkectl update credentials COMPONENT \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG \
        --admin-cluster
    
    gkectl update credentials COMPONENT \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG
    

    取代下列項目:

    • COMPONENT:下列其中一項:

      • componentaccess
      • register
      • cloudauditlogging
      • stackdriver
      • sakeys (輪替所有元件金鑰)
    • ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑。

    • ADMIN_CLUSTER_CONFIG:管理員叢集設定檔的路徑。

    • USER_CLUSTER_CONFIG:使用者叢集設定檔的路徑。

重新建立節點

部分服務帳戶金鑰輪替作業可能需要較長時間,因為必須重新建立節點:

服務帳戶 需要重新建立節點
元件存取權 如果使用 Artifact Registry:是
如果使用私人登錄檔:否
稽核記錄 管理員叢集:可以,但僅限控制層節點
使用 kubeception 的使用者叢集:不可以
使用 Controlplane V2 的使用者叢集:可以,但僅限控制層節點
Logging-monitoring
連線及註冊

如果金鑰輪替需要重新建立節點,系統會在滾動更新程序中替換節點,也就是逐一重新建立節點。

金鑰輪替期間可能發生的停機時間,與叢集升級的停機時間類似。詳情請參閱「升級過程中的停機情形」。

還原備份

如要還原先前建立的密鑰備份,請執行下列指令:

kubectl apply -f backup/

輪替服務帳戶金鑰時,進階叢集之間的差異

gkectl update credentials 指令僅部分支援進階叢集。下表列出支援和不支援的指令變化:

指令 說明 支援
gkectl update credentials certificate-authorities rotate 輪替憑證授權單位。 支援
gkectl update credentials certificate-authorities status (預覽) 查看憑證授權單位輪替狀態。 支援
gkectl update credentials certificate-authorities update-kubeconfig 下載含有最新用戶端憑證的 kubeconfig 檔案。 支援
gkectl update credentials cloudauditlogging 更新 Cloud 稽核記錄憑證。 不支援
gkectl update credentials componentaccess 更新使用 Google Distributed Cloud for VMware 建立的叢集元件存取服務帳戶金鑰憑證。 支援
gkectl update credentials f5bigip 更新 F5 BIG-IP 負載平衡器憑證。 不需要
gkectl update credentials ksa-signing-key rotate 輪替 Kubernetes 服務帳戶 (KSA) 權杖簽署金鑰。 不支援
gkectl update credentials ksa-signing-key status 查看進行中的 KSA 權杖簽署金鑰輪替狀態。 不支援
gkectl update credentials 更新叢集憑證。 支援
gkectl update credentials privateregistry 更新叢集的私有登錄檔憑證。 支援
gkectl update credentials register 更新註冊服務帳戶金鑰憑證。 支援
gkectl update credentials sakeys 更新叢集的服務帳戶金鑰憑證。 支援
gkectl update credentials stackdriver (預先發布版) 更新 Google Cloud Observability 憑證。 支援
gkectl update credentials vsphere 更新叢集的 vSphere 憑證。 支援

如需進階叢集支援或不支援的 Google Distributed Cloud for VMware 功能和特性完整清單,請參閱「執行進階叢集時的差異」。