리소스 참조 만들기


구성 커넥터로 만든 Google Cloud 리소스는 다른 리소스를 참조할 수 있습니다. 구성 커넥터는 리소스 참조를 통해 이러한 관계를 정의합니다. 이 주제에서는 참조가 있는 리소스를 생성하는 방법에 대해 설명합니다.

참조 유형

구성 커넥터에서 참조는 종속 항목 또는 링크일 수 있습니다.

종속 항목
종속 항목 참조는 구성 커넥터 리소스에 필요한 기존 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 예시

PubSubTopic 만들기

이 예에서는 PubSubTopic에 의존하는 PubSubSubscription을 만듭니다.

  1. 다음을 pubsub-topic.yaml 파일에 복사합니다.

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

    TOPIC_NAME을 원하는 PubSubTopic 이름으로 바꿉니다.

    예를 들어 다음 YAML 파일을 사용하여 myTopic이라는 주제를 만들 수 있습니다.

    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를 구성 커넥터가 관리하는 리소스의 네임스페이스로 바꿉니다.

PubSubSubscription 만들기

  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를 구성 커넥터가 관리하는 리소스의 네임스페이스로 바꿉니다.

외부 참조

구성 커넥터는 관리하지 않는 리소스를 참조할 수 있습니다. 이를 외부 참조라고 부릅니다. 예를 들어 아래의 ComputeURLMaptest-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-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:
    kind: Project
    external: projects/test-project

참고 문서를 참조하여 external 필드에 사용할 수 있는 형식을 확인할 수 있습니다. IAMPolicy, IAMPartialPolicy, IAMPolicyMember 페이지에는 지원되는 모든 리소스에 허용되는 형식이 나와 있습니다. 형식은 지원되는 리소스 테이블의 '외부 참조 형식' 열에 나열되어 있습니다. 개별 리소스의 참조 페이지(예: PubSubTopic)로 이동하여 리소스 요약 테이블의 'IAM 외부 참조 형식' 행에 나열된 값을 확인할 수도 있습니다.

교차 네임스페이스 참조

구성 커넥터를 사용하면 리소스가 다른 네임스페이스의 리소스를 참조할 수 있습니다. 하지만 구성 커넥터가 네임스페이스 모드로 설치된 경우 교차 네임스페이스 참조를 허용하려면 구성 커넥터에 추가 권한을 부여해야 합니다.

예를 들어 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

다음 단계

  • 구성 커넥터가 지원하는 리소스에 대해 알아보려면 리소스 참조를 검토하세요.

  • 구성 커넥터 클러스터에서 보안 비밀에 대한 리소스 참조를 사용하는 방법을 확인하세요.