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

OpenShift Update Service에는 업데이트 릴리스 페이로드가 포함된 로컬 액세스 레지스트리가 필요합니다.

중요

OpenShift Update Service 애플리케이션에서 과도한 메모리 사용을 방지하려면 다음 절차에 설명된 대로 릴리스 이미지를 별도의 저장소에 미러링하는 것이 좋습니다.

사전 요구 사항

  • OpenShift Container Platform 이미지 저장소 미러링 섹션까지는 포함되지 않은 "연결이 끊긴 설치의 이미지 미러링"의 단계를 검토했습니다.
  • 네트워크가 제한된 환경에서 사용할 미러 레지스트리를 설정하고 설정한 인증서 및 인증 정보에 액세스할 수 있습니다.
  • Red Hat OpenShift Cluster Manager에서 풀 시크릿을 다운로드하여 미러 저장소에 대한 인증을 포함하도록 수정했습니다.
  • Subject Alternative Name을 설정하지 않는 자체 서명된 인증서를 사용하는 경우 이 절차의 oc 명령 앞에 GODEBUG=x509ignoreCN=0을 지정해야 합니다. 이 변수를 설정하지 않으면 oc 명령이 다음 오류로 인해 실패합니다.

    x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0

프로세스

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

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

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

      $ OCP_RELEASE=<release_version>

      <release_version>에 대해 설치할 OpenShift Container Platform 버전에 해당하는 태그를 지정합니다 (예: 4.6.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. 릴리스 이미지를 포함할 추가 로컬 리포지토리 이름을 내보냅니다.

      $ LOCAL_RELEASE_IMAGES_REPOSITORY='<local_release_images_repository_name>'

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

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

      $ PRODUCT_REPO='openshift-release-dev'

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

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

      $ LOCAL_SECRET_JSON='<path_to_pull_secret>'

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

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

      $ RELEASE_NAME="ocp-release"

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

    8. 서버의 아키텍처 유형 (예: x86_64)을 내보냅니다.

      $ ARCHITECTURE=<server_architecture>
    9. 미러링된 이미지를 호스트할 디렉터리의 경로를 내보냅니다.

      $ 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_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run
      3. 이동식 미디어의 디렉터리에 이미지를 미러링합니다.

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

        $ 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 의 경우 이동식 미디어를 마운트한 경로를 사용해야 합니다.
      5. 릴리스 이미지를 별도의 저장소에 미러링합니다.

        $ oc image mirror -a ${LOCAL_SECRET_JSON} ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} ${LOCAL_REGISTRY}/${LOCAL_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
    • 로컬 컨테이너 레지스트리가 미러 호스트에 연결된 경우 릴리스 이미지를 로컬 레지스트리에 직접 푸시합니다.

      $ 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_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}