검색

5.6. 이미지 레지스트리 저장소 미러링 설정

download PDF

컨테이너 레지스트리 저장소 미러링을 설정하면 다음을 수행할 수 있습니다.

  • 소스 이미지 레지스트리의 저장소에서 이미지를 가져오기 위해 요청을 리디렉션하고 미러링된 이미지 레지스트리의 저장소에서 해결할 수 있도록 OpenShift Container Platform 클러스터를 설정합니다.
  • 하나의 미러가 다운된 경우 다른 미러를 사용할 수 있도록 각 대상 저장소에 대해 여러 미러링된 저장소를 확인합니다.

다음은 OpenShift Container Platform의 저장소 미러링의 몇 가지 속성입니다.

  • 이미지 풀은 레지스트리 다운 타임에 대처할 수 있습니다.
  • 네트워크가 제한된 환경의 클러스터는 중요한 위치(예 : quay.io)에서 이미지를 가져오도록 요청할 수 있으며 회사의 방화벽 뒤에 레지스트리가 요청된 이미지를 제공하도록 할 수 있습니다.
  • 이미지의 풀 요청 시 특정 레지스트리 순서로 시도되고 일반적으로 영구 레지스트리는 마지막으로 시도됩니다.
  • 입력한 미러링 정보는 OpenShift Container Platform 클러스터의 모든 노드에서 /etc/containers/registries.conf 파일에 추가됩니다.
  • 노드가 소스 저장소에서 이미지를 요청하면 요청된 컨텐츠를 찾을 때 까지 미러링된 각 저장소를 차례로 시도합니다. 모든 미러가 실패하면 클러스터는 소스 저장소를 시도합니다. 성공하면 이미지가 노드로 풀됩니다.

저장소 미러링은 다음과 같은 방법으로 설정할 수 있습니다.

  • OpenShift Container Platform 설치 시 : OpenShift Container Platform에 필요한 컨테이너 이미지를 가져온 다음 해당 이미지를 회사 방화벽 뒤에 배치하면 제한된 네트워크에있는 데이터 센터에 OpenShift Container Platform을 설치할 수 있습니다. 자세한 내용은 OpenShift Container Platform 이미지 저장소 미러링을 참조하십시오.
  • OpenShift Container Platform 설치 후 : OpenShift Container Platform 설치 시 미러링을 설정하지 않고 ImageContentSourcePolicy 객체를 사용하여 나중에 설정할 수 있습니다.

다음 프로세스에서는 설치 후 미러를 설정하고 다음을 식별하는 ImageContentSourcePolicy 객체를 만듭니다.

  • 미러링하려는 컨테이너 이미지 저장소의 소스
  • 소스 저장소에서 요청된 컨텐츠를 제공하는 각 미러 저장소에 대한 개별 항목

전제 조건

  • cluster-admin 역할을 가진 사용자로 클러스터에 액세스할 수 있어야 합니다.

프로세스

  1. 미러링된 저장소를 설정합니다. 이를 위해 다음 중 하나를 수행합니다.

    • Red Hat Quay Repository Mirroring에 설명된대로 Red Hat Quay를 사용하여 미러링된 저장소를 설정합니다. Red Hat Quay를 사용하면 한 저장소에서 다른 저장소로 이미지를 복사하고 시간이 지남에 따라 해당 저장소를 반복해서 자동으로 동기화할 수 있습니다.
    • skopeo와 같은 툴을 사용하여 소스 디렉토리에서 미러링된 저장소로 이미지를 수동으로 복사합니다.

      예를 들어, Red Hat Enterprise Linux (RHEL 7 또는 RHEL 8) 시스템에 skopeo RPM 패키지를 설치한 후 다음 예와 같이 skopeo 명령을 사용합니다.

      $ skopeo copy \
         docker://registry.access.redhat.com/ubi8/ubi-minimal@sha256:c505667389712dc337986e29ffcb65116879ef27629dc3ce6e1b17727c06e78f \
         docker://example.io/ubi8/ubi-minimal

      이 예제에는 example.io라는 컨테이너 이미지 레지스트리가 있으며, registry.access.redhat.com에서 ubi8 / ubi-minimal 이미지를 복사하려는 example이라는 이미지 저장소가 있습니다. 레지스트리를 생성한 후 OpenShift Container Platform 클러스터를 설정하여 소스 저장소의 요청을 미러링된 저장소로 리디렉션할 수 있습니다.

  2. OpenShift Container Platform 클러스터에 로그인합니다.
  3. ImageContentSourcePolicy 파일(예: registryrepomirror.yaml)을 만들고 소스 및 미러를 특정 레지스트리 및 저장소 쌍과 이미지로 대체합니다.

    apiVersion: operator.openshift.io/v1alpha1
    kind: ImageContentSourcePolicy
    metadata:
      name: ubi8repo
    spec:
      repositoryDigestMirrors:
      - mirrors:
        - example.io/example/ubi-minimal1
        source: registry.access.redhat.com/ubi8/ubi-minimal2
      - mirrors:
        - example.com/example/ubi-minimal
        source: registry.access.redhat.com/ubi8/ubi-minimal
    1
    이미지 레지스트리 및 저장소의 이름을 가리킵니다.
    2
    미러링된 컨텐츠를 포함하는 레지스트리 및 저장소를 가리킵니다.
  4. ImageContentSourcePolicy를 만듭니다.

    $ oc create -f registryrepomirror.yaml

    ImageContentSourcePolicy가 생성된 후 새 설정이 각 노드에 배포되고 소스 저장소의 요청에 대해 미러링된 저장소를 사용하기 시작합니다.

  5. 미러링된 설정이 작동했는지 확인하려면 노드 중 하나로 이동합니다. 예를 들면 다음과 같습니다.

    1. 노드를 나열합니다.

      $ oc get node
      NAME                           STATUS                     ROLES    AGE  VERSION
      ip-10-0-137-44.ec2.internal    Ready                      worker   7m   v1.18.3
      ip-10-0-138-148.ec2.internal   Ready                      master   11m  v1.18.3
      ip-10-0-139-122.ec2.internal   Ready                      master   11m  v1.18.3
      ip-10-0-147-35.ec2.internal    Ready,SchedulingDisabled   worker   7m   v1.18.3
      ip-10-0-153-12.ec2.internal    Ready                      worker   7m   v1.18.3
      ip-10-0-154-10.ec2.internal    Ready                      master   11m  v1.18.3

      변경 사항이 적용됨에 따라 각 작업자 노드의 스케줄링이 비활성화되어 있음을 알 수 있습니다.

    2. /etc/containers/registries.conf 파일을 체크하여 변경 사항이 적용되었는지 확인합니다.

      $ oc debug node/ip-10-0-147-35.ec2.internal
      Starting pod/ip-10-0-147-35ec2internal-debug ...
      To use host binaries, run `chroot /host`
      
      sh-4.2# chroot /host
      sh-4.2# cat /etc/containers/registries
      unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
      [[registry]]
        location = "registry.access.redhat.com/ubi8/"
        insecure = false
        blocked = false
        mirror-by-digest-only = true
        prefix = ""
      
        [[registry.mirror]]
          location = "example.io/example/ubi8-minimal"
          insecure = false
      
        [[registry.mirror]]
          location = "example.com/example/ubi8-minimal"
          insecure = false
    3. 소스에서 이미지를 노드로 가져와 실제로 미러링에 의해 해결되는지 확인합니다.

      sh-4.2# podman pull --log-level=debug registry.access.redhat.com/ubi8/ubi-minimal

저장소 미러링 문제 해결

설명대로 저장소 미러링 프로세스가 작동하지 않는 경우 저장소 미러링 작동 방법에 대한 다음 정보를 사용하여 문제점을 해결하십시오.

  • 먼저 작업 중인 미러는 풀되는 이미지를 지정하는 데 사용됩니다.
  • 주요 레지스트리는 다른 미러가 작동하지 않는 경우에만 사용됩니다.
  • 시스템 컨텍스트에서 Insecure 플래그가 폴백으로 사용됩니다.
  • /etc/containers/registries 파일 형식이 최근에 변경되었습니다. 현재 버전은 TOML 형식의 버전 2입니다. *
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.