手動安裝 Config Connector
本頁面說明如何手動安裝 Config Connector。手動安裝是彈性選項,可讓您控管安裝的版本和升級時間。
如要進一步瞭解不同的安裝選項,請參閱「選擇安裝類型」。
在大多數情況下,建議您以命名空間模式手動安裝 Config Connector。替代做法是使用叢集模式。命名空間模式更具擴充性,且權限隔離效果更佳,非常適合多租戶用途,或管理多個專案的資源。
如果您偏好使用單一叢集範圍服務帳戶,請改為按照以叢集模式安裝的說明操作。
事前準備
手動安裝 Config Connector 運算子前,請完成下列步驟:
- 建立或找出尚未安裝 Config Connector,且已啟用 Workload Identity 和 Kubernetes Engine Monitoring 的 GKE 叢集。
- 設定
kubectl以連線至叢集。
安裝 Config Connector 運算子
Config Connector 會使用 Kubernetes 運算子,確保安裝作業維持在最新狀態。無論您是以命名空間模式或叢集模式安裝 Config Connector,都必須安裝運算子。
如要安裝 Config Connector 運算子,請完成下列步驟:
下載最新的 Config Connector 運算子 .tar 檔案:
gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz將 tar 檔案解壓縮:
tar zxvf release-bundle.tar.gz在叢集上安裝 Config Connector 運算子:
Autopilot
kubectl apply -f operator-system/autopilot-configconnector-operator.yaml標準
kubectl apply -f operator-system/configconnector-operator.yaml如要設定 Config Connector 運算子以命名空間模式執行,請完成下列步驟:
建立名為
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 -f configconnector.yaml
以命名空間模式安裝 Config Connector
在以下各節中,您安裝 Config Connector 的專案是「主專案」。您可讓 Config Connector 管理資源的其他專案是受管理專案。 如果您希望 Config Connector 只在與叢集相同的專案中建立資源,主專案和代管專案可以是同一個專案。
建立命名空間
執行下列指令,建立新的命名空間:
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 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"授予 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,請完成下列步驟:
建立名為
configconnectorcontext.yaml的資訊清單,並在其中加入下列內容:apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnectorContext metadata: # you need 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將資訊清單套用至叢集:
kubectl apply -f configconnectorcontext.yaml執行下列指令,確認 Config Connector 運算子是否為命名空間建立 Kubernetes 服務帳戶:
kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE -n cnrm-system確認命名空間的 Config Connector 控制器 Pod 是否正在執行:
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如果 Config Connector 控制器正在執行,輸出內容會類似以下內容:
cnrm-controller-manager-abcdefghijk-0 condition met.
停止管理命名空間中的資源
如要讓 Config Connector 停止管理命名空間中的資源,請移除該命名空間中的所有 Config Connector 資源和 ConfigConnectorContext 物件。
如要找出命名空間中的所有 Config Connector 資源,請列出每個 Config Connector 自訂資源定義的所有資源。
kubectl get gcp -n NAMESPACE這個指令的輸出內容會列出所有自訂資源定義 (CRD),代表該命名空間中由 Config Connector 管理的資源,包括該資源的名稱和 Kubernetes 種類。
如要移除所有 Config Connector 資源,請針對上一個步驟輸出內容中的每個資源,執行下列指令:
kubectl delete -n NAMESPACE KIND NAME更改下列內容:
KIND:資源的 Kubernetes 種類。NAME:資源名稱。
刪除命名空間中的
ConfigConnectorContext物件。kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com
解除安裝 Config Connector
如要解除安裝 Config Connector,請完成下列步驟:
如要移除 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 會透過身分與存取權管理 (IAM) 服務帳戶進行驗證,並使用 GKE 的工作負載身分聯盟,將 IAM 服務帳戶與 Kubernetes 服務帳戶繫結,藉此建立及管理 Google Cloud 資源。
如要建立身分,請完成下列步驟:
建立 IAM 服務帳戶。如要使用現有的服務帳戶,請使用該帳戶並略過這個步驟:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME將 SERVICE_ACCOUNT_NAME 換成服務帳戶的名稱。
如要進一步瞭解如何建立服務帳戶,請參閱「建立及管理服務帳戶」。
授予專案中 IAM 服務帳戶的提升權限:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/editor"將 PROJECT_ID 替換為專案 ID。
在 IAM 服務帳戶與 Config Connector 執行的預先定義 Kubernetes 服務帳戶之間,建立 IAM 政策繫結:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager]" \ --role="roles/iam.workloadIdentityUser"
設定 Config Connector
如要完成安裝,請為 ConfigConnector
CustomResource 建立設定檔,然後使用 kubectl apply 指令套用該設定檔。Config Connector Operator 會在叢集中安裝Google Cloud 資源 CRD 和 Config Connector 元件。
如要將運算子設定為叢集模式,請完成下列步驟:
-
將下列 YAML 檔案複製到名為
configconnector.yaml的檔案: 取代下列項目:# configconnector.yaml apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only one # ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster googleServiceAccount: "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" # Setting `stateIntoSpec` to `Absent` is recommended. It means setting `cnrm.cloud.google.com/state-into-spec` # annotation to `absent` for all Config Connector resources created in the cluster in the future. # It prevents Config Connector from populating unspecified fields into the spec. stateIntoSpec: Absent
SERVICE_ACCOUNT_NAME改為服務帳戶名稱。PROJECT_ID為您的專案 ID。
-
使用
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改成您的 Google Cloud 專案 ID。
資料夾
如要在特定資料夾中建立資源,請執行下列指令:
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 CRD 和控制器元件,請執行下列指令:
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 運算子,請執行下列指令:
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
系統不支援完全降級 Config Connector。如要降級 Config Connector 運算子和 CRD,請解除安裝並重新安裝 Config Connector,然後重新套用資源。
在 Config Connector 1.123.1 以上版本中,您可以針對使用命名空間模式的安裝項目,回溯運算子版本。在每個含有要復原運算子的命名空間中,將 ConfigConnectorContext 物件中的 spec.version 欄位設為先前的 Config Connector 版本。
您最多可以將 Config Connector 控制器回溯 3 個次要版本。您一律必須復原到特定次要版本的最新修補程式版本。
從非電信業者安裝升級
Config Connector 1.33.0 以上版本僅支援透過 GKE 外掛程式或運算子安裝。
如要升級至運算子 (並保留所有 Config Connector 資源),您必須移除 CRD 以外的所有 Config Connector 系統元件,然後安裝運算子。
執行下列指令,移除 Config Connector 系統非 CRD 元件:
kubectl delete sts,deploy,po,svc,roles,clusterroles,clusterrolebindings --all-namespaces -l cnrm.cloud.google.com/system=true --wait=true kubectl delete validatingwebhookconfiguration abandon-on-uninstall.cnrm.cloud.google.com --ignore-not-found --wait=true kubectl delete validatingwebhookconfiguration validating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true kubectl delete mutatingwebhookconfiguration mutating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
從外掛程式切換為手動安裝
以外掛程式形式安裝時,Config Connector 的版本會直接與安裝的 GKE 版本綁定。
手動安裝可加快更新速度,但需要手動升級。
如要切換安裝方法並安全保留資源,請完成下列步驟:
停用外掛程式,但不要刪除任何
ConfigConnector或ConfigConnectorContext物件:gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLED將
CLUSTER_NAME替換為您安裝 Config Connector 的叢集名稱。-
為避免發生潛在的 CRD 驗證錯誤 (例如
KNV2009: Invalid value: "v1beta1": must appear in spec.versions),所選手動運算子版本必須與您用於外掛程式的版本相同或更新。降級手動運算子版本可能會導致錯誤 (例如 KNV2009),因為 GKE 外掛程式可能已將特定 CRD 升級至較新的 Config Connector 版本。
後續步驟
- 開始使用 Config Connector。
- 瞭解 Config Connector 的最佳做法。