4.7.2.4. 패키지 매니페스트 형식 카탈로그 이미지 테스트

Operator 카탈로그 이미지 콘텐츠를 컨테이너로 실행하고 gRPC API를 쿼리하여 검증할 수 있습니다. 그런 다음 이미지를 추가로 테스트하려면 카탈로그 소스의 이미지를 참조하여 OLM(Operator Lifecycle Manager)에서 서브스크립션을 확인할 수 있습니다. 이 예의 절차에서는 이전에 빌드되어 지원되는 레지스트리로 푸시된 사용자 정의 redhat-operators 카탈로그 이미지를 사용합니다.

사전 요구 사항

  • 지원되는 레지스트리에 내보낸 사용자 정의 패키지 매니페스트 형식 카탈로그 이미지
  • podman 버전 1.9.3+
  • oc 버전 4.3.5+
  • Docker v2-2를 지원하는 미러 레지스트리에 액세스

    중요

    OpenShift Container Platform 클러스터의 내부 레지스트리는 미러링 프로세스 중에 필요한 태그 없이 푸시를 지원하지 않으므로 대상 레지스트리로 사용할 수 없습니다.

  • grpcurl

프로세스

  1. Operator 카탈로그 이미지를 가져옵니다.

    $ podman pull <registry_host_name>:<port>/olm/redhat-operators:v1
  2. 이미지를 실행합니다.

    $ podman run -p 50051:50051 \
        -it <registry_host_name>:<port>/olm/redhat-operators:v1
  3. grpcurl을 사용하여 사용 가능한 패키지에 대해 실행 중인 이미지를 쿼리합니다.

    $ grpcurl -plaintext localhost:50051 api.Registry/ListPackages

    출력 예

    {
      "name": "3scale-operator"
    }
    {
      "name": "amq-broker"
    }
    {
      "name": "amq-online"
    }

  4. 채널에서 최신 Operator 번들을 가져옵니다.

    $  grpcurl -plaintext -d '{"pkgName":"kiali-ossm","channelName":"stable"}' localhost:50051 api.Registry/GetBundleForChannel

    출력 예

    {
      "csvName": "kiali-operator.v1.0.7",
      "packageName": "kiali-ossm",
      "channelName": "stable",
    ...

  5. 이미지의 다이제스트를 가져옵니다.

    $ podman inspect \
        --format='{{index .RepoDigests 0}}' \
        <registry_host_name>:<port>/olm/redhat-operators:v1

    출력 예

    example_registry:5000/olm/redhat-operators@sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3

  6. Operator 및 해당 종속성을 지원하는 네임스페이스 my-ns에 Operator group이 있다고 가정하고 이미지 다이제스트를 사용하여 CatalogSource 오브젝트를 생성합니다. 예를 들면 다음과 같습니다.

    apiVersion: operators.coreos.com/v1alpha1
    kind: CatalogSource
    metadata:
      name: custom-redhat-operators
      namespace: my-ns
    spec:
      sourceType: grpc
      image: example_registry:5000/olm/redhat-operators@sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3
      displayName: Red Hat Operators
  7. 카탈로그 이미지에서 사용 가능한 최신 servicemeshoperator 및 해당 종속성을 확인하는 서브스크립션을 생성합니다.

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: servicemeshoperator
      namespace: my-ns
    spec:
      source: custom-redhat-operators
      sourceNamespace: my-ns
      name: servicemeshoperator
      channel: "1.0"