Menu Close

9.2.4. 이미지의 단축 이름을 허용하는 레지스트리 추가

image.config.openshift.io/cluster 사용자 정의 리소스(CR)를 편집하여 이미지의 단축 이름을 검색하기 위해 레지스트리를 추가할 수 있습니다. OpenShift Container Platform은 이 CR에 대한 변경 사항을 클러스터의 모든 노드에 적용합니다.

이미지 단축 이름을 사용하면 가져오기 사양에 정규화된 도메인 이름을 포함하지 않고도 이미지를 검색할 수 있습니다. 예를 들어 registry.access.redhat.com/rhe7/etcd 대신 rhel7/etcd를 사용할 수 있습니다.

전체 경로를 사용하지 않는 경우 단축 이름을 사용할 수 있습니다. 예를 들어, 클러스터가 DNS가 자주 변경되는 여러 내부 레지스트리를 참조하는 경우 각 변경에 따라 풀 사양에서 정규화된 도메인 이름을 업데이트해야 합니다. 이 경우 이미지 단축 이름을 사용하는 것이 유용할 수 있습니다.

이미지를 풀하거나 푸시할 때 컨테이너 런타임은 image.config.openshift.io/cluster CR에서 registrySources 매개변수 아래에 나열된 레지스트리를 검색합니다. containerRuntimeSearchRegistries 매개변수 아래에 레지스트리 목록을 생성한 경우, 단축 이름으로 이미지를 가져오면 컨테이너 런타임에서 해당 레지스트리를 검색합니다.

주의

공용 레지스트리에서 이미지의 단축 이름을 사용하는 것은 좋지 않습니다. 내부 또는 개인 레지스트리에서만 이미지 단축 이름을 사용해야 합니다.

containerRuntimeSearchRegistries 매개변수 아래에 공용 레지스트리를 나열하는 경우 목록의 모든 레지스트리에 인증 정보를 노출하고 네트워크 및 레지스트리 공격을 받을 위험이 있습니다. 항상 공용 레지스트리와 정규화된 이미지 이름을 사용해야 합니다.

MCO(Machine Config Operator)는 image.config.openshift.io/cluster 리소스를 통해 레지스트리에 대한 변경 사항을 확인합니다. MCO가 변경사항을 감지하면 노드를 비우고, 변경 사항을 적용한 다음 노드를 분리합니다. 노드가 Ready 상태가 된 후 containerRuntimeSearchRegistries 매개변수가 추가되면 MCO가 나열된 레지스트리를 사용하여 각 노드에 /etc/containers/registries.conf.d 디렉터리에 파일을 생성합니다. 이 파일은 /host/etc/containers/registries.conf 파일의 정규화되지 않은 검색 레지스트리 목록을 재정의합니다. 정규화되지 않은 검색 레지스트리의 기본 목록으로 돌아갈 수 없습니다.

containerRuntimeSearchRegistries 매개변수는 Podman 및 CRI-O 컨테이너 엔진에서만 작동합니다. 목록의 레지스트리는 빌드 및 이미지 스트림에서 아닌 Pod 사양에서만 사용할 수 있습니다.

절차

  1. 다음과 같이 project.config.openshift.io/cluster 사용자 정의 리소스를 편집합니다.

    $ oc edit image.config.openshift.io/cluster

    다음은 image.config.openshift.io/cluster CR의 예입니다.

    apiVersion: config.openshift.io/v1
    kind: Image
    metadata:
      annotations:
        release.openshift.io/create-only: "true"
      creationTimestamp: "2019-05-17T13:44:26Z"
      generation: 1
      name: cluster
      resourceVersion: "8302"
      selfLink: /apis/config.openshift.io/v1/images/cluster
      uid: e34555da-78a9-11e9-b92b-06d6c7da38dc
    spec:
      allowedRegistriesForImport:
        - domainName: quay.io
          insecure: false
      additionalTrustedCA:
        name: myconfigmap
      registrySources:
        containerRuntimeSearchRegistries: 1
        - reg1.io
        - reg2.io
        - reg3.io
        allowedRegistries: 2
        - example.com
        - quay.io
        - registry.redhat.io
        - reg1.io
        - reg2.io
        - reg3.io
        - image-registry.openshift-image-registry.svc:5000
    ...
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    1
    이미지 단축 이름으로 사용할 레지스트리를 지정합니다. 가능한 보안 위험을 줄이기 위해 내부 또는 개인 레지스트리만 있는 이미지의 단축 이름을 사용해야 합니다.
    2
    containerRuntimeSearchRegistries에 나열된 모든 레지스트리가 allowedRegistries 목록에 포함되어 있는지 확인합니다.
    참고

    allowedRegistries 매개변수가 정의되면 명시적으로 나열되지 않은 경우 registry.redhat.io, quay.io 레지스트리 및 기본 내부 이미지 레지스트리를 포함한 모든 레지스트리가 차단됩니다. 이 매개변수를 사용하는 경우 Pod 실패를 방지하기 위해 환경의 페이로드 이미지에서 필요한 registry.redhat.ioquay.io 레지스트리 및 internalRegistryHostname 을 포함한 모든 레지스트리를 allowedRegistries 목록에 추가합니다. 연결 해제된 클러스터의 경우 미러 레지스트리도 추가해야 합니다.

  2. 레지스트리가 추가되었는지 확인하려면 노드가 Ready 상태로 반환되면 노드에서 다음 명령을 사용합니다.

    $ cat /host/etc/containers/registries.conf.d/01-image-searchRegistries.conf

    출력 예

    unqualified-search-registries = ['reg1.io', 'reg2.io', 'reg3.io']