リソース参照の作成

Config Connector で作成された Google Cloud リソースは、他のリソースを参照できます。Config Connector は、リソース参照でこれらの関係を定義します。このトピックでは、参照を使用してリソースを作成する方法について説明します。

参照のタイプ

Config Connector では、参照は依存関係またはリンクになる場合があります。

依存関係
依存関係参照は、Config Connector リソースに必要な既存の Google Cloud リソースを参照します。たとえば、ネットワークのないファイアウォール ルールはありえません。
関係
リンク参照は、独立したリソースを結び付けるものです。たとえば、プロジェクトを請求先アカウントに関連付けることができます。

リソース参照を指定する

リソース参照を、リソースの spec で指定します。フィールドの名前は、リソースの短い名前の後に Ref が付いたものです。例:

  • topic という名前の PubSubTopic への参照は topicRef です。
  • bucket という名前の StorageBucket への参照は bucketRef です。

参照は、単一のフィールド(name)を持つオブジェクトです。resourceRef のリソースは参照の名前に置き換えられます。

次の YAML ファイルは、myTopic という名前の PubSubTopic を参照する Pub/Sub PubSubSubscription を記述しています。

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

Pub/Sub の例

Pub/Sub トピックの作成

この例では、PubSubTopic に依存する PubSubSubscription を作成します。

  1. 次の対象を pubsub-topic.yaml というファイルにコピーします。

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
    name: TOPIC_NAME
    

    TOPIC_NAME を目的の PubSubTopic 名に置き換えます。

    たとえば、myTopic という名前のトピックを作成するには、次の YAML ファイルを使用します。

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
      name: myTopic
    
  2. kubectl applyPubSubTopic を作成します。

    kubectl --namespace CC_NAMESPACE apply -f pubsub-topic.yaml

    CC_NAMESPACE は、リソースを管理するNamespace Config Connector に置き換えます。

Pub/Sub サブスクリプションの作成

  1. 以下のコードを「pubsub-subscription.yaml」というファイルにコピーします。

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

    TOPIC_NAME は、手順 1 で使用した PubSubTopic 名に置き換えます。たとえば、前に作成したトピック myTopic を参照する YAML は次のとおりです。

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubSubscription
    metadata:
      name: pubsubsubscription-referencing-topic
    spec:
      topicRef:
        name: myTopic
    
  2. kubectl applyPubSubSubscription を作成します。

    kubectl --namespace CC_NAMESPACE apply -f pubsub-subscription.yaml 

    CC_NAMESPACE は、リソースを管理するNamespace Config Connector に置き換えます。

外部参照

Config Connector では、管理していないリソースを参照できます。これは、外部参照と呼ばれます。たとえば、下記の ComputeURLMap は、test-backendservice という名前の BackendService を参照しています。

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 と IAMPolicyMemor の外部参照

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

external フィールドで使用できる形式については、リファレンス ドキュメントをご覧ください。IAMPolicy ページと IAMPolicyMember ページには、サポートされているすべてのリソースで使用できる形式が記載されています。形式は、サポートされるリソース テーブルの「外部参照形式」の列に記載されています。個々のリソースのリファレンス ページ(PubSubTopic など)に移動して、リソースのサマリー テーブルの「IAM 外部参照形式」行に記載されている値を確認することもできます。

名前空間をまたぐ参照

Config Connector を使用すると、リソースが他の名前空間のリソースを参照できます。ただし、Config Connector が namespaced-mode でインストールされている場合は、Config Connector に他の権限を付与して、名前空間をまたぐ参照を許可する必要があります。

たとえば、NAMESPACE_B のリソースを参照する NAMESPACE_A にリソースを作成する場合は、次の RoleBinding を作成する必要があります。

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  namespace: NAMESPACE_B
  name: allow-references-from-NAMESPACE_A
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cnrm-viewer
subjects:
- kind: ServiceAccount
  name: cnrm-controller-manager-NAMESPACE_A
  namespace: cnrm-system

次のステップ

  • リソースのリファレンスを参照して、Config Connector がサポートするリソースを確認してください。

  • Config Connector クラスタで Secret へのリソース参照を使用する方法をご覧ください。