5.6. CSV(클러스터 서비스 버전) 생성

ClusterServiceVersion 오브젝트에서 정의하는 CSV(클러스터 서비스 버전)는 클러스터에서 Operator를 실행할 때 OLM(Operator Lifecycle Manager)을 지원하는 Operator 메타데이터에서 생성되는 YAML 매니페스트입니다. 로고, 설명, 버전과 같은 정보로 사용자 인터페이스를 채우는 데 사용되는 Operator 컨테이너 이미지와 함께 제공되는 메타데이터입니다. 또한 필요한 RBAC 규칙 및 관리하거나 사용하는 CR(사용자 정의 리소스)과 같이 Operator를 실행하는 데 필요한 기술 정보의 소스이기도 합니다.

Operator SDK에는 수동 정의 YAML 매니페스트 및 Operator 소스 파일에 포함된 정보를 사용하여 사용자 지정된 현재 Operator 프로젝트의 CSV를 생성하는 generate csv 하위 명령이 포함되어 있습니다.

CSV 생성 명령을 사용하면 Operator에서 OLM과 상호 작용하거나 메타데이터를 카탈로그 레지스트리에 게시하는 데 전문적인 OLM 지식을 보유한 Operator 작성자가 필요하지 않습니다. 또한 새로운 Kubernetes 및 OLM 기능이 구현되면서 시간이 지남에 따라 CSV 사양이 변경될 수 있으므로 Operator SDK는 앞으로의 새로운 CSV 기능을 처리할 수 있도록 업데이트 시스템을 쉽게 확장할 수 있습니다.

CSV 버전은 Operator 버전과 동일하며 Operator 버전을 업그레이드하면 새 CSV가 생성됩니다. Operator 작성자는 --csv-version 플래그를 사용하여 제공된 의미 체계 버전이 있는 CSV에 Operator 상태를 캡슐화할 수 있습니다.

$ operator-sdk generate csv --csv-version <version>

이 작업은 멱등이며 새 버전이 제공되거나 YAML 매니페스트 또는 소스 파일이 변경된 경우에만 CSV 파일을 업데이트합니다. Operator 작성자는 CSV 매니페스트의 대부분의 필드를 직접 수정할 필요가 없습니다. 수정이 필요한 사항은 이 가이드에 정의되어 있습니다. 예를 들어 CSV 버전은 metadata.name 에 포함되어야 합니다.

5.6.1. CSV 생성 작동 방식

Operator 프로젝트의 deploy/ 디렉터리는 Operator 배포에 필요한 모든 매니페스트의 표준 위치입니다. Operator SDK는 deploy/ 의 매니페스트의 데이터를 사용하여 CSV(클러스터 서비스 버전)를 작성할 수 있습니다.

다음 명령은 다음과 같습니다.

$ operator-sdk generate csv --csv-version <version>

기본적으로 CSV YAML 파일을 deploy/olm-catalog/ 디렉터리에 작성합니다.

CSV를 생성하려면 정확히 세 가지 유형의 매니페스트가 필요합니다.

  • operator.yaml
  • *_{crd,cr}.yaml
  • RBAC 역할 파일(예: role.yaml)

Operator 작성자는 이러한 파일에 대한 다양한 버전 지정 요구 사항을 가질 수 있으며 deploy/olm-catalog/csv-config.yaml 파일에 포함된 특정 파일을 구성할 수 있습니다.

워크플로

기존 CSV가 감지되고 모든 구성 기본값이 사용되는지 여부에 따라 다음 중 csv 하위 명령을 생성합니다.

  • YAML 매니페스트 및 소스 파일에서 사용 가능한 데이터를 사용하여 현재와 동일한 위치 및 명명 규칙을 사용하여 새 CSV를 생성합니다.

    1. 업데이트 메커니즘은 deploy/ 에서 기존 CSV를 확인합니다. 찾을 수 없는 경우 여기에서 캐시 라고 하는 ClusterServiceVersion 오브젝트를 생성하고 Kubernetes API ObjectMeta 와 같은 Operator 메타데이터에서 쉽게 파생된 필드를 채웁니다.
    2. 업데이트 메커니즘은 Deployment 리소스와 같이 CSV에서 사용하는 데이터가 포함된 매니페스트를 위해 deploy/ 를 검색하고 이 데이터와 함께 캐시에 적절한 CSV 필드를 설정합니다.
    3. 검색이 완료되면 채워진 모든 캐시 필드가 CSV YAML 파일에 다시 작성됩니다.

또는 다음을 수행합니다.

  • YAML 매니페스트 및 소스 파일에서 사용 가능한 데이터를 사용하여 현재 사전 정의된 위치에서 기존 CSV를 업데이트합니다.

    1. 업데이트 메커니즘은 deploy/ 에서 기존 CSV를 확인합니다. 하나의 파일이 발견되면 CSV YAML 파일 콘텐츠가 CSV 캐시로 마샬링됩니다.
    2. 업데이트 메커니즘은 Deployment 리소스와 같이 CSV에서 사용하는 데이터가 포함된 매니페스트를 위해 deploy/ 를 검색하고 이 데이터와 함께 캐시에 적절한 CSV 필드를 설정합니다.
    3. 검색이 완료되면 채워진 모든 캐시 필드가 CSV YAML 파일에 다시 작성됩니다.
참고

CSV의 설명 및 생성되지 않은 기타 CSV 부분은 유지해야 하므로 개별 YAML 필드가 전체 파일이 아닌 덮어쓰기됩니다.