以命名空間模式安裝 Config Connector
本頁面說明如何在命名空間模式下安裝 Config Connector。
以命名空間模式安裝是 Config Connector 安裝作業的延伸。命名空間模式支援管理多個專案,每個專案都有自己的 Google Cloud 身分。
事前準備
如要設定 Config Connector 以命名空間模式執行,請先安裝 Config Connector。
設定 Config Connector,以命名空間模式執行
如要啟用命名空間模式,請完成下列步驟:
將下列 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
使用
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 服務帳戶之間建立繫結:
建立 IAM 服務帳戶。如果您有現有的服務帳戶,可以使用該帳戶,不必建立新的服務帳戶。使用
gcloud
執行下列指令,建立服務帳戶:gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
更改下列內容:
- NAMESPACE_GSA,並繫結至命名空間的 Google 服務帳戶 (GSA) 名稱。
- 將 HOST_PROJECT_ID 替換為主專案的 ID。
如要進一步瞭解如何建立服務帳戶,請參閱「建立及管理服務帳戶」。
在受管理專案中,為 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。
在 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 替換為您的命名空間。
授予 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
,請完成下列步驟:
將下列 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。
使用
kubectl
將檔案套用至叢集:kubectl apply -f configconnectorcontext.yaml
執行下列指令,確認 Config Connector 運算子是否已為您的命名空間建立 Kubernetes 服務帳戶 (使用
kubectl
):kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE -n cnrm-system
將 NAMESPACE 替換成命名空間名稱。
執行下列指令,確認命名空間的 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 資源。
如要找出命名空間中的所有 Config Connector 資源,請列出每個 Config Connector 自訂資源定義的所有資源。
kubectl get gcp -n NAMESPACE
將 NAMESPACE 替換成命名空間名稱。
如要移除所有 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
後續步驟
- 開始使用 Config Connector。
- 瞭解 Config Connector 的最佳做法。