프로젝트 범위 리소스


구성 커넥터는 프로젝트, 폴더 또는 조직 수준에서 리소스를 관리할 수 있습니다. 구성 커넥터는 리소스를 생성할 위치를 결정하기 위해 먼저 리소스 사양에서 범위 정의 필드를 확인한 후 이를 찾을 수 없는 경우범위 정의 주석을 확인합니다.

projectRef 필드 지정

대부분의 프로젝트 범위 구성 커넥터 리소스는 CRD 사양에서 projectRef라는 필드를 지원합니다. 이 필드를 사용하여 리소스를 만들려는 Google Cloud 프로젝트를 지정하세요.

Google Cloud 프로젝트가 Project CRD와 동일한 클러스터에서 관리되는 경우 프로젝트를 Kubernetes 리소스 참조로 지정할 수 있습니다.

...
spec:
  projectRef:
    name: PROJECT_RESOURCE_NAME
    namespace: PROJECT_RESOURCE_NAMESPACE
...

이 접근 방식을 사용하면 구성 커넥터를 사용하고 단일 적용 작업으로 하위 리소스가 포함된 Google Cloud 프로젝트를 만들 수 있습니다. 프로젝트 Kubernetes 리소스가 프로젝트 범위 리소스와 동일한 Kubernetes 네임스페이스에 있는 경우 네임스페이스 필드는 선택사항입니다.

Google Cloud 프로젝트가 동일한 클러스터에서 Kubernetes 리소스로 관리되지 않는 경우 external 필드를 사용하여 프로젝트 ID를 직접 지정할 수 있습니다. 값의 정확한 형식은 리소스 유형에 따라 다를 수 있습니다. 가장 일반적인 두 가지 형식은 'PROJECT_ID' 및 'projects/PROJECT_ID'입니다. 아래에서 'projects/PROJECT_ID'의 예시를 참조하세요.

...
spec:
  projectRef:
    external: "projects/PROJECT_ID"
...

리소스 구성에 주석 달기

구성 커넥터 리소스가 프로젝트 범위이지만 projectRef 필드를 지원하지 않는 경우 project-id 주석을 사용하여 프로젝트 ID를 리소스 구성에 설정할 수 있습니다.

...
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
...

다음은 이 주석이 포함된 FooBar 리소스의 YAML이 어떻게 표시되는지를 보여주는 예시입니다.

apiVersion: foo.cnrm.cloud.google.com/v1beta1
kind: FooBar
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: foobarname

네임스페이스 구성에 주석 달기

Kubernetes 네임스페이스에 주석을 추가하여 새로 생성된 리소스의 기본 프로젝트 ID를 설정할 수 있습니다. 자체 구성에 이 주석이 명시적으로 설정된 리소스가 네임스페이스에 있는 경우 리소스 수준 주석이 네임스페이스 수준의 주석을 덮어씁니다.

명령줄을 사용하여 네임스페이스에 주석을 표시하려면 다음 명령어를 실행합니다.

kubectl annotate namespace NAMESPACE_NAME cnrm.cloud.google.com/project-id=PROJECT_ID

다음을 바꿉니다.

  • NAMESPACE_NAME: 네임스페이스 이름
  • PROJECT_ID: Google Cloud 프로젝트 ID

또는 주석을 포함하는 YAML 매니페스트를 적용할 수 있습니다. 아래 YAML을 파일에 복사합니다.

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: NAMESPACE_NAME

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • NAMESPACE_NAME: 네임스페이스 이름

파일을 만든 후 클러스터에 적용합니다.

네임스페이스 이름을 프로젝트 ID로 사용

리소스 또는 네임스페이스 모두 프로젝트 ID가 지정되지 않았으면 구성 커넥터에서 네임스페이스 이름이 프로젝트 ID로 사용됩니다. 이 기본 동작은 구성 커넥터에서 지원되지만 프로젝트 ID의 암시적 기본값이 혼동될 수 있으므로 권장되지 않습니다.