项目范围的资源

Config Connector 可以在项目、文件夹或组织级别管理您的资源。为了让 Config Connector 确定创建 您的资源的位置,它首先会检查资源规范中是否有 范围定义字段 ,如果未找到,则检查是否有 范围定义注解。

指定 projectRef 字段

大多数项目范围的 Config Connector 资源在其 CRD 规范中都支持名为 projectRef 的字段。使用此字段可指定要在哪个 Google Cloud 项目内 创建资源。

如果 Google Cloud 项目也使用 Project CRD 在同一集群中进行管理,您可以将项目指定为 Kubernetes 资源引用:

...
spec:
  projectRef:
    name: PROJECT_RESOURCE_NAME
    namespace: PROJECT_RESOURCE_NAMESPACE
...

通过这种方法,您可以使用 Config Connector,并通过一次应用操作创建 Google Cloud 项目及其子资源。 如果项目 Kubernetes 资源与项目范围的资源位于同一 Kubernetes 命名空间中,则命名空间字段是可选的。

如果 Google Cloud 项目未在同一集群中作为 Kubernetes 资源 进行管理,您可以使用 external 字段直接指定 项目 ID。值的确切格式可能因资源类型而异。最常见的两种格式是“PROJECT_ID”和 “projects/PROJECT_ID”。请参阅下面的 “projects/PROJECT_ID”示例:

...
spec:
  projectRef:
    external: "projects/PROJECT_ID"
...

为资源配置添加注释

如果 Config Connector 资源是项目范围的,但不支持 projectRef 字段,您可以使用 project-id 注解将项目 ID 设置为资源配置:

...
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
...

以下示例展示了具有此注解的资源的 YAML 配置:

apiVersion: SERVICE_NAME.cnrm.cloud.google.com/v1beta1
kind: RESOURCE_KIND
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: RESOURCE_NAME

替换以下内容:

  • SERVICE_NAME:资源的 Google Cloud service name for the resource
  • RESOURCE_KIND:Config Connector 资源的种类
  • PROJECT_ID:您的 Google Cloud 项目 ID
  • RESOURCE_NAME:资源的名称

为命名空间配置添加注释

您可以通过为 Kubernetes 命名空间添加注解,为新创建的资源设置默认项目 ID。如果命名空间中的任何资源在其自己的配置中明确设置了此注解,则资源级注解会覆盖命名空间级注解。

如需使用命令行为命名空间添加注解,请运行以下命令:

kubectl annotate namespace NAMESPACE_NAME cnrm.cloud.google.com/project-id=PROJECT_ID

替换以下内容:

  • NAMESPACE_NAME:您的命名空间名称
  • PROJECT_ID:您的 Google Cloud 项目 ID

或者,您也可以应用包含注解的 YAML 清单。将下面的 YAML 复制到文件中:

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: NAMESPACE_NAME

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • NAMESPACE_NAME:您的命名空间名称

创建文件后,将其应用于您的集群。

使用命名空间名称作为项目 ID

如果资源和命名空间均未指定项目 ID,则 Config Connector 会使用命名空间的名称作为项目 ID。Config Connector 支持此默认行为,但我们不建议这样做,因为项目 ID 的隐式默认值可能会造成混淆。