4.8.2.3. 패키지 매니페스트 형식 카탈로그 이미지 업데이트
클러스터 관리자가 사용자 정의 Operator 카탈로그 이미지를 사용하도록 OperatorHub를 구성하면 관리자는 Red Hat에서 제공하는 앱 레지스트리 카탈로그에 수행된 업데이트를 캡처하여 최신 Operator에서 OpenShift Container Platform 클러스터를 최신 상태로 유지할 수 있습니다. 이러한 작업은 새 Operator 카탈로그 이미지를 빌드하고 내보낸 다음 CatalogSource
오브젝트의 기존 spec.image
매개변수를 새 이미지 다이제스트로 교체하여 수행됩니다.
이 예제의 절차에서는 OperatorHub에 사용할 사용자 정의 redhat-operators
카탈로그 이미지를 이미 구성한 것으로 가정합니다.
Windows 및 macOS 버전은 oc
adm catalog build 명령을 제공하지 않으므로 이 프로세스에는 Linux 버전의 oc
클라이언트만 사용할 수 있습니다.
사전 요구 사항
- 무제한 네트워크 액세스가 가능한 워크스테이션
-
oc
버전 4.3.5 이상 Linux 클라이언트 -
podman
버전 1.9.3+ Docker v2-2를 지원하는 미러 레지스트리에 액세스
중요OpenShift Container Platform 클러스터의 내부 레지스트리는 미러링 프로세스 중에 필요한 태그 없이 푸시를 지원하지 않으므로 대상 레지스트리로 사용할 수 없습니다.
- 사용자 정의 카탈로그 이미지를 사용하도록 OperatorHub 구성
프라이빗 레지스트리로 작업 중인 경우
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:v2 \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
- 카탈로그 이미지 이름을 지정하고 태그를 포함합니다. 예를 들면 업데이트된 카탈로그이므로
v2
입니다. - 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:v2
카탈로그의 콘텐츠를 대상 레지스트리에 미러링합니다. 다음의
oc adm catalog mirror
명령은 사용자 정의 Operator 카탈로그 이미지의 콘텐츠를 추출하여 미러링에 필요한 매니페스트를 생성하고 레지스트리에 이미지를 미러링합니다.$ oc adm catalog mirror \ <registry_host_name>:<port>/olm/redhat-operators:v2 \ 1 <registry_host_name>:<port> \ 2 [-a ${REG_CREDS}] \ 3 [--insecure] \ 4 [--index-filter-by-os='<platform>/<arch>'] 5
- 1
- 새 Operator 카탈로그 이미지를 지정합니다.
- 2
- 대상 레지스트리의 정규화된 도메인 이름(FQDN)을 지정합니다.
- 3
- 선택 사항: 필요한 경우 레지스트리 자격 증명 파일의 위치를 지정합니다.
- 4
- 선택 사항: 대상 레지스트리에 대한 신뢰성을 구성하지 않으려면
--insecure
플래그를 추가합니다. - 5
- 선택 사항: 여러 변형을 사용할 수 있을 때 선택할 카탈로그 이미지의 플랫폼 및 아키텍처를 지정합니다. 이미지는
'<platform>/<arch>[/<variant>]’
로 전달됩니다. 이는 카탈로그 이미지에서 참조하는 이미지에는 적용되지 않습니다. 유효한 값은linux/amd64
,linux/ppc64le
및linux/s390x
입니다.
새로 생성한 매니페스트를 적용합니다.
$ oc replace -f ./manifests-redhat-operators-<random_number>
중요imageContentSourcePolicy.yaml
매니페스트를 적용하지 않아도 될 수 있습니다. 변경이 필요한지 확인하려면 파일의diff
를 완료합니다.카탈로그 이미지를 참조하는
CatalogSource
오브젝트를 업데이트합니다.이
CatalogSource
오브젝트에 대한 원본catalogsource.yaml
파일이 있는 경우 다음을 수행합니다.catalogsource.yaml
파일을 편집하여spec.image
필드의 새 카탈로그 이미지를 참조합니다.apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: my-operator-catalog namespace: openshift-marketplace spec: sourceType: grpc image: <registry_host_name>:<port>/olm/redhat-operators:v2 1 displayName: My Operator Catalog publisher: grpc
- 1
- 새 Operator 카탈로그 이미지를 지정합니다.
업데이트된 파일을 사용하여
CatalogSource
오브젝트를 교체합니다.$ oc replace -f catalogsource.yaml
또는 다음 명령을 사용하여 카탈로그 소스를 편집하고
spec.image
매개변수에서 새 카탈로그 이미지를 참조합니다.$ oc edit catalogsource <catalog_source_name> -n openshift-marketplace
업데이트된 Operator는 OpenShift Container Platform 클러스터의 OperatorHub 페이지에서 사용할 수 있어야 합니다.
추가 리소스