This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.10.4. 이미지 구성
이미지 레지스트리 설정을 이해하고 구성합니다.
10.4.1. 이미지 컨트롤러 구성 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
image.config.openshift.io/cluster 리소스에는 이미지를 처리하는 방법에 대한 클러스터 전체 정보가 들어 있습니다. 유일하게 유효한 정식 이름은 cluster입니다. spec에서는 다음 구성 매개변수를 제공합니다.
DisableScheduledImport,MaxImagesBulkImportedPerRepository,MaxScheduledImportsPerMinute,ScheduledImageImportMinimumIntervalSeconds 와 같은 매개변수는 구성할 수 없습니다.
| 매개변수 | 설명 |
|---|---|
|
|
일반 사용자가 이미지를 가져올 수 있는 컨테이너 이미지 레지스트리를 제한합니다. 이 목록은 유효한 이미지를 포함한다고 신뢰할 수 있으며 애플리케이션을 가져올 수 있도록 하려는 레지스트리로 설정합니다. 이미지를 생성할 권한이 있는 사용자 또는 API의 이 목록의 모든 요소에는 레지스트리 도메인 이름으로 지정된 레지스트리 위치가 포함되어 있습니다.
|
|
|
이 구성 맵의 네임스페이스는 |
|
|
기본 외부 이미지 레지스트리의 호스트 이름을 제공합니다. 외부 호스트 이름은 이미지 레지스트리가 외부에 노출되는 경우에만 설정되어야 합니다. 첫 번째 값은 이미지 스트림의 |
|
| 빌드 및 pod 이미지에 액세스하는 경우 컨테이너 런타임에서 개별 레지스트리를 처리하는 방법을 결정할 구성이 포함되어 있습니다. 비보안 액세스 허용 여부를 예로 들 수 있습니다. 내부 클러스터 레지스트리에 대한 구성은 포함되어 있지 않습니다.
|
allowedRegistries 매개변수가 정의되면 명시적으로 나열되지 않은 경우 registry.redhat.io 및 quay.io 레지스트리 및 기본 OpenShift 이미지 레지스트리를 포함한 모든 레지스트리가 차단됩니다. 이 매개변수를 사용하는 경우 Pod 실패를 방지하기 위해 환경의 페이로드 이미지에서 필요한 registry.redhat.io 및 quay.io 레지스트리 및 internalRegistryHostname을 포함한 모든 레지스트리를 allowedRegistries 목록에 추가합니다. 연결 해제된 클러스터의 경우 미러 레지스트리도 추가해야 합니다.
image.config.openshift.io/cluster 리소스의 상태 필드에는 클러스터에서 관찰된 값이 들어 있습니다.
| 매개변수 | 설명 |
|---|---|
|
|
|
|
|
Image Registry Operator가 설정하며, 이미지 레지스트리가 외부에 노출되는 경우 이미지 레지스트리의 외부 호스트 이름을 제공합니다. 첫 번째 값은 이미지 스트림의 |
10.4.2. 이미지 레지스트리 설정 구성 링크 복사링크가 클립보드에 복사되었습니다!
image.config.openshift.io/cluster 사용자 지정 리소스 (CR)를 편집하여 이미지 레지스트리 설정을 구성할 수 있습니다. 레지스트리 변경 사항이 image.config.openshift.io/cluster CR에 적용되는 경우 MCO(Machine Config Operator)는 다음과 같은 순차적 작업을 수행합니다.
- 노드 차단
- CRI-O를 다시 시작하여 변경 사항 적용
노드 차단 해제
참고MCO는 변경 사항을 감지하면 노드를 재시작하지 않습니다.
절차
다음과 같이
project.config.openshift.io/cluster사용자 정의 리소스를 편집합니다.oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음은
image.config.openshift.io/clusterCR의 예입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Image: 이미지 처리 방법에 대한 클러스터 전체 정보가 들어 있습니다. 유일하게 유효한 정식 이름은cluster입니다.- 2
allowedRegistriesForImport: 일반 사용자가 이미지를 가져올 수 있는 컨테이너 이미지 레지스트리를 제한합니다. 이 목록은 유효한 이미지를 포함한다고 신뢰할 수 있으며 애플리케이션을 가져올 수 있도록 하려는 레지스트리로 설정합니다. 이미지를 생성할 권한이 있는 사용자 또는 API의ImageStreamMappings는 이 정책의 영향을 받지 않습니다. 일반적으로 클러스터 관리자에게만 적절한 권한이 있습니다.- 3
additionalTrustedCA: 이미지 스트림 가져오기, pod 이미지 가져오기,openshift-image-registry풀스루 및 빌드 중에 신뢰해야 하는 추가 CA (인증 기관)가 포함된 구성 맵에 대한 참조입니다. 이 구성 맵의 네임스페이스는openshift-config입니다. 구성 맵 형식에서는 신뢰할 추가 레지스트리 CA마다 레지스트리 호스트 이름을 키로 사용하고 PEM 인증서를 값으로 사용합니다.- 4
registrySources: 빌드 및 pod 이미지에 액세스할 때 컨테이너 런타임에서 개별 레지스트리를 허용하는지 여부를 결정하는 구성이 포함되어 있습니다.allowedRegistries매개변수 또는blockedRegistries매개변수 중 하나를 설정할 수 있지만 둘 다 설정할 수는 없습니다. 이미지 단축 이름을 사용하는 레지스트리를 허용하는 비보안 레지스트리 또는 레지스트리에 대한 액세스를 허용할지 여부를 정의할 수도 있습니다. 이 예에서는 사용할 수 있는 레지스트리를 정의하는allowedRegistries매개변수를 사용합니다. 비보안 레지스트리insecure.com도 허용됩니다.registrySources매개변수에 내부 클러스터 레지스트리에 대한 구성이 포함되어 있지 않습니다.
참고allowedRegistries매개변수가 정의되면 명시적으로 나열되지 않은 경우 registry.redhat.io 및 quay.io 레지스트리 및 기본 OpenShift 이미지 레지스트리를 포함한 모든 레지스트리가 차단됩니다. 이 매개변수를 사용하는 경우 Pod 실패를 방지하기 위해 환경의 페이로드 이미지에서 필요한registry.redhat.io및quay.io레지스트리와internalRegistryHostname을allowedRegistries목록에 추가해야 합니다.registry.redhat.io및quay.io레지스트리를blockedRegistries목록에 추가하지 마십시오.allowedRegistries,blockedRegistries또는insecureRegistries매개변수를 사용하는 경우 레지스트리 내에서 개별 리포지토리를 지정할 수 있습니다. 예:reg1.io/myrepo/myapp:latest.가능한 보안 위험을 줄이려면 안전하지 않은 외부 레지스트리의 사용을 피해야합니다.
변경 사항이 적용되었는지 확인하려면 노드를 나열합니다.
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
허용, 차단 및 비보안 레지스트리 매개변수에 대한 자세한 내용은 이미지 레지스트리 설정 구성을 참조하십시오.
10.4.2.1. 이미지 레지스트리 액세스를 위한 추가 신뢰 저장소 구성 링크 복사링크가 클립보드에 복사되었습니다!
image.config.openshift.io/cluster 사용자 지정 리소스에는 이미지 레지스트리 액세스 중에 신뢰할 수 있는 추가 인증 기관이 포함된 구성 맵에 대한 참조가 포함될 수 있습니다.
사전 요구 사항
- 인증 기관(CA)은 PEM으로 인코딩되어야 합니다.
절차
openshift-config 네임 스페이스에 구성 맵을 만들고 image.config.openshift.io 사용자 지정 리소스에서 AdditionalTrustedCA의 해당 이름을 사용하여 외부 레지스트리에 연결할 때 신뢰할 수있는 추가 CA를 제공할 수 있습니다.
구성 맵 키는 이 CA가 신뢰할 수있는 포트가 있는 레지스트리의 호스트 이름이며 PEM 인증서 콘텐츠는 신뢰할 수 있는 각 추가 레지스트리 CA의 값입니다.
이미지 레지스트리 CA 구성 맵의 예
- 1
- 레지스트리에
registry-with-port.example.com:5000같은 포트가 있는 경우:이..로 교체되어야 합니다.
다음 절차에 따라 추가 CA를 구성할 수 있습니다.
추가 CA를 구성하려면 다음을 실행합니다.
oc create configmap registry-config --from-file=<external_registry_address>=ca.crt -n openshift-config
$ oc create configmap registry-config --from-file=<external_registry_address>=ca.crt -n openshift-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc edit image.config.openshift.io cluster
$ oc edit image.config.openshift.io clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow spec: additionalTrustedCA: name: registry-configspec: additionalTrustedCA: name: registry-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.2.2. 이미지 레지스트리 저장소 미러링 설정 링크 복사링크가 클립보드에 복사되었습니다!
컨테이너 레지스트리 저장소 미러링을 설정하면 다음을 수행할 수 있습니다.
- 소스 이미지 레지스트리의 저장소에서 이미지를 가져오기 위해 요청을 리디렉션하고 미러링된 이미지 레지스트리의 저장소에서 이를 해석하도록 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 설치 시 미러링을 설정하지 않고
ImageContentSourcePolicy개체를 사용하여 나중에 설정할 수 있습니다.
다음 절차에서는 설치 후 미러 구성을 제공합니다. 이때 다음을 식별하는 ImageContentSourcePolicy 오브젝트를 생성할 수 있습니다.
- 미러링하려는 컨테이너 이미지 저장소의 소스
- 소스 저장소에서 요청된 컨텐츠를 제공하는 각 미러 저장소에 대한 개별 항목
ImageContentSourcePolicy 개체가 있는 클러스터에 대한 글로벌 풀 시크릿만 구성할 수 있습니다. 프로젝트에 풀 시크릿을 추가할 수 없습니다.
사전 요구 사항
-
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
미러링된 저장소를 설정합니다.
- 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:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455ebaa6 \ docker://example.io/example/ubi-minimal
$ skopeo copy \ docker://registry.access.redhat.com/ubi8/ubi-minimal@sha256:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455ebaa6 \ docker://example.io/example/ubi-minimalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제에는
example.io라는 컨테이너 이미지 레지스트리가 있으며,registry.access.redhat.com에서ubi8/ubi-minimal이미지를 복사할example이라는 이미지 저장소가 있습니다. 레지스트리를 생성한 후 OpenShift Container Platform 클러스터를 설정하여 소스 저장소의 요청을 미러링된 저장소로 리디렉션할 수 있습니다.
- OpenShift Container Platform 클러스터에 로그인합니다.
ImageContentSourcePolicy파일(예:registryrepomirror.yaml)을 생성하고 소스 및 미러를 특정 레지스트리 및 저장소 쌍과 이미지로 교체합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 이미지 레지스트리 및 저장소의 이름을 가리킵니다.
- 2
- 각 대상 저장소에 대해 여러 미러 리포지토리를 나타냅니다. 하나의 미러가 다운된 경우 대상 저장소에서 다른 미러를 사용할 수 있습니다.
- 3
- 미러링된 컨텐츠를 포함하는 레지스트리 및 저장소를 가리킵니다.
- 4
- 해당 네임스페이스의 이미지를 사용하도록 레지스트리 내에서 네임스페이스를 구성할 수 있습니다. 레지스트리 도메인을 소스로 사용하는 경우
ImageContentSourcePolicy리소스가 레지스트리의 모든 리포지토리에 적용됩니다. - 5
- 레지스트리 이름을 구성하면
ImageContentSourcePolicy리소스가 소스 레지스트리에서 미러 레지스트리로 모든 리포지토리에 적용됩니다. - 6
mirror.example.net/image@sha256:…이미지를 가져옵니다.- 7
- 미러
mirror.example.net/에서 소스 레지스트리 네임스페이스의 myimage 이미지를 가져옵니다.myimage@sha256:… - 8
- 미러 레지스트리
mirror.example.net/registry-example-com/example/myimage@sha256:…에서 이미지registry.example.com/example/myimage/myimage/myimage/myimage@sha256을 가져옵니다.ImageContentSourcePolicy리소스는 소스 레지스트리에서 미러 레지스트리mirror.example.net/registry-example-com으로 모든 리포지토리에 적용됩니다.
새
ImageContentSourcePolicy개체를 생성합니다.oc create -f registryrepomirror.yaml
$ oc create -f registryrepomirror.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ImageContentSourcePolicy개체가 생성된 후 새 설정이 각 노드에 배포된 클러스터는 소스 저장소에 대한 요청에 미러링된 저장소를 사용하기 시작합니다.미러링된 설정이 적용되었는지 확인하려면 노드 중 하나에서 다음을 수행하십시오.
노드를 나열합니다.
oc get node
$ oc get nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Imagecontentsourcepolicy리소스는 노드를 재시작하지 않습니다.디버깅 프로세스를 시작하고 노드에 액세스합니다.
oc debug node/ip-10-0-147-35.ec2.internal
$ oc debug node/ip-10-0-147-35.ec2.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Starting pod/ip-10-0-147-35ec2internal-debug ... To use host binaries, run `chroot /host`
Starting pod/ip-10-0-147-35ec2internal-debug ... To use host binaries, run `chroot /host`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 루트 디렉토리를
/host로 변경합니다.chroot /host
sh-4.2# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/containers/registries.conf파일을 체크하여 변경 사항이 적용되었는지 확인합니다.cat /etc/containers/registries.conf
sh-4.2# cat /etc/containers/registries.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 소스의 이미지 다이제스트를 노드로 가져와 실제로 미러링에 의해 해결되는지 확인합니다.
ImageContentSourcePolicy개체는 이미지 태그가 아닌 이미지 다이제스트만 지원합니다.podman pull --log-level=debug registry.access.redhat.com/ubi8/ubi-minimal@sha256:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455ebaa6
sh-4.2# podman pull --log-level=debug registry.access.redhat.com/ubi8/ubi-minimal@sha256:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455ebaa6Copy to Clipboard Copied! Toggle word wrap Toggle overflow
저장소 미러링 문제 해결
저장소 미러링 절차가 설명대로 작동하지 않는 경우 저장소 미러링 작동 방법에 대한 다음 정보를 사용하여 문제를 해결하십시오.
- 가져온 이미지는 첫 번째 작동 미러를 사용하여 공급합니다.
- 주요 레지스트리는 다른 미러가 작동하지 않는 경우에만 사용됩니다.
-
시스템 컨텍스트에서
Insecure플래그가 폴백으로 사용됩니다. -
/etc/containers/registries.conf파일 형식이 최근에 변경되었습니다. 현재 버전은 TOML 형식의 버전 2입니다.