创建资源引用

使用 Config Connector 创建的 Google Cloud 资源可以引用其他资源。Config Connector 通过资源引用定义了这些关系。本主题介绍如何使用引用来创建资源。

引用的类型

在 Config Connector 中,引用可以是依赖项或链接

依赖项
依赖项引用指的是 Config Connector 资源所需的现有 Google Cloud 资源。例如,没有网络就不能存在防火墙规则
链接
链接引用将独立资源连接在一起。例如,项目可以与结算帐号关联。

指定资源引用

您可以在资源的 spec 中指定资源引用。字段名称是资源的简称后跟 Ref。例如:

  • 对名为 topicPubSubTopic 的引用是 topicRef
  • 对名为 bucketStorageBucket 的引用是 bucketRef

引用是具有单个字段 (name) 的对象。resourceRef 中的资源将替换为引用的名称。

以下 YAML 说明了引用名为 myTopicPubSubTopic 的 Pub/Sub PubSubSubscription

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubSubscription
metadata:
  name: pubsubsubscription-referencing-topic
spec:
  topicRef:
    name: myTopic

Pub/Sub 示例

创建 PubSubTopic

在此示例中,您将创建依赖于 PubSubTopicPubSubSubscription

  1. 将以下内容复制到名为 pubsub-topic.yaml 的文件中,并将 [TOPIC_NAME] 替换为所需的 PubSubTopic 名称:
apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubTopic
metadata:
  name: [TOPIC_NAME]

例如,用于创建名为 myTopic 的主题的 YAML 是:

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubTopic
metadata:
  name: myTopic
  1. 使用 kubectl apply 创建 PubSubTopic
kubectl --namespace [CC_NAMESPACE] apply -f pubsub-topic.yaml

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

创建 PubSubSubscription

  1. 将以下内容复制到名为 pubsub-subscription.yaml 的文件中,并将 [TOPIC_NAME] 替换为您在第 1 步中使用的 PubSubTopic 名称:
apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubSubscription
metadata:
  name: pubsubsubscription-referencing-topic
spec:
  topicRef:
    name: [TOPIC_NAME]

例如,引用您先前创建的主题 myTopic 的 YAML 是:

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubSubscription
metadata:
  name: pubsubsubscription-referencing-topic
spec:
  topicRef:
    name: myTopic
  1. 使用 kubectl apply 创建 PubSubSubscription
kubectl --namespace [CC_NAMESPACE] apply -f pubsub-subscription.yaml 

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

外部引用

Config Connector 可以引用它未管理的资源。这些引用称为外部引用。例如,下面的 ComputeURLMap 引用了一个名为 test-backendserviceBackendService

apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeURLMap
metadata:
  name: test-urlmap
spec:
  location: global
  defaultService:
    backendServiceRef:
      external: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/test-backendservice

external 可以接受的值格式取决于资源。请参阅相关文档以了解资源引用中的特定资源。您可以通过阅读资源的 external 字段的说明来了解 external 接受的值。

IAMPolicy 和 IAMPolicyMember 的外部引用

IAMPolicyIAMPolicyMember 也支持“外部引用”。例如,下面的 IAMPolicyMember 引用了项目 ID 为 test-projectProject

apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMPolicyMember
metadata:
  name: test-iampolicymember
spec:
  member: serviceAccount:test-serviceaccount@test-project.iam.gserviceaccount.com
  role: roles/storage.admin
  resourceRef:
    apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
    kind: Project
    external: projects/test-project

请参阅相关文档以了解您要在资源引用中引用的资源。您可以通过查找该资源的“IAM 外部引用格式”属性来了解 external 接受的格式。

后续步骤

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

了解如何在 Config Connector 集群中使用对 Secret 的资源引用。