5.6.9. CRD(사용자 정의 리소스 정의) 이해

Operator에서 사용할 수 있는 CRD(사용자 정의 리소스 정의)에는 두 가지 유형이 있습니다. 하나는 보유 CRD이고 다른 하나는 의존하는 필수 CRD입니다.

5.6.9.1. 보유 CRD

Operator가 보유한 CRD(사용자 정의 리소스 정의)는 CSV에서 가장 중요한 부분입니다. 이를 통해 Operator와 필수 RBAC 규칙, 종속성 관리 및 기타 Kubernetes 개념 간 관계가 설정됩니다.

Operator는 여러 CRD를 사용하여 개념을 함께 연결하는 것이 일반적입니다(한 오브젝트의 최상위 데이터베이스 구성 및 다른 오브젝트의 복제본 세트 표현 등). 각각은 CSV 파일에 나열되어야 합니다.

표 5.10. 보유 CRD 필드

필드Description필수/선택 사항

Name

CRD의 전체 이름입니다.

필수 항목

Version

해당 오브젝트 API의 버전입니다.

필수 항목

Kind

머신에서 읽을 수 있는 CRD 이름입니다.

필수 항목

DisplayName

사람이 읽을 수 있는 버전의 CRD 이름입니다(예: MongoDB Standalone).

필수 항목

Description

Operator에서 이 CRD를 사용하는 방법에 대한 간단한 설명 또는 CRD에서 제공하는 기능에 대한 설명입니다.

필수 항목

Group

이 CRD가 속하는 API 그룹입니다(예: database.example.com).

선택 사항

Resources

CRD에는 하나 이상의 Kubernetes 오브젝트 유형이 있습니다. 이러한 항목은 resources 섹션에 나열되어 문제 해결에 필요할 수 있는 오브젝트 또는 애플리케이션에 연결하는 방법을 사용자에게 알립니다(예: 데이터베이스를 표시하는 서비스 또는 수신 규칙).

오케스트레이션하는 모든 항목의 전체 목록이 아닌, 사용자에게 중요한 오브젝트만 나열하는 것이 좋습니다. 예를 들어 사용자가 수정할 수 없는 내부 상태를 저장하는 구성 맵은 나열하지 않도록 합니다.

선택 사항

SpecDescriptors, StatusDescriptors, ActionDescriptors

이러한 설명자는 Operator의 특정 입력 또는 출력에서 최종 사용자에게 가장 중요한 UI를 나타내는 방법입니다. CRD에 사용자가 제공해야 하는 보안 또는 구성 맵의 이름이 있는 경우 여기에서 지정할 수 있습니다. 이러한 항목은 호환되는 UI에서 연결되고 강조됩니다.

설명자에는 세 가지 유형이 있습니다.

  • SpecDescriptors: 오브젝트의 spec 블록에 있는 필드에 대한 참조입니다.
  • StatusDescriptors: 오브젝트의 status 블록에 있는 필드에 대한 참조입니다.
  • ActionDescriptors: 오브젝트에서 수행할 수 있는 작업에 대한 참조입니다.

모든 설명자에는 다음 필드를 사용할 수 있습니다.

  • DisplayName: 사람이 읽을 수 있는 Spec,Status 또는 Action 이름입니다.
  • 설명: Spec,Status 또는 Action 및 Operator에서 사용하는 방법에 대한 간단한 설명입니다.
  • 경로: 이 설명자에서 설명하는 오브젝트의 점으로 구분된 필드 경로입니다.
  • X-Descriptors: 이 설명자의 "기능"과 사용할 UI 구성 요소를 결정하는 데 사용됩니다. OpenShift Container Platform의 표준 React UI X-Descriptor 목록openshift/console 프로젝트를 참조하십시오.

일반적으로 설명자에 대한 자세한 내용은 openshift/console 프로젝트를 참조하십시오.

선택 사항

다음 예제에서는 보안 및 구성 맵의 형태로 일부 사용자 입력이 필요하고 서비스, 상태 저장 세트, Pod, 구성 맵을 오케스트레이션하는 MongoDB Standalone CRD를 보여줍니다.

보유 CRD의 예

      - displayName: MongoDB Standalone
        group: mongodb.com
        kind: MongoDbStandalone
        name: mongodbstandalones.mongodb.com
        resources:
          - kind: Service
            name: ''
            version: v1
          - kind: StatefulSet
            name: ''
            version: v1beta2
          - kind: Pod
            name: ''
            version: v1
          - kind: ConfigMap
            name: ''
            version: v1
        specDescriptors:
          - description: Credentials for Ops Manager or Cloud Manager.
            displayName: Credentials
            path: credentials
            x-descriptors:
              - 'urn:alm:descriptor:com.tectonic.ui:selector:core:v1:Secret'
          - description: Project this deployment belongs to.
            displayName: Project
            path: project
            x-descriptors:
              - 'urn:alm:descriptor:com.tectonic.ui:selector:core:v1:ConfigMap'
          - description: MongoDB version to be installed.
            displayName: Version
            path: version
            x-descriptors:
              - 'urn:alm:descriptor:com.tectonic.ui:label'
        statusDescriptors:
          - description: The status of each of the pods for the MongoDB cluster.
            displayName: Pod Status
            path: pods
            x-descriptors:
              - 'urn:alm:descriptor:com.tectonic.ui:podStatuses'
        version: v1
        description: >-
          MongoDB Deployment consisting of only one host. No replication of
          data.