13.4. OpenShift Update Service 없이 연결이 끊긴 환경에서 클러스터 업데이트
다음 절차에 따라 OpenShift Update Service에 액세스하지 않고 연결이 끊긴 환경에서 클러스터를 업데이트합니다.
13.4.1. 사전 요구 사항
-
oc명령 줄 인터페이스 (CLI) 툴이 설치되어 있어야합니다. - OpenShift Container Platform 이미지 저장소 미러링에 설명된 대로 업데이트를 위한 컨테이너 이미지로 로컬 컨테이너 이미지 레지스트리를 프로비저닝해야 합니다.
-
admin권한이 있는 사용자로 클러스터에 액세스할 수 있어야 합니다. RBAC를 사용하여 권한 정의 및 적용을 참조하십시오. - 업데이트가 실패하는 경우 etcd 백업이 있어야 하며 클러스터를 이전 상태로 복원 해야 합니다.
- 모든 MCP(Machine config pool)가 실행 중이고 일시 중지되지 않았는지 확인해야 합니다. 업데이트 프로세스 중에 일시 중지된 MCP와 연결된 노드를 건너뜁니다. 카나리아 롤아웃 업데이트 전략을 수행하는 경우 MCP를 일시 중지할 수 있습니다.
- 클러스터에서 수동으로 유지 관리되는 인증 정보를 사용하는 경우 새 릴리스의 클라우드 공급자 리소스를 업데이트합니다. 자세한 내용은 수동으로 유지 관리되는 인증 정보를 사용하여 클러스터 업데이트 준비를 참조하십시오.
-
Operator를 실행하거나 Pod 중단 예산을 사용하여 애플리케이션을 구성한 경우 업그레이드 프로세스 중에 중단될 수 있습니다.
PodDisruptionBudget에서minAvailable이 1로 설정된 경우 노드는 제거 프로세스를 차단할 수 있는 보류 중인 머신 구성을 적용하기 위해 드레인됩니다. 여러 노드가 재부팅되면 모든 Pod가 하나의 노드에서만 실행될 수 있으며PodDisruptionBudget필드에서 노드 드레이닝을 방지할 수 있습니다.
Operator를 실행하거나 Pod 중단 예산을 사용하여 애플리케이션을 구성한 경우 업그레이드 프로세스 중에 중단될 수 있습니다. PodDisruptionBudget 에서 minAvailable 이 1로 설정된 경우 노드는 제거 프로세스를 차단할 수 있는 보류 중인 머신 구성을 적용하기 위해 드레인됩니다. 여러 노드가 재부팅되면 모든 Pod가 하나의 노드에서만 실행될 수 있으며 PodDisruptionBudget 필드에서 노드 드레이닝을 방지할 수 있습니다.
13.4.2. MachineHealthCheck 리소스 일시 중지
업그레이드 프로세스 중에 클러스터의 노드를 일시적으로 사용할 수 없게 될 수 있습니다. 작업자 노드의 경우 시스템 상태 점검에서 이러한 노드를 비정상으로 식별하고 재부팅할 수 있습니다. 이러한 노드를 재부팅하지 않으려면 클러스터를 업데이트하기 전에 모든 MachineHealthCheck 리소스를 일시 중지합니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다.
절차
일시 중지하려는 사용 가능한
MachineHealthCheck리소스를 모두 나열하려면 다음 명령을 실행합니다.$ oc get machinehealthcheck -n openshift-machine-api
머신 상태 점검을 일시 중지하려면
cluster.x-k8s.io/paused=""주석을MachineHealthCheck리소스에 추가합니다. 다음 명령을 실행합니다.$ oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused=""
주석이 지정된
MachineHealthCheck리소스는 다음 YAML 파일과 유사합니다.apiVersion: machine.openshift.io/v1beta1 kind: MachineHealthCheck metadata: name: example namespace: openshift-machine-api annotations: cluster.x-k8s.io/paused: "" spec: selector: matchLabels: role: worker unhealthyConditions: - type: "Ready" status: "Unknown" timeout: "300s" - type: "Ready" status: "False" timeout: "300s" maxUnhealthy: "40%" status: currentHealthy: 5 expectedMachines: 5중요클러스터를 업데이트한 후 머신 상태 점검을 다시 시작합니다. 검사를 다시 시작하려면 다음 명령을 실행하여
MachineHealthCheck리소스에서 일시 중지 주석을 제거합니다.$ oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused-
13.4.3. 릴리스 이미지 다이제스트 검색
oc adm upgrade 명령을 --to-image 옵션과 함께 사용하여 연결이 끊긴 환경에서 클러스터를 업데이트하려면 대상 릴리스 이미지에 해당하는 sha256 다이제스트를 참조해야 합니다.
절차
인터넷에 연결된 장치에서 다음 명령을 실행합니다.
$ oc adm release info -o 'jsonpath={.digest}{"\n"}' quay.io/openshift-release-dev/ocp-release:${OCP_RELEASE_VERSION}-${ARCHITECTURE}{OCP_RELEASE_VERSION}의 경우4.10.16과 같이 업데이트할 OpenShift Container Platform 버전을 지정합니다.{ARCHITECTURE}의 경우x86_64,aarch64,s390x,ppc64le과 같은 클러스터의 아키텍처를 지정합니다.출력 예
sha256:a8bfba3b6dddd1a2fbbead7dac65fe4fb8335089e4e7cae327f3bad334add31d
- 클러스터를 업데이트할 때 사용할 sha256 다이제스트를 복사합니다.
13.4.4. 연결이 끊긴 클러스터 업데이트
연결이 끊긴 클러스터를 다운로드한 릴리스 이미지의 OpenShift Container Platform 버전으로 업데이트합니다.
로컬 OpenShift Update Service가 있는 경우 이 절차 대신 연결된 웹 콘솔 또는 CLI 지침을 사용하여 업데이트할 수 있습니다.
사전 요구 사항
- 새 릴리스의 이미지를 레지스트리에 미러링하고 있습니다.
새 릴리스의 릴리스 이미지 서명 ConfigMap을 클러스터에 적용하고 있습니다.
참고릴리스 이미지 서명 구성 맵을 사용하면 CVO(Cluster Version Operator)에서 실제 이미지 서명이 예상 서명과 일치하는지 확인하여 릴리스 이미지의 무결성을 확인할 수 있습니다.
- 대상 릴리스 이미지에 대한 sha256 다이제스트를 가져옵니다.
-
OpenShift CLI(
oc)를 설치합니다. -
모든
MachineHealthCheck리소스를 일시 중지했습니다.
절차
클러스터를 업데이트합니다.
$ oc adm upgrade --allow-explicit-upgrade --to-image ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}@<digest> 1- 1
- <
digest> 값은 대상 릴리스 이미지의 sha256 다이제스트입니다(예:sha256:81154f5c03294534e1eaf0319bef7a601134f891689ccede5d705ef659aa8c92).
미러 레지스트리에
ImageContentSourcePolicy를 사용하는 경우LOCAL_REGISTRY대신 표준 레지스트리 이름을 사용할 수 있습니다.참고ImageContentSourcePolicy개체가 있는 클러스터에 대한 글로벌 풀 시크릿만 구성할 수 있습니다. 프로젝트에 풀 시크릿을 추가할 수 없습니다.
13.4.5. 이미지 레지스트리 저장소 미러링 설정
컨테이너 레지스트리 저장소 미러링을 설정하면 다음 작업을 수행할 수 있습니다.
- 소스 이미지 레지스트리의 저장소에서 이미지를 가져오기 위해 요청을 리디렉션하고 미러링된 이미지 레지스트리의 저장소에서 이를 해석하도록 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 설치 중에 미러링을 구성하지 않은 경우 다음 CR(사용자 정의 리소스) 오브젝트 중 하나를 사용하여 설치 후 이를 수행할 수 있습니다.
-
ImageDigestMirrorSet. 이 CR을 사용하면 다이제스트 사양을 사용하여 미러링된 레지스트리에서 이미지를 가져올 수 있습니다. -
ImageTagMirrorSet. 이 CR을 사용하면 이미지 태그를 사용하여 미러링된 레지스트리에서 이미지를 가져올 수 있습니다.
중요ICSP(
ImageContentSourcePolicy) 오브젝트를 사용하여 저장소 미러링을 구성하는 것은 더 이상 사용되지 않는 기능입니다. 더 이상 사용되지 않는 기능은 여전히 OpenShift Container Platform에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.ImageContentSourcePolicy개체를 생성하는 데 사용한 기존 YAML 파일이 있는 경우oc adm migrate icsp명령을 사용하여 해당 파일을ImageDigestMirrorSetYAML 파일로 변환할 수 있습니다. 자세한 내용은 다음 섹션의 "이미지 레지스트리 저장소 미러링에 대한 ImageContentSourcePolicy (ICSP) 파일 변환"을 참조하십시오.-
두 사용자 정의 리소스 오브젝트 모두 다음 정보를 식별합니다.
- 미러링하려는 컨테이너 이미지 저장소의 소스
- 소스 저장소에서 요청된 컨텐츠를 제공하는 각 미러 저장소에 대한 개별 항목
클러스터에서 ImageDigestMirrorSet 또는 ImageTagMirrorSet 오브젝트를 사용하여 저장소 미러링을 구성하는 경우 미러링된 레지스트리에는 글로벌 풀 시크릿만 사용할 수 있습니다. 프로젝트에 풀 시크릿을 추가할 수 없습니다.
다음 절차에서는 ImageDigestMirrorSet 오브젝트를 생성하는 설치 후 미러 구성을 생성합니다.
사전 요구 사항
-
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있는지 확인합니다. 클러스터에
ImageContentSourcePolicy개체가 없는지 확인합니다. 예를 들어 다음 명령을 사용할 수 있습니다.$ oc get ImageContentSourcePolicy
출력 예
No resources found
절차
미러링된 저장소를 설정합니다.
- 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/ubi9/ubi-minimal:latest@sha256:5cf... \ docker://example.io/example/ubi-minimal
이 예제에는
example.io라는 컨테이너 이미지 레지스트리가 있으며,registry.access.redhat.com에서ubi9/ubi-minimal이미지를 복사할example이라는 이미지 저장소가 있습니다. 레지스트리를 생성한 후 OpenShift Container Platform 클러스터를 설정하여 소스 저장소의 요청을 미러링된 저장소로 리디렉션할 수 있습니다.
- OpenShift Container Platform 클러스터에 로그인합니다.
필요에 따라
ImageDigestMirrorSet또는ImageTagMirrorSetCR을 생성하여 소스 및 미러를 자체 레지스트리 및 저장소 쌍과 이미지로 교체합니다.apiVersion: config.openshift.io/v1 1 kind: ImageDigestMirrorSet 2 metadata: name: ubi9repo spec: imageDigestMirrors: 3 - mirrors: - example.io/example/ubi-minimal 4 - example.com/example/ubi-minimal 5 source: registry.access.redhat.com/ubi9/ubi-minimal 6 mirrorSourcePolicy: AllowContactingSource 7 - mirrors: - mirror.example.com/redhat source: registry.redhat.io/openshift4 8 mirrorSourcePolicy: AllowContactingSource - mirrors: - mirror.example.com source: registry.redhat.io 9 mirrorSourcePolicy: AllowContactingSource - mirrors: - mirror.example.net/image source: registry.example.com/example/myimage 10 mirrorSourcePolicy: AllowContactingSource - mirrors: - mirror.example.net source: registry.example.com/example 11 mirrorSourcePolicy: AllowContactingSource - mirrors: - mirror.example.net/registry-example-com source: registry.example.com 12 mirrorSourcePolicy: AllowContactingSource
- 1
- 이 CR과 함께 사용할 API를 나타냅니다.
config.openshift.io/v1이어야 합니다. - 2
- 풀 유형에 따라 오브젝트의 종류를 나타냅니다.
-
ImageDigestMirrorSet: 다이제스트 참조 이미지를 가져옵니다. -
ImageTagMirrorSet: 태그 참조 이미지를 가져옵니다.
-
- 3
- 다음 중 하나로 이미지 풀 메서드의 유형을 나타냅니다.
-
imageDigestMirrors:ImageDigestMirrorSetCR에 사용합니다. -
imageTagMirrors:ImageTagMirrorSetCR에 사용합니다.
-
- 4
- 미러링된 이미지 레지스트리 및 저장소의 이름을 나타냅니다.
- 5
- 선택 사항: 각 대상 저장소에 대한 보조 미러 저장소를 나타냅니다. 하나의 미러가 다운되면 대상 저장소에서 다른 미러를 사용할 수 있습니다.
- 6
- 이미지 가져오기 사양에서 참조하는 레지스트리 및 리포지토리 소스를 나타냅니다.
- 7
- 선택 사항: 이미지 가져오기에 실패하는 경우 대체 정책을 표시합니다.
-
AllowContactingSource: 소스 저장소에서 이미지를 계속 가져올 수 있습니다. 이는 기본값입니다. -
NeverContactSource: 소스 저장소에서 이미지를 가져 오는 지속적인 시도를 방지합니다.
-
- 8
- 선택 사항: 레지스트리 내부의 네임스페이스를 나타내며, 이를 통해 해당 네임스페이스의 이미지를 사용할 수 있습니다. 레지스트리 도메인을 소스로 사용하는 경우 오브젝트는 레지스트리의 모든 리포지토리에 적용됩니다.
- 9
- 선택 사항: 레지스트리를 나타내며, 레지스트리의 이미지를 사용할 수 있습니다. 레지스트리 이름을 지정하면 오브젝트가 소스 레지스트리의 모든 리포지토리에 적용됩니다.
- 10
- 미러
mirror.example.net/image@sha256:... .에서registry.example.com/example/myimage@sha256:…이미지를 가져옵니다. - 11
- 미러
mirror.example.net/image@sha256:…에서 소스 레지스트리 네임스페이스에서registry.example.com/example/image@sha256:…이미지를 가져옵니다. - 12
- 미러 레지스트리
example.net/registry-example-com/myimage@sha256:…에서registry.example.com/myimage@sha256이미지를 가져옵니다.ImageContentSourcePolicy리소스는 소스 레지스트리의 모든 리포지토리에 적용되며 미러 레지스트리mirror.example.net/registry-example-com에 적용됩니다.
새 오브젝트를 생성합니다.
$ oc create -f registryrepomirror.yaml
오브젝트가 생성되면 MCO(Machine Config Operator)에서 새 설정이 각 노드에 배포될 때 노드를 차단합니다. MCO는
ImageTagMirrorSet오브젝트의 노드만 다시 시작합니다. MCO는ImageDigestMirrorSet개체의 노드를 다시 시작하지 않습니다. 노드가 차단 해제되면 클러스터는 소스 저장소에 대한 요청에 미러링된 저장소를 사용하기 시작합니다.미러링된 구성 설정이 적용되었는지 확인하려면 노드 중 하나에서 다음을 수행하십시오.
노드를 나열합니다.
$ oc get node
출력 예
NAME STATUS ROLES AGE VERSION ip-10-0-137-44.ec2.internal Ready worker 7m v1.26.0 ip-10-0-138-148.ec2.internal Ready master 11m v1.26.0 ip-10-0-139-122.ec2.internal Ready master 11m v1.26.0 ip-10-0-147-35.ec2.internal Ready worker 7m v1.26.0 ip-10-0-153-12.ec2.internal Ready worker 7m v1.26.0 ip-10-0-154-10.ec2.internal Ready master 11m v1.26.0
디버깅 프로세스를 시작하고 노드에 액세스합니다.
$ 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`
루트 디렉토리를
/host로 변경합니다.sh-4.2# chroot /host
/etc/containers/registries.conf파일을 체크하여 변경 사항이 적용되었는지 확인합니다.sh-4.2# cat /etc/containers/registries.conf
다음 출력은
ImageDigestMirrorSet오브젝트 및ImageTagMirrorSet오브젝트가 적용된registries.conf파일을 나타냅니다. 마지막 두 항목은 각각digest-only및tag-only로 표시됩니다.출력 예
unqualified-search-registries = ["registry.access.redhat.com", "docker.io"] short-name-mode = "" [[registry]] prefix = "" location = "registry.access.redhat.com/ubi9/ubi-minimal" 1 [[registry.mirror]] location = "example.io/example/ubi-minimal" 2 pull-from-mirror = "digest-only" 3 [[registry.mirror]] location = "example.com/example/ubi-minimal" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.example.com" [[registry.mirror]] location = "mirror.example.net/registry-example-com" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.example.com/example" [[registry.mirror]] location = "mirror.example.net" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.example.com/example/myimage" [[registry.mirror]] location = "mirror.example.net/image" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.redhat.io" [[registry.mirror]] location = "mirror.example.com" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.redhat.io/openshift4" [[registry.mirror]] location = "mirror.example.com/redhat" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.access.redhat.com/ubi9/ubi-minimal" blocked = true 4 [[registry.mirror]] location = "example.io/example/ubi-minimal-tag" pull-from-mirror = "tag-only" 5
소스에서 이미지를 노드로 가져와 미러링에 의해 해결되는지 확인합니다.
sh-4.2# podman pull --log-level=debug registry.access.redhat.com/ubi9/ubi-minimal@sha256:5cf...
저장소 미러링 문제 해결
저장소 미러링 절차가 설명대로 작동하지 않는 경우 저장소 미러링 작동 방법에 대한 다음 정보를 사용하여 문제를 해결하십시오.
- 가져온 이미지는 첫 번째 작동 미러를 사용하여 공급합니다.
- 주요 레지스트리는 다른 미러가 작동하지 않는 경우에만 사용됩니다.
-
시스템 컨텍스트에서
Insecure플래그가 폴백으로 사용됩니다. -
/etc/containers/registries.conf파일 형식이 최근에 변경되었습니다. 현재 버전은 TOML 형식의 버전 2입니다. -
ImageDigestMirrorSet및ImageTagMirrorSet오브젝트 모두에 동일한 리포지토리를 추가할 수 없습니다.
13.4.5.1. 이미지 레지스트리 저장소 미러링을 위한 ICP( ImageContentSourcePolicy) 파일 변환
ICSP( ImageContentSourcePolicy ) 오브젝트를 사용하여 저장소 미러링을 구성하는 것은 더 이상 사용되지 않는 기능입니다. 이 기능은 여전히 OpenShift Container Platform에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.
ICSP 오브젝트는 저장소 미러링을 구성하기 위해 ImageDigestMirrorSet 및 ImageTagMirrorSet 개체로 교체됩니다. ImageContentSourcePolicy 개체를 생성하는 데 사용한 기존 YAML 파일이 있는 경우 oc adm migrate icsp 명령을 사용하여 해당 파일을 ImageDigestMirrorSet YAML 파일로 변환할 수 있습니다. 명령은 현재 버전으로 API를 업데이트하고, kind 값을 ImageDigestMirrorSet 로 변경하고, spec.repositoryDigestMirrors 를 spec.imageDigestMirrors 로 변경합니다. 파일의 나머지 부분은 변경되지 않습니다.
ImageDigestMirrorSet 또는 ImageTagMirrorSet 오브젝트에 대한 자세한 내용은 이전 섹션의 "이미지 레지스트리 저장소 미러링 설정"을 참조하십시오.
사전 요구 사항
-
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있는지 확인합니다. -
클러스터에
ImageContentSourcePolicy개체가 있는지 확인합니다.
절차
다음 명령을 사용하여 하나 이상의
ImageContentSourcePolicyYAML 파일을ImageDigestMirrorSetYAML 파일로 변환합니다.$ oc adm migrate icsp <file_name>.yaml <file_name>.yaml <file_name>.yaml --dest-dir <path_to_the_directory>
다음과 같습니다.
<file_name>-
소스
ImageContentSourcePolicyYAML의 이름을 지정합니다. 여러 파일 이름을 나열할 수 있습니다. --dest-dir-
선택 사항: 출력
ImageDigestMirrorSetYAML의 디렉터리를 지정합니다. 설정되지 않으면 파일이 현재 디렉터리에 기록됩니다.
예를 들어 다음 명령은
icsp.yaml및icsp-2.yaml파일을 변환하고 새 YAML 파일을idms-files디렉터리에 저장합니다.$ oc adm migrate icsp icsp.yaml icsp-2.yaml --dest-dir idms-files
출력 예
wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi8repo.5911620242173376087.yaml wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi9repo.6456931852378115011.yaml
다음 명령을 실행하여 CR 오브젝트를 생성합니다.
$ oc create -f <path_to_the_directory>/<file-name>.yaml
다음과 같습니다.
<path_to_the_directory>-
--dest-dir플래그를 사용한 경우 디렉터리의 경로를 지정합니다. <file_name>-
ImageDigestMirrorSetYAML의 이름을 지정합니다.
13.4.6. 클러스터 노드 재부팅 빈도를 줄이기 위해 미러 이미지 카탈로그의 범위 확장
미러링된 이미지 카탈로그의 범위를 저장소 수준 또는 더 넓은 레지스트리 수준에서 지정할 수 있습니다. 광범위한 ImageContentSourcePolicy 리소스는 리소스 변경에 따라 노드를 재부팅해야 하는 횟수를 줄입니다.
ImageContentSourcePolicy 리소스에서 미러 이미지 카탈로그의 범위를 확장하려면 다음 절차를 수행합니다.
사전 요구 사항
-
OpenShift Container Platform CLI
oc를 설치합니다. -
cluster-admin권한이 있는 사용자로 로그인합니다. - 연결이 끊긴 클러스터에서 사용할 미러링된 이미지 카탈로그를 구성합니다.
절차
<local_registry>,<pull_spec>, 및<pull_secret_file>에 대한 값을 지정하여 다음 명령을 실행합니다.$ oc adm catalog mirror <local_registry>/<pull_spec> <local_registry> -a <pull_secret_file> --icsp-scope=registry
다음과 같습니다.
- <local_registry>
-
연결이 끊긴 클러스터에 대해 구성한 로컬 레지스트리입니다 (예:
local.registry:5000). - <pull_spec>
-
연결이 끊긴 레지스트리에 구성된 풀 사양입니다(예:
redhat/redhat-operator-index:v4.13). - <pull_secret_file>
-
registry.redhat.io풀 시크릿은.json파일 형식입니다. Red Hat OpenShift Cluster Manager에서 풀 시크릿을 다운로드할 수 있습니다.
oc adm catalog mirror명령은/redhat-operator-index-manifests디렉터리를 생성하고imageContentSourcePolicy.yaml,catalogSource.yaml및mapping.txt파일을 생성합니다.새
ImageContentSourcePolicy리소스를 클러스터에 적용합니다.$ oc apply -f imageContentSourcePolicy.yaml
검증
oc apply가ImageContentSourcePolicy에 변경 사항을 성공적으로 적용했는지 확인합니다.$ oc get ImageContentSourcePolicy -o yaml
출력 예
apiVersion: v1 items: - apiVersion: operator.openshift.io/v1alpha1 kind: ImageContentSourcePolicy metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"operator.openshift.io/v1alpha1","kind":"ImageContentSourcePolicy","metadata":{"annotations":{},"name":"redhat-operator-index"},"spec":{"repositoryDigestMirrors":[{"mirrors":["local.registry:5000"],"source":"registry.redhat.io"}]}} ...
ImageContentSourcePolicy 리소스를 업데이트한 후 OpenShift Container Platform은 새 설정을 각 노드에 배포하고 클러스터는 소스 저장소에 대한 요청에 미러링된 저장소를 사용하기 시작합니다.