5.6. 미러 레지스트리를 사용하여 Windows 컨테이너 사용


Windows Machine Config Operator(WMCO)는 ImageDigestMirrorSet (IDMS) 또는 ImageTagMirrorSet (ITMS) 개체를 사용하여 클러스터가 미러 레지스트리에서 이미지를 가져오도록 구성함으로써 공개 레지스트리가 아닌 레지스트리 미러에서 이미지를 가져올 수 있습니다.

미러 레지스트리에는 다음과 같은 이점이 있습니다.

  • 공공 레지스트리 중단을 방지합니다.
  • 노드 및 포드 생성 속도 향상
  • 조직의 방화벽 뒤에서 이미지를 가져옵니다.

미러 레지스트리는 연결이 끊긴 네트워크나 에어갭이 있는 네트워크에서 OpenShift Container Platform 클러스터와 함께 사용할 수도 있습니다. 연결이 끊긴 네트워크 는 인터넷에 직접 연결할 수 없는 제한된 네트워크입니다. 클러스터가 인터넷에 액세스할 수 없으므로 외부 컨테이너 이미지를 참조할 수 없습니다.

미러 레지스트리를 사용하려면 다음과 같은 일반적인 단계가 필요합니다.

  • Red Hat Quay와 같은 도구를 사용하여 미러 레지스트리를 만듭니다.
  • 컨테이너 이미지 레지스트리 자격 증명 파일을 만듭니다.
  • 온라인 이미지 저장소에서 미러 레지스트리로 이미지를 복사합니다.

이러한 단계에 대한 자세한 내용은 "연결 해제된 설치 미러링에 대한 정보"를 참조하세요.

미러 레지스트리를 만들고 이미지를 미러링한 후 ImageDigestMirrorSet (IDMS) 또는 ImageTagMirrorSet (ITMS) 객체를 사용하여 각 포드 사양을 업데이트하지 않고도 미러 레지스트리에서 이미지를 가져오도록 클러스터를 구성할 수 있습니다. IDMS 및 ITMS 개체는 소스 이미지 레지스트리의 저장소에서 이미지를 가져오라는 요청을 리디렉션하고 대신 미러 저장소에서 이를 확인합니다.

IDMS 또는 ITMS 개체가 변경되면 WMCO는 Windows 노드의 해당 hosts.toml 파일을 새 정보로 자동으로 업데이트합니다. 미러 설정이 변경되면 WMCO는 각 Windows 노드를 순차적으로 업데이트합니다. 따라서 이러한 업데이트에 필요한 시간은 클러스터의 Windows 노드 수에 따라 증가합니다.

WMCO에서 구성한 Windows 노드는 containerd 컨테이너 런타임에 의존하므로 WMCO는 containerd 구성 파일이 레지스트리 설정으로 최신 상태인지 확인합니다. 새 노드의 경우 이러한 파일은 인스턴스가 생성될 때 복사됩니다. 기존 노드의 경우, 미러 레지스트리를 활성화한 후 레지스트리 컨트롤러는 SSH를 사용하여 각 노드에 액세스하고 생성된 구성 파일을 복사하여 기존 파일을 모두 대체합니다.

머신 세트 또는 BYOH(Bring-Your-Own-Host) Windows 노드에서 미러 레지스트리를 사용할 수 있습니다.

Windows 노드에서 IDMS 또는 ITMS 개체를 사용하여 컨테이너 이미지를 미러링하는 경우 Linux 노드와 다른 다음 동작에 유의하세요.

  • Windows 노드의 미러링은 Linux 노드에서 사용되는 이미지 수준이 아닌 레지스트리 수준에서 작동합니다. 따라서 IDMS 또는 ITMS 개체를 사용하여 미러링된 Windows 이미지에는 특정 명명 요구 사항이 있습니다.

    네임스페이스의 마지막 부분과 미러 이미지의 이미지 이름은 미러링되는 이미지와 일치해야 합니다. 예를 들어, mcr.microsoft.com/oss/kubernetes/pause:3.9 이미지를 미러링하는 경우 미러는 $mirrorRegistry/<organization>/oss/kubernetes/pause:3.9 형식이어야 합니다. 여기서 $org는 조직 이름이나 네임스페이스이거나 완전히 제외될 수 있습니다. 유효한 값으로는 $mirrorRegistry/oss/kubernetes/pause:3.9 , $mirrorRegistry/custom/oss/kubernetes/pause:3.9 , $mirrorRegistry/x/y/z/oss/kubernetes/pause:3.9 가 있습니다 .

  • Windows 노드는 ITMS 개체를 가져와 레지스트리 전체 미러를 구성하는 데 사용합니다. 다음 예에서 quay.io/remote-org/image를 quay.io/my-org/image 로 미러링하도록 구성하면 Windows 노드가 quay.io/remote-org 의 모든 이미지에 대해 해당 미러를 사용하게 됩니다. 따라서 quay.io/remote-org/image:tag는 예상대로 quay.io/my-org/image:tag 이미지를 사용하지만, quay.io/remote-org/different-image:tag 를 사용하는 다른 컨테이너도 quay.io/remote-org/different-image:tag 미러를 사용하려고 시도합니다. 이를 고려하지 않으면 의도치 않은 동작이 발생할 수 있습니다.

    이러한 이유로 ITMS 개체 대신 IDMS 개체의 다이제스트를 사용하여 컨테이너 이미지를 지정합니다. 다이제스트를 사용하면 컨테이너가 지정하는 이미지와 가져오는 이미지가 동일한 다이제스트를 갖도록 하여 잘못된 컨테이너 이미지가 사용되는 것을 방지할 수 있습니다.

5.6.1. 이미지 레지스트리 저장소 미러링 이해

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

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

OpenShift Container Platform의 저장소 미러링에는 다음 속성이 포함되어 있습니다.

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

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

  • OpenShift Container Platform 설치 시

    OpenShift Container Platform에 필요한 컨테이너 이미지를 가져온 다음 해당 이미지를 회사 방화벽 뒤에 배치하면 연결이 끊긴 환경에 있는 데이터 센터에 OpenShift Container Platform을 설치할 수 있습니다.

  • OpenShift Container Platform 설치 후

    OpenShift Container Platform 설치 중에 미러링을 구성하지 않은 경우 다음 사용자 정의 리소스(CR) 개체를 사용하여 설치 후에 미러링을 구성할 수 있습니다.

    • ImageDigestMirrorSet (IDMS). 이 객체를 사용하면 다이제스트 사양을 사용하여 미러링된 레지스트리에서 이미지를 가져올 수 있습니다. IDMS CR을 사용하면 이미지 풀링이 실패할 경우 소스 레지스트리에서 계속해서 풀링을 시도하는 것을 허용하거나 중지하는 대체 정책을 설정할 수 있습니다.
    • ImageTagMirrorSet (ITMS). 이 객체를 사용하면 이미지 태그를 사용하여 미러링된 레지스트리에서 이미지를 가져올 수 있습니다. ITMS CR을 사용하면 이미지 풀링이 실패할 경우 소스 레지스트리에서 계속해서 풀링을 시도하는 것을 허용하거나 중지하는 대체 정책을 설정할 수 있습니다.

이러한 각 사용자 정의 리소스 개체는 다음 정보를 식별합니다.

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

Windows Machine Config Operator(WMCO)는 IDMS 및 ITMS 리소스의 변경 사항을 감시하고 해당 변경 사항을 포함하여 각 소스 레지스트리에 대해 하나의 파일인 hosts.toml containerd 구성 파일 세트를 생성합니다. 그런 다음 WMCO는 새 레지스트리 구성을 사용하도록 기존 Windows 노드를 업데이트합니다.

참고

미러링된 레지스트리를 사용하여 Windows 노드를 추가하려면 먼저 IDMS 및 ITMS 개체를 만들어야 합니다.

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

소스 이미지 레지스트리에서 미러 이미지 레지스트리로 이미지 풀 요청을 리디렉션하기 위해 사후 설치 미러 구성 사용자 정의 리소스(CR)를 만들 수 있습니다.

중요

ImageDigestMirrorSetImageTagMirrorSet 객체를 통해 미러링된 Windows 이미지에는 "미러 레지스트리와 함께 Windows 컨테이너 사용"에 설명된 대로 특정 명명 요구 사항이 있습니다.

사전 요구 사항

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

프로세스

  1. 미러링된 저장소를 설정합니다.

    • Red Hat Quay 저장소 미러링에 설명된 대로 Red Hat Quay 로 미러링된 저장소를 설정합니다. Red Hat Quay를 사용하면 한 저장소에서 다른 저장소로 이미지를 복사할 수 있고, 시간이 지남에 따라 해당 저장소를 자동으로 반복적으로 동기화할 수도 있습니다.
    • Skopeo 와 같은 도구를 사용하여 소스 저장소에서 미러링된 저장소로 이미지를 수동으로 복사합니다.

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

      $ skopeo copy --all \
      docker://registry.access.redhat.com/ubi9/ubi-minimal:latest@sha256:5cf... \
      docker://example.io/example/ubi-minimal
      Copy to Clipboard Toggle word wrap

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

    중요

    mcr.microsoft.com/oss/kubernetes/pause:3.9 이미지를 미러링해야 합니다. 예를 들어, 다음 skopeo 명령을 사용하여 이미지를 미러링할 수 있습니다.

    $ skopeo copy \
    docker://mcr.microsoft.com/oss/kubernetes/pause:3.9\
    docker://example.io/oss/kubernetes/pause:3.9
    Copy to Clipboard Toggle word wrap
  2. OpenShift Container Platform 클러스터에 로그인합니다.
  3. 필요에 따라 ImageDigestMirrorSet 또는 ImageTagMirrorSet CR을 생성하여 소스 및 미러를 자체 레지스트리 및 저장소 쌍과 이미지로 교체합니다.

    apiVersion: config.openshift.io/v1 
    1
    
    kind: ImageDigestMirrorSet 
    2
    
    metadata:
      name: ubi9repo
    spec:
      imageDigestMirrors: 
    3
    
      - mirrors:
        - example.io/example/ubi-minimal 
    4
    
        - example.com/example2/ubi-minimal 
    5
    
        source: registry.access.redhat.com/ubi9/ubi-minimal 
    6
    
        mirrorSourcePolicy: AllowContactingSource 
    7
    
      - mirrors:
        - mirror.example.com
        source: registry.redhat.io
        mirrorSourcePolicy: NeverContactSource
      - mirrors:
        - docker.io
        source: docker-mirror.internal
        mirrorSourcePolicy: AllowContactingSource
    Copy to Clipboard Toggle word wrap
    1
    이 CR과 함께 사용할 API를 나타냅니다. config.openshift.io/v1 이어야 합니다.
    2
    풀 유형에 따라 오브젝트의 종류를 나타냅니다.
    • ImageDigestMirrorSet: 다이제스트 참조 이미지를 가져옵니다.
    • ImageTagMirrorSet: 태그 참조 이미지를 가져옵니다.
    3
    이미지 가져오기 방법 유형을 나타냅니다.
    • imageDigestMirrors: ImageDigestMirrorSet CR에 사용합니다.
    • imageTagMirrors: ImageTagMirrorSet CR에 사용합니다.
    4
    미러링된 이미지 레지스트리 및 저장소의 이름을 나타냅니다.
    5
    선택 사항: 각 대상 저장소에 대한 보조 미러 저장소를 나타냅니다. 하나의 미러가 다운되면 대상 저장소에서 다른 미러를 사용할 수 있습니다.
    6
    이미지 가져오기 사양에서 참조하는 레지스트리 및 리포지토리 소스를 나타냅니다.
    7
    선택 사항: 이미지 가져오기에 실패하는 경우 대체 정책을 표시합니다.
    • AllowContactingSource: 소스 저장소에서 이미지를 계속 가져올 수 있습니다. 이는 기본값입니다.
    • NeverContactSource: 소스 저장소에서 이미지를 가져 오는 지속적인 시도를 방지합니다.
  4. 새 오브젝트를 생성합니다.

    $ oc create -f registryrepomirror.yaml
    Copy to Clipboard Toggle word wrap
  5. 미러링된 구성 설정이 적용되었는지 확인하려면 노드 중 하나에서 다음을 수행하십시오.

    1. 노드를 나열합니다.

      $ oc get node
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                           STATUS                     ROLES    AGE  VERSION
      ip-10-0-137-44.ec2.internal    Ready                      worker   7m   v1.32.3
      ip-10-0-138-148.ec2.internal   Ready                      master   11m  v1.32.3
      ip-10-0-139-122.ec2.internal   Ready                      master   11m  v1.32.3
      ip-10-0-147-35.ec2.internal    Ready                      worker   7m   v1.32.3
      ip-10-0-153-12.ec2.internal    Ready                      worker   7m   v1.32.3
      ip-10-0-154-10.ec2.internal    Ready                      master   11m  v1.32.3
      Copy to Clipboard Toggle word wrap

    2. 디버깅 프로세스를 시작하고 노드에 액세스합니다.

      $ oc debug node/ip-10-0-147-35.ec2.internal
      Copy to Clipboard Toggle word wrap

      출력 예

      Starting pod/ip-10-0-147-35ec2internal-debug ...
      To use host binaries, run `chroot /host`
      Copy to Clipboard Toggle word wrap

    3. 루트 디렉토리를 /host 로 변경합니다.

      sh-4.2# chroot /host
      Copy to Clipboard Toggle word wrap
    4. WMCO가 각 Windows 인스턴스의 각 레지스트리에 대해 hosts.toml 파일을 생성했는지 확인하세요. 이전 예제 IDMS 개체의 경우 다음 파일 구조로 3개의 파일이 있어야 합니다.

      $ tree $config_path
      Copy to Clipboard Toggle word wrap

      출력 예

      C:/k/containerd/registries/
      |── registry.access.redhat.com
      |   └── hosts.toml
      |── mirror.example.com
      |   └── hosts.toml
      └── docker.io
          └── hosts.toml:
      Copy to Clipboard Toggle word wrap

      다음 출력은 이전 예제 IDMS 개체가 적용된 hosts.toml containerd 구성 파일을 나타냅니다.

      host.toml 파일 예시

      $ cat "$config_path"/registry.access.redhat.com/host.toml
      server = "https://registry.access.redhat.com" # default fallback server since "AllowContactingSource" mirrorSourcePolicy is set
      
      [host."https://example.io/example/ubi-minimal"]
       capabilities = ["pull"]
      
      [host."https://example.com/example2/ubi-minimal"] # secondary mirror
       capabilities = ["pull"]
      
      
      $ cat "$config_path"/registry.redhat.io/host.toml
      # "server" omitted since "NeverContactSource" mirrorSourcePolicy is set
      
      [host."https://mirror.example.com"]
       capabilities = ["pull"]
      
      
      $ cat "$config_path"/docker.io/host.toml
      server = "https://docker.io"
      
      [host."https://docker-mirror.internal"]
       capabilities = ["pull", "resolve"] # resolve tags
      Copy to Clipboard Toggle word wrap

    5. 소스에서 이미지를 노드로 가져와 미러링에 의해 해결되는지 확인합니다.

      sh-4.2# podman pull --log-level=debug registry.access.redhat.com/ubi9/ubi-minimal@sha256:5cf...
      Copy to Clipboard Toggle word wrap

저장소 미러링 문제 해결

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

  • 가져온 이미지는 첫 번째 작동 미러를 사용하여 공급합니다.
  • 주요 레지스트리는 다른 미러가 작동하지 않는 경우에만 사용됩니다.
  • 시스템 컨텍스트에서 Insecure 플래그가 폴백으로 사용됩니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat