在其他 Kubernetes 發布版本中安裝
本頁面說明如何在 Kubernetes 發行版本 (而非 Google Cloud上的 Google Kubernetes Engine (GKE)) 安裝 Config Connector,例如 GKE on AWS。
事前準備
開始之前,請務必先完成下列工作:
- 選取或建立專案 Google Cloud ,安裝 Config Connector。
- 確認您有權為專案建立及下載服務帳戶。
- 建立或找出尚未安裝 Config Connector 的 Kubernetes 叢集。
安裝 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。
建立服務帳戶
如要建立服務帳戶,請完成下列步驟:
建立 IAM 服務帳戶。如果您有現有的服務帳戶,可以使用該帳戶,不必建立新的服務帳戶。
使用 gcloud CLI 執行下列指令,建立服務帳戶:
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/owner"
更改下列內容:
- 將
PROJECT_ID
改成您的專案 ID。 Google Cloud SERVICE_ACCOUNT_NAME
改為服務帳戶名稱。
- 將
建立服務帳戶金鑰,並將憑證匯出至名為
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 的叢集,請完成下列步驟:
建立
cnrm-system
命名空間:kubectl create namespace cnrm-system
將金鑰的憑證匯入為密鑰。
kubectl create secret generic SECRET_NAME \ --from-file key.json \ --namespace cnrm-system
將 SECRET_NAME 替換為您要授予 Secret 的名稱。
從系統中移除憑證:
rm key.json
安裝 Config Connector Operator
請按照下列步驟安裝 Config Connector 運算子:
下載最新的 Config Connector Operator 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 Operator:
kubectl apply -f operator-system/configconnector-operator.yaml
設定 Config Connector
如要使用運算子設定 Config Connector,請建立 ConfigConnector
CustomResource 的設定檔,然後使用 kubectl apply
指令套用該設定檔。
如要使用運算子設定 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 # instance installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster credentialSecretName: SECRET_NAME stateIntoSpec: Absent
將 SECRET_NAME 替換為您先前建立的 Secret 名稱。
使用
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
後續步驟
- 進一步瞭解如何選擇安裝類型。
- 瞭解如何排解 Config Connector 問題。