4.8.2. 패키지 매니페스트 형식을 사용하는 사용자 정의 카탈로그
4.8.2.1. 패키지 매니페스트 형식 카탈로그 이미지 빌드
클러스터 관리자는 OLM(Operator Lifecycle Manager)에서 사용할 Package Manifest Format에 따라 사용자 정의 Operator 카탈로그 이미지를 빌드할 수 있습니다. 카탈로그 이미지는 Docker v2-2를 지원하는 컨테이너 이미지 레지스트리로 내보낼 수 있습니다. 제한된 네트워크에 있는 클러스터의 경우 이 레지스트리는 제한된 네트워크 클러스터 설치 중에 작성된 미러 레지스트리와 같이 클러스터에 네트워크 액세스 권한이 있는 레지스트리일 수 있습니다.
OpenShift Container Platform 클러스터의 내부 레지스트리는 미러링 프로세스 중에 필요한 태그 없이 푸시를 지원하지 않으므로 대상 레지스트리로 사용할 수 없습니다.
이 예제의 절차에서는 네트워크 및 인터넷에 둘 다 액세스할 수 있는 미러 레지스트리를 사용한다고 가정합니다.
Windows 및 macOS 버전은 oc
adm catalog build 명령을 제공하지 않으므로 이 프로세스에는 Linux 버전의 oc
클라이언트만 사용할 수 있습니다.
사전 요구 사항
- 무제한 네트워크 액세스가 가능한 워크스테이션
-
oc
버전 4.3.5 이상 Linux 클라이언트 -
podman
버전 1.9.3+ - Docker v2-2를 지원하는 미러 레지스트리에 액세스
프라이빗 레지스트리로 작업 중인 경우
REG_CREDS
환경 변수를 이후 단계에서 사용하기 위해 레지스트리 자격 증명의 파일 경로로 설정합니다. 예를 들어podman
CLI의 경우:$ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
quay.io 계정에서 액세스할 수 있는 비공개 네임스페이스로 작업하는 경우 Quay 인증 토큰을 설정해야 합니다. quay.io 자격 증명을 사용하여 로그인 API에 대해 요청하여
--auth-token
플래그와 함께 사용할AUTH_TOKEN
환경 변수를 설정합니다.$ AUTH_TOKEN=$(curl -sH "Content-Type: application/json" \ -XPOST https://quay.io/cnr/api/v1/users/login -d ' { "user": { "username": "'"<quay_username>"'", "password": "'"<quay_password>"'" } }' | jq -r '.token')
프로세스
무제한 네트워크 액세스가 가능한 워크스테이션에서 대상 미러 레지스트리를 사용하여 인증합니다.
$ podman login <registry_host_name>
빌드 중 기본 이미지를 가져올 수 있도록
registry.redhat.io
로 인증합니다.$ podman login registry.redhat.io
Quay.io에서
redhat-operators
카탈로그를 기반으로 카탈로그 이미지를 빌드하고 태그를 지정한 후 미러 레지스트리로 내보냅니다.$ oc adm catalog build \ --appregistry-org redhat-operators \1 --from=registry.redhat.io/openshift4/ose-operator-registry:v4.7 \2 --filter-by-os="linux/amd64" \3 --to=<registry_host_name>:<port>/olm/redhat-operators:v1 \4 [-a ${REG_CREDS}] \5 [--insecure] \6 [--auth-token "${AUTH_TOKEN}"] 7
- 1
- App Registry 인스턴스에서 가져올 조직(네임스페이스).
- 2
- 대상 OpenShift Container Platform 클러스터 주 버전 및 부 버전과 일치하는 태그를 사용하여
--from
을 Operator 레지스트리 기본 이미지로 설정합니다. - 3
- 기본 이미지에 사용할 운영 체제 및 아키텍처로
--filter-by-os
를 설정합니다. 대상 OpenShift Container Platform 클러스터와 일치해야 합니다. 유효한 값은linux/amd64
,linux/ppc64le
및linux/s390x
입니다. - 4
- 카탈로그 이미지 이름을 지정하고 태그를 포함합니다(예:
v1)
. - 5
- 선택 사항: 필요한 경우 레지스트리 자격 증명 파일의 위치를 지정합니다.
- 6
- 선택 사항: 대상 레지스트리에 대한 신뢰성을 구성하지 않으려면
--insecure
플래그를 추가합니다. - 7
- 선택 사항: 공용이 아닌 다른 애플리케이션 레지스트리 카탈로그가 사용되는 경우 Quay 인증 토큰을 지정합니다.
출력 예
INFO[0013] loading Bundles dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605 ... Pushed sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3 to example_registry:5000/olm/redhat-operators:v1
간혹 유효하지 않은 매니페스트가 Red Hat에서 제공하는 카탈로그에 실수로 포함될 때가 있습니다. 이 경우 다음과 같은 몇 가지 오류가 표시될 수 있습니다.
오류가 있는 출력 예
... INFO[0014] directory dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605 file=4.2 load=package W1114 19:42:37.876180 34665 builder.go:141] error building database: error loading package into db: fuse-camel-k-operator.v7.5.0 specifies replacement that couldn't be found Uploading ... 244.9kB/s
이러한 오류는 일반적으로 치명적이지 않으며 언급 된 Operator 패키지에 설치하려는 Operator 또는 해당 종속성이 없는 경우 무시할 수 있습니다.
추가 리소스