使用 resourceID 字段管理资源


本页面介绍如何通过 resourceID 字段管理资源。

通过 Config Connector,您可以使用不可修改但可选的 resourceID 字段明确指定 Google Cloud 资源的资源 ID,以创建或获取资源。“不可变,但可选”表示您可以选择指定或不指定 resourceID 字段,但是在将清单应用到您的集群后不能更改 resourceID 字段的值。

resourceID 字段提高了为具有用户指定资源 ID 的 Google Cloud 资源的命名的灵活性。使用 Config Connector 资源中的 resourceID 字段,您可以在同一命名空间内不同项目、文件夹、组织或父级资源下,定义具有相同类型、和相同 Google Cloud 资源名称的多个 Config Connector 资源。Google Cloud 资源名称也不受 Kubernetes 对象名称的命名约定的限制。此外,resourceID 字段支持获取具有服务生成的资源 ID 的 Google Cloud 资源。

Config Connector 将命名空间设为资源的“所有者”,以防止它被其他所有者占用。但是,如果您使用的是 resourceID 字段,则可以在同一命名空间下创建具有同一 Google Cloud 资源名称的多个资源。这些资源会引发 Config Connector 无法管理的冲突。您需要手动解决所有冲突。

资源 ID 的类型

在 Config Connector 中,资源 ID 可以由用户指定,也可以由服务生成

用户指定的资源 ID
在资源创建之前由用户确定、指定并传入的资源 ID。您可以使用 resourceID 字段创建或获取具有用户指定资源 ID 的资源。
服务生成的资源 ID
在资源创建过程中由服务生成的资源 ID。在资源创建成功后,用户可以检索此 ID。您可以使用 resourceID 字段获取具有服务生成的资源 ID 的资源。若要创建具有服务生成的资源 ID 的新资源,请勿指定此字段。 请参阅具有服务生成的资源 ID 的资源列表。

指定 resourceID 字段

您可以在资源的 spec 中指定 resourceID 字段。

以下清单介绍了如何为 Pub/Sub 主题指定 resourceID 字段。Config Connector 资源的名称为 pubsub-topic-sample,Pub/Sub 主题的名称为 pubsub-topic-id

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubTopic
metadata:
  name: pubsub-topic-sample
spec:
  resourceID: pubsub-topic-id

使用 resourceID 字段创建资源

创建 BigQuery 数据集

在此示例中,您将使用 Config Connector 和 resourceID 字段来创建新的 BigQuery 数据集。resourceID 字段的值应遵循 BigQuery 数据集的 datasetId 字段的命名约定

  1. 将以下内容复制到名为 bigquery-dataset.yaml 的文件。

      apiVersion: bigquery.cnrm.cloud.google.com/v1beta1
      kind: BigQueryDataset
      metadata:
        name: bigquerydataset-sample-for-creation
      spec:
        resourceID: bigquerydataset_sample_with_resourceid
        defaultTableExpirationMs: 3600000
        description: "BigQuery Dataset Sample with the ResourceID Field"
        friendlyName: bigquerydataset-sample-with-resourceid
        location: US
    
  2. 将 YAML 文件应用到您的集群。

    kubectl apply --namespace CC_NAMESPACE -f bigquery-dataset.yaml

    CC_NAMESPACE 替换为 Config Connector 从其管理资源的命名空间。

  3. 使用 kubectl describe 查看数据集的相关详情。

    kubectl describe --namespace CC_NAMESPACE bigquerydataset bigquerydataset-sample-for-creation

    CC_NAMESPACE 替换为 Config Connector 从其管理资源的命名空间。

使用 resourceID 字段获取资源

使用 resourceID 字段管理 Google Cloud 资源时,Config Connector 会在以下情况获取资源:

  • 该资源具有用户指定的资源 ID,清单中的值和资源名称与现有资源匹配;或者,
  • 该资源具有服务生成的资源 ID。

获取文件夹

如需使用 Config Connector 和 resourceID 字段获取文件夹,请按照以下步骤执行:

  1. 将以下内容复制到名为 folder.yaml 的文件。

        apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
        kind: Folder
        metadata:
          annotations:
            cnrm.cloud.google.com/organization-id: ORG_ID
            # Remove the deletion-policy annotation if it is safe to delete the
            # folder when the resource is deleted from your cluster.
            cnrm.cloud.google.com/deletion-policy: "abandon"
          name: folder-sample-for-acquisition
        spec:
          resourceID: ACQUIRED_FOLDER_ID
          displayName: ACQUIRED_FOLDER_DISPLAY_NAME
    

    替换以下内容:

    • ORG_ID 替换为您的组织的数字 ID。
    • ACQUIRED_FOLDER_ID 替换为待获取的文件夹的数字 ID。
    • ACQUIRED_FOLDER_DISPLAY_NAME 替换为待获取的文件夹的显示名。
  2. 将 YAML 文件应用到您的集群。

    kubectl apply --namespace CC_NAMESPACE -f folder.yaml

    CC_NAMESPACE 替换为 Config Connector 从其管理资源的命名空间。

  3. 使用 kubectl describe 查看文件夹的相关详情。

    kubectl describe --namespace CC_NAMESPACE folder folder-sample-for-acquisition

    CC_NAMESPACE 替换为 Config Connector 从其管理资源的命名空间。

后续步骤

请查看资源引用以了解 Config Connector 支持的资源。