在命名空间模式下安装 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 以管理命名空间中的资源
在以下部分中,您安装配置连接器的 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。
- 将 NAMESPACE_GSA 替换为绑定到命名空间的 Google 服务账号的名称。
- 将 HOST_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" \ --project HOST_PROJECT_ID
请替换以下内容:
- 将 HOST_PROJECT_ID 替换为您的宿主项目 ID。
- 将 NAMESPACE_GSA 替换为绑定到命名空间的 Google 服务账号的名称。
- 将 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"
替换以下内容:
- 将 HOST_PROJECT_ID 替换为您的宿主项目 ID。
- 将 NAMESPACE_GSA 替换为绑定到命名空间的 Google 服务账号的名称。
创建 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
请勿按照以下步骤来卸载 配置控制器 集群。
使用 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 的最佳实践。