在其他 Kubernetes 發布版本中安裝

本頁面說明如何在 Kubernetes 發行版本 (而非 Google Cloud上的 Google Kubernetes Engine (GKE)) 安裝 Config Connector,例如 GKE on AWS

事前準備

開始之前,請務必先完成下列工作:

安裝 Config Connector

如要在其他 Kubernetes 環境中安裝設定連接器,請先建立或找出 Kubernetes 叢集,然後建立 Identity and Access Management (IAM) 服務帳戶,並在叢集上安裝設定連接器元件。

建立 ClusterRoleBinding

Config Connector 必須先取得建立 Kubernetes 角色所需的權限,才能建立資源。

執行下列指令,確認您可以建立角色:

kubectl auth can-i create roles

如果輸出內容為 yes,請繼續前往「建立身分識別」一節。

如果輸出為 no,請在叢集中建立 ClusterRoleBinding,以便建立角色:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin \
    --user ACCOUNT_EMAIL

ACCOUNT_EMAIL 替換為您用來登入 Cloud 帳單帳戶的電子郵件地址。

輸出內容應包含「cluster-admin-binding created」字樣。如果沒有顯示該片語,請與 Cloud Billing 帳戶或 GKE 叢集管理員聯絡,瞭解權限相關事宜。

建立身分

Config Connector 需要 Cloud Identity 才能與其他資源通訊。如要設定身分,請建立 IAM 服務帳戶服務帳戶金鑰。接著,在執行 Config Connector 的每個叢集中,將金鑰的憑證匯入為 Secret。

在下一組操作說明中,您會將 Google Cloud服務帳戶憑證金鑰匯入 Kubernetes 叢集。一般來說,直接將服務帳戶憑證匯入叢集並不安全,尤其是在同一個叢集中執行第三方或自訂工作負載時。這個方法可能會利用節點到叢集的升級漏洞,透過這個密鑰模擬 Google Cloud 服務帳戶。如果您使用 GKE 叢集,建議使用 Workload Identity Federation for GKE

建立服務帳戶

如要建立服務帳戶,請完成下列步驟:

  1. 建立 IAM 服務帳戶。如果您有現有的服務帳戶,可以使用該帳戶,不必建立新的服務帳戶。

    使用 gcloud CLI 執行下列指令,建立服務帳戶:

     gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    SERVICE_ACCOUNT_NAME 替換為服務帳戶名稱。

    如要進一步瞭解如何建立服務帳戶,請參閱「建立及管理服務帳戶」。

  2. 在專案中為 IAM 服務帳戶授予提升的權限:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/owner"
    

    更改下列內容:

    • PROJECT_ID 改成您的專案 ID。 Google Cloud
    • SERVICE_ACCOUNT_NAME 改為服務帳戶名稱。
  3. 建立服務帳戶金鑰,並將憑證匯出至名為 key.json 的檔案:

    gcloud iam service-accounts keys create --iam-account \
        SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com key.json
    

    更改下列內容:

    • SERVICE_ACCOUNT_NAME 改為服務帳戶名稱。
    • PROJECT_ID 改成您的專案 ID。 Google Cloud

將憑證套用至叢集

如要將憑證套用至要執行 Config Connector 的叢集,請完成下列步驟:

  1. 建立 cnrm-system 命名空間:

    kubectl create namespace cnrm-system
    
  2. 將金鑰的憑證匯入為密鑰。

    kubectl create secret generic SECRET_NAME \
        --from-file key.json \
        --namespace cnrm-system
    

    SECRET_NAME 替換為您要授予 Secret 的名稱。

  3. 從系統中移除憑證:

    rm key.json
    

安裝 Config Connector Operator

請按照下列步驟安裝 Config Connector 運算子:

  1. 下載最新的 Config Connector Operator tar 檔案:

    gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
    
  2. 將 tar 檔案解壓縮:

    tar zxvf release-bundle.tar.gz
    
  3. 在叢集上安裝 Config Connector Operator:

    kubectl apply -f operator-system/configconnector-operator.yaml
    

設定 Config Connector

如要使用運算子設定 Config Connector,請建立 ConfigConnector CustomResource 的設定檔,然後使用 kubectl apply 指令套用該設定檔。

如要使用運算子設定 Config Connector,請按照下列步驟操作:

  1. 將下列 YAML 複製到名為 configconnector.yaml 的檔案中:

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnector
    metadata:
      # the name is restricted to ensure that there is only ConfigConnector
      # instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
      mode: cluster
      credentialSecretName: SECRET_NAME
      stateIntoSpec: Absent
    

    SECRET_NAME 替換為您先前建立的 Secret 名稱。

  2. 使用 kubectl apply 將設定套用至叢集:

    kubectl apply -f configconnector.yaml
    

指定資源的建立位置

Config Connector 可依專案、資料夾或機構整理資源,與使用 Google Cloud整理資源的方式相同。

使用 Config Connector 建立資源前,請務必設定資源的建立位置。為判斷資源的建立位置,Config Connector 會使用資源設定或現有命名空間的註解。詳情請參閱「整理資源」。

如果沒有用於此用途的命名空間,請使用 kubectl 建立命名空間。
kubectl create namespace NAMESPACE

NAMESPACE 替換為命名空間名稱。例如 config-connector

選取分頁,選擇要讓 Config Connector 建立資源的位置。

專案

如要在特定專案中建立資源,請執行下列指令:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID

取代下列項目:

  • NAMESPACE 替換為您的命名空間名稱。
  • PROJECT_ID 改成您的專案 ID。 Google Cloud

資料夾

如要在特定資料夾中建立資源,請執行下列指令:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID

取代下列項目:

  • NAMESPACE 替換為您的命名空間名稱。
  • FOLDER_ID 改成您的 Google Cloud 資料夾 ID。

機構

如要在特定機構中建立資源,請執行下列指令:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID

取代下列項目:

  • NAMESPACE 替換為您的命名空間名稱。
  • ORGANIZATION_ID 改成您的 Google Cloud 機構 ID。

為命名空間加上註解後,Config Connector 會在對應的專案、資料夾或組織中建立資源。如要進一步瞭解 Config Connector 如何使用 Kubernetes 命名空間,請參閱「Kubernetes 命名空間和專案 Google Cloud 」。

驗證安裝

Config Connector 會在名為 cnrm-system 的命名空間中執行所有元件。如要確認 Pod 是否已準備就緒,請執行下列指令:

kubectl wait -n cnrm-system \
      --for=condition=Ready pod --all

如果 Config Connector 安裝正確,輸出內容會類似以下內容:

pod/cnrm-controller-manager-0 condition met

升級 Config Connector

如要升級 Config Connector,請下載並安裝最新版 Config Connector 運算子:

gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml

解除安裝 Config Connector

使用 kubectl delete 移除 Config Connector CRD 和控制器元件:

kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
    --wait=true

如要解除安裝 Config Connector 運算子,請執行下列指令:

kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true

後續步驟