以命名空間模式安裝 Config Connector


本頁面說明如何在命名空間模式下安裝 Config Connector。

以命名空間模式安裝是 Config Connector 安裝作業的延伸。命名空間模式支援管理多個專案,每個專案都有自己的 Google Cloud 身分。

事前準備

如要設定 Config Connector 以命名空間模式執行,請先安裝 Config Connector

設定 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 resource installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
      mode: namespaced
      stateIntoSpec: Absent
    
  2. 使用 kubectl apply 將設定套用至叢集:

    kubectl apply -f configconnector.yaml
    

設定 Config Connector,管理命名空間中的資源

在下列各節中,安裝 Config Connector 的 Google Cloud 專案稱為「主專案」HOST_PROJECT_ID。您用來管理資源的其他專案稱為「受管理專案」MANAGED_PROJECT_ID。如果您只打算使用 Config Connector 在與叢集相同的專案中建立 Google Cloud 資源,這些專案可以是同一個。

建立命名空間

如果您已有命名空間可用於整理Google Cloud 資源,可以略過這個步驟。

執行下列指令,使用 kubectl 建立新的命名空間:

kubectl create namespace NAMESPACE

NAMESPACE 替換為命名空間的名稱。

建立身分

建立身分與存取權管理 (IAM) 服務帳戶,並在 IAM 服務帳戶與 Config Connector Kubernetes 服務帳戶之間建立繫結:

  1. 建立 IAM 服務帳戶。如果您有現有的服務帳戶,可以使用該帳戶,不必建立新的服務帳戶。使用 gcloud 執行下列指令,建立服務帳戶:

    gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
    

    更改下列內容:

    • NAMESPACE_GSA,並繫結至命名空間的 Google 服務帳戶 (GSA) 名稱。
    • HOST_PROJECT_ID 替換為主專案的 ID。

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

  2. 受管理專案中,為 IAM 服務帳戶授予提升的權限。

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

    MANAGED_PROJECT_ID 替換為受管理專案的 ID。

  3. 在 IAM 服務帳戶與 Config Connector Kubernetes 服務帳戶之間建立 IAM 政策繫結。執行下列 gcloud 指令,繫結服務帳戶:

    gcloud iam service-accounts add-iam-policy-binding \
        NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com \
        --member="serviceAccount:HOST_PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager-NAMESPACE]" \
        --role="roles/iam.workloadIdentityUser"
    

    NAMESPACE 替換為您的命名空間。

  4. 授予 IAM 服務帳戶權限,將 Prometheus 指標發布至主機專案的 Google Cloud Observability。

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    

建立 ConfigConnectorContext

如要建立 Google Cloud 資源,您需要在要使用的命名空間中新增 ConfigConnectorContext 物件,藉此設定 Config Connector 監控命名空間。

如要建立 ConfigConnectorContext,請完成下列步驟:

  1. 將下列 YAML 資訊清單複製到名為 configconnectorcontext.yaml 的檔案:

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnectorContext
    metadata:
      # you can only have one ConfigConnectorContext per namespace
      name: configconnectorcontext.core.cnrm.cloud.google.com
      namespace: NAMESPACE
    spec:
      googleServiceAccount: "NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com"
      stateIntoSpec: Absent
    

    更改下列內容:

    • NAMESPACE 替換為命名空間名稱。
    • NAMESPACE_GSA 改為繫結至命名空間的 Google 服務帳戶名稱。
    • HOST_PROJECT_ID 替換為主專案的 ID。
  2. 使用 kubectl 將檔案套用至叢集:

    kubectl apply -f configconnectorcontext.yaml
    
  3. 執行下列指令,確認 Config Connector 運算子是否已為您的命名空間建立 Kubernetes 服務帳戶 (使用 kubectl):

    kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE  -n cnrm-system
    

    NAMESPACE 替換成命名空間名稱。

  4. 執行下列指令,確認命名空間的 Config Connector 控制器 Pod 正在執行 kubectl

    kubectl wait -n cnrm-system \
        --for=condition=Ready pod \
        -l cnrm.cloud.google.com/component=cnrm-controller-manager \
        -l cnrm.cloud.google.com/scoped-namespace=NAMESPACE
    

    NAMESPACE 替換成命名空間名稱。

    如果 Config Connector 控制器正在執行,輸出內容會類似以下內容:

    cnrm-controller-manager-abcdefghijk-0 condition met.
    

設定 Config Connector,停止管理命名空間中的資源

如要設定 Config Connector,使其不再管理命名空間,請移除命名空間中的所有 Config Connector 資源,並刪除命名空間中的 ConfigConnectorContext

移除命名空間中的 Config Connector 資源

如要完成移除「ConfigConnectorContext」的程序,請從命名空間中移除所有 Config Connector 資源。

  1. 如要找出命名空間中的所有 Config Connector 資源,請列出每個 Config Connector 自訂資源定義的所有資源。

    kubectl get gcp -n NAMESPACE
    

    NAMESPACE 替換成命名空間名稱。

  2. 如要移除所有 Config Connector 資源,請針對上一個步驟輸出內容中的每個資源發出刪除指令。

    kubectl delete -n NAMESPACE KIND NAME
    

    更改下列內容:

    • NAMESPACE:命名空間名稱
    • KIND:在上一個步驟中探索到的資源類型
    • NAME:在上一步中探索到的資源名稱

移除 ConfigConnectorContext

如要設定 Config Connector,使其不再管理命名空間中的 Config Connector 資源,請刪除命名空間中的 ConfigConnectorContext

  kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com

NAMESPACE 替換成命名空間名稱。

您必須先從命名空間中移除所有 Config Connector 資源,才能完成 ConfigConnectorContext 的刪除作業。

解除安裝 Config Connector

請勿使用下列步驟解除安裝Config Controller 叢集。

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

kubectl delete ConfigConnectorContext --all -A –wait=false

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

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

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

後續步驟