リソース参照の作成
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 を作成します。
次の対象を
pubsub-topic.yamlというファイルにコピーします。apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: TOPIC_NAMETOPIC_NAMEを目的のPubSubTopic名に置き換えます。たとえば、
myTopicという名前のトピックを作成するには、次の YAML ファイルを使用します。apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: myTopickubectl applyでPubSubTopicを作成します。kubectl --namespace CC_NAMESPACE apply -f pubsub-topic.yaml
CC_NAMESPACEは、リソースを管理するNamespace Config Connector に置き換えます。
Pub/Sub サブスクリプションの作成
以下のコードを「pubsub-subscription.yaml」というファイルにコピーします。
apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubSubscription metadata: name: pubsubsubscription-referencing-topic spec: topicRef: name: TOPIC_NAMETOPIC_NAMEは、手順 1 で使用したPubSubTopic名に置き換えます。たとえば、前に作成したトピックmyTopicを参照する YAML は次のとおりです。apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubSubscription metadata: name: pubsubsubscription-referencing-topic spec: topicRef: name: myTopickubectl applyでPubSubSubscriptionを作成します。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、IAMPartialPolicy、IAMPolicyMember
IAMPolicy、IAMPartialPolicy、IAMPolicyMemberは、外部参照もサポートしています。たとえば、以下の IAMPolicyMember は、プロジェクト ID test-project で Project を参照しています。
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:
kind: Project
external: projects/test-project
external フィールドが受け入れる形式については、リファレンス ドキュメントをご覧ください。IAMPolicy、IAMPartialPolicy、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 へのリソース参照を使用する方法をご覧ください。