5.15. 번들 형식으로 패키지 매니페스트 프로젝트 마이그레이션
Operator에 대한 레거시 패키지 매니페스트 형식에 대한 지원은 OpenShift Dedicated 4.8 이상에서 제거됩니다. 패키지 매니페스트 형식을 사용하여 처음 생성된 Operator 프로젝트가 있는 경우 Operator SDK를 사용하여 프로젝트를 번들 형식으로 마이그레이션할 수 있습니다. 번들 형식은 OpenShift Dedicated 4.6부터 OLM(Operator Lifecycle Manager)의 기본 패키징 형식입니다.
Operator 프로젝트의 관련 스캐폴딩 및 테스트 툴을 포함하여 Operator SDK CLI 툴의 Red Hat 지원 버전은 더 이상 사용되지 않으며 향후 OpenShift Dedicated 릴리스에서 제거될 예정입니다. Red Hat은 현재 릴리스 라이프사이클 동안 이 기능에 대한 버그 수정 및 지원을 제공하지만 이 기능은 더 이상 개선 사항을 받지 않으며 향후 OpenShift Dedicated 릴리스에서 제거됩니다.
새 Operator 프로젝트를 생성하는 데 Red Hat 지원 버전의 Operator SDK는 권장되지 않습니다. 기존 Operator 프로젝트가 있는 Operator 작성자는 OpenShift Dedicated 4와 함께 릴리스된 Operator SDK CLI 툴 버전을 사용하여 프로젝트를 유지 관리하고 최신 버전의 OpenShift Dedicated를 대상으로 하는 Operator 릴리스를 생성할 수 있습니다.
Operator 프로젝트의 다음과 같은 관련 기본 이미지는 더 이상 사용되지 않습니다. 이러한 기본 이미지의 런타임 기능 및 구성 API는 버그 수정 및 CVE 문제를 해결하는 데 계속 지원됩니다.
- Ansible 기반 Operator 프로젝트의 기본 이미지
- Helm 기반 Operator 프로젝트의 기본 이미지
지원되지 않는 커뮤니티 유지 관리 버전에 대한 자세한 내용은 Operator SDK(Operator Framework) 를 참조하십시오.
5.15.1. 패키징 형식 마이그레이션 정보
Operator SDK pkgman-to-bundle
명령은 OLM(Operator Lifecycle Manager) 패키지 매니페스트를 번들로 마이그레이션하는 데 도움이 됩니다. 명령은 입력 패키지 매니페스트 디렉터리를 사용하고 입력 디렉터리에 있는 각 매니페스트 버전에 대한 번들을 생성합니다. 그런 다음 생성된 각 번들에 대한 번들 이미지를 빌드할 수도 있습니다.
예를 들어 패키지 매니페스트 형식의 프로젝트에 대해 다음 packagemanifests/
디렉터리를 고려하십시오.
패키지 매니페스트 형식 레이아웃 예제
packagemanifests/ └── etcd ├── 0.0.1 │ ├── etcdcluster.crd.yaml │ └── etcdoperator.clusterserviceversion.yaml ├── 0.0.2 │ ├── etcdbackup.crd.yaml │ ├── etcdcluster.crd.yaml │ ├── etcdoperator.v0.0.2.clusterserviceversion.yaml │ └── etcdrestore.crd.yaml └── etcd.package.yaml
마이그레이션을 실행하면 bundle/
디렉터리에 다음 번들이 생성됩니다.
Bundle 형식 레이아웃의 예
bundle/ ├── bundle-0.0.1 │ ├── bundle.Dockerfile │ ├── manifests │ │ ├── etcdcluster.crd.yaml │ │ ├── etcdoperator.clusterserviceversion.yaml │ ├── metadata │ │ └── annotations.yaml │ └── tests │ └── scorecard │ └── config.yaml └── bundle-0.0.2 ├── bundle.Dockerfile ├── manifests │ ├── etcdbackup.crd.yaml │ ├── etcdcluster.crd.yaml │ ├── etcdoperator.v0.0.2.clusterserviceversion.yaml │ ├── etcdrestore.crd.yaml ├── metadata │ └── annotations.yaml └── tests └── scorecard └── config.yaml
생성된 이 레이아웃을 기반으로 두 번들의 번들 이미지도 다음 이름으로 빌드됩니다.
-
quay.io/example/etcd:0.0.1
-
quay.io/example/etcd:0.0.2
추가 리소스
5.15.2. 번들 형식으로 패키지 매니페스트 프로젝트 마이그레이션
Operator 작성자는 Operator SDK를 사용하여 패키지 매니페스트 형식 Operator 프로젝트를 번들 형식 프로젝트로 마이그레이션할 수 있습니다.
사전 요구 사항
- Operator SDK CLI가 설치됨
- 패키지 매니페스트 형식의 Operator SDK를 사용하여 처음에 Operator 프로젝트 생성
프로세스
Operator SDK를 사용하여 패키지 매니페스트 프로젝트를 번들 형식으로 마이그레이션하고 번들 이미지를 생성합니다.
$ operator-sdk pkgman-to-bundle <package_manifests_dir> \ 1 [--output-dir <directory>] \ 2 --image-tag-base <image_name_base> 3
- 1
- 프로젝트의 패키지 매니페스트 디렉터리(예:
packagemanifests/
또는manifests/
)의 위치를 지정합니다. - 2
- 선택 사항: 기본적으로 생성된 번들은
bundle/
디렉터리에 디스크에 로컬로 작성됩니다.--output-dir
플래그를 사용하여 대체 위치를 지정할 수 있습니다. - 3
- 번들에 사용할
quay.io/example/etcd
와 같은 이미지 이름의 기반을 제공하도록--image-tag-base
플래그를 설정합니다. 이미지 태그가 번들 버전에 따라 설정되므로 태그 없이 이름을 입력합니다. 예를 들어 전체 번들 이미지 이름이<image_name_base>:<bundle_version>
형식으로 생성됩니다.
검증
생성된 번들 이미지가 성공적으로 실행되는지 확인합니다.
$ operator-sdk run bundle <bundle_image_name>:<tag>
출력 예
INFO[0025] Successfully created registry pod: quay-io-my-etcd-0-9-4 INFO[0025] Created CatalogSource: etcd-catalog INFO[0026] OperatorGroup "operator-sdk-og" created INFO[0026] Created Subscription: etcdoperator-v0-9-4-sub INFO[0031] Approved InstallPlan install-5t58z for the Subscription: etcdoperator-v0-9-4-sub INFO[0031] Waiting for ClusterServiceVersion "default/etcdoperator.v0.9.4" to reach 'Succeeded' phase INFO[0032] Waiting for ClusterServiceVersion "default/etcdoperator.v0.9.4" to appear INFO[0048] Found ClusterServiceVersion "default/etcdoperator.v0.9.4" phase: Pending INFO[0049] Found ClusterServiceVersion "default/etcdoperator.v0.9.4" phase: Installing INFO[0064] Found ClusterServiceVersion "default/etcdoperator.v0.9.4" phase: Succeeded INFO[0065] OLM has successfully installed "etcdoperator.v0.9.4"