2.3. oc adm 명령을 사용하여 연결이 끊긴 설치의 이미지 미러링


클러스터가 외부 콘텐츠에 대한 조직의 제어를 충족하는 컨테이너 이미지만 사용하도록 할 수 있습니다. 제한된 네트워크에서 프로비저닝된 인프라에 클러스터를 설치하기 전에 필요한 컨테이너 이미지를 해당 환경에 미러링해야 합니다. oc adm 명령을 사용하면 OpenShift에서 릴리스 및 카탈로그 이미지를 미러링할 수 있습니다. 컨테이너 이미지를 미러링하려면 미러링을 위한 레지스트리가 있어야 합니다.

중요

필요한 컨테이너 이미지를 얻으려면 인터넷에 액세스해야 합니다. 이 절차에서는 네트워크와 인터넷에 모두 액세스할 수 있는 미러 호스트에 미러 레지스트리를 배치합니다. 미러 호스트에 액세스할 수 없는 경우 연결이 끊긴 클러스터에 사용할 Operator 카탈로그를 미러링하여 네트워크 경계를 이동할 수 있는 장치에 이미지를 복사합니다.

2.3.1. 사전 요구 사항

  • 다음 레지스트리 중 하나와 같이 OpenShift Container Platform 클러스터를 호스팅할 위치에 Docker v2-2를 지원하는 컨테이너 이미지 레지스트리가 있어야 합니다.

    Red Hat Quay에 대한 인타이틀먼트가 있는 경우 개념 증명 목적으로 또는 Red Hat Quay Operator를 사용하여 Red Hat Quay 배포에 대한 설명서를 참조하십시오. 레지스트리를 선택 및 설치하는 데 추가 지원이 필요한 경우 영업 담당자 또는 Red Hat 지원팀에 문의하십시오.

  • 컨테이너 이미지 레지스트리에 대한 기존 솔루션이 없는 경우 OpenShift Container Platform 구독자에게 Red Hat OpenShift의 미러 레지스트리가 제공됩니다. Red Hat OpenShift의 미러 레지스트리 는 서브스크립션에 포함되어 있으며 연결이 끊긴 설치에서 OpenShift Container Platform의 필요한 컨테이너 이미지를 미러링하는 데 사용할 수 있는 소규모 컨테이너 레지스트리입니다.

2.3.2. 미러 레지스트리 정보

OpenShift Container Platform 설치 및 후속 제품 업데이트에 Red Hat Quay, JFrog Artifactory, Sonatype Nexus Repository 또는 Harbor와 같은 컨테이너 미러 레지스트리에 필요한 이미지를 미러링할 수 있습니다. 대규모 컨테이너 레지스트리에 액세스할 수 없는 경우 OpenShift Container Platform 서브스크립션에 포함된 소규모 컨테이너 레지스트리인 Red Hat OpenShift에 미러 레지스트리를 사용할 수 있습니다.

Red Hat Quay, the mirror registry for Red Hat OpenShift, Artifactory, Sonatype Nexus Repository, 또는 Harbor와 같이 Docker v2-2를 지원하는 컨테이너 레지스트리를 사용할 수 있습니다. 선택한 레지스트리에 관계없이 인터넷상의 Red Hat 호스팅 사이트의 콘텐츠를 격리된 이미지 레지스트리로 미러링하는 절차는 동일합니다. 콘텐츠를 미러링한 후 미러 레지스트리에서 이 콘텐츠를 검색하도록 각 클러스터를 설정합니다.

중요

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

Red Hat OpenShift의 미러 레지스트리가 아닌 컨테이너 레지스트리를 선택하는 경우 프로비저닝하는 클러스터의 모든 시스템에서 액세스할 수 있어야 합니다. 레지스트리에 연결할 수 없는 경우 설치, 업데이트 또는 워크로드 재배치와 같은 일반 작업이 실패할 수 있습니다. 따라서 고가용성 방식으로 미러 레지스트리를 실행해야하며 미러 레지스트리는 최소한 OpenShift Container Platform 클러스터의 프로덕션 환경의 가용성조건에 일치해야 합니다.

미러 레지스트리를 OpenShift Container Platform 이미지로 채우면 다음 두 가지 시나리오를 수행할 수 있습니다. 호스트가 인터넷과 미러 레지스트리에 모두 액세스할 수 있지만 클러스터 노드에 액세스 할 수 없는 경우 해당 머신의 콘텐츠를 직접 미러링할 수 있습니다. 이 프로세스를 connected mirroring(미러링 연결)이라고 합니다. 그러한 호스트가 없는 경우 이미지를 파일 시스템에 미러링한 다음 해당 호스트 또는 이동식 미디어를 제한된 환경에 배치해야 합니다. 이 프로세스를 미러링 연결 해제라고 합니다.

미러링된 레지스트리의 경우 가져온 이미지의 소스를 보려면 CRI-O 로그의 Trying to access 로그 항목을 검토해야 합니다. 노드에서 crictl images 명령을 사용하는 등의 이미지 가져오기 소스를 보는 다른 방법은 미러링되지 않은 이미지 이름을 표시합니다.

참고

Red Hat은 OpenShift Container Platform에서 타사 레지스트리를 테스트하지 않습니다.

추가 정보

이미지 소스를 보려면 CRI-O 로그를 확인하는 방법에 대한 자세한 내용은 이미지 가져오기 소스 보기를 참조하십시오.

2.3.3. 미러 호스트 준비

미러 단계를 수행하기 전에 호스트는 콘텐츠를 검색하고 원격 위치로 푸시할 준비가 되어 있어야 합니다.

2.3.3.1. OpenShift CLI 설치

명령줄 인터페이스를 사용하여 OpenShift Container Platform과 상호 작용하기 위해 OpenShift CLI(oc)를 설치할 수 있습니다. Linux, Windows 또는 macOS에 oc를 설치할 수 있습니다.

중요

이전 버전의 oc 를 설치한 경우 OpenShift Container Platform 4.17의 모든 명령을 완료하는 데 해당 버전을 사용할 수 없습니다. 새 버전의 oc를 다운로드하여 설치합니다.

Linux에서 OpenShift CLI 설치

다음 절차를 사용하여 Linux에서 OpenShift CLI(oc) 바이너리를 설치할 수 있습니다.

프로세스

  1. Red Hat 고객 포털에서 OpenShift Container Platform 다운로드 페이지로 이동합니다.
  2. 제품 변형 드롭다운 목록에서 아키텍처를 선택합니다.
  3. 버전 드롭다운 목록에서 적절한 버전을 선택합니다.
  4. OpenShift v4.17 Linux Client 항목 옆에 있는 지금 다운로드를 클릭하고 파일을 저장합니다.
  5. 아카이브의 압축을 풉니다.

    $ tar xvf <file>
  6. oc 바이너리를 PATH에 있는 디렉터리에 배치합니다.

    PATH를 확인하려면 다음 명령을 실행합니다.

    $ echo $PATH

검증

  • OpenShift CLI를 설치한 후 oc 명령을 사용할 수 있습니다.

    $ oc <command>
Windows에서 OpenSfhit CLI 설치

다음 절차에 따라 Windows에 OpenShift CLI(oc) 바이너리를 설치할 수 있습니다.

프로세스

  1. Red Hat 고객 포털에서 OpenShift Container Platform 다운로드 페이지로 이동합니다.
  2. 버전 드롭다운 목록에서 적절한 버전을 선택합니다.
  3. OpenShift v4.17 Windows Client 항목 옆에 있는 지금 다운로드를 클릭하고 파일을 저장합니다.
  4. ZIP 프로그램으로 아카이브의 압축을 풉니다.
  5. oc 바이너리를 PATH에 있는 디렉터리로 이동합니다.

    PATH를 확인하려면 명령 프롬프트를 열고 다음 명령을 실행합니다.

    C:\> path

검증

  • OpenShift CLI를 설치한 후 oc 명령을 사용할 수 있습니다.

    C:\> oc <command>
macOS에 OpenShift CLI 설치

다음 절차에 따라 macOS에서 OpenShift CLI(oc) 바이너리를 설치할 수 있습니다.

프로세스

  1. Red Hat 고객 포털에서 OpenShift Container Platform 다운로드 페이지로 이동합니다.
  2. 버전 드롭다운 목록에서 적절한 버전을 선택합니다.
  3. OpenShift v4.17 macOS Client 항목 옆에 있는 지금 다운로드를 클릭하고 파일을 저장합니다.

    참고

    macOS arm64의 경우 OpenShift v4.17 macOS arm64 Client 항목을 선택합니다.

  4. 아카이브의 압축을 해제하고 압축을 풉니다.
  5. oc 바이너리 PATH의 디렉터리로 이동합니다.

    PATH를 확인하려면 터미널을 열고 다음 명령을 실행합니다.

    $ echo $PATH

검증

  • oc 명령을 사용하여 설치를 확인합니다.

    $ oc <command>

2.3.4. 이미지를 미러링할 수 있는 인증 정보 설정

Red Hat에서 미러로 이미지를 미러링할 수 있는 컨테이너 이미지 레지스트리 인증 정보 파일을 생성합니다.

주의

클러스터를 설치할 때 이 이미지 레지스트리 인증 정보 파일을 풀 시크릿(pull secret)으로 사용하지 마십시오. 클러스터를 설치할 때 이 파일을 지정하면 클러스터의 모든 시스템에 미러 레지스트리에 대한 쓰기 권한이 부여됩니다.

주의

이 프로세스에서는 미러 레지스트리의 컨테이너 이미지 레지스트리에 대한 쓰기 권한이 있어야 하며 인증 정보를 레지스트리 풀 시크릿에 추가해야 합니다.

사전 요구 사항

  • 연결이 끊긴 환경에서 사용할 미러 레지스트리를 구성했습니다.
  • 미러 레지스트리에서 이미지를 미러링할 이미지 저장소 위치를 확인했습니다.
  • 이미지를 해당 이미지 저장소에 업로드할 수 있는 미러 레지스트리 계정을 제공하고 있습니다.

프로세스

설치 호스트에서 다음 단계를 수행합니다.

  1. Red Hat OpenShift Cluster Manager에서 registry.redhat.io 풀 시크릿을 다운로드합니다.
  2. 풀 시크릿을 JSON 형식으로 복사합니다.

    $ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 1
    1
    풀 시크릿을 저장할 폴더의 경로와 생성한 JSON 파일의 이름을 지정합니다.

    파일의 내용은 다음 예와 유사합니다.

    {
      "auths": {
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
  1. 미러 레지스트리에 대한 base64로 인코딩된 사용자 이름 및 암호 또는 토큰을 생성합니다.

    $ echo -n '<user_name>:<password>' | base64 -w0 1
    BGVtbYk3ZHAtqXs=
    1
    <user_name><password>의 경우 레지스트리에 설정한 사용자 이름 및 암호를 지정합니다.
  2. JSON 파일을 편집하고 레지스트리를 설명하는 섹션을 추가합니다.

      "auths": {
        "<mirror_registry>": { 1
          "auth": "<credentials>", 2
          "email": "you@example.com"
        }
      },
    1
    미러 레지스트리가 콘텐츠를 제공하는 데 사용하는 레지스트리 도메인 이름과 포트(선택 사항)를 지정합니다. 예: registry.example.com 또는 registry.example.com:8443
    2
    미러 레지스트리에 대해 base64로 인코딩된 사용자 이름 및 암호를 지정합니다.

    파일은 다음 예제와 유사합니다.

    {
      "auths": {
        "registry.example.com": {
          "auth": "BGVtbYk3ZHAtqXs=",
          "email": "you@example.com"
        },
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }

2.3.5. OpenShift Container Platform 이미지 저장소 미러링

클러스터 설치 또는 업그레이드 중에 사용할 OpenShift Container Platform 이미지 저장소를 레지스트리에 미러링합니다.

사전 요구 사항

  • 미러 호스트가 인터넷에 액세스할 수 있습니다.
  • 네트워크가 제한된 환경에서 사용할 미러 레지스트리를 설정하고 설정한 인증서 및 인증 정보에 액세스할 수 있습니다.
  • Red Hat OpenShift Cluster Manager에서 풀 시크릿 을 다운로드하여 미러 저장소에 대한 인증을 포함하도록 수정했습니다.
  • 자체 서명된 인증서를 사용하는 경우 인증서에 주체 대체 이름을 지정했습니다.

프로세스

미러 호스트에서 다음 단계를 완료합니다.

  1. OpenShift Container Platform 다운로드 페이지를 확인하여 설치할 OpenShift Container Platform 버전을 확인하고 Repository Tags 페이지에서 해당 태그를 지정합니다.
  2. 필요한 환경 변수를 설정합니다.

    1. 릴리스 버전을 내보냅니다.

      $ OCP_RELEASE=<release_version>

      <release_version>에 대해 설치할 OpenShift Container Platform 버전에 해당하는 태그를 지정합니다 (예: 4.5.4).

    2. 로컬 레지스트리 이름 및 호스트 포트를 내보냅니다.

      $ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'

      <local_registry_host_name>의 경우 미러 저장소의 레지스트리 도메인 이름을 지정하고 <local_registry_host_port>의 경우 콘텐츠를 제공하는데 사용되는 포트를 지정합니다.

    3. 로컬 저장소 이름을 내보냅니다.

      $ LOCAL_REPOSITORY='<local_repository_name>'

      <local_repository_name>의 경우 레지스트리에 작성할 저장소 이름 (예: ocp4/openshift4)을 지정합니다.

    4. 미러링할 저장소 이름을 내보냅니다.

      $ PRODUCT_REPO='openshift-release-dev'

      프로덕션 환경의 릴리스의 경우 openshift-release-dev를 지정해야 합니다.

    5. 레지스트리 풀 시크릿의 경로를 내보냅니다.

      $ LOCAL_SECRET_JSON='<path_to_pull_secret>'

      생성한 미러 레지스트리에 대한 풀 시크릿의 절대 경로 및 파일 이름을 <path_to_pull_secret>에 지정합니다.

    6. 릴리스 미러를 내보냅니다.

      $ RELEASE_NAME="ocp-release"

      프로덕션 환경의 릴리스의 경우 ocp-release를 지정해야 합니다.

    7. 클러스터의 아키텍처 유형을 내보냅니다.

      $ ARCHITECTURE=<cluster_architecture> 1
      1
      x86_64,aarch64,s390x 또는 ppc64le 과 같은 클러스터의 아키텍처를 지정합니다.
    8. 미러링된 이미지를 호스트할 디렉터리의 경로를 내보냅니다.

      $ REMOVABLE_MEDIA_PATH=<path> 1
      1
      초기 슬래시 (/) 문자를 포함하여 전체 경로를 지정합니다.
  3. 미러 레지스트리에 버전 이미지를 미러링합니다.

    • 미러 호스트가 인터넷에 액세스할 수 없는 경우 다음 작업을 수행합니다.

      1. 이동식 미디어를 인터넷에 연결된 시스템에 연결합니다.
      2. 미러링할 이미지 및 설정 매니페스트를 확인합니다.

        $ oc adm release mirror -a ${LOCAL_SECRET_JSON}  \
             --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \
             --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \
             --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run
      3. 이전 명령의 출력에서 전체 imageContentSources 섹션을 기록합니다. 미러에 대한 정보는 미러링된 저장소에 고유하며 설치 중에 imageContentSources 섹션을 install-config.yaml 파일에 추가해야 합니다.
      4. 이동식 미디어의 디렉터리에 이미지를 미러링합니다.

        $ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}
      5. 미디어를 네트워크가 제한된 환경으로 가져와서 이미지를 로컬 컨테이너 레지스트리에 업로드합니다.

        $ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} 1
        1
        REMOVABLE_MEDIA_PATH의 경우 이미지를 미러링 할 때 지정한 것과 동일한 경로를 사용해야 합니다.
        중요

        oc image mirror 를 실행하면 다음과 같은 오류가 발생할 수 있습니다. error: unable to retrieve source image. 이 오류는 이미지 인덱스에 이미지 레지스트리에 더 이상 존재하지 않는 이미지에 대한 참조가 포함된 경우 발생합니다. 이미지 인덱스에서는 이러한 이미지를 실행하는 사용자가 업그레이드 그래프의 최신 지점으로 업그레이드 경로를 실행할 수 있도록 이전 참조를 유지할 수 있습니다. 임시 해결 방법으로 --skip-missing 옵션을 사용하여 오류를 무시하고 이미지 인덱스를 계속 다운로드할 수 있습니다. 자세한 내용은 Service Mesh Operator 미러링 실패 에서 참조하십시오.

    • 로컬 컨테이너 레지스트리가 미러 호스트에 연결된 경우 다음 작업을 수행합니다.

      1. 다음 명령을 사용하여 릴리스 이미지를 로컬 레지스트리에 직접 푸시합니다.

        $ oc adm release mirror -a ${LOCAL_SECRET_JSON}  \
             --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \
             --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \
             --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}

        이 명령은 요약된 릴리스 정보를 가져오며, 명령 출력에는 클러스터를 설치할 때 필요한 imageContentSources 데이터가 포함됩니다.

      2. 이전 명령의 출력에서 전체 imageContentSources 섹션을 기록합니다. 미러에 대한 정보는 미러링된 저장소에 고유하며 설치 중에 imageContentSources 섹션을 install-config.yaml 파일에 추가해야 합니다.

        참고

        미러링 프로세스 중에 이미지 이름이 Quay.io에 패치되고 podman 이미지는 부트스트랩 가상 머신의 레지스트리에 Quay.io를 표시합니다.

  4. 미러링된 콘텐츠를 기반으로 설치 프로그램을 생성하려면 콘텐츠를 추출하여 릴리스 배포에 고정합니다.

    • 미러 호스트가 인터넷에 액세스할 수 없는 경우 다음 명령을 실행합니다.

      $ oc adm release extract -a ${LOCAL_SECRET_JSON} --icsp-file=<file> --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}" \
      --insecure=true 1
      1
      선택 사항: 대상 레지스트리에 대한 신뢰를 구성하지 않으려면 --insecure=true 플래그를 추가합니다.
    • 로컬 컨테이너 레지스트리가 미러 호스트에 연결된 경우 다음 명령을 실행합니다.

      $ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
      중요

      선택한 OpenShift Container Platform 버전에 올바른 이미지를 사용하려면 미러링된 콘텐츠에서 설치 프로그램을 배포해야 합니다.

      인터넷이 연결된 컴퓨터에서 이 단계를 수행해야 합니다.

  5. 설치 프로그램에서 제공하는 인프라를 사용하는 클러스터의 경우 다음 명령을 실행합니다.

    $ openshift-install

2.3.6. 연결이 끊긴 환경의 Cluster Samples Operator

연결이 끊긴 환경에서는 Cluster Samples Operator를 구성하기 위해 클러스터를 설치한 후 추가 단계를 수행해야 합니다. 준비 과정에서 다음 정보를 검토합니다.

2.3.6.1. 미러링을 위한 Cluster Samples Operator 지원

설치 프로세스 중에 OpenShift Container Platform은 openshift-cluster-samples-operator 네임스페이스에 imagestreamtag-to-image라는 구성 맵을 생성합니다. imagestreamtag-to-image 구성 맵에는 각 이미지 스트림 태그에 대한 이미지 채우기 항목이 포함되어 있습니다.

구성 맵의 데이터 필드에 있는 각 항목의 키 형식은 <image_stream_name>_<image_stream_tag_name>입니다.

OpenShift Container Platform의 연결이 끊긴 설치 프로세스 중에 Cluster Samples Operator의 상태가 Removed로 설정됩니다. Managed로 변경하려면 샘플이 설치됩니다.

참고

네트워크 제한 또는 중단된 환경에서 샘플을 사용하려면 네트워크 외부의 서비스에 액세스해야 할 수 있습니다. 일부 예제 서비스에는 GitHub, Maven Central, npm, RubyGems, PyPi 등이 있습니다. 클러스터 샘플 Operator의 오브젝트가 필요한 서비스에 도달할 수 있도록 하는 추가 단계가 있을 수 있습니다.

이 구성 맵을 사용하여 이미지 스트림을 가져오려면 이미지를 미러링해야 하는 이미지 참조로 사용할 수 있습니다.

  • Cluster Samples Operator가 Removed로 설정된 경우 미러링된 레지스트리를 생성하거나 사용할 기존 미러링된 레지스트리를 확인할 수 있습니다.
  • 새 구성 맵을 가이드로 사용하여 미러링된 레지스트리에 샘플을 미러링합니다.
  • Cluster Samples Operator 구성 개체의 skippedImagestreams 필드에 미러링되지 않은 이미지 스트림을 추가합니다.
  • Cluster Samples Operator 구성 개체의 samplesRegistry 를 미러링된 레지스트리로 설정합니다.
  • 그런 다음 Cluster Samples Operator를 Managed로 설정하여 미러링된 이미지 스트림을 설치합니다.

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

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

중요
  • OpenShift 이미지 레지스트리는 미러링 프로세스 중에 필요한 태그 없이 푸시를 지원하지 않으므로 대상 레지스트리로 사용할 수 없습니다.
  • oc adm catalog mirror 를 실행하면 다음과 같은 오류가 발생할 수 있습니다. error: unable to retrieve source image. 이 오류는 이미지 인덱스에 이미지 레지스트리에 더 이상 존재하지 않는 이미지에 대한 참조가 포함된 경우 발생합니다. 이미지 인덱스에서는 이러한 이미지를 실행하는 사용자가 업그레이드 그래프의 최신 지점으로 업그레이드 경로를 실행할 수 있도록 이전 참조를 유지할 수 있습니다. 임시 해결 방법으로 --skip-missing 옵션을 사용하여 오류를 무시하고 이미지 인덱스를 계속 다운로드할 수 있습니다. 자세한 내용은 Service Mesh Operator 미러링 실패 에서 참조하십시오.

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

2.3.7.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

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

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

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

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

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

프로세스

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

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

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

    출력 예

    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 명령을 사용하는 동안 발생하는 무단 오류를 참조하십시오.

2.3.7.2.2. Airgapped 레지스트리에 카탈로그 콘텐츠 미러링

미러 레지스트리가 완전히 연결이 끊겼거나 에어그래시된 호스트에 있는 경우 다음 작업을 수행합니다.

프로세스

  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
    미러링할 카탈로그의 인덱스 이미지를 지정합니다.
    2
    현재 디렉터리의 로컬 파일에 미러링할 내용을 지정합니다.
    3
    선택 사항: 필요한 경우 레지스트리 자격 증명 파일의 위치를 지정합니다.
    4
    선택 사항: 대상 레지스트리에 대한 트러스트를 구성하지 않으려면 --insecure 플래그를 추가합니다.
    5
    선택 사항: 여러 변형이 있을 때 선택할 수 있는 인덱스 이미지의 플랫폼 및 아키텍처를 지정합니다. 이미지는 '<platform>/<arch>[/<variant>]' 로 지정됩니다. 이는 인덱스에서 참조하는 이미지에는 적용되지 않습니다. 유효한 값은 linux/amd64,linux/ppc64le,linux/s390x,linux/arm64, .*입니다.

    출력 예

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

    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>[/<repository>] \
        --manifests-only \1
        [-a ${REG_CREDS}] \
        [--insecure]
    1
    이 단계에서는 명령이 미러링된 모든 콘텐츠를 다시 복사하지 않도록 --manifests-only 플래그가 필요합니다.
    중요

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

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

2.3.7.3. 생성된 매니페스트

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

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

manifests-<index_image_name>-<random_number>

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

manifests-index/<repository>/<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 설명서의 패키지 매니페스트 형식 카탈로그 이미지 미러링 절차에 있는 단계를 참조하십시오.

2.3.7.4. 설치 후 요구 사항

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

2.3.8. 다음 단계

2.3.9. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.