4.7.2. 패키지 매니페스트 형식을 사용하는 사용자 정의 카탈로그

4.7.2.1. 패키지 매니페스트 형식 카탈로그 이미지 빌드

클러스터 관리자는 OLM(Operator Lifecycle Manager)에서 사용할 Package Manifest Format에 따라 사용자 정의 Operator 카탈로그 이미지를 빌드할 수 있습니다. 카탈로그 이미지는 Docker v2-2를 지원하는 컨테이너 이미지 레지스트리로 내보낼 수 있습니다. 제한된 네트워크에 있는 클러스터의 경우 이 레지스트리는 제한된 네트워크 클러스터 설치 중에 작성된 미러 레지스트리와 같이 클러스터에 네트워크 액세스 권한이 있는 레지스트리일 수 있습니다.

중요

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

이 예제의 절차에서는 네트워크 및 인터넷에 둘 다 액세스할 수 있는 미러 레지스트리를 사용한다고 가정합니다.

참고

Windows 및 macOS 버전은 oc adm catalog build 명령을 제공하지 않으므로 이 프로세스에는 Linux 버전의 oc 클라이언트만 사용할 수 있습니다.

사전 요구 사항

  • 무제한 네트워크 액세스가 가능한 워크스테이션
  • oc 버전 4.3.5 이상 Linux 클라이언트
  • podman 버전 1.9.3+
  • Docker v2-2를 지원하는 미러 레지스트리에 액세스
  • 프라이빗 레지스트리로 작업 중인 경우 REG_CREDS 환경 변수를 이후 단계에서 사용하기 위해 레지스트리 자격 증명의 파일 경로로 설정합니다. 예를 들어 podman CLI의 경우:

    $ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
  • quay.io 계정에서 액세스할 수 있는 비공개 네임스페이스로 작업하는 경우 Quay 인증 토큰을 설정해야 합니다. quay.io 자격 증명을 사용하여 로그인 API에 대해 요청하여 --auth-token 플래그와 함께 사용할 AUTH_TOKEN 환경 변수를 설정합니다.

    $ AUTH_TOKEN=$(curl -sH "Content-Type: application/json" \
        -XPOST https://quay.io/cnr/api/v1/users/login -d '
        {
            "user": {
                "username": "'"<quay_username>"'",
                "password": "'"<quay_password>"'"
            }
        }' | jq -r '.token')

프로세스

  1. 무제한 네트워크 액세스가 가능한 워크스테이션에서 대상 미러 레지스트리를 사용하여 인증합니다.

    $ podman login <registry_host_name>
  2. 빌드 중 기본 이미지를 가져올 수 있도록 registry.redhat.io로 인증합니다.

    $ podman login registry.redhat.io
  3. Quay.io에서 redhat-operators 카탈로그를 기반으로 카탈로그 이미지를 빌드하고 태그를 지정한 후 미러 레지스트리로 내보냅니다.

    $ oc adm catalog build \
        --appregistry-org redhat-operators \1
        --from=registry.redhat.io/openshift4/ose-operator-registry:v4.6 \2
        --filter-by-os="linux/amd64" \3
        --to=<registry_host_name>:<port>/olm/redhat-operators:v1 \4
        [-a ${REG_CREDS}] \5
        [--insecure] \6
        [--auth-token "${AUTH_TOKEN}"] 7
    1
    App Registry 인스턴스에서 가져올 조직(네임스페이스).
    2
    대상 OpenShift Container Platform 클러스터 주 버전 및 부 버전과 일치하는 태그를 사용하여 --from을 Operator 레지스트리 기본 이미지로 설정합니다.
    3
    기본 이미지에 사용할 운영 체제 및 아키텍처로 --filter-by-os를 설정합니다. 대상 OpenShift Container Platform 클러스터와 일치해야 합니다. 유효한 값은 linux/amd64, linux/ppc64lelinux/s390x입니다.
    4
    카탈로그 이미지 이름을 지정하고 태그를 포함합니다(예: v1).
    5
    선택 사항: 필요한 경우 레지스트리 자격 증명 파일의 위치를 지정합니다.
    6
    선택 사항: 대상 레지스트리에 대한 신뢰성을 구성하지 않으려면 --insecure 플래그를 추가합니다.
    7
    선택 사항: 공용이 아닌 다른 애플리케이션 레지스트리 카탈로그가 사용되는 경우 Quay 인증 토큰을 지정합니다.

    출력 예

    INFO[0013] loading Bundles                               dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605
    ...
    Pushed sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3 to example_registry:5000/olm/redhat-operators:v1

    간혹 유효하지 않은 매니페스트가 Red Hat에서 제공하는 카탈로그에 실수로 포함될 때가 있습니다. 이 경우 다음과 같은 몇 가지 오류가 표시될 수 있습니다.

    오류가 있는 출력 예

    ...
    INFO[0014] directory                                     dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605 file=4.2 load=package
    W1114 19:42:37.876180   34665 builder.go:141] error building database: error loading package into db: fuse-camel-k-operator.v7.5.0 specifies replacement that couldn't be found
    Uploading ... 244.9kB/s

    이러한 오류는 일반적으로 치명적이지 않으며 언급 된 Operator 패키지에 설치하려는 Operator 또는 해당 종속성이 없는 경우 무시할 수 있습니다.