5.12. Operator 번들 검증
Operator 작성자는 Operator SDK에서 bundle validate
명령을 실행하여 Operator 번들의 콘텐츠 및 형식을 검증할 수 있습니다. 원격 Operator 번들 이미지 또는 로컬 Operator 번들 디렉터리에서 명령을 실행할 수 있습니다.
Operator 프로젝트의 관련 스캐폴딩 및 테스트 툴을 포함한 Red Hat 지원 버전의 Operator SDK CLI 툴은 더 이상 사용되지 않으며 향후 OpenShift Container Platform 릴리스에서 제거될 예정입니다. Red Hat은 현재 릴리스 라이프사이클 동안 이 기능에 대한 버그 수정 및 지원을 제공하지만 이 기능은 더 이상 개선 사항을 받지 않으며 향후 OpenShift Container Platform 릴리스에서 제거됩니다.
새 Operator 프로젝트를 생성하는 데 Red Hat 지원 버전의 Operator SDK는 권장되지 않습니다. 기존 Operator 프로젝트가 있는 Operator 작성자는 OpenShift Container Platform 4.17과 함께 릴리스된 Operator SDK CLI 툴 버전을 사용하여 프로젝트를 유지 관리하고 최신 버전의 OpenShift Container Platform을 대상으로 하는 Operator 릴리스를 생성할 수 있습니다.
Operator 프로젝트의 다음과 같은 관련 기본 이미지는 더 이상 사용되지 않습니다. 이러한 기본 이미지의 런타임 기능 및 구성 API는 버그 수정 및 CVE 문제를 해결하는 데 계속 지원됩니다.
- Ansible 기반 Operator 프로젝트의 기본 이미지
- Helm 기반 Operator 프로젝트의 기본 이미지
OpenShift Container Platform에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Container Platform 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.
지원되지 않는 커뮤니티 유지 관리 버전에 대한 자세한 내용은 Operator SDK(Operator Framework) 를 참조하십시오.
5.12.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.12.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>
이름 | 설명 | 레이블 |
---|---|---|
Operator 프레임워크 | 이 검증기는 Operator 프레임워크에서 제공하는 전체 검증기 모음에 대해 Operator 번들을 테스트합니다. |
|
OperatorHub | 이 검증기는 OperatorHub와의 호환성을 위해 Operator 번들을 테스트합니다. |
|
모범 사례 | 이 검증기를 통해 Operator 번들이 Operator 프레임워크에서 정의한 모범 사례를 준수하는지 여부를 테스트합니다. 빈 CRD 설명 또는 지원되지 않는 OLM(Operator Lifecycle Manager) 리소스와 같은 문제가 있는지 확인합니다. |
|
추가 리소스
5.12.3. bundle validate 명령 실행
기본 검증기에서는 bundle validate
명령을 입력할 때마다 테스트를 실행합니다. --select-optional
플래그를 사용하여 선택적 검증기를 실행할 수 있습니다. 선택적 검증기에서는 기본 테스트 외에도 테스트를 실행합니다.
사전 요구 사항
- Operator SDK를 사용하여 Operator 프로젝트 생성
프로세스
로컬 번들 디렉터리에 대해 기본 검증기를 실행하려면 Operator 프로젝트 디렉터리에서 다음 명령을 입력합니다.
$ operator-sdk bundle validate ./bundle
원격 Operator 번들 이미지에 대해 기본 검증기를 실행하려면 다음 명령을 입력합니다.
$ operator-sdk bundle validate \ <bundle_registry>/<bundle_image_name>:<tag>
다음과 같습니다.
- <bundle_registry>
-
번들이 호스팅되는 레지스트리(예:
quay.io/example
)를 지정합니다. - <bundle_image_name>
-
번들 이미지의 이름(예:
memcached-operator
)을 지정합니다. - <tag>
번들 이미지의 태그(예:
v1.36.1
)를 지정합니다.참고Operator 번들 이미지를 검증하려면 원격 레지스트리에 이미지를 호스팅해야 합니다. Operator SDK는 테스트를 실행하기 전에 이미지를 가져와서 로컬로 빌드합니다.
bundle validate
명령은 로컬 번들 이미지 테스트를 지원하지 않습니다.
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.36.1
과 같은 로컬 번들 디렉터리 또는 원격 번들 이미지를 지정합니다. - <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
5.12.4. Operator의 멀티 플랫폼 준비 상태 확인
bundle validate
명령을 실행하여 Operator의 멀티 플랫폼 준비 상태를 확인할 수 있습니다. 이 명령은 Operator 프로젝트가 다음 조건을 충족하는지 확인합니다.
- Operator의 관리자 이미지는 CSV(클러스터 서비스 버전) 파일에 레이블이 지정된 플랫폼을 지원합니다.
- Operator의 CSV에는 OLM(Operator Lifecycle Manager) 및 OperatorHub에 지원되는 플랫폼에 대한 라벨이 있습니다.
프로세스
다음 명령을 실행하여 Operator 프로젝트의 여러 아키텍처 준비 상태를 확인합니다.
$ operator-sdk bundle validate ./bundle \ --select-optional name=multiarch
검증 메시지의 예
INFO[0020] All validation tests have completed successfully
관리자 이미지에서 CSV 라벨이 누락된 오류 메시지의 예
ERRO[0016] Error: Value test-operator.v0.0.1: not all images specified are providing the support described via the CSV labels. Note that (SO.architecture): (linux.ppc64le) was not found for the image(s) [quay.io/example-org/test-operator:v1alpha1] ERRO[0016] Error: Value test-operator.v0.0.1: not all images specified are providing the support described via the CSV labels. Note that (SO.architecture): (linux.s390x) was not found for the image(s) [quay.io/example-org/test-operator:v1alpha1] ERRO[0016] Error: Value test-operator.v0.0.1: not all images specified are providing the support described via the CSV labels. Note that (SO.architecture): (linux.amd64) was not found for the image(s) [quay.io/example-org/test-operator:v1alpha1] ERRO[0016] Error: Value test-operator.v0.0.1: not all images specified are providing the support described via the CSV labels. Note that (SO.architecture): (linux.arm64) was not found for the image(s) [quay.io/example-org/test-operator:v1alpha1]
OperatorHub 플래그 누락된 오류 메시지의 예
WARN[0014] Warning: Value test-operator.v0.0.1: check if the CSV is missing the label (operatorframework.io/arch.<value>) for the Arch(s): ["amd64" "arm64" "ppc64le" "s390x"]. Be aware that your Operator manager image ["quay.io/example-org/test-operator:v1alpha1"] provides this support. Thus, it is very likely that you want to provide it and if you support more than amd64 architectures, you MUST,use the required labels for all which are supported.Otherwise, your solution cannot be listed on the cluster for these architectures