리소스

Config Connector에는 커스텀 리소스 정의(CRD) 모음이 포함되어 있습니다. 각 CRD에서 Kubernetes의 Google Cloud 리소스를 구성할 수 있습니다. Google Cloud 리소스를 관리하기 위해 Config Connector에서 여러 Kubernetes 기능을 활용할 수도 있습니다.

이 페이지에서는 Config Connector가 Kubernetes 객체 및 해당 메타데이터를 사용하는 방법을 소개합니다.

Kubernetes 객체 및 Config Connector 리소스

예를 들어 kind: SQLInstanceKubernetes 객체를 만들면 Config Connector가 Cloud SQL 인스턴스를 만듭니다. 이 섹션에서는 Config Connector가 객체 유형을 확장하는 방법에 대해 설명합니다.

사양 및 상태

각 Config Connector 리소스는 SpecStatus를 가진 Kubernetes 개체입니다.

사양
Spec 필드는 Labels를 제외하고 원하는 객체 상태를 정의하는 모든 필드를 포함합니다. Spec의 하위 필드는 연관된 Google Cloud 리소스를 나타냅니다. 하위 필드를 변경하면 Google Cloud 리소스의 값이 의도한 값과 eventual consistency를 갖습니다.
쓰기 가능한 필드의 예는 SQLInstance 리소스의 databaseVersion입니다.
상태
Status 필드는 읽기 전용이며 객체의 현재 상태를 포함합니다. Config Connector는 주기적으로 Google Cloud 리소스에 대한 정보를 읽고 Status을 업데이트합니다. Status.Condition을 보고 리소스의 오류 메시지 또는 준비 상태를 확인합니다.
읽기 전용 Status 필드의 예는 SQLInstance 리소스의 connectionName입니다.

객체 메타데이터

각 Config Connector 리소스에는 메타데이터 필드가 포함됩니다. 이 섹션에서는 Config Connector가 메타데이터 내에서 하위 필드를 사용하는 방법에 대해 설명합니다.

이름
Config Connector 리소스를 만들면 동일한 이름으로 Google Cloud 리소스가 생성됩니다.
네임스페이스
Config Connector 리소스를 생성하는 네임스페이스에 따라 Google Cloud 리소스가 포함된 프로젝트가 결정됩니다. 네임스페이스에 대한 자세한 내용은 Kubernetes 네임스페이스 및 Google Cloud 프로젝트를 참조하세요.
라벨
Config Connector 리소스의 메타데이터 필드에 있는 라벨도 관련 Google Cloud 리소스에 추가됩니다.
또한 Config Connector는 true 값을 가진 managed-by-cnrm 시스템 라벨을 Google Cloud 리소스에 추가합니다.
주석

Config Connector는 Spec에 정의되지 않은 리소스에 대해 추가 작업을 수행할 수 있습니다. 이러한 작업은 metadata.annotations의 하위 필드에 정의되어 있습니다. 주석 값은 반드시 문자열이어야 합니다. Config Connector가 지원하는 주석 유형은 다음 섹션에서 설명합니다.

삭제

기본적으로 Config Connector는 클러스터에서 객체를 삭제한 후 리소스를 삭제합니다. 리소스를 유지하려면 deletion-policy 주석을 설정하세요.

지시문

지시문은 리소스 생성 또는 삭제 이외의 추가 조치를 수행하도록 Config Connector를 구성합니다.

예를 들어 Cloud Storage에서는 객체가 포함된 StorageBucket을 삭제할 수 없습니다. 버킷에 force-destroy 주석을 적용한 다음 버킷을 삭제하면 Config Connector가 버킷 내의 모든 객체를 먼저 삭제한 다음 버킷을 삭제합니다.

예를 들어 force-destroy 지시문은 다음 YAML 스니펫에 선언됩니다.

metadata:
  annotations:
    cnrm.cloud.google.com/force-destroy: "true"

지시문을 지원하는 리소스를 알아보려면 리소스를 참조하세요.

폴더 및 계층 리소스

Config Connector는 Google Cloud 제품의 리소스 관리 외에도 Google Cloud 폴더 및 조직 내에서 리소스 생성 및 관리를 지원합니다. 자세한 정보는 네임스페이스 및 프로젝트를 참조하세요.

액세스 제어에 RBAC 사용

Kubernetes 역할 기반 액세스 제어(RBAC)는 리소스를 보호합니다. RBAC 권한을 할당하여 Google Cloud 리소스 생성을 제어할 수 있습니다. 자세한 정보는 리소스에 대한 액세스 보안을 참조하세요.

상태 조건

Config Connector는 다음 두 목적에 대해 status.condition의 준비 조건을 사용합니다.

  • 리소스가 준비되었을 때 이를 알립니다. 리소스가 조정되었고 준비되었으면 해당 status.condition.statusTrue로 설정됩니다. 리소스가 준비되었는지 확인하려면 리소스 준비 대기를 참조하세요.
  • 추가 오류 또는 정보 표시. 준비 조건에는 리소스 상태에 대해 추가 정보를 제공하는 MessageReason 필드가 포함됩니다.

이벤트

Config Connector 리소스에 대한 중요한 상태 변경사항은 Kubernetes 이벤트로 표시됩니다. 자세한 정보는 이벤트 보기를 참조하세요.

선언적 구성 및 eventual consistency

선언적 구성을 사용하여 원하는 시스템 상태를 정의합니다. 그러면 이 상태에 가능한 한 가깝게 유지하도록 시스템이 일정하게 작동합니다. 자세한 내용은 구성 파일을 사용한 Kubernetes 객체의 선언적 관리를 참조하세요.

Config Connector를 사용하면 종속 관계에 관계없이 임의의 순서로 리소스를 만들고 업데이트할 수 있습니다. GKE는 선언된 구성을 원하는 상태의 eventual consistency로 이동합니다.

예를 들어, 해당 PubSubTopic 전에 PubSubSubscription을 생성하는 경우 Config Connector는 연관된 구독을 생성하기 전에 주제가 만들어질 때까지 기다립니다.

Config Connector 설치가 일치하지 않는 상태로 유지되는 시간은 관리되는 리소스 수 및 유형에 따라 달라집니다. GKE 클러스터에 대한 변경은 일반적으로 수초 내에 수행됩니다. 하지만 Google Cloud 리소스 생성 시간은 리소스 유형에 따라 달라질 수 있습니다. 예를 들어 단일 PubSubTopic은 만들기에 몇 초가 걸립니다. Google Cloud 리소스는 생성되기 까지 일관성에 도달하지 않습니다. 예를 들어 SQLInstanceSQLDatabase를 만들 때 시스템은 데이터베이스를 만드는 몇 분 동안 일치하지 않는 상태입니다.

GKE 및 Config Connector는 업데이트가 수행될 때마다 또는 10분마다 각 리소스를 조정합니다. 조정에 오류가 있는 경우 Config Connector는 지수 백오프로 30초마다 재시도합니다. 해당 리소스의 이벤트에서 오류를 볼 수 있습니다.

다음 단계