5.10. Operator 번들 검증


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

5.10.1. bundle validate 명령 정보

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

bundle validate 명령 구문

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

참고

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

번들 이미지는 유효성을 검사하기 전에 원격 레지스트리에서 가져와서 로컬로 빌드됩니다. 로컬 번들 디렉터리에는 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.10.2. 기본 제공 번들 검증 테스트

Operator SDK에는 사전 정의된 검증기가 모음으로 정렬되어 있습니다. 검증기를 지정하지 않고 bundle validate 명령을 실행하면 기본 테스트가 실행됩니다. 기본 테스트에서는 번들이 Operator Framework 커뮤니티에서 정의한 사양을 준수하는지 확인합니다. 자세한 내용은 "Bundle 형식"을 참조하십시오.

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

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

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

표 5.22. 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.10.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.31.0 )를 지정합니다.

    참고

    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.31.0 과 같은 로컬 번들 디렉터리 또는 원격 번들 이미지를 지정합니다.
    <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

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.