5.11. Operator 번들 검증

Operator 작성자는 Operator SDK에서 bundle validate 명령을 실행하여 Operator 번들의 콘텐츠 및 형식을 검증할 수 있습니다. 원격 Operator 번들 이미지 또는 로컬 Operator 번들 디렉터리에서 명령을 실행할 수 있습니다.

5.11.1. bundle validate 명령 정보

Operator SDK scorecard 명령은 구성 파일 및 테스트 이미지를 기반으로 Operator에서 테스트를 실행할 수 있지만 bundle validate 하위 명령은 콘텐츠 및 구조에 대해 로컬 번들 디렉터리 및 원격 번들 이미지를 검증할 수 있습니다.

bundle validate 명령 구문

$ operator-sdk bundle validate <bundle_dir_or_image> <flags>

참고

bundle validate 명령은 make bundle 명령을 사용하여 번들을 빌드할 때 자동으로 실행됩니다.

번들 이미지는 원격 레지스트리에서 가져와서 검증되기 전에 로컬로 빌드됩니다. 로컬 번들 디렉터리에는 Operator 메타데이터 및 매니페스트가 포함되어야 합니다. 번들 메타데이터 및 매니페스트에는 다음 번들 레이아웃과 유사한 구조가 있어야 합니다.

번들 레이아웃의 예

./bundle
  ├── manifests
  │   ├── cache.my.domain_memcacheds.yaml
  │   └── memcached-operator.clusterserviceversion.yaml
  └── metadata
      └── annotations.yaml

번들 테스트는 오류를 탐지하지 않는 경우 유효성 검사를 통과하고 종료 코드 0 을 사용하여 완료합니다.

출력 예

INFO[0000] All validation tests have completed successfully

테스트가 실패하고 오류가 감지된 경우 종료 코드 1 을 사용하여 완료합니다.

출력 예

ERRO[0000] Error: Value cache.example.com/v1alpha1, Kind=Memcached: CRD "cache.example.com/v1alpha1, Kind=Memcached" is present in bundle "" but not defined in CSV

경고가 감지된 번들 테스트는 오류가 발견되지 않은 경우 종료 코드 0 으로 유효성 검사를 전달할 수 있습니다. 테스트는 오류에서만 실패합니다.

출력 예

WARN[0000] Warning: Value : (memcached-operator.v0.0.1) annotations not found
INFO[0000] All validation tests have completed successfully

bundle validate 하위 명령에 대한 자세한 내용을 보려면 다음을 실행합니다.

$ operator-sdk bundle validate -h

5.11.2. 기본 제공되는 bundle validate 테스트

Operator SDK는 제품군으로 정렬된 사전 정의된 검증기와 함께 제공됩니다. 검증기를 지정하지 않고 bundle validate 명령을 실행하면 기본 테스트가 실행됩니다. 기본 테스트에서는 번들이 Operator 프레임워크 커뮤니티에서 정의한 사양을 준수하는지 확인합니다. 자세한 내용은 "Bundle 형식"을 참조하십시오.

선택적 검증기를 실행하여 OperatorHub 호환성 또는 더 이상 사용되지 않는 Kubernetes API와 같은 문제를 테스트할 수 있습니다. 선택적 검증기는 항상 기본 테스트 외에 실행됩니다.

선택적 테스트 모음의 bundle validate 명령 구문

$ operator-sdk bundle validate <bundle_dir_or_image>
  --select-optional <test_label>

표 5.18. addtional bundle validate validators

이름설명레이블

Operator 프레임워크

이 검증기에서는 Operator 프레임워크에서 제공하는 전체 검증기 모음에 대해 Operator 번들을 테스트합니다.

suite=operatorframework

OperatorHub

이 검증기에서는 OperatorHub와의 호환성을 위해 Operator 번들을 테스트합니다.

name=operatorhub

모범 사례

이 검증기를 통해 Operator 번들이 Operator 프레임워크에서 정의한 모범 사례를 준수하는지 테스트합니다. 빈 CRD 설명 또는 지원되지 않는 OLM(Operator Lifecycle Manager) 리소스와 같은 문제를 확인합니다.

name=good-practices

추가 리소스

5.11.3. bundle validate 명령 실행

기본 검증기에서는 bundle validate 명령을 입력할 때마다 테스트를 실행합니다. --select-optional 플래그를 사용하여 선택적 검증기를 실행할 수 있습니다. 선택적 검증기에서는 기본 테스트 외에 테스트를 실행합니다.

사전 요구 사항

  • Operator SDK를 사용하여 Operator 프로젝트 생성

절차

  1. 로컬 번들 디렉터리에 대해 기본 검증기를 실행하려면 Operator 프로젝트 디렉터리에서 다음 명령을 입력합니다.

    $ operator-sdk bundle validate ./bundle
  2. 원격 Operator 번들 이미지에 대해 기본 검증기를 실행하려면 다음 명령을 입력합니다.

    $ operator-sdk bundle validate \
      <bundle_registry>/<bundle_image_name>:<tag>

    다음과 같습니다.

    <bundle_registry>
    quay.io/example 과 같이 번들이 호스팅되는 레지스트리를 지정합니다.
    <bundle_image_name>
    memcached-operator 와 같은 번들 이미지의 이름을 지정합니다.
    <tag>

    번들 이미지의 태그(예: v1.25.4) 를 지정합니다.

    참고

    Operator 번들 이미지를 검증하려면 원격 레지스트리에서 이미지를 호스팅해야 합니다. Operator SDK는 이미지를 가져와서 테스트를 실행하기 전에 로컬로 빌드합니다. bundle validate 명령은 로컬 번들 이미지 테스트를 지원하지 않습니다.

  3. Operator 번들에 대해 추가 검증기를 실행하려면 다음 명령을 입력합니다.

    $ operator-sdk bundle validate \
      <bundle_dir_or_image> \
      --select-optional <test_label>

    다음과 같습니다.

    <bundle_dir_or_image>
    로컬 번들 디렉터리 또는 원격 번들 이미지(예: ~/projects/memcached 또는 quay.io/example/memcached-operator:v1.25.4)를 지정합니다.
    <test_label>

    name=good-practices 와 같이 실행할 검증기의 이름을 지정합니다.

    출력 예

    ERRO[0000] Error: Value apiextensions.k8s.io/v1, Kind=CustomResource: unsupported media type registry+v1 for bundle object
    WARN[0000] Warning: Value k8sevent.v0.0.1: owned CRD "k8sevents.k8s.k8sevent.com" has an empty description