2.5.5.5.4. 이미지 Pullthrough
활성화된 경우 blob이 로컬로 존재하지 않는 한 레지스트리는 원격 레지스트리에서 요청된 Blob 가져오기를 시도합니다. 원격 후보는 클라이언트에서 가져온 이미지 스트림 상태에 저장된 DockerImage 항목에서 계산됩니다. 이러한 항목의 모든 원격 레지스트리 참조는 Blob을 찾을 때까지 차례로 시도됩니다.
pullthrough는 이미지 스트림 태그가 가져오는 이미지에 대해 존재하는 경우에만 발생합니다. 예를 들어 가져온 이미지가 docker-registry.default.svc:5000/yourproject/yourimage:prod
인 경우 레지스트리는 your project 프로젝트에서
라는 이미지 스트림 태그를 찾습니다. 이미지를 찾으면 해당 이미지 스트림 태그와 연결된 your
image:proddockerImageReference
를 사용하여 이미지를 가져오려고 합니다.
pullthrough를 수행할 때 레지스트리는 참조되는 이미지 스트림 태그와 연결된 프로젝트에서 찾은 가져오기 자격 증명을 사용합니다. 이 기능을 사용하면 이미지를 참조하는 이미지 스트림 태그에 액세스할 수 있는 인증 정보가 없는 레지스트리에 있는 이미지를 가져올 수도 있습니다.
가져오기를 수행하는 외부 레지스트리를 신뢰하기 위한 적절한 인증서가 레지스트리에 있는지 확인해야 합니다. 인증서를 포드의 /etc/pki/tls/certs 디렉터리에 배치해야 합니다. 구성 맵 또는 시크릿 을 사용하여 인증서를 마운트할 수 있습니다. 전체 /etc/pki/tls/certs 디렉토리를 교체해야 합니다. 새 인증서를 포함하고 마운트하는 시크릿 또는 구성 맵에 시스템 인증서를 교체해야 합니다.
기본적으로 이미지 스트림 태그는 소스
의 참조 정책 유형을 사용합니다. 즉, 이미지 스트림 참조가 이미지 가져오기 사양으로 확인되면 사용된 사양이 이미지 소스를 가리킵니다. 외부 레지스트리에서 호스팅되는 이미지의 경우 외부 레지스트리가 되며, 결과적으로 리소스는 외부 레지스트리에서 이미지를 참조하고 가져옵니다. 예를 들어 registry.redhat.io/openshift3/jenkins-2-rhel7
및 pullthrough는 적용되지 않습니다. 이미지 스트림을 참조하는 리소스가 내부 레지스트리를 가리키는 가져오기 사양을 사용하도록 하려면 이미지 스트림 태그에서 참조 정책 유형을 Local
으로 사용해야 합니다. 자세한 내용은 참조 정책에서 확인할 수 있습니다.
이 기능은 기본적으로 활성화되어 있습니다. 그러나 구성 옵션을 사용하여 비활성화할 수 있습니다.
기본적으로 mirrorpullthrough
를 비활성화하지 않는 한 이러한 방식으로 제공되는 모든 원격 Blob은 후속 빠른 액세스를 위해 로컬에 저장됩니다. 이 미러링 기능의 단점은 스토리지 사용량이 증가합니다.
클라이언트가 Blob의 한 바이트 이상을 가져오려고 할 때 미러링이 시작됩니다. 실제로 필요하기 전에 특정 이미지를 통합 레지스트리로 미리 가져오려면 다음 명령을 실행합니다.
$ oc get imagestreamtag/${IS}:${TAG} -o jsonpath='{ .image.dockerImageLayers[*].name }' | \ xargs -n1 -I {} curl -H "Range: bytes=0-1" -u user:${TOKEN} \ http://${REGISTRY_IP}:${PORT}/v2/default/mysql/blobs/{}
이 OpenShift Container Platform 미러링 기능은 유사하지만 고유한 기능인 캐시 기능을 통해 업스트림 레지스트리 가져오기 와 혼동해서는 안 됩니다.