17.14. 단일 노드 OpenShift 배포의 이미지 사전 캐싱

GitOps zero touch provisioning(ZTP) 솔루션을 사용하여 다수의 클러스터를 배포하는 데 제한된 대역폭이 있는 환경에서 OpenShift Container Platform을 부트스트랩하고 설치하는 데 필요한 모든 이미지를 다운로드하지 않으려고 합니다. 원격 단일 노드 OpenShift 사이트의 대역폭이 제한된 경우 배포 시간이 길어질 수 있습니다. construction-precaching-cli 도구를 사용하면 ZTP 프로비저닝을 위해 원격 사이트로 전송하기 전에 사전 단계를 수행할 수 있습니다.

construction-precaching-cli 도구는 다음을 수행합니다.

  • 부팅하는 데 최소한의 ISO에 필요한 RHCOS rootfs 이미지를 다운로드합니다.
  • 데이터로 레이블이 지정된 설치 디스크에서 파티션을 생성합니다.
  • xfs로 디스크를 포맷합니다.
  • 디스크 끝에 GUID 파티션 테이블(GPT) 데이터 파티션을 만듭니다. 여기서 파티션 크기는 도구에서 구성할 수 있습니다.
  • OpenShift Container Platform을 설치하는 데 필요한 컨테이너 이미지를 복사합니다.
  • ZTP에 필요한 컨테이너 이미지를 복사하여 OpenShift Container Platform을 설치합니다.
  • 선택사항: 2일 차 Operator를 파티션에 복사합니다.
중요

division-precaching-cli 툴은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

17.14.1. construction-precaching-cli 툴 받기

factory-precaching-cli 툴 Go 바이너리는 Telco RAN 툴 컨테이너 이미지에서 공개적으로 사용할 수 있습니다. 컨테이너 이미지의 bootstrap-precaching-cli 툴 Go 바이너리는 podman 을 사용하여 RHCOS 라이브 이미지를 실행하는 서버에서 실행됩니다. 연결이 끊긴 환경에서 작업 중이거나 프라이빗 레지스트리가 있는 경우 이미지를 서버에 다운로드할 수 있도록 이미지를 복사해야 합니다.

절차

  • 다음 명령을 실행하여 builder-precaching-cli 툴 이미지를 가져옵니다.

    # podman pull quay.io/openshift-kni/telco-ran-tools:latest

검증

  • 도구를 사용할 수 있는지 확인하려면 현재 버전의 Operating-precaching-cli 툴 Go 바이너리를 쿼리합니다.

    # podman run quay.io/openshift-kni/telco-ran-tools:latest -- factory-precaching-cli -v

    출력 예

    factory-precaching-cli version 20221018.120852+main.feecf17

17.14.2. 라이브 운영 체제 이미지에서 부팅

하나의 디스크만 사용할 수 있고 외부 디스크 드라이브를 서버에 연결할 수 없는 부팅 서버를 함께 사용할 수 있습니다.

주의

디스크가 RHCOS 이미지로 작성될 때 RHCOS를 사용하지 않아야 합니다.

서버 하드웨어에 따라 다음 방법 중 하나를 사용하여 빈 서버에 RHCOS 라이브 ISO를 마운트할 수 있습니다.

  • Dell 서버에서 Dell RACADM 툴 사용.
  • HP 서버에서 HPONCFG 툴 사용.
  • Redfish BMC API 사용.
참고

마운트 절차를 자동화하는 것이 좋습니다. 절차를 자동화하려면 필요한 이미지를 가져와서 로컬 HTTP 서버에서 호스팅해야 합니다.

사전 요구 사항

  • 호스트의 전원을 높였습니다.
  • 호스트에 대한 네트워크 연결이 있어야 합니다.
절차

이 예제 절차에서는 Redfish BMC API를 사용하여 RHCOS 라이브 ISO를 마운트합니다.

  1. RHCOS 라이브 ISO를 마운트합니다.

    1. 가상 미디어 상태를 확인합니다.

      $ curl --globoff -H "Content-Type: application/json" -H \
      "Accept: application/json" -k -X GET --user ${username_password} \
      https://$BMC_ADDRESS/redfish/v1/Managers/Self/VirtualMedia/1 | python -m json.tool
    2. ISO 파일을 가상 미디어로 마운트합니다.

      $ curl --globoff -L -w "%{http_code} %{url_effective}\\n" -ku ${username_password} -H "Content-Type: application/json" -H "Accept: application/json" -d '{"Image": "http://[$HTTPd_IP]/RHCOS-live.iso"}' -X POST https://$BMC_ADDRESS/redfish/v1/Managers/Self/VirtualMedia/1/Actions/VirtualMedia.InsertMedia
    3. 가상 미디어에서 부팅하도록 부팅 순서를 설정합니다.

      $ curl --globoff  -L -w "%{http_code} %{url_effective}\\n"  -ku ${username_password}  -H "Content-Type: application/json" -H "Accept: application/json" -d '{"Boot":{ "BootSourceOverrideEnabled": "Once", "BootSourceOverrideTarget": "Cd", "BootSourceOverrideMode": "UEFI"}}' -X PATCH https://$BMC_ADDRESS/redfish/v1/Systems/Self
  2. 서버가 가상 미디어에서 부팅되고 있는지 확인합니다.

추가 리소스

17.14.3. 디스크 파티션 설정

전체 사전 캐싱 프로세스를 실행하려면 라이브 ISO에서 부팅하고 컨테이너 이미지에서 loading-precaching-cli 툴을 사용하여 필요한 모든 아티팩트를 파티션하고 캐시해야 합니다.

운영 체제(RHCOS)가 프로비저닝 중 장치에 기록될 때 디스크를 사용하지 않아야 하므로 라이브 ISO 또는 RHCOS 라이브 ISO가 필요합니다. 이 절차를 통해 단일 디스크 서버를 활성화할 수도 있습니다.

사전 요구 사항

  • 분할되지 않은 디스크가 있습니다.
  • quay.io/openshift-kni/telco-ran-tools:latest 이미지에 액세스할 수 있습니다.
  • OpenShift Container Platform을 설치하고 필요한 이미지를 사전 캐시할 수 있는 충분한 스토리지가 있습니다.

절차

  1. 디스크가 지워졌는지 확인합니다.

    # lsblk

    출력 예

    NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    loop0     7:0    0  93.8G  0 loop /run/ephemeral
    loop1     7:1    0 897.3M  1 loop /sysroot
    sr0      11:0    1   999M  0 rom  /run/media/iso
    nvme0n1 259:1    0   1.5T  0 disk

  2. 장치에서 모든 파일 시스템, RAID 또는 파티션 테이블 서명이 만료됩니다.

    # wipefs -a /dev/nvme0n1

    출력 예

    /dev/nvme0n1: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
    /dev/nvme0n1: 8 bytes were erased at offset 0x1749a955e00 (gpt): 45 46 49 20 50 41 52 54
    /dev/nvme0n1: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa

중요

아티팩트 사전 캐싱을 위해 장치의 파티션 번호 1을 사용하므로 디스크가 비어 있지 않은 경우 툴이 실패합니다.

17.14.3.1. 파티션 생성

장치가 준비되면 단일 파티션과 GPT 파티션 테이블을 만듭니다. 파티션에 자동으로 데이터 레이블이 지정되고 장치 끝에 생성됩니다. 그렇지 않으면 coreos-installer 에 의해 파티션이 재정의됩니다.

중요

coreos-installer 는 장치 끝에 파티션을 생성하고 데이터로 레이블이 지정되어야 합니다. RHCOS 이미지를 디스크에 쓸 때 파티션을 저장하려면 두 가지 요구 사항이 모두 필요합니다.

사전 요구 사항

  • 컨테이너는 호스트 장치 포맷으로 인해 권한으로 실행되어야 합니다.
  • 컨테이너 내부에서 프로세스를 실행할 수 있도록 /dev 폴더를 마운트해야 합니다.

절차

다음 예에서 2일 Operator의 DU 프로필을 사전 캐싱할 수 있기 때문에 파티션 크기는 250GiB입니다.

  1. 권한으로 컨테이너를 실행하고 디스크를 분할합니다.

    # podman run -v /dev:/dev --privileged \
    --rm quay.io/openshift-kni/telco-ran-tools:latest -- \
    factory-precaching-cli partition \ 1
    -d /dev/nvme0n1 \ 2
    -s 250 3
    1
    loading-precaching-cli 툴의 파티션 기능을 지정합니다.
    2
    디스크의 루트 디렉터리를 정의합니다.
    3
    디스크 크기(GB)를 정의합니다.
  2. 스토리지 정보를 확인합니다.

    # lsblk

    출력 예

    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    loop0         7:0    0  93.8G  0 loop /run/ephemeral
    loop1         7:1    0 897.3M  1 loop /sysroot
    sr0          11:0    1   999M  0 rom  /run/media/iso
    nvme0n1     259:1    0   1.5T  0 disk
    └─nvme0n1p1 259:3    0   250G  0 part

검증

다음 요구 사항이 충족되었는지 확인해야 합니다.

  • 장치에 GPT 파티션 테이블이 있습니다.
  • 파티션은 장치의 최신 섹터를 사용합니다.
  • 파티션의 레이블이 data 로 올바르게 지정됩니다.

디스크 상태를 쿼리하여 디스크가 예상대로 분할되었는지 확인합니다.

# gdisk -l /dev/nvme0n1

출력 예

GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/nvme0n1: 3125627568 sectors, 1.5 TiB
Model: Dell Express Flash PM1725b 1.6TB SFF
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): CB5A9D44-9B3C-4174-A5C1-C64957910B61
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3125627534
Partitions will be aligned on 2048-sector boundaries
Total free space is 2601338846 sectors (1.2 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1      2601338880      3125627534   250.0 GiB   8300  data

17.14.3.2. 파티션 마운트

디스크가 올바르게 분할되었는지 확인한 후 장치를 /mnt 에 마운트할 수 있습니다.

중요

ZTP 준비 중에 해당 마운트 지점이 사용되므로 장치를 /mnt 에 마운트하는 것이 좋습니다.

  1. 파티션이 xfs 로 포맷되었는지 확인합니다.

    # lsblk -f /dev/nvme0n1

    출력 예

    NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
    nvme0n1
    └─nvme0n1p1 xfs          1bee8ea4-d6cf-4339-b690-a76594794071

  2. 파티션을 마운트합니다.

    # mount /dev/nvme0n1p1 /mnt/

검증

  • 파티션이 마운트되었는지 확인합니다.

    # lsblk

    출력 예

    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    loop0         7:0    0  93.8G  0 loop /run/ephemeral
    loop1         7:1    0 897.3M  1 loop /sysroot
    sr0          11:0    1   999M  0 rom  /run/media/iso
    nvme0n1     259:1    0   1.5T  0 disk
    └─nvme0n1p1 259:2    0   250G  0 part /var/mnt 1

    1
    RHCOS의 /mnt 폴더는 /var/mnt 에 대한 링크이므로 마운트 지점은 /var/mnt 입니다.

17.14.4. 이미지 다운로드

division-precaching-cli 도구를 사용하면 다음과 같은 이미지를 분할된 서버로 다운로드할 수 있습니다.

  • OpenShift Container Platform 이미지
  • 5G RAN 사이트의 DU(Distributed Unit) 프로필에 포함된 Operator 이미지
  • 연결이 끊긴 레지스트리의 Operator 이미지
참고

사용 가능한 Operator 이미지 목록은 OpenShift Container Platform 릴리스마다 다를 수 있습니다.

17.14.4.1. 병렬 작업자로 다운로드

division-precaching-cli 툴은 병렬 작업자를 사용하여 여러 이미지를 동시에 다운로드합니다. --parallel 또는 -p 옵션을 사용하여 작업자 수를 구성할 수 있습니다. 기본값은 서버 사용 가능한 CPU의 80%로 설정됩니다.

참고

로그인 쉘은 CPU의 하위 집합으로 제한될 수 있으므로 컨테이너에서 사용 가능한 CPU가 줄어듭니다. 이 제한을 제거하려면 명령 앞에 0xffffffff의 작업 보다 우선합니다. 예를 들면 다음과 같습니다.

# taskset 0xffffffff podman run --rm quay.io/openshift-kni/telco-ran-tools:latest factory-precaching-cli download --help

17.14.4.2. OpenShift Container Platform 이미지 다운로드 준비

OpenShift Container Platform 컨테이너 이미지를 다운로드하려면 멀티 클러스터 엔진 (MCE) 버전을 알아야 합니다. --du-profile 플래그를 사용하는 경우 단일 노드 OpenShift를 프로비저닝할 hub 클러스터에서 실행되는 RHACM(Red Hat Advanced Cluster Management) 버전도 지정해야 합니다.

사전 요구 사항

  • RHACM 및 MCE가 설치되어 있어야 합니다.
  • 스토리지 장치를 분할했습니다.
  • 분할된 장치에 이미지에 충분한 공간이 있습니다.
  • 베어 메탈 서버를 인터넷에 연결하셨습니다.
  • 유효한 풀 시크릿이 있습니다.

절차

  1. hub 클러스터에서 다음 명령을 실행하여 RHACM 및 MCE 버전을 확인합니다.

    $ oc get csv -A | grep -i advanced-cluster-management

    출력 예

    open-cluster-management                            advanced-cluster-management.v2.6.3           Advanced Cluster Management for Kubernetes   2.6.3                 advanced-cluster-management.v2.6.3                Succeeded

    $ oc get csv -A | grep -i multicluster-engine

    출력 예

    multicluster-engine                                cluster-group-upgrades-operator.v0.0.3       cluster-group-upgrades-operator              0.0.3                                                                   Pending
    multicluster-engine                                multicluster-engine.v2.1.4                   multicluster engine for Kubernetes           2.1.4                 multicluster-engine.v2.0.3                        Succeeded
    multicluster-engine                                openshift-gitops-operator.v1.5.7             Red Hat OpenShift GitOps                     1.5.7                 openshift-gitops-operator.v1.5.6-0.1664915551.p   Succeeded
    multicluster-engine                                openshift-pipelines-operator-rh.v1.6.4       Red Hat OpenShift Pipelines                  1.6.4                 openshift-pipelines-operator-rh.v1.6.3            Succeeded

  2. 컨테이너 레지스트리에 액세스하려면 설치할 서버에 유효한 풀 시크릿을 복사합니다.

    1. .docker 폴더를 생성합니다.

      $ mkdir /root/.docker
    2. config.json 파일에 유효한 가져오기를 이전에 생성한 .docker/ 폴더에 복사합니다.

      $ cp config.json /root/.docker/config.json 1
      1
      /root/.docker/config.jsonpodman 이 레지스트리의 로그인 자격 증명을 확인하는 기본 경로입니다.
참고

다른 레지스트리를 사용하여 필요한 아티팩트를 가져오는 경우 적절한 풀 시크릿을 복사해야 합니다. 로컬 레지스트리가 TLS를 사용하는 경우 레지스트리의 인증서도 포함해야 합니다.

17.14.4.3. OpenShift Container Platform 이미지 다운로드

seamless-precaching-cli 툴을 사용하면 특정 OpenShift Container Platform 릴리스를 프로비저닝하는 데 필요한 모든 컨테이너 이미지를 사전 캐시할 수 있습니다.

절차

  • 다음 명령을 실행하여 릴리스를 사전 캐시합니다.

    # podman run -v /mnt:/mnt -v /root/.docker:/root/.docker --privileged --rm quay.io/openshift-kni/telco-ran-tools -- \
       factory-precaching-cli download \ 1
       -r 4.12.0 \ 2
       --acm-version 2.6.3 \ 3
       --mce-version 2.1.4 \ 4
       -f /mnt \ 5
       --img quay.io/custom/repository 6
    1
    loading-precaching-cli 툴의 다운로드 기능을 지정합니다.
    2
    OpenShift Container Platform 릴리스 버전을 정의합니다.
    3
    RHACM 버전을 정의합니다.
    4
    MCE 버전을 정의합니다.
    5
    디스크의 이미지를 다운로드하려는 폴더를 정의합니다.
    6
    선택 사항: 추가 이미지를 저장할 리포지토리를 정의합니다. 이러한 이미지는 다운로드되어 디스크에 사전 캐시됩니다.

    출력 예

    Generated /mnt/imageset.yaml
    Generating list of pre-cached artifacts...
    Processing artifact [1/176]: ocp-v4.0-art-dev@sha256_6ac2b96bf4899c01a87366fd0feae9f57b1b61878e3b5823da0c3f34f707fbf5
    Processing artifact [2/176]: ocp-v4.0-art-dev@sha256_f48b68d5960ba903a0d018a10544ae08db5802e21c2fa5615a14fc58b1c1657c
    Processing artifact [3/176]: ocp-v4.0-art-dev@sha256_a480390e91b1c07e10091c3da2257180654f6b2a735a4ad4c3b69dbdb77bbc06
    Processing artifact [4/176]: ocp-v4.0-art-dev@sha256_ecc5d8dbd77e326dba6594ff8c2d091eefbc4d90c963a9a85b0b2f0e6155f995
    Processing artifact [5/176]: ocp-v4.0-art-dev@sha256_274b6d561558a2f54db08ea96df9892315bb773fc203b1dbcea418d20f4c7ad1
    Processing artifact [6/176]: ocp-v4.0-art-dev@sha256_e142bf5020f5ca0d1bdda0026bf97f89b72d21a97c9cc2dc71bf85050e822bbf
    ...
    Processing artifact [175/176]: ocp-v4.0-art-dev@sha256_16cd7eda26f0fb0fc965a589e1e96ff8577e560fcd14f06b5fda1643036ed6c8
    Processing artifact [176/176]: ocp-v4.0-art-dev@sha256_cf4d862b4a4170d4f611b39d06c31c97658e309724f9788e155999ae51e7188f
    ...
    Summary:
    
    Release:                            4.12.0
    Hub Version:                        2.6.3
    ACM Version:                        2.6.3
    MCE Version:                        2.1.4
    Include DU Profile:                 No
    Workers:                            83

검증

  • 모든 이미지가 서버의 대상 폴더에 압축되어 있는지 확인합니다.

    $ ls -l /mnt 1
    1
    /mnt 폴더의 이미지를 사전 캐시하는 것이 좋습니다.

    출력 예

    -rw-r--r--. 1 root root  136352323 Oct 31 15:19 ocp-v4.0-art-dev@sha256_edec37e7cd8b1611d0031d45e7958361c65e2005f145b471a8108f1b54316c07.tgz
    -rw-r--r--. 1 root root  156092894 Oct 31 15:33 ocp-v4.0-art-dev@sha256_ee51b062b9c3c9f4fe77bd5b3cc9a3b12355d040119a1434425a824f137c61a9.tgz
    -rw-r--r--. 1 root root  172297800 Oct 31 15:29 ocp-v4.0-art-dev@sha256_ef23d9057c367a36e4a5c4877d23ee097a731e1186ed28a26c8d21501cd82718.tgz
    -rw-r--r--. 1 root root  171539614 Oct 31 15:23 ocp-v4.0-art-dev@sha256_f0497bb63ef6834a619d4208be9da459510df697596b891c0c633da144dbb025.tgz
    -rw-r--r--. 1 root root  160399150 Oct 31 15:20 ocp-v4.0-art-dev@sha256_f0c339da117cde44c9aae8d0bd054bceb6f19fdb191928f6912a703182330ac2.tgz
    -rw-r--r--. 1 root root  175962005 Oct 31 15:17 ocp-v4.0-art-dev@sha256_f19dd2e80fb41ef31d62bb8c08b339c50d193fdb10fc39cc15b353cbbfeb9b24.tgz
    -rw-r--r--. 1 root root  174942008 Oct 31 15:33 ocp-v4.0-art-dev@sha256_f1dbb81fa1aa724e96dd2b296b855ff52a565fbef003d08030d63590ae6454df.tgz
    -rw-r--r--. 1 root root  246693315 Oct 31 15:31 ocp-v4.0-art-dev@sha256_f44dcf2c94e4fd843cbbf9b11128df2ba856cd813786e42e3da1fdfb0f6ddd01.tgz
    -rw-r--r--. 1 root root  170148293 Oct 31 15:00 ocp-v4.0-art-dev@sha256_f48b68d5960ba903a0d018a10544ae08db5802e21c2fa5615a14fc58b1c1657c.tgz
    -rw-r--r--. 1 root root  168899617 Oct 31 15:16 ocp-v4.0-art-dev@sha256_f5099b0989120a8d08a963601214b5c5cb23417a707a8624b7eb52ab788a7f75.tgz
    -rw-r--r--. 1 root root  176592362 Oct 31 15:05 ocp-v4.0-art-dev@sha256_f68c0e6f5e17b0b0f7ab2d4c39559ea89f900751e64b97cb42311a478338d9c3.tgz
    -rw-r--r--. 1 root root  157937478 Oct 31 15:37 ocp-v4.0-art-dev@sha256_f7ba33a6a9db9cfc4b0ab0f368569e19b9fa08f4c01a0d5f6a243d61ab781bd8.tgz
    -rw-r--r--. 1 root root  145535253 Oct 31 15:26 ocp-v4.0-art-dev@sha256_f8f098911d670287826e9499806553f7a1dd3e2b5332abbec740008c36e84de5.tgz
    -rw-r--r--. 1 root root  158048761 Oct 31 15:40 ocp-v4.0-art-dev@sha256_f914228ddbb99120986262168a705903a9f49724ffa958bb4bf12b2ec1d7fb47.tgz
    -rw-r--r--. 1 root root  167914526 Oct 31 15:37 ocp-v4.0-art-dev@sha256_fa3ca9401c7a9efda0502240aeb8d3ae2d239d38890454f17fe5158b62305010.tgz
    -rw-r--r--. 1 root root  164432422 Oct 31 15:24 ocp-v4.0-art-dev@sha256_fc4783b446c70df30b3120685254b40ce13ba6a2b0bf8fb1645f116cf6a392f1.tgz
    -rw-r--r--. 1 root root  306643814 Oct 31 15:11 troubleshoot@sha256_b86b8aea29a818a9c22944fd18243fa0347c7a2bf1ad8864113ff2bb2d8e0726.tgz

17.14.4.4. Operator 이미지 다운로드

5G DU(Radio Access Network) DC(Distributed Unit) 클러스터 구성에서 사용되는 Day-2 Operator를 사전 캐시할 수도 있습니다. Day-2 Operator는 설치된 OpenShift Container Platform 버전에 따라 다릅니다.

중요

--acm-version--mce-version 플래그를 사용하여 RHACM 허브 및 MCE Operator 버전을 포함해야 하므로 equipment-precaching-cli 툴이 RHACM 및 MCE Operator에 적절한 컨테이너 이미지를 미리 캐시할 수 있습니다.

절차

  • Operator 이미지를 미리 캐시합니다.

    # podman run -v /mnt:/mnt -v /root/.docker:/root/.docker --privileged --rm quay.io/openshift-kni/telco-ran-tools:latest -- factory-precaching-cli download \ 1
       -r 4.12.0 \ 2
       --acm-version 2.6.3 \ 3
       --mce-version 2.1.4 \ 4
       -f /mnt \ 5
       --img quay.io/custom/repository 6
       --du-profile -s 7
    1
    loading-precaching-cli 툴의 다운로드 기능을 지정합니다.
    2
    OpenShift Container Platform 릴리스 버전을 정의합니다.
    3
    RHACM 버전을 정의합니다.
    4
    MCE 버전을 정의합니다.
    5
    디스크의 이미지를 다운로드하려는 폴더를 정의합니다.
    6
    선택 사항: 추가 이미지를 저장할 리포지토리를 정의합니다. 이러한 이미지는 다운로드되어 디스크에 사전 캐시됩니다.
    7
    DU 구성에 포함된 Operator 사전 캐싱을 지정합니다.

    출력 예

    Generated /mnt/imageset.yaml
    Generating list of pre-cached artifacts...
    Processing artifact [1/379]: ocp-v4.0-art-dev@sha256_7753a8d9dd5974be8c90649aadd7c914a3d8a1f1e016774c7ac7c9422e9f9958
    Processing artifact [2/379]: ose-kube-rbac-proxy@sha256_c27a7c01e5968aff16b6bb6670423f992d1a1de1a16e7e260d12908d3322431c
    Processing artifact [3/379]: ocp-v4.0-art-dev@sha256_370e47a14c798ca3f8707a38b28cfc28114f492bb35fe1112e55d1eb51022c99
    ...
    Processing artifact [378/379]: ose-local-storage-operator@sha256_0c81c2b79f79307305e51ce9d3837657cf9ba5866194e464b4d1b299f85034d0
    Processing artifact [379/379]: multicluster-operators-channel-rhel8@sha256_c10f6bbb84fe36e05816e873a72188018856ad6aac6cc16271a1b3966f73ceb3
    ...
    Summary:
    
    Release:                            4.12.0
    Hub Version:                        2.6.3
    ACM Version:                        2.6.3
    MCE Version:                        2.1.4
    Include DU Profile:                 Yes
    Workers:                            83

17.14.4.5. 연결이 끊긴 환경에서 사용자 정의 이미지 사전 캐싱

--generate-imageset 인수는 ImageSetConfiguration CR(사용자 정의 리소스)이 생성된 후 production-precaching-cli 툴을 중지합니다. 이렇게 하면 이미지를 다운로드하기 전에 ImageSetConfiguration CR을 사용자 지정할 수 있습니다. CR을 사용자 지정한 후 --skip-imageset 인수를 사용하여 ImageSetConfiguration CR에 지정한 이미지를 다운로드할 수 있습니다.

다음과 같은 방법으로 ImageSetConfiguration CR을 사용자 지정할 수 있습니다.

  • Operator 및 추가 이미지 추가
  • Operator 및 추가 이미지 제거
  • Operator 및 카탈로그 소스를 로컬 또는 연결이 끊긴 레지스트리로 변경

절차

  1. 이미지를 미리 캐시합니다.

    # podman run -v /mnt:/mnt -v /root/.docker:/root/.docker --privileged --rm quay.io/openshift-kni/telco-ran-tools:latest -- factory-precaching-cli download \ 1
       -r 4.12.0 \ 2
       --acm-version 2.6.3 \ 3
       --mce-version 2.1.4 \ 4
       -f /mnt \ 5
       --img quay.io/custom/repository 6
       --du-profile -s \ 7
       --generate-imageset 8
    1
    loading-precaching-cli 툴의 다운로드 기능을 지정합니다.
    2
    OpenShift Container Platform 릴리스 버전을 정의합니다.
    3
    RHACM 버전을 정의합니다.
    4
    MCE 버전을 정의합니다.
    5
    디스크의 이미지를 다운로드하려는 폴더를 정의합니다.
    6
    선택 사항: 추가 이미지를 저장할 리포지토리를 정의합니다. 이러한 이미지는 다운로드되어 디스크에 사전 캐시됩니다.
    7
    DU 구성에 포함된 Operator 사전 캐싱을 지정합니다.
    8
    --generate-imageset 인수는 CR을 사용자 지정할 수 있는 ImageSetConfiguration CR만 생성합니다.

    출력 예

    Generated /mnt/imageset.yaml

    ImageSetConfiguration CR의 예

    apiVersion: mirror.openshift.io/v1alpha2
    kind: ImageSetConfiguration
    mirror:
      platform:
        channels:
        - name: stable-4.12
          minVersion: 4.12.0 1
          maxVersion: 4.12.0
      additionalImages:
        - name: quay.io/custom/repository
      operators:
        - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12
          packages:
            - name: advanced-cluster-management 2
              channels:
                 - name: 'release-2.6'
                   minVersion: 2.6.3
                   maxVersion: 2.6.3
            - name: multicluster-engine 3
              channels:
                 - name: 'stable-2.1'
                   minVersion: 2.1.4
                   maxVersion: 2.1.4
            - name: local-storage-operator 4
              channels:
                - name: 'stable'
            - name: ptp-operator 5
              channels:
                - name: 'stable'
            - name: sriov-network-operator 6
              channels:
                - name: 'stable'
            - name: cluster-logging 7
              channels:
                - name: 'stable'
            - name: lvms-operator 8
              channels:
                - name: 'stable-4.12'
            - name: amq7-interconnect-operator 9
              channels:
                - name: '1.10.x'
            - name: bare-metal-event-relay 10
              channels:
                - name: 'stable'
        - catalog: registry.redhat.io/redhat/certified-operator-index:v4.12
          packages:
            - name: sriov-fec 11
              channels:
                - name: 'stable'

    1
    플랫폼 버전은 도구에 전달된 버전과 일치합니다.
    2 3
    RHACM 및 MCE Operator 버전은 툴에 전달된 버전과 일치합니다.
    4 5 6 7 8 9 10 11
    CR에는 지정된 모든 DU Operator가 포함됩니다.
  2. CR에서 카탈로그 리소스를 사용자 지정합니다.

    apiVersion: mirror.openshift.io/v1alpha2
    kind: ImageSetConfiguration
    mirror:
      platform:
    [...]
      operators:
        - catalog: eko4.cloud.lab.eng.bos.redhat.com:8443/redhat/certified-operator-index:v4.12
          packages:
            - name: sriov-fec
              channels:
                - name: 'stable'

    로컬 또는 연결이 끊긴 레지스트리를 사용하여 이미지를 다운로드하는 경우 먼저 콘텐츠를 가져오려는 레지스트리의 인증서를 추가해야 합니다.

  3. 오류를 방지하려면 레지스트리 인증서를 서버에 복사합니다.

    # cp /tmp/eko4-ca.crt /etc/pki/ca-trust/source/anchors/.
  4. 그런 다음 인증서 신뢰 저장소를 업데이트합니다.

    # update-ca-trust
  5. 호스트 /etc/pki 폴더를 production-cli 이미지에 마운트합니다.

    # podman run -v /mnt:/mnt -v /root/.docker:/root/.docker -v /etc/pki:/etc/pki --privileged --rm quay.io/openshift-kni/telco-ran-tools:latest -- \
    factory-precaching-cli download \ 1
       -r 4.12.0 \ 2
       --acm-version 2.6.3 \ 3
       --mce-version 2.1.4 \ 4
       -f /mnt \ 5
       --img quay.io/custom/repository 6
       --du-profile -s \ 7
       --skip-imageset 8
    1
    loading-precaching-cli 툴의 다운로드 기능을 지정합니다.
    2
    OpenShift Container Platform 릴리스 버전을 정의합니다.
    3
    RHACM 버전을 정의합니다.
    4
    MCE 버전을 정의합니다.
    5
    디스크의 이미지를 다운로드하려는 폴더를 정의합니다.
    6
    선택 사항: 추가 이미지를 저장할 리포지토리를 정의합니다. 이러한 이미지는 다운로드되어 디스크에 사전 캐시됩니다.
    7
    DU 구성에 포함된 Operator 사전 캐싱을 지정합니다.
    8
    --skip-imageset 인수를 사용하면 사용자 지정된 ImageSetConfiguration CR에서 지정한 이미지를 다운로드할 수 있습니다.
  6. imageSetConfiguration CR을 생성하지 않고 이미지를 다운로드합니다.

    # podman run -v /mnt:/mnt -v /root/.docker:/root/.docker --privileged --rm quay.io/openshift-kni/telco-ran-tools:latest -- factory-precaching-cli download -r 4.12.0 \
    --acm-version 2.6.3 --mce-version 2.1.4 -f /mnt \
    --img quay.io/custom/repository \
    --du-profile -s \
    --skip-imageset

추가 리소스

17.14.5. ZTP의 사전 캐싱 이미지

site Config 매니페스트는 OpenShift 클러스터를 설치 및 구성하는 방법을 정의합니다. ZTP 프로비저닝 워크플로에서 loading-precaching-cli 툴에는 site Config 매니페스트의 다음과 같은 추가 필드가 필요합니다.

  • clusters.ignitionConfigOverride
  • nodes.installerArgs
  • nodes.ignitionConfigOverride

추가 필드가 있는 siteConfig 예

apiVersion: ran.openshift.io/v1
kind: SiteConfig
metadata:
  name: "example-5g-lab"
  namespace: "example-5g-lab"
spec:
  baseDomain: "example.domain.redhat.com"
  pullSecretRef:
    name: "assisted-deployment-pull-secret"
  clusterImageSetNameRef: "img4.9.10-x86-64-appsub"
  sshPublicKey: "ssh-rsa ..."
  clusters:
  - clusterName: "sno-worker-0"
    clusterLabels:
      group-du-sno: ""
      common-411: true
      sites : "example-5g-lab"
      vendor: "OpenShift"
    clusterNetwork:
      - cidr: 10.128.0.0/14
        hostPrefix: 23
    machineNetwork:
      - cidr: 10.19.32.192/26
    serviceNetwork:
      - 172.30.0.0/16
    networkType: "OVNKubernetes"
    additionalNTPSources:
      - clock.corp.redhat.com
    ignitionConfigOverride: '{"ignition":{"version":"3.1.0"},"systemd":{"units":[{"name":"var-mnt.mount","enabled":true,"contents":"[Unit]\nDescription=Mount partition with artifacts\nBefore=precache-images.service\nBindsTo=precache-images.service\nStopWhenUnneeded=true\n\n[Mount]\nWhat=/dev/disk/by-partlabel/data\nWhere=/var/mnt\nType=xfs\nTimeoutSec=30\n\n[Install]\nRequiredBy=precache-images.service"},{"name":"precache-images.service","enabled":true,"contents":"[Unit]\nDescription=Extracts the precached images in discovery stage\nAfter=var-mnt.mount\nBefore=agent.service\n\n[Service]\nType=oneshot\nUser=root\nWorkingDirectory=/var/mnt\nExecStart=bash /usr/local/bin/extract-ai.sh\n#TimeoutStopSec=30\n\n[Install]\nWantedBy=multi-user.target default.target\nWantedBy=agent.service"}]},"storage":{"files":[{"overwrite":true,"path":"/usr/local/bin/extract-ai.sh","mode":755,"user":{"name":"root"},"contents":{"source":"data:,%23%21%2Fbin%2Fbash%0A%0AFOLDER%3D%22%24%7BFOLDER%3A-%24%28pwd%29%7D%22%0AOCP_RELEASE_LIST%3D%22%24%7BOCP_RELEASE_LIST%3A-ai-images.txt%7D%22%0ABINARY_FOLDER%3D%2Fvar%2Fmnt%0A%0Apushd%20%24FOLDER%0A%0Atotal_copies%3D%24%28sort%20-u%20%24BINARY_FOLDER%2F%24OCP_RELEASE_LIST%20%7C%20wc%20-l%29%20%20%23%20Required%20to%20keep%20track%20of%20the%20pull%20task%20vs%20total%0Acurrent_copy%3D1%0A%0Awhile%20read%20-r%20line%3B%0Ado%0A%20%20uri%3D%24%28echo%20%22%24line%22%20%7C%20awk%20%27%7Bprint%241%7D%27%29%0A%20%20%23tar%3D%24%28echo%20%22%24line%22%20%7C%20awk%20%27%7Bprint%242%7D%27%29%0A%20%20podman%20image%20exists%20%24uri%0A%20%20if%20%5B%5B%20%24%3F%20-eq%200%20%5D%5D%3B%20then%0A%20%20%20%20%20%20echo%20%22Skipping%20existing%20image%20%24tar%22%0A%20%20%20%20%20%20echo%20%22Copying%20%24%7Buri%7D%20%5B%24%7Bcurrent_copy%7D%2F%24%7Btotal_copies%7D%5D%22%0A%20%20%20%20%20%20current_copy%3D%24%28%28current_copy%20%2B%201%29%29%0A%20%20%20%20%20%20continue%0A%20%20fi%0A%20%20tar%3D%24%28echo%20%22%24uri%22%20%7C%20%20rev%20%7C%20cut%20-d%20%22%2F%22%20-f1%20%7C%20rev%20%7C%20tr%20%22%3A%22%20%22_%22%29%0A%20%20tar%20zxvf%20%24%7Btar%7D.tgz%0A%20%20if%20%5B%20%24%3F%20-eq%200%20%5D%3B%20then%20rm%20-f%20%24%7Btar%7D.gz%3B%20fi%0A%20%20echo%20%22Copying%20%24%7Buri%7D%20%5B%24%7Bcurrent_copy%7D%2F%24%7Btotal_copies%7D%5D%22%0A%20%20skopeo%20copy%20dir%3A%2F%2F%24%28pwd%29%2F%24%7Btar%7D%20containers-storage%3A%24%7Buri%7D%0A%20%20if%20%5B%20%24%3F%20-eq%200%20%5D%3B%20then%20rm%20-rf%20%24%7Btar%7D%3B%20current_copy%3D%24%28%28current_copy%20%2B%201%29%29%3B%20fi%0Adone%20%3C%20%24%7BBINARY_FOLDER%7D%2F%24%7BOCP_RELEASE_LIST%7D%0A%0A%23%20workaround%20while%20https%3A%2F%2Fgithub.com%2Fopenshift%2Fassisted-service%2Fpull%2F3546%0A%23cp%20%2Fvar%2Fmnt%2Fmodified-rhcos-4.10.3-x86_64-metal.x86_64.raw.gz%20%2Fvar%2Ftmp%2F.%0A%0Aexit%200"}},{"overwrite":true,"path":"/usr/local/bin/agent-fix-bz1964591","mode":755,"user":{"name":"root"},"contents":{"source":"data:,%23%21%2Fusr%2Fbin%2Fsh%0A%0A%23%20This%20script%20is%20a%20workaround%20for%20bugzilla%201964591%20where%20symlinks%20inside%20%2Fvar%2Flib%2Fcontainers%2F%20get%0A%23%20corrupted%20under%20some%20circumstances.%0A%23%0A%23%20In%20order%20to%20let%20agent.service%20start%20correctly%20we%20are%20checking%20here%20whether%20the%20requested%0A%23%20container%20image%20exists%20and%20in%20case%20%22podman%20images%22%20returns%20an%20error%20we%20try%20removing%20the%20faulty%0A%23%20image.%0A%23%0A%23%20In%20such%20a%20scenario%20agent.service%20will%20detect%20the%20image%20is%20not%20present%20and%20pull%20it%20again.%20In%20case%0A%23%20the%20image%20is%20present%20and%20can%20be%20detected%20correctly%2C%20no%20any%20action%20is%20required.%0A%0AIMAGE%3D%24%28echo%20%241%20%7C%20sed%20%27s%2F%3A.%2A%2F%2F%27%29%0Apodman%20image%20exists%20%24IMAGE%20%7C%7C%20echo%20%22already%20loaded%22%20%7C%7C%20echo%20%22need%20to%20be%20pulled%22%0A%23podman%20images%20%7C%20grep%20%24IMAGE%20%7C%7C%20podman%20rmi%20--force%20%241%20%7C%7C%20true"}}]}}'
    nodes:
      - hostName: "snonode.sno-worker-0.example.domain.redhat.com"
        role: "master"
        bmcAddress: "idrac-virtualmedia+https://10.19.28.53/redfish/v1/Systems/System.Embedded.1"
        bmcCredentialsName:
          name: "worker0-bmh-secret"
        bootMACAddress: "e4:43:4b:bd:90:46"
        bootMode: "UEFI"
        rootDeviceHints:
          deviceName: /dev/nvme0n1
        cpuset: "0-1,40-41"
        installerArgs: '["--save-partlabel", "data"]'
        ignitionConfigOverride: '{"ignition":{"version":"3.1.0"},"systemd":{"units":[{"name":"var-mnt.mount","enabled":true,"contents":"[Unit]\nDescription=Mount partition with artifacts\nBefore=precache-ocp-images.service\nBindsTo=precache-ocp-images.service\nStopWhenUnneeded=true\n\n[Mount]\nWhat=/dev/disk/by-partlabel/data\nWhere=/var/mnt\nType=xfs\nTimeoutSec=30\n\n[Install]\nRequiredBy=precache-ocp-images.service"},{"name":"precache-ocp-images.service","enabled":true,"contents":"[Unit]\nDescription=Extracts the precached OCP images into containers storage\nAfter=var-mnt.mount\nBefore=machine-config-daemon-pull.service nodeip-configuration.service\n\n[Service]\nType=oneshot\nUser=root\nWorkingDirectory=/var/mnt\nExecStart=bash /usr/local/bin/extract-ocp.sh\nTimeoutStopSec=60\n\n[Install]\nWantedBy=multi-user.target"}]},"storage":{"files":[{"overwrite":true,"path":"/usr/local/bin/extract-ocp.sh","mode":755,"user":{"name":"root"},"contents":{"source":"data:,%23%21%2Fbin%2Fbash%0A%0AFOLDER%3D%22%24%7BFOLDER%3A-%24%28pwd%29%7D%22%0AOCP_RELEASE_LIST%3D%22%24%7BOCP_RELEASE_LIST%3A-ocp-images.txt%7D%22%0ABINARY_FOLDER%3D%2Fvar%2Fmnt%0A%0Apushd%20%24FOLDER%0A%0Atotal_copies%3D%24%28sort%20-u%20%24BINARY_FOLDER%2F%24OCP_RELEASE_LIST%20%7C%20wc%20-l%29%20%20%23%20Required%20to%20keep%20track%20of%20the%20pull%20task%20vs%20total%0Acurrent_copy%3D1%0A%0Awhile%20read%20-r%20line%3B%0Ado%0A%20%20uri%3D%24%28echo%20%22%24line%22%20%7C%20awk%20%27%7Bprint%241%7D%27%29%0A%20%20%23tar%3D%24%28echo%20%22%24line%22%20%7C%20awk%20%27%7Bprint%242%7D%27%29%0A%20%20podman%20image%20exists%20%24uri%0A%20%20if%20%5B%5B%20%24%3F%20-eq%200%20%5D%5D%3B%20then%0A%20%20%20%20%20%20echo%20%22Skipping%20existing%20image%20%24tar%22%0A%20%20%20%20%20%20echo%20%22Copying%20%24%7Buri%7D%20%5B%24%7Bcurrent_copy%7D%2F%24%7Btotal_copies%7D%5D%22%0A%20%20%20%20%20%20current_copy%3D%24%28%28current_copy%20%2B%201%29%29%0A%20%20%20%20%20%20continue%0A%20%20fi%0A%20%20tar%3D%24%28echo%20%22%24uri%22%20%7C%20%20rev%20%7C%20cut%20-d%20%22%2F%22%20-f1%20%7C%20rev%20%7C%20tr%20%22%3A%22%20%22_%22%29%0A%20%20tar%20zxvf%20%24%7Btar%7D.tgz%0A%20%20if%20%5B%20%24%3F%20-eq%200%20%5D%3B%20then%20rm%20-f%20%24%7Btar%7D.gz%3B%20fi%0A%20%20echo%20%22Copying%20%24%7Buri%7D%20%5B%24%7Bcurrent_copy%7D%2F%24%7Btotal_copies%7D%5D%22%0A%20%20skopeo%20copy%20dir%3A%2F%2F%24%28pwd%29%2F%24%7Btar%7D%20containers-storage%3A%24%7Buri%7D%0A%20%20if%20%5B%20%24%3F%20-eq%200%20%5D%3B%20then%20rm%20-rf%20%24%7Btar%7D%3B%20current_copy%3D%24%28%28current_copy%20%2B%201%29%29%3B%20fi%0Adone%20%3C%20%24%7BBINARY_FOLDER%7D%2F%24%7BOCP_RELEASE_LIST%7D%0A%0Aexit%200"}}]}}'
        nodeNetwork:
          config:
            interfaces:
              - name: ens1f0
                type: ethernet
                state: up
                macAddress: "AA:BB:CC:11:22:33"
                ipv4:
                  enabled: true
                  dhcp: true
                ipv6:
                  enabled: false
          interfaces:
            - name: "ens1f0"
              macAddress: "AA:BB:CC:11:22:33"

17.14.5.1. cluster.ignitionConfigOverride 필드 이해

cluster .ignitionConfigOverride 필드는 ZTP 검색 단계에서 Ignition 형식의 설정을 추가합니다. 구성에는 가상 미디어에 마운트된 ISO에 systemd 서비스가 포함됩니다. 이렇게 하면 스크립트가 검색 RHCOS 라이브 ISO의 일부이며, Assisted Installer(AI) 이미지를 로드하는 데 사용할 수 있습니다.

systemd 서비스
systemd 서비스는 var-mnt.mountprecache-images.services 입니다. precache-images.servicevar-mnt.mount 단위로 /var/mnt 에 마운트할 디스크 파티션에 따라 다릅니다. 서비스는 extract-ai.sh 라는 스크립트를 호출합니다.
extract-ai.sh
extract-ai.sh 스크립트는 디스크 파티션에서 로컬 컨테이너 스토리지로 필요한 이미지를 추출하고 로드합니다. 스크립트가 완료되면 이미지를 로컬에서 사용할 수 있습니다.
agent-fix-bz1964591
agent-fix-bz1964591 스크립트는 AI 문제에 대한 해결 방법입니다. AI가 이미지를 제거하지 못하도록 agent.service 가 레지스트리에서 이미지를 다시 가져오도록 하려면 agent-fix-bz1964591 스크립트에서 요청된 컨테이너 이미지가 존재하는지 확인합니다.

17.14.5.2. nodes.installerArgs 필드 이해

nodes.installerArgs 필드를 사용하면 coreos-installer 유틸리티에서 RHCOS 라이브 ISO를 디스크에 쓰는 방법을 구성할 수 있습니다. OpenShift Container Platform 설치 단계에서 데이터 파티션에 저장된 아티팩트가 필요하므로 데이터로 레이블이 지정된 디스크 파티션을 저장하도록 지정해야 합니다.

추가 매개변수는 라이브 RHCOS를 디스크에 쓰는 coreos-installer 유틸리티로 직접 전달됩니다. 다음 재부팅 시 운영 체제는 디스크에서 시작됩니다.

coreos-installer 유틸리티에 여러 옵션을 전달할 수 있습니다.

OPTIONS:
...
    -u, --image-url <URL>
            Manually specify the image URL

    -f, --image-file <path>
            Manually specify a local image file

    -i, --ignition-file <path>
            Embed an Ignition config from a file

    -I, --ignition-url <URL>
            Embed an Ignition config from a URL
...
        --save-partlabel <lx>...
            Save partitions with this label glob

        --save-partindex <id>...
            Save partitions with this number or range
...
        --insecure-ignition
            Allow Ignition URL without HTTPS or hash

17.14.5.3. nodes.ignitionConfigOverride 필드 이해

cluster .ignitionConfigOverride 와 유사하게 nodes.ignitionConfigOverride 필드를 사용하면 coreos-installer 유틸리티에 Ignition 형식의 구성을 추가할 수 있지만 OpenShift Container Platform 설치 단계에서 RHCOS가 디스크에 작성되면 ZTP 검색 ISO에 포함된 추가 구성을 더 이상 사용할 수 없습니다. 검색 단계에서 추가 구성이 라이브 OS의 메모리에 저장됩니다.

참고

이 단계에서 추출 및 로드된 컨테이너 이미지 수는 검색 단계보다 많습니다. OpenShift Container Platform 릴리스 및 Day-2 Operator 설치 여부에 따라 설치 시간이 다를 수 있습니다.

설치 단계에서 var-mnt.mountprecache-ocp.services systemd 서비스가 사용됩니다.

precache-ocp.service

precache-ocp.servicevar-mnt.mount 단위로 /var/mnt 에 마운트할 디스크 파티션에 따라 다릅니다. precache-ocp.service 서비스는 extract-ocp.sh 이라는 스크립트를 호출합니다.

중요

OpenShift Container Platform 설치 전에 모든 이미지를 추출하려면 machine-config-daemon-pull.servicenodeip-configuration.service 서비스를 실행하기 전에 precache-ocp.service 를 실행해야 합니다.

extract-ocp.sh
extract-ocp.sh 스크립트는 디스크 파티션에서 로컬 컨테이너 스토리지로 필요한 이미지를 추출하고 로드합니다. 스크립트가 완료되면 이미지를 로컬에서 사용할 수 있습니다.

site Config 및 선택적 PolicyGenTemplates 사용자 정의 리소스(CR)를 Git 리포지토리에 업로드할 때 Argo CD가 모니터링되는 Git 리포지토리에, hub 클러스터와 CR을 동기화하여 ZTP 워크플로를 시작할 수 있습니다.

17.14.6. 문제 해결

17.14.6.1. 렌더링된 카탈로그가 잘못됨

로컬 또는 연결이 끊긴 레지스트리를 사용하여 이미지를 다운로드하면 렌더링된 카탈로그가 유효하지 않은 것으로 표시될 수 있습니다. 즉, 콘텐츠를 가져올 새 레지스트리의 인증서가 누락되어 있습니다.

참고

history-precaching-cli 툴 이미지는 UBI RHEL 이미지를 기반으로 빌드됩니다. 인증서 경로와 위치는 RHCOS에서 동일합니다.

오류 예

Generating list of pre-cached artifacts...
error: unable to run command oc-mirror -c /mnt/imageset.yaml file:///tmp/fp-cli-3218002584/mirror --ignore-history --dry-run: Creating directory: /tmp/fp-cli-3218002584/mirror/oc-mirror-workspace/src/publish
Creating directory: /tmp/fp-cli-3218002584/mirror/oc-mirror-workspace/src/v2
Creating directory: /tmp/fp-cli-3218002584/mirror/oc-mirror-workspace/src/charts
Creating directory: /tmp/fp-cli-3218002584/mirror/oc-mirror-workspace/src/release-signatures
backend is not configured in /mnt/imageset.yaml, using stateless mode
backend is not configured in /mnt/imageset.yaml, using stateless mode
No metadata detected, creating new workspace
level=info msg=trying next host error=failed to do request: Head "https://eko4.cloud.lab.eng.bos.redhat.com:8443/v2/redhat/redhat-operator-index/manifests/v4.11": x509: certificate signed by unknown authority host=eko4.cloud.lab.eng.bos.redhat.com:8443

The rendered catalog is invalid.

Run "oc-mirror list operators --catalog CATALOG-NAME --package PACKAGE-NAME" for more information.

error: error rendering new refs: render reference "eko4.cloud.lab.eng.bos.redhat.com:8443/redhat/redhat-operator-index:v4.11": error resolving name : failed to do request: Head "https://eko4.cloud.lab.eng.bos.redhat.com:8443/v2/redhat/redhat-operator-index/manifests/v4.11": x509: certificate signed by unknown authority

절차

  1. 레지스트리 인증서를 서버에 복사합니다.

    # cp /tmp/eko4-ca.crt /etc/pki/ca-trust/source/anchors/.
  2. 인증서 신뢰 저장소를 업데이트합니다.

    # update-ca-trust
  3. 호스트 /etc/pki 폴더를 production-cli 이미지에 마운트합니다.

    # podman run -v /mnt:/mnt -v /root/.docker:/root/.docker -v /etc/pki:/etc/pki --privileged -it --rm quay.io/openshift-kni/telco-ran-tools:latest -- \
    factory-precaching-cli download -r 4.11.5 --acm-version 2.5.4 \
       --mce-version 2.0.4 -f /mnt \--img quay.io/custom/repository
       --du-profile -s --skip-imageset