3.3. 제한된 네트워크가 제한된 환경에 설치하기 위해 미러 레지스트리 만들기

제한된 네트워크에서 프로비저닝된 인프라에 클러스터를 설치하기 전에 필요한 컨테이너 이미지를 해당 환경에 미러링해야합니다. 네트워크가 제한된 환경에서의 설치는 설치 프로그램에서 제공하는 인프라가 아닌 사용자가 제공하는 인프라에서만 지원됩니다. 이 프로세스를 무제한 네트워크에서 사용하여 클러스터가 외부 컨텐츠에 대해 조직의 제어 조건을 충족하는 컨테이너 이미지만 사용하도록 할 수 있습니다.

중요

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

3.3.1. 미러 레지스트리 정보

OpenShift Container Platform 설치 및 후속 제품 업데이트에 필요한 이미지를 미러 레지스트리에 미러링 할 수 있습니다. 이러한 작업은 동일한 프로세스를 사용합니다. 컨텐츠에 대한 설명이 포함된 릴리스 이미지와 이 컨텐츠가 참조하는 이미지가 모두 미러링됩니다. 또한 Operator 카탈로그 소스 이미지 및 참조하는 이미지는 사용하는 Operator마다 미러링해야합니다. 컨텐츠를 미러링한 후 미러 레지스트리에서 이 컨텐츠를 검색하도록 각 클러스터를 설정합니다.

미러 레지스트리에는 최신 컨테이너 이미지 API (schema2라고 함)를 지원하는 모든 컨테이너 레지스트리를 사용할 수 있습니다. 모든 주요 클라우드 공급자 레지스트리, Red Hat Quay, Artifactory, 오픈 소스 Docker 배포 레지스트리가 지원됩니다. 이러한 레지스트리 중 하나를 사용하면 OpenShift Container Platform이 연결되지 않은 환경에서 각 이미지의 무결성을 확인할 수 있습니다.

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

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

3.3.2. 미러 호스트 준비

미러 단계를 수행하기 전에 호스트를 준비하여 컨텐츠를 검색하고 원격 위치로 푸시할 수 있도록 해야합니다.

3.3.2.1. 바이너리를 다운로드하여 CLI 설치

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

중요

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

3.3.2.1.1. Linux에서 CLI 설치

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

프로세스

  1. Red Hat OpenShift Cluster Manager 사이트의 Infrastructure Provider 페이지로 이동합니다.
  2. 인프라 공급 업체를 선택하고 설치 유형을 선택하십시오.
  3. Command-line interface 섹션의 드롭다운 메뉴에서 Linux 를 선택하고 Download command-line tools를 클릭합니다.
  4. 아카이브의 압축을 풉니다.

    $ tar xvzf <file>
  5. oc 바이너리를 PATH에 있는 디렉토리에 배치합니다.

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

    $ echo $PATH

CLI를 설치한 후 oc 명령으로 통해 사용할 수 있습니다.

$ oc <command>
3.3.2.1.2. Windows에서 CLI 설치

다음 프로세스를 사용하여 Windows에 OpenShift CLI (oc) 바이너리를 설치할 수 있습니다.

프로세스

  1. Red Hat OpenShift Cluster Manager 사이트의 Infrastructure Provider 페이지로 이동합니다.
  2. 인프라 공급 업체를 선택하고 설치 유형을 선택하십시오.
  3. Command-line interface 섹션의 드롭다운 메뉴에서 Windows를 선택하고 Download command-line tools를 클릭합니다.
  4. ZIP 프로그램으로 아카이브를 압축 해제합니다.
  5. oc 바이너리를 PATH에 있는 디렉토리로 이동합니다.

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

    C:\> path

CLI를 설치한 후 oc 명령으로 통해 사용할 수 있습니다.

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

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

프로세스

  1. Red Hat OpenShift Cluster Manager 사이트의 Infrastructure Provider 페이지로 이동합니다.
  2. 인프라 공급 업체를 선택하고 설치 유형을 선택하십시오.
  3. Command-line interface 섹션의 드롭다운 메뉴에서 MacOS를 선택하고 Download command-line tools를 클릭합니다.
  4. 아카이브의 압축을 해제합니다.
  5. oc 바이너리 PATH의 디렉토리로 이동합니다.

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

    $ echo $PATH

CLI를 설치한 후 oc 명령으로 통해 사용할 수 있습니다.

$ oc <command>

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

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

주의

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

주의

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

중요

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

전제 조건

  • 네트워크가 제한된 환경에서 사용하도록 미러 레지스트리가 설정되어 있습니다.
  • 미러 레지스트리에서 이미지를 미러링할 이미지 저장소 위치를 확인했습니다.
  • 이미지를 해당 이미지 저장소에 업로드할 수 있는 미러 레지스트리 계정을 제공하고 있습니다.

프로세스

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

  1. Red Hat OpenShift Cluster Manager 사이트의 Pull Secret 페이지에서 registry.redhat.io pull secret을 다운로드하여 .json 파일에 저장하십시오.
  2. 다음 명령을 사용하여 레지스트리에 로그인하십시오.

    $ oc registry login --to ./pull-secret.json --registry "<registry_host_and_port>"

    레지스트리의 사용자 이름 및 비밀번호를 입력합니다.

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

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

전제 조건

  • 미러 호스트가 인터넷에 액세스할 수 있습니다.
  • 네트워크가 제한된 환경에서 사용할 미러 레지스트리를 설정하고 설정한 인증서 및 인증 정보에 액세스할 수 있습니다.
  • Red Hat OpenShift Cluster Manager 사이트의 Pull Secret 페이지에서 pull secret을 다운로드하여 미러 저장소의 인증 정보를 포함하도록 수정했습니다.

프로세스

미러 호스트에서 다음 단계를 완료하십시오.

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

    $ export OCP_RELEASE=<release_version> 1
    $ export LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>' 2
    $ export LOCAL_REPOSITORY='<local_repository_name>' 3
    $ export PRODUCT_REPO='openshift-release-dev' 4
    $ export LOCAL_SECRET_JSON='<path_to_pull_secret>' 5
    $ export RELEASE_NAME="ocp-release" 6
    $ export ARCHITECTURE=<server_architecture> 7
    $ REMOVABLE_MEDIA_PATH=<path> 8
    1
    <release_version>에 대해 설치할 OpenShift Container Platform 버전에 해당하는 태그를 지정합니다 (예: 4.5.0).
    2
    <local_registry_host_name>의 경우 미러 저장소의 레지스트리 도메인 이름을 지정하고 <local_registry_host_port>의 경우 컨텐츠를 제공하는데 사용되는 포트를 지정합니다.
    3
    <local_repository_name>의 경우 레지스트리에 작성할 저장소 이름 (예: ocp4 / openshift4)을 지정합니다.
    4
    미러링할 저장소입니다. 프로덕션 환경의 릴리스에 대해 openshift-release-dev를 지정해야합니다.
    5
    <path_to_pull_secret>에 대해 생성한 미러 레지스트리에 대한 풀 시크릿의 절대 경로 및 파일 이름을 지정합니다.
    6
    릴리스 미러입니다. 프로덕션 환경의 릴리스에 대해 ocp-release를 지정해야합니다.
    7
    server_architecture에 대해 x86_64와 같은 서버 아키텍처를 지정합니다.
    8
    <path>에 대해 미러링된 이미지를 호스트할 디렉토리의 경로를 지정합니다.
  3. 버전 이미지를 내부 컨테이너 레지스트리에 미러링합니다.

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

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

        $ oc adm -a ${LOCAL_SECRET_JSON} release mirror
        --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} --run-dry
      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. 다음 명령을 사용하여 릴리스 이미지를 로컬 레지스트리에 직접 푸시합니다.

        $ oc adm -a ${LOCAL_SECRET_JSON} release mirror \
             --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 파일에 추가해야합니다.
  4. 미러링된 컨텐츠를 기반으로 설치 프로그램을 만들려면 컨텐츠를 추출하여 릴리스 배포에 고정합니다.

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

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

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

3.3.5. 대체 레지스트리 또는 미러링된 레지스트리에서 Samples Operator 이미지 스트림 사용

Samples Operator에 의해 관리되는 OpenShift namespace에 있는 대부분의 이미지 스트림은 registry.redhat.io의 Red Hat 레지스트리에 있는 이미지를 참조합니다. 미러링은 이러한 이미지 스트림에 적용되지 않습니다.

중요

jenkins, jenkins-agent-mavenjenkins-agent-nodejs 이미지스트림은 설치 페이로드에서 가져오고 Samples Operator로 관리되므로 해당 이미지 스트림에 대한 추가 미러링 절차가 필요하지 않습니다.

Sample Operator 설정 파일에서 samplesRegistry 필드를 registry.redhat.io로 설정하는 것은 Jenkins 이미지 및 이미지 스트림을 제외하고 registry.redhat.io로 전송되기 때문에 중복될 수 있습니다. 또한 Jenkins 이미지 스트림의 설치 페이로드도 손상됩니다.

Samples Operator는 Jenkins 이미지 스트림에 대해 다음 레지스트리를 사용하지 못하게 합니다.

참고

설치 페이로드의 일부인 cli, installer, must-gathertest 이미지 스트림은 Samples Operator가 관리하지 않습니다. 이러한 내용은 이 프로세스에서 다루지 않습니다.

전제 조건

  • cluster-admin 역할을 가진 사용자로 클러스터에 액세스합니다.
  • 미러 레지스트리에 대한 풀 시크릿을 만듭니다.

프로세스

  1. 미러링할 특정 이미지 스트림의 이미지에 액세스합니다. 예를 들면 다음과 같습니다.

    $ oc get is <imagestream> -n openshift -o json | jq .spec.tags[].from.name | grep registry.redhat.io
  2. 제한된 네트워크 환경에서 필요한 모든 이미지 스트림과 관련된 registry.redhat.io의 이미지를 지정된 미러 중 하나로 미러링합니다.

    $ oc image mirror registry.redhat.io/rhscl/ruby-25-rhel7:latest ${MIRROR_ADDR}/rhscl/ruby-25-rhel7:latest
  3. 클러스터의 이미지 설정 개체에서 미러에 필요한 신뢰할 수 있는 CA를 추가합니다.

    $ oc create configmap registry-config --from-file=${MIRROR_ADDR_HOSTNAME}..5000=$path/ca.crt -n openshift-config
    $ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-config"}}}' --type=merge
  4. 미러 설정에 정의된 미러 위치의 hostname 부분을 포함하도록 Samples Operator 설정 개체에서 samplesRegistry 필드를 업데이트합니다.

    $ oc get configs.samples.operator.openshift.io -n openshift-cluster-samples-operator
    참고

    현재 이미지 스트림 가져 오기 프로세스에서 미러 또는 검색 메커니즘이 사용되지 않기 때문에 이 작업이 필요합니다.

  5. Samples Operator 설정 개체의 skippedImagestreams 필드에 미러링되지 않은 이미지 스트림을 추가합니다. 또는 샘플 이미지 스트림을 모두 지원할 필요가 없는 경우 Samples Operator 설정 개체에서 Samples Operator를 Removed로 설정합니다.

    참고

    건너 뛰지 않고 미러링되지 않은 이미지 스트림 또는 Samples Operator가 Removed로 변경되지 않는 경우 Samples Operator는 이미지 스트림 가져 오기를 실패한 후 2 시간 후에 Degraded 상태를 보고합니다.

    OpenShift 네임 스페이스의 여러 템플릿은 이미지 스트림을 참조합니다. 따라서 Removed를 사용하여 이미지 스트림과 템플릿을 모두 제거하면 누락된 이미지 스트림으로 인해 기능이 제대로 작동하지 않을 경우 템플릿을 사용할 가능성이 없어집니다.

다음 단계