11.2. OpenShift Container Platform 이미지 저장소 미러링
연결이 끊긴 환경에서 클러스터를 업데이트하려면 먼저 컨테이너 이미지를 미러 레지스트리에 미러링해야 합니다. 연결된 환경에서 이 프로세스를 사용하여 클러스터가 외부 콘텐츠에 대해 조직의 제어 조건을 충족하는 승인된 컨테이너 이미지만 실행하도록 할 수 있습니다.
클러스터가 실행되는 동안 미러 레지스트리가 항상 실행되고 있어야 합니다.
다음 단계에서는 이미지를 미러 레지스트리에 미러링하는 방법에 대한 고급 워크플로를 간략하게 설명합니다.
-
릴리스 이미지를 검색하고 내보내는 데 사용되는 모든 장치에 OpenShift CLI(
oc
)를 설치합니다. - 레지스트리 풀 시크릿을 다운로드하여 클러스터에 추가합니다.
oc-mirror OpenShift CLI(
oc
) 플러그인 을 사용하는 경우 :- 릴리스 이미지를 검색하고 내보내는 데 사용되는 모든 장치에 oc-mirror 플러그인을 설치합니다.
- 미러링할 릴리스 이미지를 결정할 때 사용할 플러그인의 이미지 세트 구성 파일을 생성합니다. 나중에 이 구성 파일을 편집하여 플러그인이 미러링하는 릴리스 이미지를 변경할 수 있습니다.
- 대상 릴리스 이미지를 미러 레지스트리 또는 이동식 미디어에 직접 미러링한 다음 미러 레지스트리에 미러링합니다.
- oc-mirror 플러그인에서 생성한 리소스를 사용하도록 클러스터를 구성합니다.
- 필요에 따라 이 단계를 반복하여 미러 레지스트리를 업데이트합니다.
oc adm release mirror
명령을 사용하는 경우 다음을 수행합니다.- 사용자 환경과 미러링할 릴리스 이미지에 해당하는 환경 변수를 설정합니다.
- 대상 릴리스 이미지를 미러 레지스트리 또는 이동식 미디어에 직접 미러링한 다음 미러 레지스트리에 미러링합니다.
- 필요에 따라 이 단계를 반복하여 미러 레지스트리를 업데이트합니다.
oc adm release mirror
명령 사용과 비교하여 oc-mirror 플러그인은 다음과 같은 이점이 있습니다.
- 컨테이너 이미지 이외의 콘텐츠를 미러링할 수 있습니다.
- 처음으로 이미지를 미러링한 후 레지스트리에서 이미지를 더 쉽게 업데이트할 수 있습니다.
- oc-mirror 플러그인은 Quay에서 릴리스 페이로드를 미러링하고 연결이 끊긴 환경에서 실행되는 OpenShift Update Service의 최신 그래프 데이터 이미지도 빌드하는 자동화된 방법을 제공합니다.
11.2.1. 사전 요구 사항
Red Hat Quay와 같이 OpenShift Container Platform 클러스터를 호스팅할 위치에 Docker v2-2 를 지원하는 컨테이너 이미지 레지스트리가 있어야 합니다.
참고Red Hat Quay를 사용하는 경우 oc-mirror 플러그인에서 버전 3.6 이상을 사용해야 합니다. Red Hat Quay에 대한 인타이틀먼트가 있는 경우 개념 증명 목적으로 또는 Quay Operator를 사용하여 Red Hat Quay 배포에 대한 설명서를 참조하십시오. 레지스트리를 선택 및 설치하는 데 추가 지원이 필요한 경우 영업 담당자 또는 Red Hat 지원팀에 문의하십시오.
컨테이너 이미지 레지스트리의 기존 솔루션이 없는 경우 Red Hat OpenShift의 미러 레지스트리가 OpenShift Container Platform 서브스크립션에 포함되어 있습니다. Red Hat OpenShift의 미러 레지스트리 는 연결이 끊긴 설치 및 업데이트에서 OpenShift Container Platform 컨테이너 이미지를 미러링하는 데 사용할 수 있는 소규모 컨테이너 레지스트리입니다.
11.2.2. 미러 호스트 준비
미러 단계를 수행하기 전에 호스트는 콘텐츠를 검색하고 원격 위치로 푸시할 준비가 되어 있어야 합니다.
11.2.2.1. 바이너리를 다운로드하여 OpenShift CLI 설치
명령줄 인터페이스를 사용하여 OpenShift Container Platform과 상호 작용하기 위해 OpenShift CLI(oc
)를 설치할 수 있습니다. Linux, Windows 또는 macOS에 oc
를 설치할 수 있습니다.
이전 버전의 oc
를 설치한 경우 OpenShift Container Platform 4.11의 모든 명령을 완료하는 데 해당 버전을 사용할 수 없습니다. 새 버전의 oc
를 다운로드하여 설치합니다. 연결이 끊긴 환경에서 클러스터를 업그레이드하는 경우 업그레이드하려는 oc
버전을 설치합니다.
Linux에서 OpenShift CLI 설치
다음 절차를 사용하여 Linux에서 OpenShift CLI(oc
) 바이너리를 설치할 수 있습니다.
절차
- Red Hat 고객 포털에서 OpenShift Container Platform 다운로드 페이지로 이동합니다.
- Product Variant 드롭다운 메뉴에서 아키텍처를 선택합니다.
- 버전 드롭다운 메뉴에서 적절한 버전을 선택합니다.
- OpenShift v4.11 Linux Client 항목 옆에 있는 지금 다운로드를 클릭하고 파일을 저장합니다.
아카이브의 압축을 풉니다.
$ tar xvf <file>
oc
바이너리를PATH
에 있는 디렉터리에 배치합니다.PATH
를 확인하려면 다음 명령을 실행합니다.$ echo $PATH
검증
OpenShift CLI를 설치한 후
oc
명령을 사용할 수 있습니다.$ oc <command>
Windows에서 OpenSfhit CLI 설치
다음 절차에 따라 Windows에 OpenShift CLI(oc
) 바이너리를 설치할 수 있습니다.
절차
- Red Hat 고객 포털에서 OpenShift Container Platform 다운로드 페이지로 이동합니다.
- 버전 드롭다운 메뉴에서 적절한 버전을 선택합니다.
- OpenShift v4.11 Windows Client 항목 옆에 있는 지금 다운로드를 클릭하고 파일을 저장합니다.
- ZIP 프로그램으로 아카이브의 압축을 풉니다.
oc
바이너리를PATH
에 있는 디렉터리로 이동합니다.PATH
를 확인하려면 명령 프롬프트를 열고 다음 명령을 실행합니다.C:\> path
검증
OpenShift CLI를 설치한 후
oc
명령을 사용할 수 있습니다.C:\> oc <command>
macOS에 OpenShift CLI 설치
다음 절차에 따라 macOS에서 OpenShift CLI(oc
) 바이너리를 설치할 수 있습니다.
절차
- Red Hat 고객 포털에서 OpenShift Container Platform 다운로드 페이지로 이동합니다.
- 버전 드롭다운 메뉴에서 적절한 버전을 선택합니다.
OpenShift v4.11 macOS Client 항목 옆에 있는 지금 다운로드를 클릭하고 파일을 저장합니다.
참고macOS ARM64의 경우 OpenShift v4.11 macOS ARM64 Client 항목을 선택합니다.
- 아카이브의 압축을 해제하고 압축을 풉니다.
oc
바이너리 PATH의 디렉터리로 이동합니다.PATH
를 확인하려면 터미널을 열고 다음 명령을 실행합니다.$ echo $PATH
검증
OpenShift CLI를 설치한 후
oc
명령을 사용할 수 있습니다.$ oc <command>
추가 리소스
11.2.2.2. 이미지를 미러링할 수 있는 인증 정보 설정
Red Hat에서 미러로 이미지를 미러링할 수 있는 컨테이너 이미지 레지스트리 인증 정보 파일을 생성합니다.
클러스터를 설치할 때 이 이미지 레지스트리 인증 정보 파일을 풀 시크릿(pull secret)으로 사용하지 마십시오. 클러스터를 설치할 때 이 파일을 지정하면 클러스터의 모든 시스템에 미러 레지스트리에 대한 쓰기 권한이 부여됩니다.
이 프로세스에서는 미러 레지스트리의 컨테이너 이미지 레지스트리에 대한 쓰기 권한이 있어야 하며 인증 정보를 레지스트리 풀 시크릿에 추가해야 합니다.
사전 요구 사항
- 연결이 끊긴 환경에서 사용할 미러 레지스트리를 구성했습니다.
- 미러 레지스트리에서 이미지를 미러링할 이미지 저장소 위치를 확인했습니다.
- 이미지를 해당 이미지 저장소에 업로드할 수 있는 미러 레지스트리 계정을 제공하고 있습니다.
절차
설치 호스트에서 다음 단계를 수행합니다.
-
Red Hat OpenShift Cluster Manager에서
registry.redhat.io
풀 시크릿을 다운로드합니다. 풀 시크릿을 JSON 형식으로 복사합니다.
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 1
- 1
- 풀 시크릿을 저장할 폴더의 경로와 생성한 JSON 파일의 이름을 지정합니다.
파일의 내용은 다음 예와 유사합니다.
{ "auths": { "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
-
선택 사항: oc-mirror 플러그인을 사용하는 경우 파일을
~/.docker/config.json
또는$XDG_RUNTIME_DIR/containers/auth.json
로 저장합니다. 미러 레지스트리에 대한 base64로 인코딩된 사용자 이름 및 암호 또는 토큰을 생성합니다.
$ echo -n '<user_name>:<password>' | base64 -w0 1 BGVtbYk3ZHAtqXs=
- 1
<user_name>
및<password>
의 경우 레지스트리에 설정한 사용자 이름 및 암호를 지정합니다.
JSON 파일을 편집하고 레지스트리를 설명하는 섹션을 추가합니다.
"auths": { "<mirror_registry>": { 1 "auth": "<credentials>", 2 "email": "you@example.com" } },
파일은 다음 예제와 유사합니다.
{ "auths": { "registry.example.com": { "auth": "BGVtbYk3ZHAtqXs=", "email": "you@example.com" }, "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
11.2.3. oc-mirror 플러그인을 사용하여 리소스 미러링
oc-mirror OpenShift CLI (oc
) 플러그인을 사용하여 완전히 또는 부분적으로 연결이 끊긴 환경의 미러 레지스트리에 이미지를 미러링할 수 있습니다. 인터넷에 연결되어 있는 시스템에서 oc-mirror를 실행하여 공식 Red Hat 레지스트리에서 필요한 이미지를 다운로드해야 합니다.
11.2.3.1. oc-mirror 플러그인 정보
oc-mirror OpenShift CLI(oc
) 플러그인을 사용하여 단일 툴을 사용하여 필요한 모든 OpenShift Container Platform 콘텐츠 및 기타 이미지를 미러 레지스트리에 미러링할 수 있습니다. 다음과 같은 기능을 제공합니다.
- OpenShift Container Platform 릴리스, Operator, helm 차트 및 기타 이미지를 미러링하는 중앙 집중식 방법을 제공합니다.
- OpenShift Container Platform 및 Operator의 업데이트 경로를 유지 관리합니다.
- 선언적 이미지 세트 구성 파일을 사용하여 클러스터에 필요한 OpenShift Container Platform 릴리스, Operator 및 이미지만 포함합니다.
- 증분 미러링을 수행하여 향후 이미지 세트의 크기를 줄입니다.
- 이전 실행 이후 이미지 세트 구성에서 제외된 대상 미러 레지스트리에서 이미지를 정리합니다.
- 선택적으로 OpenShift Update Service (OSUS) 사용에 대한 지원 아티팩트를 생성합니다.
oc-mirror 플러그인을 사용하는 경우 이미지 세트 구성 파일에서 미러링할 콘텐츠를 지정합니다. 이 YAML 파일에서는 클러스터에 필요한 OpenShift Container Platform 릴리스와 Operator만 포함하도록 구성을 미세 조정할 수 있습니다. 이렇게 하면 다운로드 및 전송에 필요한 데이터 양이 줄어듭니다. oc-mirror 플러그인은 임의의 helm 차트 및 추가 컨테이너 이미지를 미러링하여 사용자가 워크로드를 미러 레지스트리에 원활하게 동기화할 수 있도록 지원합니다.
oc-mirror 플러그인을 처음 실행하는 경우 연결이 끊긴 클러스터 설치 또는 업데이트를 수행하는 데 필요한 콘텐츠로 미러 레지스트리를 채웁니다. 연결이 끊긴 클러스터가 업데이트를 계속 받으려면 미러 레지스트리를 계속 업데이트해야 합니다. 미러 레지스트리를 업데이트하려면 처음 실행할 때와 동일한 구성을 사용하여 oc-mirror 플러그인을 실행합니다. oc-mirror 플러그인은 스토리지 백엔드의 메타데이터를 참조하고 도구를 마지막으로 실행한 후 릴리스된 항목만 다운로드합니다. 이는 OpenShift Container Platform 및 Operator의 업데이트 경로를 제공하고 필요에 따라 종속성 확인을 수행합니다.
oc-mirror CLI 플러그인을 사용하여 미러 레지스트리를 채우는 경우 oc-mirror 툴을 사용하여 미러 레지스트리에 대한 추가 업데이트를 수행해야 합니다.
11.2.3.2. oc-mirror 호환성 및 지원
oc-mirror 플러그인은 OpenShift Container Platform 버전 4.9 이상용 OpenShift Container Platform 페이로드 이미지 및 Operator 카탈로그를 미러링하는 기능을 지원합니다.
미러링해야 하는 OpenShift Container Platform 버전에 관계없이 사용 가능한 최신 버전의 oc-mirror 플러그인을 사용합니다.
OpenShift Container Platform 4.10에 대해 oc-mirror 플러그인의 기술 프리뷰 버전을 사용한 경우 미러 레지스트리를 OpenShift Container Platform 4.11로 마이그레이션할 수 없습니다. 새 oc-mirror 플러그인을 다운로드하고, 새 스토리지 백엔드를 사용하고, 대상 미러 레지스트리에서 새로운 최상위 네임스페이스를 사용해야 합니다.
11.2.3.3. 미러 레지스트리 정보
OpenShift Container Platform 설치 및 후속 제품 업데이트에 필요한 이미지를 Red Hat Quay와 같은 Docker v2-2 를 지원하는 컨테이너 미러 레지스트리에 미러링할 수 있습니다. 대규모 컨테이너 레지스트리에 액세스할 수 없는 경우 OpenShift Container Platform 서브스크립션에 포함된 소규모 컨테이너 레지스트리인 Red Hat OpenShift에 미러 레지스트리를 사용할 수 있습니다.
선택한 레지스트리에 관계없이 인터넷상의 Red Hat 호스팅 사이트의 콘텐츠를 격리된 이미지 레지스트리로 미러링하는 절차는 동일합니다. 콘텐츠를 미러링한 후 미러 레지스트리에서 이 콘텐츠를 검색하도록 각 클러스터를 설정합니다.
OpenShift 이미지 레지스트리는 미러링 프로세스 중에 필요한 태그 없이 푸시를 지원하지 않으므로 대상 레지스트리로 사용할 수 없습니다.
Red Hat OpenShift의 미러 레지스트리가 아닌 컨테이너 레지스트리를 선택하는 경우 프로비저닝하는 클러스터의 모든 시스템에서 액세스할 수 있어야 합니다. 레지스트리에 연결할 수 없는 경우 설치, 업데이트 또는 워크로드 재배치와 같은 일반 작업이 실패할 수 있습니다. 따라서 고가용성 방식으로 미러 레지스트리를 실행해야하며 미러 레지스트리는 최소한 OpenShift Container Platform 클러스터의 프로덕션 환경의 가용성조건에 일치해야 합니다.
미러 레지스트리를 OpenShift Container Platform 이미지로 채우면 다음 두 가지 시나리오를 수행할 수 있습니다. 호스트가 인터넷과 미러 레지스트리에 모두 액세스할 수 있지만 클러스터 노드에 액세스 할 수 없는 경우 해당 머신의 콘텐츠를 직접 미러링할 수 있습니다. 이 프로세스를 connected mirroring(미러링 연결)이라고 합니다. 그러한 호스트가 없는 경우 이미지를 파일 시스템에 미러링한 다음 해당 호스트 또는 이동식 미디어를 제한된 환경에 배치해야 합니다. 이 프로세스를 미러링 연결 해제라고 합니다.
미러링된 레지스트리의 경우 가져온 이미지의 소스를 보려면 CRI-O 로그의 Trying to access
로그 항목을 검토해야 합니다. 노드에서 crictl images
명령을 사용하는 등의 이미지 가져오기 소스를 보는 다른 방법은 미러링되지 않은 이미지 이름을 표시합니다.
Red Hat은 OpenShift Container Platform에서 타사 레지스트리를 테스트하지 않습니다.
추가 리소스
- 이미지 소스를 보려면 CRI-O 로그를 확인하는 방법에 대한 자세한 내용은 이미지 가져오기 소스 보기를 참조하십시오.
11.2.3.4. oc-mirror OpenShift CLI 플러그인 설치
oc-mirror OpenShift CLI 플러그인을 사용하여 레지스트리 이미지를 미러링하려면 플러그인을 설치해야 합니다. 완전히 연결이 끊긴 환경에서 이미지 세트를 미러링하는 경우 인터넷 액세스 권한이 있고 미러 레지스트리에 액세스할 수 있는 연결이 끊긴 환경의 호스트에 oc-mirror 플러그인을 설치해야 합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
oc-mirror CLI 플러그인을 다운로드합니다.
- OpenShift Cluster Manager 하이브리드 클라우드 콘솔 의 다운로드 페이지로 이동합니다.
- OpenShift 연결 설치 툴 섹션에서 OpenShift Client(oc) 미러 플러그인 다운로드를 클릭하고 파일을 저장합니다.
아카이브를 추출합니다.
$ tar xvzf oc-mirror.tar.gz
필요한 경우 플러그인 파일을 실행 가능하게 업데이트합니다.
$ chmod +x oc-mirror
참고oc-mirror
파일의 이름을 바꾸지 마십시오.파일을
PATH
에 배치하여 oc-mirror CLI 플러그인을 설치합니다(예:/usr/local/bin
).$ sudo mv oc-mirror /usr/local/bin/.
검증
oc mirror help
를 실행하여 플러그인이 성공적으로 설치되었는지 확인합니다.$ oc mirror help
11.2.3.5. 이미지 세트 구성 생성
oc-mirror 플러그인을 사용하여 이미지 세트를 미러링하려면 먼저 이미지 세트 구성 파일을 생성해야 합니다. 이 이미지 세트 구성 파일은 oc-mirror 플러그인의 다른 구성 설정과 함께 미러링할 OpenShift Container Platform 릴리스, Operator 및 기타 이미지를 정의합니다.
이미지 세트 구성 파일에 스토리지 백엔드를 지정해야 합니다. 이 스토리지 백엔드는 로컬 디렉터리 또는 Docker v2-2 를 지원하는 레지스트리일 수 있습니다. oc-mirror 플러그인은 이미지 세트 생성 중에 이 스토리지 백엔드에 메타데이터를 저장합니다.
oc-mirror 플러그인에 의해 생성된 메타데이터를 삭제하거나 수정하지 마십시오. oc-mirror 플러그인을 동일한 미러 레지스트리에 대해 실행할 때마다 동일한 스토리지 백엔드를 사용해야 합니다.
사전 요구 사항
- 컨테이너 이미지 레지스트리 인증 정보 파일이 생성되어 있습니다. 자세한 내용은 이미지를 미러링할 수 있는 인증 정보 구성을 참조하십시오.
프로세스
oc mirror init
명령을 사용하여 이미지 세트 구성에 대한 템플릿을 생성하고imageset-config.yaml
이라는 파일에 저장합니다.$ oc mirror init --registry example.com/mirror/oc-mirror-metadata > imageset-config.yaml 1
- 1
example.com/mirror/oc-mirror-metadata
를 스토리지 백엔드의 레지스트리 위치로 바꿉니다.
파일을 편집하고 필요에 따라 설정을 조정합니다.
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 archiveSize: 4 1 storageConfig: 2 registry: imageURL: example.com/mirror/oc-mirror-metadata 3 skipTLS: false mirror: platform: channels: - name: stable-4.11 4 type: ocp graph: true 5 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.11 6 packages: - name: serverless-operator 7 channels: - name: stable 8 additionalImages: - name: registry.redhat.io/ubi8/ubi:latest 9 helm: {}
- 1
archiveSize
를 추가하여 이미지 세트 내에서 각 파일의 최대 크기를 GiB 단위로 설정합니다.- 2
- 이미지 세트 메타데이터를 저장할 백엔드 위치를 설정합니다. 이 위치는 레지스트리 또는 로컬 디렉터리일 수 있습니다.
storageConfig
값을 지정해야 합니다. - 3
- 스토리지 백엔드의 레지스트리 URL을 설정합니다.
- 4
- 채널을 설정하여 OpenShift Container Platform 이미지를 검색합니다.
- 5
graph: true
를 추가하여 graph-data 이미지를 미러 레지스트리로 빌드하고 내보냅니다. graph-data 이미지는 OSUS(OpenShift Update Service)를 생성하는 데 필요합니다.graph: true
필드도UpdateService
사용자 정의 리소스 매니페스트를 생성합니다.oc
CLI(명령줄 인터페이스)는UpdateService
사용자 정의 리소스 매니페스트를 사용하여 OSUS를 생성할 수 있습니다. 자세한 내용은 OpenShift 업데이트 서비스 정보를 참조하십시오.- 6
- Operator 카탈로그를 설정하여 OpenShift Container Platform 이미지를 검색합니다.
- 7
- 이미지 세트에 포함할 특정 Operator 패키지만 지정합니다. 이 필드를 제거하여 카탈로그의 모든 패키지를 검색합니다.
- 8
- 이미지 세트에 포함할 Operator 패키지의 특정 채널만 지정합니다. 해당 채널에서 번들을 사용하지 않는 경우에도 Operator 패키지의 기본 채널을 포함해야 합니다.
oc mirror list operators --catalog=<catalog_name> --package=<package_name
> 명령을 실행하여 기본 채널을 찾을 수 있습니다. - 9
- 이미지 세트에 포함할 추가 이미지를 지정합니다.
다양한 미러링 사용 사례에 대한 전체 매개변수 및 이미지 세트 구성 예제는 이미지 세트 구성 매개변수를 참조하십시오.
업데이트된 파일을 저장합니다.
이 이미지 세트 구성 파일은 컨텐츠를 미러링할 때
oc mirror
명령에 필요합니다.
11.2.3.6. 미러 레지스트리로 이미지 세트 미러링
oc-mirror CLI 플러그인을 사용하여 부분적으로 연결이 끊긴 환경 또는 완전히 연결이 끊긴 환경에서 미러 레지스트리에 이미지를 미러링할 수 있습니다.
다음 절차에서는 미러 레지스트리가 이미 설정되어 있다고 가정합니다.
11.2.3.6.1. 부분적으로 연결이 끊긴 환경에서 이미지 세트 미러링
부분적으로 연결이 끊긴 환경에서는 대상 미러 레지스트리에 직접 설정된 이미지를 미러링할 수 있습니다.
11.2.3.6.1.1. 미러에서 미러로 미러링
oc-mirror 플러그인을 사용하여 이미지 세트 생성 중에 액세스할 수 있는 대상 미러 레지스트리로 직접 이미지 세트를 미러링할 수 있습니다.
이미지 세트 구성 파일에서 스토리지 백엔드를 지정해야 합니다. 이 스토리지 백엔드는 로컬 디렉터리 또는 Docker v2 레지스트리일 수 있습니다. oc-mirror 플러그인은 이미지 세트 생성 중에 이 스토리지 백엔드에 메타데이터를 저장합니다.
oc-mirror 플러그인에 의해 생성된 메타데이터를 삭제하거나 수정하지 마십시오. oc-mirror 플러그인을 동일한 미러 레지스트리에 대해 실행할 때마다 동일한 스토리지 백엔드를 사용해야 합니다.
사전 요구 사항
- 필요한 컨테이너 이미지를 얻으려면 인터넷에 액세스할 수 있습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
oc-mirror
CLI 플러그인을 설치했습니다. - 이미지 세트 구성 파일을 생성했습니다.
프로세스
oc mirror
명령을 실행하여 지정된 이미지 세트 구성의 이미지를 지정된 레지스트리로 미러링합니다.$ oc mirror --config=./imageset-config.yaml \1 docker://registry.example:5000 2
검증
-
생성된
oc-mirror-workspace/
디렉터리로 이동합니다. -
결과 디렉터리로 이동합니다 (예:
results-1639608409/
). -
ImageContentSourcePolicy
및CatalogSource
리소스에 YAML 파일이 있는지 확인합니다.
다음 단계
- oc-mirror에서 생성한 리소스를 사용하도록 클러스터를 구성합니다.
문제 해결
11.2.3.6.2. 완전히 연결이 끊긴 환경에서 이미지 세트 미러링
완전히 연결이 끊긴 환경에서 이미지 세트를 미러링하려면 먼저 이미지 세트를 디스크로 미러링 한 다음 디스크의 이미지 세트 파일을 미러에 미러링해야 합니다.
11.2.3.6.2.1. 미러에서 디스크로 미러링
oc-mirror 플러그인을 사용하여 이미지 세트를 생성하고 콘텐츠를 디스크에 저장할 수 있습니다. 그런 다음 생성된 이미지 세트를 연결이 끊긴 환경으로 전송하고 대상 레지스트리에 미러링할 수 있습니다.
이미지 세트 구성 파일에 지정된 구성에 따라 oc-mirror를 사용하여 이미지를 미러링하는 경우 수백 기가바이트의 데이터를 디스크에 다운로드할 수 있습니다.
미러 레지스트리를 채울 때 초기 이미지 세트 다운로드는 종종 가장 큰 것입니다. 명령을 마지막으로 실행한 후 변경된 이미지만 다운로드하므로 oc-mirror 플러그인을 다시 실행할 때 생성된 이미지 세트가 작은 경우가 많습니다.
이미지 세트 구성 파일에서 스토리지 백엔드를 지정해야 합니다. 이 스토리지 백엔드는 로컬 디렉터리 또는 docker v2 레지스트리일 수 있습니다. oc-mirror 플러그인은 이미지 세트 생성 중에 이 스토리지 백엔드에 메타데이터를 저장합니다.
oc-mirror 플러그인에 의해 생성된 메타데이터를 삭제하거나 수정하지 마십시오. oc-mirror 플러그인을 동일한 미러 레지스트리에 대해 실행할 때마다 동일한 스토리지 백엔드를 사용해야 합니다.
사전 요구 사항
- 필요한 컨테이너 이미지를 얻으려면 인터넷에 액세스할 수 있습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
oc-mirror
CLI 플러그인을 설치했습니다. - 이미지 세트 구성 파일을 생성했습니다.
절차
oc mirror
명령을 실행하여 지정된 이미지 세트 구성의 이미지를 디스크로 미러링합니다.$ oc mirror --config=./imageset-config.yaml \1 file://<path_to_output_directory> 2
검증
출력 디렉터리로 이동합니다.
$ cd <path_to_output_directory>
이미지 세트
.tar
파일이 생성되었는지 확인합니다.$ ls
출력 예
mirror_seq1_000000.tar
다음 단계
- 이미지 세트 .tar 파일을 연결이 끊긴 환경으로 전송합니다.
문제 해결
11.2.3.6.2.2. 디스크에서 미러로 미러링
oc-mirror 플러그인을 사용하여 생성된 이미지 세트의 콘텐츠를 대상 미러 레지스트리로 미러링할 수 있습니다.
사전 요구 사항
-
연결이 끊긴 환경에 OpenShift CLI (
oc
)를 설치했습니다. -
연결이 끊긴 환경에
oc-mirror
CLI 플러그인을 설치했습니다. -
oc mirror
명령을 사용하여 이미지 세트 파일을 생성했습니다. - 이미지 세트 파일을 연결이 끊긴 환경으로 전송했습니다.
프로세스
oc mirror
명령을 실행하여 디스크에서 이미지 세트 파일을 처리하고 콘텐츠를 대상 미러 레지스트리에 미러링합니다.$ oc mirror --from=./mirror_seq1_000000.tar \1 docker://registry.example:5000 2
이 명령은 이미지 세트로 미러 레지스트리를 업데이트하고
ImageContentSourcePolicy
및CatalogSource
리소스를 생성합니다.
검증
-
생성된
oc-mirror-workspace/
디렉터리로 이동합니다. -
결과 디렉터리로 이동합니다 (예:
results-1639608409/
). -
ImageContentSourcePolicy
및CatalogSource
리소스에 YAML 파일이 있는지 확인합니다.
다음 단계
- oc-mirror에서 생성한 리소스를 사용하도록 클러스터를 구성합니다.
문제 해결
11.2.3.7. oc-mirror에서 생성한 리소스를 사용하도록 클러스터 구성
이미지를 미러 레지스트리로 미러링한 후 생성된 ImageContentSourcePolicy
,CatalogSource
, 이미지 서명 리소스를 클러스터에 적용해야 합니다.
ImageContentSourcePolicy
리소스는 미러 레지스트리를 소스 레지스트리와 연결하고 온라인 레지스트리에서 미러 레지스트리로 이미지 가져오기 요청을 리디렉션합니다. CatalogSource
리소스는 OLM(Operator Lifecycle Manager)에서 미러 레지스트리에서 사용 가능한 Operator에 대한 정보를 검색하는 데 사용됩니다. 릴리스 이미지 서명은 미러링된 릴리스 이미지를 확인하는 데 사용됩니다.
사전 요구 사항
- 연결이 끊긴 환경에서 레지스트리 미러로 이미지를 미러링했습니다.
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
-
cluster-admin
역할의 사용자로 OpenShift CLI에 로그인합니다. 다음 명령을 실행하여 결과 디렉터리의 YAML 파일을 클러스터에 적용합니다.
$ oc apply -f ./oc-mirror-workspace/results-1639608409/
미러링된 릴리스 이미지가 있는 경우 다음 명령을 실행하여 릴리스 이미지 서명을 클러스터에 적용합니다.
$ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/
참고클러스터 대신 Operator를 미러링하는 경우
$ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/
를 실행할 필요가 없습니다. 적용할 릴리스 이미지 서명이 없으므로 해당 명령을 실행하면 오류가 반환됩니다.
검증
다음 명령을 실행하여
ImageContentSourcePolicy
리소스가 설치되었는지 확인합니다.$ oc get imagecontentsourcepolicy --all-namespaces
다음 명령을 실행하여
CatalogSource
리소스가 설치되었는지 확인합니다.$ oc get catalogsource --all-namespaces
11.2.3.8. 미러 레지스트리 콘텐츠 업데이트
대상 미러 레지스트리를 초기 이미지 세트로 채우면 최신 콘텐츠가 표시되도록 정기적으로 업데이트해야 합니다. 가능한 경우 정기적으로 미러 레지스트리를 업데이트하도록 cron 작업을 설정할 수 있습니다.
필요에 따라 OpenShift Container Platform 및 Operator 릴리스를 추가하거나 제거하도록 이미지 세트 구성을 업데이트합니다. 제거된 이미지는 미러 레지스트리에서 정리됩니다.
11.2.3.8.1. 미러 레지스트리 콘텐츠 업데이트 정보
oc-mirror 플러그인을 다시 실행하면 이전 실행 이후 새 이미지 및 업데이트된 이미지만 포함하는 이미지 세트가 생성됩니다. 이전 이미지 세트가 생성된 이후 차이점만 가져오기 때문에 생성된 이미지 세트가 초기 이미지 세트보다 더 작고 빠르게 처리할 수 있습니다.
생성된 이미지 세트는 순차적이며 대상 미러 레지스트리로 순서대로 푸시해야 합니다. 생성된 이미지 세트 아카이브 파일의 파일 이름에서 시퀀스 번호를 가져올 수 있습니다.
새로운 이미지 및 업데이트된 이미지 추가
이미지 세트 구성의 설정에 따라 oc-mirror가 이후에 새로운 이미지와 업데이트된 이미지를 미러링할 수 있습니다. 이미지 세트 구성의 설정을 검토하여 필요에 따라 새 버전을 검색하고 있는지 확인합니다. 예를 들어 특정 버전으로 제한하려는 경우 미러링할 최소 및 최대 Operator 버전을 설정할 수 있습니다. 또는 최소 버전을 미러 시작점으로 설정할 수 있지만 나중에 oc-mirror를 실행할 때 새 Operator 버전을 계속 수신하도록 버전 범위를 열린 상태로 유지할 수 있습니다. 최소 또는 최대 버전을 생략하면 채널에서 Operator의 전체 버전 기록이 제공됩니다. 명시적으로 이름이 지정된 채널을 생략하면 지정된 Operator의 모든 채널에서 모든 릴리스가 제공됩니다. Operator를 생략하면 모든 Operator의 전체 카탈로그와 모든 버전이 릴리스됩니다.
이러한 모든 제약 조건 및 조건은 모든 oc-mirror 호출 시 Red Hat에서 공개한 콘텐츠에 대해 평가됩니다. 이렇게 하면 새 릴리스와 완전히 새로운 Operator가 자동으로 선택됩니다. 제한 조건은 원하는 Operator 세트를 나열하여 지정할 수 있으며 새로 릴리스된 다른 Operator는 미러 세트에 자동으로 추가되지 않습니다. 또한 새로 추가된 채널뿐만 아니라 이 채널로 미러링을 제한하는 특정 릴리스 채널을 지정할 수도 있습니다. 이는 마이너 릴리스에 다른 릴리스 채널을 사용하는 Red Hat Quay와 같은 Operator 제품에 중요합니다. 마지막으로, 특정 Operator의 최대 버전을 지정할 수 있으므로 도구가 지정된 버전 범위만 미러링하여 최신 릴리스를 자동으로 미러링하지 않도록 할 수 있습니다. 이러한 모든 경우 대상 레지스트리에서 다른 Operator, 새 채널 및 최신 버전의 Operator를 사용하도록 Operator 미러링의 범위를 넓히도록 이미지 세트 구성 파일을 업데이트해야 합니다.
채널 사양 또는 버전 범위와 같은 제약 조건을 특정 Operator에서 선택한 릴리스 전략에 정렬하는 것이 좋습니다. 예를 들어 Operator에서 stable
채널을 사용하는 경우 해당 채널로 미러링을 제한하고 다운로드 볼륨 간의 적절한 균형을 찾고 안정적인 업데이트를 정기적으로 확인하려면 해당 채널에 대한 미러링을 제한해야 합니다. Operator가 릴리스 버전 채널 스키마(예: stable-3.7
)를 선택하는 경우 해당 채널의 모든 릴리스를 미러링해야 합니다. 이를 통해 Operator의 패치 버전(예: 3.7.1
)을 계속 수신할 수 있습니다. 새 제품 릴리스 채널(예: stable-3.8
)을 추가하도록 이미지 세트 구성을 정기적으로 조정할 수도 있습니다.
이미지 정리
이미지가 생성되고 미러링된 최신 이미지 세트에 더 이상 포함되지 않는 경우 대상 미러 레지스트리에서 자동으로 정리됩니다. 이를 통해 불필요한 콘텐츠를 쉽게 관리하고 정리하고 스토리지 리소스를 회수할 수 있습니다.
더 이상 필요하지 않은 OpenShift Container Platform 릴리스 또는 Operator 버전이 있는 경우 이미지 세트 구성을 수정하여 제외하도록 수정할 수 있으며 미러링 시 미러 레지스트리에서 정리됩니다. 이 작업은 이미지 세트 구성 파일에서 Operator당 최소 또는 최대 버전 범위 설정을 조정하거나 카탈로그에서 미러링할 Operator 목록에서 Operator를 삭제하여 수행할 수 있습니다. 구성 파일에서 전체 Operator 카탈로그 또는 전체 OpenShift Container Platform 릴리스를 제거할 수도 있습니다.
미러링할 새 이미지 또는 업데이트된 이미지가 없으면 대상 미러 레지스트리에서 제외된 이미지가 정리되지 않습니다. 또한 Operator 게시자가 채널에서 Operator 버전을 제거하는 경우 제거된 버전이 대상 미러 레지스트리에서 정리됩니다.
11.2.3.8.2. 미러 레지스트리 콘텐츠 업데이트
초기 이미지 세트를 미러 레지스트리에 게시한 후 oc-mirror 플러그인을 사용하여 연결이 끊긴 클러스터를 업데이트할 수 있습니다.
이미지 세트 구성에 따라 oc-mirror는 최신 릴리스의 OpenShift Container Platform 및 선택한 Operator를 inital 미러를 완료한 후 자동으로 감지합니다. 제품 및 보안 업데이트를 적시에 수신하려면 야간 cron 작업과 같이 정기적으로 oc-mirror를 실행하는 것이 좋습니다.
사전 요구 사항
- oc-mirror 플러그인을 사용하여 초기 이미지 세트를 미러 레지스트리로 미러링했습니다.
oc-mirror 플러그인의 초기 실행에 사용된 스토리지 백엔드에 액세스할 수 있습니다.
참고동일한 미러 레지스트리에 대해 oc-mirror의 초기 실행과 동일한 스토리지 백엔드를 사용해야 합니다. oc-mirror 플러그인에서 생성된 메타데이터 이미지를 삭제하거나 수정하지 마십시오.
프로세스
- 필요한 경우 새로운 OpenShift Container Platform 및 Operator 버전을 가져오도록 이미지 세트 구성 파일을 업데이트합니다. 미러링 사용 사례 예는 이미지 세트 구성 예제 를 참조하십시오.
초기 이미지를 미러 레지스트리로 미러링하는 데 사용한 것과 동일한 단계를 따릅니다. 자세한 내용은 부분적으로 연결이 끊긴 환경에서 이미지 세트 미러링 또는 완전히 연결이 끊긴 환경에서 이미지 세트 미러링을 참조하십시오.
중요- 비차적 이미지 세트만 생성 및 미러링되도록 동일한 스토리지 백엔드를 제공해야 합니다.
- 초기 이미지 세트 생성 중에 미러 레지스트리의 최상위 네임스페이스를 지정한 경우 동일한 미러 레지스트리에 oc-mirror 플러그인을 실행할 때마다 이 동일한 네임스페이스를 사용해야 합니다.
- oc-mirror에서 생성한 리소스를 사용하도록 클러스터를 구성합니다.
11.2.3.9. 시험 실행 수행
oc-mirror를 사용하여 실제로 이미지를 미러링하지 않고도 시험 실행을 수행할 수 있습니다. 이를 통해 미러링되는 이미지 목록과 미러 레지스트리에서 정리할 이미지를 검토할 수 있습니다. 또한 이미지 세트 구성으로 오류를 조기에 포착하거나 생성된 이미지 목록을 다른 도구와 함께 사용하여 미러링 작업을 수행할 수 있습니다.
사전 요구 사항
- 필요한 컨테이너 이미지를 얻으려면 인터넷에 액세스할 수 있습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
oc-mirror
CLI 플러그인을 설치했습니다. - 이미지 세트 구성 파일을 생성했습니다.
프로세스
--dry-run
플래그와 함께oc mirror
명령을 실행하여 예행 실행을 수행합니다.$ oc mirror --config=./imageset-config.yaml \1 docker://registry.example:5000 \2 --dry-run 3
출력 예
Checking push permissions for registry.example:5000 Creating directory: oc-mirror-workspace/src/publish Creating directory: oc-mirror-workspace/src/v2 Creating directory: oc-mirror-workspace/src/charts Creating directory: oc-mirror-workspace/src/release-signatures No metadata detected, creating new workspace wrote mirroring manifests to oc-mirror-workspace/operators.1658342351/manifests-redhat-operator-index ... info: Planning completed in 31.48s info: Dry run complete Writing image mapping to oc-mirror-workspace/mapping.txt
생성된 작업 공간 디렉터리로 이동합니다.
$ cd oc-mirror-workspace/
생성된
mapping.txt
파일을 검토합니다.이 파일에는 미러링될 모든 이미지 목록이 포함되어 있습니다.
생성된
prune-plan.json
파일을 검토합니다.이 파일에는 이미지 세트가 게시될 때 미러 레지스트리에서 정리할 모든 이미지 목록이 포함되어 있습니다.
참고prune
-plan.json 파일은 oc-mirror 명령이 미러 레지스트리를 가리키며 정리할
이미지가 있는 경우에만 생성됩니다.
추가 리소스
11.2.3.10. 이미지 세트 구성 매개변수
oc-mirror 플러그인에는 미러링할 이미지를 정의하는 이미지 세트 구성 파일이 필요합니다. 다음 표에는 ImageSetConfiguration
리소스에 사용 가능한 매개변수가 나열되어 있습니다.
매개변수 | 설명 | 값 |
---|---|---|
|
|
문자열. 예: |
| 이미지 세트 내의 각 아카이브 파일의 최대 크기(GiB)입니다. |
정수. 예: |
| 이미지 세트의 구성입니다. | 개체 |
| 이미지 세트의 추가 이미지 구성입니다. | 개체의 배열입니다. 예를 들어 다음과 같습니다. additionalImages: - name: registry.redhat.io/ubi8/ubi:latest |
| 미러링할 이미지의 태그 또는 다이제스트입니다. |
문자열. 예: |
| 미러링에서 차단할 이미지의 전체 태그, 다이제스트 또는 패턴입니다. |
문자열 배열입니다. 예: |
| 이미지 세트의 helm 구성입니다. oc-mirror 플러그인은 렌더링 시 사용자 입력이 필요하지 않은 helm 차트만 지원합니다. | 개체 |
| 미러링할 로컬 helm 차트입니다. | 개체의 배열입니다. 예를 들어 다음과 같습니다. local: - name: podinfo path: /test/podinfo-5.0.0.tar.gz |
| 미러링할 로컬 helm 차트의 이름입니다. |
문자열. 예: |
| 미러링할 로컬 helm 차트의 경로입니다. |
문자열. 예: |
| 미러링할 원격 helm 리포지토리입니다. | 개체의 배열입니다. 예를 들어 다음과 같습니다. repositories: - name: podinfo url: https://example.github.io/podinfo charts: - name: podinfo version: 5.0.0 |
| 미러링할 helm 저장소 이름입니다. |
문자열. 예: |
| 미러링할 helm 리포지토리의 URL입니다. |
문자열. 예: |
| 미러링할 원격 helm 차트입니다. | 개체의 배열입니다. |
| 미러링할 helm 차트의 이름입니다. |
문자열. 예: |
| 미러링할 이름이 helm 차트의 버전입니다. |
문자열. 예: |
| 이미지 세트의 Operator 구성 | 개체의 배열입니다. 예를 들어 다음과 같습니다. operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.11 packages: - name: elasticsearch-operator minVersion: '2.4.0' |
| 이미지 세트에 포함할 Operator 카탈로그입니다. |
문자열. 예: |
|
|
부울. 기본값은 |
| Operator 패키지 구성입니다. | 개체의 배열입니다. 예를 들어 다음과 같습니다. operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.11 packages: - name: elasticsearch-operator minVersion: '5.2.3-31' |
| 이미지 세트에 포함할 Operator 패키지 이름 |
문자열. 예: |
| Operator 패키지 채널 구성입니다. | 개체 |
| 이미지 세트에 포함할 Operator 채널 이름은 패키지 내에서 고유합니다. |
문자열. 예: |
| 존재하는 모든 채널에서 Operator 미러의 최고 버전입니다. |
문자열. 예: |
| 포함할 최소 번들의 이름 및 채널 헤드로의 업그레이드 그래프의 모든 번들입니다. 이름이 지정된 번들에 의미 있는 버전 메타데이터가 없는 경우에만 이 필드를 설정합니다. |
문자열. 예: |
| Operator가 존재하는 모든 채널에서 미러링할 Operator의 가장 낮은 버전입니다. |
문자열. 예: |
| Operator가 존재하는 모든 채널에서 미러링할 Operator의 최고 버전입니다. |
문자열. 예: |
| Operator가 존재하는 모든 채널에서 미러링할 Operator의 가장 낮은 버전입니다. |
문자열. 예: |
|
|
부울. 기본값은 |
| 참조된 카탈로그를 미러링할 선택적 대체 이름입니다. |
문자열. 예: |
|
|
문자열. 예: |
| 이미지 세트의 플랫폼 구성입니다. | 개체 |
| 미러링할 플랫폼 릴리스 페이로드의 아키텍처입니다. | 문자열 배열입니다. 예를 들어 다음과 같습니다. architectures: - amd64 - arm64 |
| 이미지 세트의 플랫폼 채널 구성입니다. | 개체의 배열입니다. 예를 들어 다음과 같습니다. channels: - name: stable-4.10 - name: stable-4.11 |
|
|
부울. 기본값은 |
| 릴리스 채널의 이름입니다. |
문자열. 예: |
| 참조되는 플랫폼의 최소 버전이 미러링될 수 있습니다. |
문자열. 예: |
| 미러링할 참조 플랫폼의 가장 높은 버전입니다. |
문자열. 예: |
| 잘못된 경로 미러링 또는 전체 범위 미러링을 전환합니다. |
부울. 기본값은 |
| 미러링할 플랫폼의 유형입니다. |
문자열. 예: |
| OSUS 그래프가 이미지 세트에 추가되어 나중에 미러에 게시되는지 여부를 나타냅니다. |
부울. 기본값은 |
| 이미지 세트의 백엔드 구성입니다. | 개체 |
| 이미지 세트의 로컬 백엔드 구성입니다. | 개체 |
| 이미지 세트 메타데이터를 포함할 디렉터리의 경로입니다. |
문자열. 예: |
| 이미지 세트의 레지스트리 백엔드 구성입니다. | 개체 |
| 백엔드 레지스트리 URI입니다. URI에 네임스페이스 참조를 선택적으로 포함할 수 있습니다. |
문자열. 예: |
| 필요한 경우 참조된 백엔드 레지스트리의 TLS 확인을 건너뜁니다. |
부울. 기본값은 |
11.2.3.11. 이미지 세트 구성 예
다음 ImageSetConfiguration
파일 예제에서는 다양한 미러링 사용 사례에 대한 구성을 보여줍니다.
사용 사례: 임의의 이미지 및 helm 차트 포함
다음 ImageSetConfiguration
파일은 레지스트리 스토리지 백엔드를 사용하며 helm 차트 및 추가 Red Hat UBI(Universal Base Image)를 포함합니다.
ImageSetConfiguration
파일 예
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration archiveSize: 4 storageConfig: registry: imageURL: example.com/mirror/oc-mirror-metadata skipTLS: false mirror: platform: architectures: - "s390x" channels: - name: stable-4.11 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.11 helm: repositories: - name: redhat-helm-charts url: https://raw.githubusercontent.com/redhat-developer/redhat-helm-charts/master charts: - name: ibm-mongodb-enterprise-helm version: 0.2.0 additionalImages: - name: registry.redhat.io/ubi8/ubi:latest
사용 사례: Operator 버전을 최소에서 최신 버전으로 포함
다음 ImageSetConfiguration
파일은 로컬 스토리지 백엔드를 사용하며 최신
채널의 3.68.0 이상 버전에서 시작되는 Kubernetes Operator용 Red Hat Advanced Cluster Security만 포함합니다.
ImageSetConfiguration
파일 예
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: local: path: /home/user/metadata mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.11 packages: - name: rhacs-operator channels: - name: latest minVersion: 3.68.0
사용 사례: 가장 짧은 OpenShift Container Platform 업그레이드 경로 포함
다음 ImageSetConfiguration
파일은 로컬 스토리지 백엔드를 사용하며 최소 4.9.37
버전에서 최대 4.10.22
까지의 가장 짧은 업그레이드 경로를 따라 모든 OpenShift Container Platform 버전을 포함합니다.
ImageSetConfiguration
파일 예
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: local: path: /home/user/metadata mirror: platform: channels: - name: stable-4.10 minVersion: 4.9.37 maxVersion: 4.10.22 shortestPath: true
사용 사례: 모든 OpenShift Container Platform 버전을 최소에서 최신 버전까지 포함
다음 ImageSetConfiguration
파일은 레지스트리 스토리지 백엔드를 사용하며 최소 4.10.10
부터 채널의 최신 버전으로 시작하는 모든 OpenShift Container Platform 버전을 포함합니다.
이 이미지 세트 구성으로 oc-mirror를 호출하면 stable-4.10
채널의 최신 릴리스가 평가되므로 정기적으로 oc-mirror를 실행하면 OpenShift Container Platform 이미지의 최신 릴리스가 자동으로 수신됩니다.
ImageSetConfiguration
파일 예
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: registry: imageURL: example.com/mirror/oc-mirror-metadata skipTLS: false mirror: platform: channels: - name: stable-4.10 minVersion: 4.10.10
사용 사례: Operator 버전을 최소에서 최대로 포함
다음 ImageSetConfiguration
파일은 로컬 스토리지 백엔드를 사용하며 stable
채널의 1.0.0
에서 2.0.0
까지 시작하는 버전인 예제 Operator만 포함합니다.
이를 통해 특정 Operator의 특정 버전 범위만 미러링할 수 있습니다. 시간이 지남에 따라 이러한 설정을 사용하여 최신 릴리스로 버전을 조정할 수 있습니다(예: 더 이상 1.0.0을 실행 중인 버전 1.0.0
이 더 이상 실행 중인 경우). 이 시나리오에서는 minVersion
을 최신 버전 (예: 1.5.0
)으로 늘릴 수 있습니다. oc-mirror가 업데이트된 버전 범위에서 다시 실행되는 경우 1.5.0
이전 릴리스가 더 이상 필요하지 않으며 레지스트리에서 해당 릴리스를 삭제하여 스토리지 공간을 절약할 수 있음을 자동으로 탐지합니다.
ImageSetConfiguration
파일 예
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: local: path: /home/user/metadata mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.11 packages: - name: example-operator channels: - name: stable minVersion: '1.0.0' maxVersion: '2.0.0'
11.2.3.12. oc-mirror의 명령 참조
다음 표에서는 oc mirror
하위 명령 및 플래그를 설명합니다.
하위 명령 | 설명 |
---|---|
| 지정된 쉘에 대한 자동 완성 스크립트를 생성합니다. |
| 이미지 세트의 내용을 출력합니다. |
| 하위 명령에 대한 도움말을 표시합니다. |
| 초기 이미지 세트 구성 템플릿을 출력합니다. |
| 사용 가능한 플랫폼 및 Operator 콘텐츠 및 해당 버전을 나열합니다. |
| oc-mirror 버전을 출력합니다. |
플래그 | 설명 |
---|---|
| 이미지 세트 구성 파일의 경로를 지정합니다. |
| 이미지 가져오기 관련 오류가 발생하면 계속 진행하여 미러링을 최대한 시도합니다. |
| 대상 레지스트리에 대한 TLS 검증을 비활성화합니다. |
| 대상 레지스트리에 일반 HTTP를 사용합니다. |
|
이미지를 미러링하지 않고 작업을 인쇄합니다. |
| 대상 레지스트리로 로드할 oc-mirror 실행으로 생성된 이미지 세트 아카이브의 경로를 지정합니다. |
| 도움말을 표시합니다. |
| 이미지 및 패키징 계층을 다운로드할 때 이전 미러를 무시합니다. 증분 미러링을 비활성화하고 더 많은 데이터를 다운로드할 수 있습니다. |
|
미러 레지스트리를 사용하도록 클러스터를 구성하기 위해 |
|
레지스트리당 허용된 동시 요청 수를 지정합니다. 기본값은 |
| 아티팩트 디렉터리 제거를 건너뜁니다. |
| Operator 카탈로그의 이미지 태그를 다이제스트 핀으로 대체하지 마십시오. |
|
이미지 세트를 게시할 때 메타데이터를 건너뜁니다. 이미지 세트가 |
| 이미지를 찾을 수 없는 경우 오류를 보고하고 실행을 중단하는 대신 이미지를 건너뜁니다. 이미지 세트 구성에 명시적으로 지정된 사용자 지정 이미지에는 적용되지 않습니다. |
| 다이제스트 확인을 건너뜁니다. |
| 소스 레지스트리에 대한 TLS 검증을 비활성화합니다. |
| 소스 레지스트리에 일반 HTTP를 사용합니다. |
|
로그 수준 상세 정보 표시 수를 지정합니다. 유효한 값은 |
11.2.4. oc adm release mirror 명령을 사용하여 이미지 미러링
OpenShift Update Service 애플리케이션에서 과도한 메모리 사용을 방지하려면 다음 절차에 설명된 대로 릴리스 이미지를 별도의 저장소에 미러링해야 합니다.
사전 요구 사항
- 연결이 끊긴 환경에서 사용할 미러 레지스트리를 설정하고 구성한 인증서 및 인증 정보에 액세스할 수 있습니다.
- Red Hat OpenShift Cluster Manager에서 풀 시크릿을 다운로드하여 미러 저장소에 대한 인증을 포함하도록 수정했습니다.
- 자체 서명된 인증서를 사용하는 경우 인증서에 주체 대체 이름을 지정했습니다.
프로세스
- Red Hat OpenShift Container Platform Upgrade Graph 시각화 프로그램 및 업데이트 플래너 를 사용하여 한 버전에서 다른 버전으로의 업데이트를 계획합니다. OpenShift Upgrade Graph는 채널 그래프와 현재 클러스터 버전과 예약된 클러스터 버전 간의 업데이트 경로가 있는지 확인하는 방법을 제공합니다.
필요한 환경 변수를 설정합니다.
릴리스 버전을 내보냅니다.
$ export OCP_RELEASE=<release_version>
&
lt;release_version
>에 대해 업데이트할 OpenShift Container Platform 버전에 해당하는 태그를 지정합니다 (예:4.5.4
) .로컬 레지스트리 이름 및 호스트 포트를 내보냅니다.
$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
<local_registry_host_name>
의 경우 미러 저장소의 레지스트리 도메인 이름을 지정하고<local_registry_host_port>
의 경우 콘텐츠를 제공하는데 사용되는 포트를 지정합니다.로컬 저장소 이름을 내보냅니다.
$ LOCAL_REPOSITORY='<local_repository_name>'
<local_repository_name>
의 경우 레지스트리에 작성할 저장소 이름 (예:ocp4/openshift4
)을 지정합니다.OpenShift Update Service를 사용하는 경우 릴리스 이미지를 포함하도록 추가 로컬 리포지토리 이름을 내보냅니다.
$ LOCAL_RELEASE_IMAGES_REPOSITORY='<local_release_images_repository_name>'
<local_release_images_repository_name>
의 경우 레지스트리에 작성할 저장소 이름 (예:ocp4/openshift4-release-images
)을 지정합니다.미러링할 저장소 이름을 내보냅니다.
$ PRODUCT_REPO='openshift-release-dev'
프로덕션 환경의 릴리스의 경우
openshift-release-dev
를 지정해야 합니다.레지스트리 풀 시크릿의 경로를 내보냅니다.
$ LOCAL_SECRET_JSON='<path_to_pull_secret>'
생성한 미러 레지스트리에 대한 풀 시크릿의 절대 경로 및 파일 이름을
<path_to_pull_secret>
에 지정합니다.참고클러스터에서
ImageContentSourcePolicy
오브젝트를 사용하여 저장소 미러링을 구성하는 경우 미러링된 레지스트리에 대한 글로벌 풀 시크릿만 사용할 수 있습니다. 프로젝트에 풀 시크릿을 추가할 수 없습니다.릴리스 미러를 내보냅니다.
$ RELEASE_NAME="ocp-release"
프로덕션 환경의 릴리스의 경우
ocp-release
를 지정해야 합니다.서버의 아키텍처 유형 (예:
x86_64
)을 내보냅니다.$ ARCHITECTURE=<server_architecture>
미러링된 이미지를 호스트할 디렉터리의 경로를 내보냅니다.
$ REMOVABLE_MEDIA_PATH=<path> 1
- 1
- 초기 슬래시 (/) 문자를 포함하여 전체 경로를 지정합니다.
미러링할 이미지 및 설정 매니페스트를 확인합니다.
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run
버전 이미지를 미러 레지스트리에 미러링합니다.
미러 호스트가 인터넷에 액세스할 수 없는 경우 다음 작업을 수행합니다.
- 이동식 미디어를 인터넷에 연결된 시스템에 연결합니다.
이미지 및 설정 매니페스트를 이동식 미디어의 디렉토리에 미러링합니다.
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}
참고또한 이 명령은 미러링된 릴리스 이미지 서명 구성 맵을 이동식 미디어에 생성하고 저장합니다.
미디어를 연결이 끊긴 환경으로 가져와서 이미지를 로컬 컨테이너 레지스트리에 업로드합니다.
$ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} 1
- 1
REMOVABLE_MEDIA_PATH
의 경우 이미지를 미러링 할 때 지정한 것과 동일한 경로를 사용해야 합니다.
-
oc
CLI(명령줄 인터페이스)를 사용하여 업그레이드 중인 클러스터에 로그인합니다. 미러링된 릴리스 이미지 서명 config map을 연결된 클러스터에 적용합니다.
$ oc apply -f ${REMOVABLE_MEDIA_PATH}/mirror/config/<image_signature_file> 1
- 1
- <
image_signature_file
>의 경우 파일의 경로와 이름을 지정합니다(예:signature-sha256-81154f5c03294534.yaml
).
OpenShift Update Service를 사용하는 경우 릴리스 이미지를 별도의 저장소에 미러링합니다.
$ oc image mirror -a ${LOCAL_SECRET_JSON} ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} ${LOCAL_REGISTRY}/${LOCAL_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
로컬 컨테이너 레지스트리와 클러스터가 미러 호스트에 연결된 경우 다음 작업을 수행합니다.
릴리스 이미지를 로컬 레지스트리로 직접 푸시하고 다음 명령을 사용하여 구성 맵을 클러스터에 적용합니다.
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} --apply-release-image-signature
참고--apply-release-image-signature
옵션이 포함된 경우 이미지 서명 확인을 위해 config map을 작성하지 않습니다.OpenShift Update Service를 사용하는 경우 릴리스 이미지를 별도의 저장소에 미러링합니다.
$ oc image mirror -a ${LOCAL_SECRET_JSON} ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} ${LOCAL_REGISTRY}/${LOCAL_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}