4.5. 카탈로그 만들기
카탈로그 유지 관리자는 OpenShift Container Platform의 Operator Lifecycle Manager(OLM) v1에서 사용할 파일 기반 카탈로그 형식으로 새 카탈로그를 만들 수 있습니다.
4.5.1. 파일 기반 카탈로그 이미지 생성 링크 복사링크가 클립보드에 복사되었습니다!
opm CLI를 사용하면 더 이상 사용되지 않는 SQLite 데이터베이스 형식을 대체하는 일반 텍스트 파일 기반 카탈로그 형식(JSON 또는 YAML)을 사용하는 카탈로그 이미지를 만들 수 있습니다.
사전 요구 사항
-
opmCLI를 설치했습니다. -
podman버전 1.9.3+이 있습니다. - 번들 이미지가 빌드되어 Docker v2-2 를 지원하는 레지스트리로 푸시됩니다.
프로세스
카탈로그를 초기화합니다.
다음 명령을 실행하여 카탈로그에 대한 디렉토리를 만듭니다.
$ mkdir <catalog_dir>opm generate dockerfile명령을 실행하여 카탈로그 이미지를 빌드할 수 있는 Dockerfile을 생성합니다.$ opm generate dockerfile <catalog_dir> \ -i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4.191 - 1
-i플래그를 사용하여 공식 Red Hat 기본 이미지를 지정하세요. 그렇지 않으면 Dockerfile은 기본 업스트림 이미지를 사용합니다.
Dockerfile은 이전 단계에서 생성한 카탈로그 디렉터리와 동일한 상위 디렉터리에 있어야 합니다.
디렉터리 구조의 예
.1 ├── <catalog_dir>2 └── <catalog_dir>.Dockerfile3 opm init명령을 실행하여 카탈로그를 Operator의 패키지 정의로 채웁니다.$ opm init <operator_name> \1 --default-channel=preview \2 --description=./README.md \3 --icon=./operator-icon.svg \4 --output yaml \5 > <catalog_dir>/index.yaml6 이 명령은 지정된 카탈로그 구성 파일에
olm.package선언적 구성 blob을 생성합니다.
opm render명령을 실행하여 카탈로그에 번들을 추가합니다.$ opm render <registry>/<namespace>/<bundle_image_name>:<tag> \1 --output=yaml \ >> <catalog_dir>/index.yaml2 참고채널에는 하나 이상의 번들이 포함되어야 합니다.
번들에 채널 항목을 추가합니다. 예를 들어, 다음 예를 귀하의 사양에 맞게 수정하고
<catalog_dir>/index.yaml파일에 추가하세요.채널 항목 예
--- schema: olm.channel package: <operator_name> name: preview entries: - name: <operator_name>.v0.1.01 - 1
<operator_name>뒤의 마침표(.)를 버전v앞에 포함해야 합니다. 그렇지 않으면 해당 항목은opm validate명령을 통과하지 못합니다.
파일 기반 카탈로그를 확인합니다.
카탈로그 디렉터리에 대해
opm validate명령을 실행합니다.$ opm validate <catalog_dir>오류 코드가
0인지 확인합니다.$ echo $?출력 예
0
podman build명령을 실행하여 카탈로그 이미지를 빌드합니다.$ podman build . \ -f <catalog_dir>.Dockerfile \ -t <registry>/<namespace>/<catalog_image_name>:<tag>카탈로그 이미지를 레지스트리로 푸시합니다.
필요한 경우
podman login명령을 실행하여 대상 레지스트리에 인증합니다.$ podman login <registry>podman push명령을 실행하여 카탈로그 이미지를 푸시합니다.$ podman push <registry>/<namespace>/<catalog_image_name>:<tag>
4.5.2. 파일 기반 카탈로그 이미지 업데이트 또는 필터링 링크 복사링크가 클립보드에 복사되었습니다!
opm CLI를 사용하면 파일 기반 카탈로그 형식을 사용하는 카탈로그 이미지를 업데이트하거나 필터링할 수 있습니다. 기존 카탈로그 이미지의 내용을 추출하면 필요에 따라 카탈로그를 수정할 수 있습니다. 예:
- 패키지 추가
- 패키지 제거
- 기존 패키지 항목 업데이트
- 패키지, 채널 및 번들별 사용 중단 메시지 세부 정보
그런 다음 카탈로그의 업데이트된 버전으로 이미지를 다시 빌드할 수 있습니다.
또는 미러 레지스트리에 이미 카탈로그 이미지가 있는 경우 oc-mirror CLI 플러그인을 사용하여 해당 카탈로그 이미지의 업데이트된 소스 버전에서 제거된 모든 이미지를 자동으로 정리한 다음 대상 레지스트리에 미러링할 수 있습니다.
oc-mirror 플러그인과 이 사용 사례에 대한 자세한 내용은 "미러 레지스트리 콘텐츠를 최신 상태로 유지하기" 섹션과 특히 "oc-mirror 플러그인을 사용하여 연결이 끊긴 설치에 대한 이미지 미러링"의 "이미지 정리" 하위 섹션을 참조하세요.
사전 요구 사항
귀하의 워크스테이션에는 다음이 있습니다.
-
opmCLI. -
podman버전 1.9.3+. - 파일 기반 카탈로그 이미지.
이 카탈로그와 관련된 카탈로그 디렉토리 구조가 최근 귀하의 워크스테이션에서 초기화되었습니다.
초기화된 카탈로그 디렉터리가 없는 경우 디렉터리를 생성하고 Dockerfile을 생성합니다. 자세한 내용은 "파일 기반 카탈로그 이미지 만들기" 절차의 "카탈로그 초기화" 단계를 참조하세요.
-
프로세스
카탈로그 이미지의 내용을 YAML 형식으로 추출하여 카탈로그 디렉토리의
index.yaml파일에 저장합니다.$ opm render <registry>/<namespace>/<catalog_image_name>:<tag> \ -o yaml > <catalog_dir>/index.yaml참고또는
-o json플래그를 사용하여 JSON 형식으로 출력할 수 있습니다.결과
index.yaml파일의 내용을 사양에 맞게 수정하세요.중요카탈로그에 번들이 게시된 후 사용자 중 한 명이 해당 번들을 설치했다고 가정합니다. 해당 버전을 설치한 사용자가 고립되는 것을 방지하기 위해 카탈로그에 게시된 모든 번들에 현재 또는 최신 채널 헤드에 대한 업데이트 경로가 있는지 확인하세요.
- 운영자를 추가하려면 "파일 기반 카탈로그 이미지 만들기" 절차에서 패키지, 번들 및 채널 항목을 만드는 단계를 따르세요.
운영자를 제거하려면 패키지와 관련된
olm.package,olm.channel,olm.bundle블롭 세트를 삭제합니다. 다음 예에서는 카탈로그에서example-operator패키지를 제거하기 위해 삭제해야 하는 세트를 보여줍니다.예 4.9. 제거된 항목의 예
--- defaultChannel: release-2.7 icon: base64data: <base64_string> mediatype: image/svg+xml name: example-operator schema: olm.package --- entries: - name: example-operator.v2.7.0 skipRange: '>=2.6.0 <2.7.0' - name: example-operator.v2.7.1 replaces: example-operator.v2.7.0 skipRange: '>=2.6.0 <2.7.1' - name: example-operator.v2.7.2 replaces: example-operator.v2.7.1 skipRange: '>=2.6.0 <2.7.2' - name: example-operator.v2.7.3 replaces: example-operator.v2.7.2 skipRange: '>=2.6.0 <2.7.3' - name: example-operator.v2.7.4 replaces: example-operator.v2.7.3 skipRange: '>=2.6.0 <2.7.4' name: release-2.7 package: example-operator schema: olm.channel --- image: example.com/example-inc/example-operator-bundle@sha256:<digest> name: example-operator.v2.7.0 package: example-operator properties: - type: olm.gvk value: group: example-group.example.io kind: MyObject version: v1alpha1 - type: olm.gvk value: group: example-group.example.io kind: MyOtherObject version: v1beta1 - type: olm.package value: packageName: example-operator version: 2.7.0 - type: olm.bundle.object value: data: <base64_string> - type: olm.bundle.object value: data: <base64_string> relatedImages: - image: example.com/example-inc/example-related-image@sha256:<digest> name: example-related-image schema: olm.bundle ----
Operator에 대한 사용 중단 메시지를 추가하거나 업데이트하려면 패키지의
index.yaml파일과 같은 디렉토리에deprecations.yaml파일이 있는지 확인하세요.deprecations.yaml파일 형식에 대한 자세한 내용은 "olm.deprecations 스키마"를 참조하세요.
- 변경 사항을 저장하십시오.
카탈로그 검증:
$ opm validate <catalog_dir>카탈로그를 다시 작성하세요:
$ podman build . \ -f <catalog_dir>.Dockerfile \ -t <registry>/<namespace>/<catalog_image_name>:<tag>업데이트된 카탈로그 이미지를 레지스트리에 푸시합니다.
$ podman push <registry>/<namespace>/<catalog_image_name>:<tag>
검증
-
웹 콘솔에서 관리
클러스터 설정 구성 페이지에 있는 OperatorHub 구성 리소스로 이동합니다. 업데이트된 카탈로그 이미지에 대한 풀 사양을 사용하도록 카탈로그 소스를 추가하거나 기존 카탈로그 소스를 업데이트합니다.
자세한 내용은 이 섹션의 "추가 리소스"에서 "클러스터에 카탈로그 소스 추가"를 참조하세요.
-
카탈로그 소스가 준비 상태가 되면 운영자
운영자 허브 페이지로 이동하여 변경 사항이 운영자 목록에 반영되었는지 확인하세요.