リソース参照の作成
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_NAME
TOPIC_NAME
を目的のPubSubTopic
名に置き換えます。たとえば、
myTopic
というトピックを作成するには、次の YAML ファイルを使用します。apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: myTopic
kubectl 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_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
kubectl 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 へのリソース参照を使用する方法をご覧ください。