7.4. OLM 1.0에서 일반 번들 관리 (기술 프리뷰)
OLM(Operator Lifecycle Manager) 1.0에서 일반 번들은 YAML 형식의 임의의 Kubernetes 매니페스트의 정적 컬렉션입니다. olm.bundle
스키마 오브젝트의 experimental olm.bundle.mediatype
속성은 일반 번들(plain+v0
)과 일반(registry+v1
) 번들과 다릅니다.
OLM 1.0은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
클러스터 관리자는 다음 절차를 완료하여 일반 번들 이미지가 포함된 파일 기반 카탈로그를 빌드하고 게시할 수 있습니다.
- 일반 번들 이미지를 빌드합니다.
- 파일 기반 카탈로그를 생성합니다.
- 파일 기반 카탈로그에 일반 번들 이미지를 추가합니다.
- 카탈로그를 이미지로 빌드합니다.
- 카탈로그 이미지를 게시합니다.
추가 리소스
7.4.1. 사전 요구 사항
cluster-admin
권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스참고OpenShift Container Platform 4.15의 경우 OLM 1.0에 대한 문서화된 절차는 CLI 기반 전용입니다. 또는 관리자는 YAML 가져오기 및 검색 페이지와 같은 일반 방법을 사용하여 웹 콘솔에서 관련 오브젝트를 생성하고 볼 수 있습니다. 그러나 기존 OperatorHub 및 설치된 Operator 페이지에는 OLM 1.0 구성 요소가 표시되지 않습니다.
클러스터에서
TechPreviewNoUpgrade
기능 세트 활성화주의TechPreviewNoUpgrade
기능 세트를 활성화하면 취소할 수 없으며 마이너 버전 업데이트가 허용되지 않습니다. 이러한 기능 세트는 프로덕션 클러스터에서는 권장되지 않습니다.-
워크스테이션에 설치된 OpenShift CLI(
oc
) -
워크스테이션에 설치된
opm
CLI - 워크스테이션에 Docker 또는 Podman이 설치되어 있어야 합니다.
- Quay와 같은 컨테이너 레지스트리에 액세스 푸시
다음 구조와 유사한 프로젝트의 루트에 있는 플랫 디렉터리에 있는 번들에 대한 Kubernetes 매니페스트입니다.
디렉터리 구조의 예
manifests ├── namespace.yaml ├── service_account.yaml ├── cluster_role.yaml ├── cluster_role_binding.yaml └── deployment.yaml
추가 리소스
7.4.2. 이미지 소스에서 일반 번들 이미지 빌드
Operator 컨트롤러는 현재 일반 번들 이미지에서만 생성된 일반 번들 설치를 지원합니다.
프로세스
프로젝트 루트에서 번들 이미지를 빌드할 수 있는 Dockerfile을 생성합니다.
plainbundle.Dockerfile
의 예FROM scratch 1 ADD manifests /manifests
- 1
FROM scratch
지시문을 사용하여 이미지 크기를 줄입니다. 번들 이미지에 다른 파일 또는 디렉터리는 필요하지 않습니다.
다음 예와 유사하게 기본 빌드 툴을 사용하여 OCI(Open Container Initiative) 호환 이미지를 빌드합니다.
$ podman build -f plainbundle.Dockerfile -t \ quay.io/<organization_name>/<repository_name>:<image_tag> . 1
- 1
- 내보내기 액세스 권한이 있는 리포지토리를 참조하는 이미지 태그를 사용합니다.
다음 명령을 실행하여 원격 레지스트리로 이미지를 푸시합니다.
$ podman push quay.io/<organization_name>/<repository_name>:<image_tag>
7.4.3. 파일 기반 카탈로그 생성
파일 기반 카탈로그가 없는 경우 다음 단계를 수행하여 카탈로그를 초기화해야 합니다.
프로세스
다음 명령을 실행하여 카탈로그의 디렉터리를 생성합니다.
$ mkdir <catalog_dir>
이전 단계와 동일한 디렉터리 수준에서
opm generate dockerfile
명령을 실행하여 카탈로그 이미지를 빌드할 수 있는 Dockerfile을 생성합니다.$ opm generate dockerfile <catalog_dir> \ -i registry.redhat.io/openshift4/ose-operator-registry:v4.15 1
- 1
-i
플래그를 사용하여 공식 Red Hat 기본 이미지를 지정합니다. 그러지 않으면 Dockerfile에서 기본 업스트림 이미지를 사용합니다.
참고생성된 Dockerfile은 이전 단계에서 생성한 카탈로그 디렉터리와 동일한 상위 디렉터리에 있어야 합니다.
디렉터리 구조의 예
. ├── <catalog_dir> └── <catalog_dir>.Dockerfile
opm init
명령을 실행하여 카탈로그를 확장 패키지 정의로 채웁니다.$ opm init <extension_name> \ --output json \ > <catalog_dir>/index.json
이 명령은 지정된 카탈로그 구성 파일에
olm.package
선언적 구성 blob을 생성합니다.
7.4.4. 파일 기반 카탈로그에 일반 번들 추가
opm render
명령은 카탈로그에 일반 번들 추가를 지원하지 않습니다. 다음 절차에 표시된 대로 파일 기반 카탈로그에 일반 번들을 수동으로 추가해야 합니다.
프로세스
카탈로그의
index.json
또는index.yaml
파일이 다음 예와 유사한지 확인합니다.예:
<catalog_dir>/index.json
파일{ { "schema": "olm.package", "name": "<extension_name>", "defaultChannel": "" } }
olm.bundle
blob을 생성하려면 다음 예와 유사하게index.json
또는index.yaml
파일을 편집합니다.olm.bundle
blob이 있는 <catalog_dir>/index.json
파일의 예{ "schema": "olm.bundle", "name": "<extension_name>.v<version>", "package": "<extension_name>", "image": "quay.io/<organization_name>/<repository_name>:<image_tag>", "properties": [ { "type": "olm.package", "value": { "packageName": "<extension_name>", "version": "<bundle_version>" } }, { "type": "olm.bundle.mediatype", "value": "plain+v0" } ] }
olm.channel
blob을 생성하려면 다음 예제와 유사하게index.json
또는index.yaml
파일을 편집합니다.olm.channel
blob이 있는 <catalog_dir>/index.json
파일의 예{ "schema": "olm.channel", "name": "<desired_channel_name>", "package": "<extension_name>", "entries": [ { "name": "<extension_name>.v<version>" } ] }
검증
index.json
또는index.yaml
파일을 열고 다음 예와 유사한지 확인합니다.Example
<catalog_dir>/index.json
file{ "schema": "olm.package", "name": "example-extension", "defaultChannel": "preview" } { "schema": "olm.bundle", "name": "example-extension.v0.0.1", "package": "example-extension", "image": "quay.io/example-org/example-extension-bundle:v0.0.1", "properties": [ { "type": "olm.package", "value": { "packageName": "example-extension", "version": "0.0.1" } }, { "type": "olm.bundle.mediatype", "value": "plain+v0" } ] } { "schema": "olm.channel", "name": "preview", "package": "example-extension", "entries": [ { "name": "example-extension.v0.0.1" } ] }
다음 명령을 실행하여 카탈로그를 확인합니다.
$ opm validate <catalog_dir>
7.4.5. 파일 기반 카탈로그 빌드 및 게시
프로세스
다음 명령을 실행하여 파일 기반 카탈로그를 이미지로 빌드합니다.
$ podman build -f <catalog_dir>.Dockerfile -t \ quay.io/<organization_name>/<repository_name>:<image_tag> .
다음 명령을 실행하여 카탈로그 이미지를 내보냅니다.
$ podman push quay.io/<organization_name>/<repository_name>:<image_tag>