3.9. 연결이 끊긴 클러스터와 함께 사용할 Operator 카탈로그 미러링

oc adm catalog mirror 명령을 사용하여 Red Hat 제공 카탈로그 또는 사용자 정의 카탈로그의 Operator 콘텐츠를 컨테이너 이미지 레지스트리에 미러링 할 수 있습니다. 대상 레지스트리는 Docker v2-2를 지원해야 합니다. 제한된 네트워크에 있는 클러스터의 경우 이 레지스트리는 제한된 네트워크 클러스터 설치 중 생성된 미러 레지스트리와 같이 클러스터에 네트워크 액세스 권한이 있는 레지스트리일 수 있습니다.

중요

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

oc adm catalog mirror 명령은 또한 Red Hat 제공 인덱스 이미지이든 자체 사용자 정의 빌드 인덱스 이미지이든 미러링 프로세스 중에 지정하는 인덱스 이미지를 대상 레지스트리에 자동으로 미러링합니다. 그러면 미러링된 인덱스 이미지를 사용하여 OLM(Operator Lifecycle Manager)이 OpenShift Container Platform 클러스터에 미러링된 카탈로그를 로드할 수 있는 카탈로그 소스를 생성할 수 있습니다.

3.9.1. 사전 요구 사항

연결이 끊긴 클러스터에 사용할 Operator 카탈로그 미러링에는 다음과 같은 사전 요구 사항이 있습니다.

  • 워크스테이션에서 무제한 네트워크 액세스가 가능합니다.
  • podman 버전이 1.9.3 이상입니다.
  • 기본 카탈로그를 필터링하거나 정리하고 선택적으로 Operator의 서브 세트만 미러링하려면 다음 섹션을 참조하십시오.

  • Red Hat 제공 카탈로그를 미러링하려면 무제한 네트워크 액세스 권한이 있는 워크스테이션에서 다음 명령을 실행하여 registry.redhat.io로 인증합니다.

    $ podman login registry.redhat.io
  • Docker v2-2 를 지원하는 미러 레지스트리에 액세스합니다.
  • 미러 레지스트리에서 미러링된 Operator 콘텐츠를 저장하는 데 사용할 네임스페이스를 결정합니다. 예를 들어 olm-mirror 네임스페이스를 생성할 수 있습니다.
  • 미러 레지스트리가 인터넷에 액세스할 수 없는 경우 이동식 미디어를 무제한 네트워크 액세스 권한이 있는 워크스테이션에 연결합니다.
  • registry.redhat.io를 포함한 프라이빗 레지스트리로 작업하는 경우 REG_CREDS 환경 변수를 이후 단계에서 사용할 레지스트리 자격 증명의 파일 경로로 설정합니다. 예를 들어 podman CLI의 경우:

    $ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json

3.9.2. 카탈로그 콘텐츠 추출 및 미러링

oc adm catalog mirror 명령은 인덱스 이미지의 콘텐츠를 추출하여 미러링에 필요한 매니페스트를 생성합니다. 명령의 기본 동작은 매니페스트를 생성한 다음 인덱스 이미지 자체뿐만 아니라 인덱스 이미지의 모든 이미지 콘텐츠를 미러 레지스트리에 자동으로 미러링합니다.

또는 미러 레지스트리가 완전히 연결이 끊긴 호스트 또는 에어갭(Airgap) 호스트에 있는 경우 먼저 콘텐츠를 이동식 미디어로 미러링하고 미디어를 연결이 끊긴 환경으로 이동한 다음 미디어에서 레지스트리로 해당 콘텐츠를 미러링할 수 있습니다.

3.9.2.1. 동일한 네트워크의 레지스트리에 카탈로그 콘텐츠 미러링

미러 레지스트리가 무제한 네트워크 액세스 권한이 있는 워크스테이션과 동일한 네트워크에 있는 경우 워크스테이션에서 다음 작업을 수행합니다.

프로세스

  1. 미러 레지스트리에 인증이 필요한 경우 다음 명령을 실행하여 레지스트리에 로그인합니다.

    $ podman login <mirror_registry>
  2. 다음 명령을 실행하여 콘텐츠를 미러 레지스트리에 추출하고 미러링합니다.

    $ oc adm catalog mirror \
        <index_image> \ 1
        <mirror_registry>:<port>/<namespace> \ 2
        [-a ${REG_CREDS}] \ 3
        [--insecure] \ 4
        [--index-filter-by-os='<platform>/<arch>'] \ 5
        [--manifests-only] 6
    1
    미러링할 카탈로그의 인덱스 이미지를 지정합니다. 예를 들어 이전에 생성한 정리된 인덱스 이미지 또는 registry.redhat.io/redhat/redhat-operator-index:v4.9 와 같은 기본 카탈로그의 소스 인덱스 이미지 중 하나일 수 있습니다.
    2
    Operator 콘텐츠를 미러링할 대상 레지스트리 및 네임스페이스의 정규화된 도메인 이름(FQDN)을 지정합니다. 여기서 <namespace> 는 레지스트리의 기존 네임스페이스입니다. 예를 들어 미러링된 콘텐츠를 모두 내보내기 위해 olm-mirror 네임스페이스를 생성할 수 있습니다.
    3
    선택 사항: 필요한 경우 레지스트리 자격 증명 파일의 위치를 지정합니다. registry.redhat.io 에는 {REG_CREDS} 가 필요합니다.
    4
    선택 사항: 대상 레지스트리에 대한 트러스트를 구성하지 않으려면 --insecure 플래그를 추가합니다.
    5
    선택 사항: 여러 변형이 있을 때 선택할 수 있는 인덱스 이미지의 플랫폼 및 아키텍처를 지정합니다. 이미지는 '<platform>/<arch>[/<variant>]’로 전달됩니다. 이는 인덱스에서 참조하는 이미지에는 적용되지 않습니다. 유효한 값은 linux/amd64, linux/ppc64le, linux/s390x, .*입니다.
    6
    선택 사항: 미러링에 필요한 매니페스트만 생성하고 실제로 이미지 콘텐츠를 레지스트리에 미러링하지 않습니다. 이 선택 사항은 미러링할 항목을 검토하는 데 유용할 수 있으며 패키지의 서브 세트만 필요한 경우 매핑 목록을 변경할 수 있습니다. 그런 다음 oc image mirror 명령과 함께 mapping.txt 파일을 사용하여 이후 단계에서 수정된 이미지 목록을 미러링할 수 있습니다. 이 플래그는 카탈로그에서 콘텐츠의 고급 선택적 미러링에만 사용됩니다. 이전에 인덱스 이미지를 정리하기 위해 사용한 경우 opm index prune 명령은 대부분의 카탈로그 관리 사용 사례에 적합합니다.

    출력 예

    src image has index label for database path: /database/index.db
    using database path mapping: /database/index.db:/tmp/153048078
    wrote database to /tmp/153048078 1
    ...
    wrote mirroring manifests to manifests-redhat-operator-index-1614211642 2

    1
    명령으로 생성된 임시 index.db 데이터베이스용 디렉터리입니다.
    2
    생성된 매니페스트 디렉터리 이름을 기록합니다. 이 디렉터리는 후속 절차에서 참조됩니다.
    참고

    Red Hat Quay는 중첩 리포지토리를 지원하지 않습니다. 결과적으로 oc adm catalog mirror 명령을 실행하면 401 무단 오류와 함께 실패합니다. 이 문제를 해결하려면 oc adm catalog mirror 명령을 실행할 때 --max-components=2 옵션을 사용하여 중첩된 리포지토리 생성을 비활성화할 수 있습니다. 이 해결 방법에 대한 자세한 내용은 Quay 레지스트리 지식베이스 솔루션과 함께 catalog mirror 명령을 사용하는 동안 인증되지 않은 오류를 참조하십시오.

3.9.2.2. 여유가 있는 레지스트리로 카탈로그 콘텐츠 미러링

미러 레지스트리가 완전히 연결이 끊긴 호스트 또는 항공 호스트에 있는 경우 다음 작업을 수행합니다.

프로세스

  1. 무제한 네트워크 액세스 권한이 있는 워크스테이션에서 다음 명령을 실행하여 콘텐츠를 로컬 파일에 미러링합니다.

    $ oc adm catalog mirror \
        <index_image> \ 1
        file:///local/index \ 2
        -a ${REG_CREDS} \ 3
        --insecure \ 4
        --index-filter-by-os='<platform>/<arch>' 5
    1
    미러링할 카탈로그의 인덱스 이미지를 지정합니다. 예를 들어 이전에 생성한 정리된 인덱스 이미지 또는 registry.redhat.io/redhat/redhat-operator-index:v4.9 와 같은 기본 카탈로그의 소스 인덱스 이미지 중 하나일 수 있습니다.
    2
    현재 디렉터리의 로컬 파일에 미러링할 콘텐츠를 지정합니다.
    3
    선택 사항: 필요한 경우 레지스트리 자격 증명 파일의 위치를 지정합니다.
    4
    선택 사항: 대상 레지스트리에 대한 트러스트를 구성하지 않으려면 --insecure 플래그를 추가합니다.
    5
    선택 사항: 여러 변형이 있을 때 선택할 수 있는 인덱스 이미지의 플랫폼 및 아키텍처를 지정합니다. 이미지는 '<platform>/<arch>[/<variant>]' 로 지정됩니다. 이는 인덱스에서 참조하는 이미지에는 적용되지 않습니다. 유효한 값은 linux/amd64, linux/ppc64le, linux/s390x, .*입니다.

    출력 예

    ...
    info: Mirroring completed in 5.93s (5.915MB/s)
    wrote mirroring manifests to manifests-my-index-1614985528 1
    
    To upload local images to a registry, run:
    
    	oc adm catalog mirror file://local/index/myrepo/my-index:v1 REGISTRY/REPOSITORY 2

    1
    생성된 매니페스트 디렉터리 이름을 기록합니다. 이 디렉터리는 후속 절차에서 참조됩니다.
    2
    제공된 인덱스 이미지를 기반으로 확장된 file:// 경로를 기록합니다. 이 경로는 후속 단계에서 참조됩니다.

    이 명령은 현재 디렉터리에 v2/ 디렉터리를 생성합니다.

  2. v2/ 디렉터리를 이동식 미디어로 복사합니다.
  3. 물리적으로 미디어를 제거하고 연결이 끊긴 환경의 호스트에 연결하여 미러 레지스트리에 액세스할 수 있습니다.
  4. 미러 레지스트리에 인증이 필요한 경우 연결이 끊긴 환경의 호스트에서 다음 명령을 실행하여 레지스트리에 로그인합니다.

    $ podman login <mirror_registry>
  5. v2/ 디렉터리가 포함된 상위 디렉터리에서 다음 명령을 실행하여 로컬 파일에서 미러 레지스트리로 이미지를 업로드합니다.

    $ oc adm catalog mirror \
        file://local/index/<repo>/<index_image>:<tag> \ 1
        <mirror_registry>:<port>/<namespace> \ 2
        -a ${REG_CREDS} \ 3
        --insecure \ 4
        --index-filter-by-os='<platform>/<arch>' 5
    1
    이전 명령 출력의 file:// 경로를 지정합니다.
    2
    Operator 콘텐츠를 미러링할 대상 레지스트리 및 네임스페이스의 정규화된 도메인 이름(FQDN)을 지정합니다. 여기서 <namespace> 는 레지스트리의 기존 네임스페이스입니다. 예를 들어 미러링된 콘텐츠를 모두 내보내기 위해 olm-mirror 네임스페이스를 생성할 수 있습니다.
    3
    선택 사항: 필요한 경우 레지스트리 자격 증명 파일의 위치를 지정합니다.
    4
    선택 사항: 대상 레지스트리에 대한 트러스트를 구성하지 않으려면 --insecure 플래그를 추가합니다.
    5
    선택 사항: 여러 변형이 있을 때 선택할 수 있는 인덱스 이미지의 플랫폼 및 아키텍처를 지정합니다. 이미지는 '<platform>/<arch>[/<variant>]' 로 지정됩니다. 이는 인덱스에서 참조하는 이미지에는 적용되지 않습니다. 유효한 값은 linux/amd64, linux/ppc64le, linux/s390x, .*입니다.
    참고

    Red Hat Quay는 중첩 리포지토리를 지원하지 않습니다. 결과적으로 oc adm catalog mirror 명령을 실행하면 401 무단 오류와 함께 실패합니다. 이 문제를 해결하려면 oc adm catalog mirror 명령을 실행할 때 --max-components=2 옵션을 사용하여 중첩된 리포지토리 생성을 비활성화할 수 있습니다. 이 해결 방법에 대한 자세한 내용은 Quay 레지스트리 지식베이스 솔루션과 함께 catalog mirror 명령을 사용하는 동안 인증되지 않은 오류를 참조하십시오.

  6. oc adm catalog mirror 명령을 다시 실행합니다. 새로 미러링된 인덱스 이미지를 소스로 사용하고 이전 단계에서 사용한 것과 동일한 미러 레지스트리 네임스페이스를 대상으로 사용합니다.

    $ oc adm catalog mirror \
        <mirror_registry>:<port>/<index_image> \
        <mirror_registry>:<port>/<namespace> \
        --manifests-only \1
        [-a ${REG_CREDS}] \
        [--insecure]
    1
    이 단계에서는 명령이 미러링된 모든 콘텐츠를 다시 복사하지 않도록 --manifests-only 플래그가 필요합니다.
    중요

    이전 단계에서 생성된 imageContentSourcePolicy.yaml 파일의 이미지 매핑은 로컬 경로에서 유효한 미러 위치로 업데이트해야 하므로 이 단계가 필요합니다. 이렇게 하지 않으면 이후 단계에서 ImageContentSourcePolicy 개체를 생성할 때 오류가 발생합니다.

카탈로그를 미러링한 후 나머지 클러스터 설치를 계속할 수 있습니다. 클러스터 설치가 성공적으로 완료되면 ImageContentSourcePolicyCatalogSource 오브젝트를 생성하려면 이 프로세스에서 매니페스트 디렉터리를 지정해야 합니다. OperatorHub에서 Operator 설치를 활성화하려면 이러한 오브젝트가 필요합니다.

3.9.3. 생성된 매니페스트

Operator 카탈로그 콘텐츠를 미러 레지스트리에 미러링한 후 현재 디렉터리에 매니페스트 디렉터리가 생성됩니다.

콘텐츠를 동일한 네트워크의 레지스트리에 미러링한 경우 디렉터리 이름은 다음 패턴을 사용합니다.

manifests-<index_image_name>-<random_number>

이전 섹션의 연결이 끊긴 호스트의 레지스트리에 콘텐츠를 미러링한 경우 디렉터리 이름은 다음 패턴을 사용합니다.

manifests-index/<namespace>/<index_image_name>-<random_number>
참고

매니페스트 디렉터리 이름은 후속 절차에서 참조됩니다.

매니페스트 디렉터리에는 다음 파일이 포함되어 있으며, 이 중 일부는 추가 수정이 필요할 수 있습니다.

  • catalogSource.yaml 파일은 인덱스 이미지 태그 및 기타 관련 메타데이터로 미리 채워진 CatalogSource 오브젝트에 대한 기본 정의입니다. 이 파일은 있는 그대로 사용하거나 카탈로그 소스를 클러스터에 추가하도록 수정할 수 있습니다.

    중요

    콘텐츠를 로컬 파일에 미러링한 경우 metadata.name 필드에서 .name 필드에서 백슬래시(/) 문자를 제거하려면 catalogSource.yaml 파일을 수정해야 합니다. 그러지 않으면 오브젝트 생성을 시도할 때 "잘못된 리소스 이름" 오류로 인해 실패합니다.

  • imageContentSourcePolicy.yaml 파일은 Operator 매니페스트에 저장된 이미지 참조와 미러링된 레지스트리 간에 변환하도록 노드를 구성할 수 있는 ImageContentSourcePolicy 오브젝트를 정의합니다.

    참고

    클러스터에서 ImageContentSourcePolicy 오브젝트를 사용하여 저장소 미러링을 구성하는 경우 미러링된 레지스트리에 대한 글로벌 풀 시크릿만 사용할 수 있습니다. 프로젝트에 풀 시크릿을 추가할 수 없습니다.

  • mapping.txt 파일에는 모든 소스 이미지와 대상 레지스트리에서 매핑할 위치가 포함되어 있습니다. 이 파일은 oc image mirror 명령과 호환되며 미러링 구성을 추가로 사용자 정의하는 데 사용할 수 있습니다.

    중요

    미러링 프로세스 중에 --manifests-only 플래그를 사용한 후 미러링할 패키지 서브 세트를 추가로 트리밍 하려면 mapping.txt 파일 수정 및 oc image mirror 명령으로 파일을 사용하는 데 대한 OpenShift Container Platform 4.7 설명서의 패키지 매니페스트 형식 카탈로그 이미지 미러링 단계를 참조하십시오.

3.9.4. 설치 후 요구 사항

카탈로그를 미러링한 후 나머지 클러스터 설치를 계속할 수 있습니다. 클러스터 설치가 성공적으로 완료되면 ImageContentSourcePolicyCatalogSource 오브젝트를 생성하려면 이 프로세스에서 매니페스트 디렉터리를 지정해야 합니다. 이러한 오브젝트는 OperatorHub에서 Operator 설치를 채우고 활성화해야 합니다.