以命名空间模式安装 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 替换为命名空间的名称。
创建身份
创建 Identity and Access Management (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 可观测性的权限。
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 资源,您需要配置 Config Connector 以监视命名空间,具体方法是在要使用的命名空间中添加 ConfigConnectorContext 对象。
要创建 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使用
kubectl验证 Config Connector Operator 是否为您的命名空间创建了 Kubernetes 服务账号,运行以下命令:kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE -n cnrm-system将 NAMESPACE 替换为您的命名空间名称。
使用
kubectl验证 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将 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 Operator,请运行以下命令:
kubectl delete -f operator-system/configconnector-operator.yaml --wait=true
后续步骤
- Config Connector 使用入门。
- 了解 Config Connector 的最佳实践。