2.2. Operator 프레임워크 패키지 형식
Operator Framework 패키징 형식을 사용하여 OpenShift Container Platform에서 OLM(Operator Lifecycle Manager)에 대한 Operator 메타데이터를 번들하고 게시할 수 있습니다. 이 형식은 번들 이미지, 종속 항목 및 파일 기반 카탈로그 스키마를 처리합니다.
2.2.1. 번들 형식 링크 복사링크가 클립보드에 복사되었습니다!
번들 형식은 카탈로그에 Operator 메타데이터를 단순화하는 Operator Framework 패키지 형식입니다. Operator 번들은 Kubernetes 매니페스트 및 메타데이터를 저장하는 실행 불가능한 컨테이너 이미지로 제공되는 단일 Operator 버전입니다.
번들 이미지의 저장 및 배포는 podman 및 docker와 같은 기존 컨테이너 툴과 Quay와 같은 컨테이너 레지스트리를 사용하여 관리합니다.
Operator 메타데이터에는 다음이 포함될 수 있습니다.
- Operator 확인 정보(예: 이름 및 버전)
- UI를 구동하는 추가 정보(예: 아이콘 및 일부 예제 CR(사용자 정의 리소스))
- 필요한 API 및 제공된 API.
- 관련 이미지.
Operator 레지스트리 데이터베이스에 매니페스트를 로드할 때 다음 요구 사항이 검증됩니다.
- 번들의 주석에 하나 이상의 채널이 정의되어 있어야 합니다.
- 모든 번들에 정확히 하나의 CSV(클러스터 서비스 버전)가 있습니다.
- CSV에 CRD(사용자 정의 리소스 정의)가 포함된 경우 해당 CRD가 번들에 있어야 합니다.
2.2.1.1. 매니페스트 링크 복사링크가 클립보드에 복사되었습니다!
번들 매니페스트는 Operator 번들에 있는 Kubernetes 오브젝트로, Operator의 deployment 및 ROLE 기반 액세스 제어(RBAC) 모델을 정의합니다. 번들에는 하나의 CSV(클러스터 서비스 버전)와 일반적으로 해당 CSV가 보유한 API의 CRD(사용자 정의 리소스 정의)가 / 매니페스트 디렉터리에 포함됩니다.
Bundle 형식 레이아웃의 예
etcd
├── manifests
│ ├── etcdcluster.crd.yaml
│ └── etcdoperator.clusterserviceversion.yaml
│ └── secret.yaml
│ └── configmap.yaml
└── metadata
└── annotations.yaml
└── dependencies.yaml
2.2.1.1.1. 지원되는 추가 Kubernetes 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
선택적으로 Operator 번들은 CSV(클러스터 서비스 버전)를 사용하여 배포하기 위해 /manifests 디렉터리에 추가 Kubernetes 오브젝트 유형을 포함할 수 있습니다. 포함된 경우 OLM(Operator Lifecycle Manager)은 CSV와 함께 이러한 오브젝트의 라이프사이클을 생성하고 관리합니다.
다음 선택적 오브젝트 유형이 지원됩니다.
-
ClusterRole -
ClusterRoleBinding -
ConfigMap -
ConsoleCLIDownload -
ConsoleLink -
ConsoleQuickStart -
ConsoleYamlSample -
PodDisruptionBudget -
PriorityClass -
PrometheusRule -
Role -
RoleBinding -
Secret -
서비스 -
ServiceAccount -
ServiceMonitor -
VerticalPodAutoscaler
OLM은 이러한 선택적 오브젝트의 라이프사이클을 다음과 같이 관리합니다.
- CSV가 삭제되면 OLM은 선택적 오브젝트를 삭제합니다.
CSV가 업그레이드되면 다음을 수행합니다.
- 선택적 오브젝트의 이름이 동일하면 OLM에서 해당 오브젝트를 대신 업데이트합니다.
- 버전 간 선택적 오브젝트의 이름이 변경된 경우 OLM은 해당 오브젝트를 삭제하고 다시 생성합니다.
2.2.1.2. 주석 링크 복사링크가 클립보드에 복사되었습니다!
metadata/annotations.yaml 파일의 Operator 번들 주석은 번들 인덱싱 방법을 설명하는 집계 메타데이터를 정의합니다. 이러한 주석은 미디어 유형, 매니페스트 경로, 패키지 이름, 채널, 카탈로그 등록을 위한 기본 채널을 지정합니다.
번들에 /metadata 디렉터리에 annotations.yaml 파일이 포함되어 있습니다.
예제 annotations.yaml
annotations:
operators.operatorframework.io.bundle.mediatype.v1: "registry+v1"
operators.operatorframework.io.bundle.manifests.v1: "manifests/"
operators.operatorframework.io.bundle.metadata.v1: "metadata/"
operators.operatorframework.io.bundle.package.v1: "test-operator"
operators.operatorframework.io.bundle.channels.v1: "beta,stable"
operators.operatorframework.io.bundle.channel.default.v1: "stable"
다음과 같습니다.
annotations.operators.operatorframework.io.bundle.mediatype.v1-
Operator 번들의 미디어 유형 또는 형식입니다.
registry+v1형식은 CSV 및 관련 Kubernetes 오브젝트가 포함됨을 나타냅니다. annotations.operators.operatorframework.io.bundle.manifests.v1-
Operator 매니페스트가 포함된 디렉터리의 이미지 경로를 지정합니다. 이 라벨은 나중에 사용할 수 있도록 예약되어 있으며 현재 기본값은
manifests/입니다. 값manifests.v1은 번들에 Operator 매니페스트가 포함되어 있음을 나타냅니다. annotations.operators.operatorframework.io.bundle.metadata.v1-
번들에 대한 메타데이터 파일이 포함된 디렉터리의 이미지의 경로를 지정합니다. 이 라벨은 나중에 사용할 수 있도록 예약되어 있으며 현재 기본값은
metadata/입니다. 값metadata.v1은 이 번들에 Operator 메타데이터가 있음을 나타냅니다. annotations.operators.operatorframework.io.bundle.package.v1- 번들의 패키지 이름을 지정합니다.
annotations.operators.operatorframework.io.bundle.channels.v1- Operator 레지스트리에 추가될 때 번들이 서브스크립션되는 채널 목록입니다.
annotations.operators.operatorframework.io.bundle.channel.default.v1- 레지스트리에서 설치할 때 Operator를 서브스크립션해야 하는 기본 채널입니다.
불일치하는 경우 이러한 주석을 사용하는 클러스터상의 Operator 레지스트리만 이 파일에 액세스할 수 있기 때문에 annotations.yaml 파일을 신뢰할 수 있습니다.
2.2.1.3. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Operator 종속 항목은 OpenShift Container Platform에 설치하는 동안 OLM(Operator Lifecycle Manager)에서 확인해야 하는 Operator 간의 관계를 정의합니다. 번들의 metadata/ 폴더에 있는 선택적 dependencies.yaml 파일에 이러한 종속 항목을 나열할 수 있습니다.
종속성 목록에는 종속성의 유형을 지정하기 위해 각 항목에 대한 type 필드가 포함되어 있습니다. 다음과 같은 유형의 Operator 종속 항목이 지원됩니다.
olm.package-
이 유형은 특정 Operator 버전에 대한 종속성을 나타냅니다. 종속 정보에는 패키지 이름과 패키지 버전이 semver 형식으로 포함되어야 합니다. 예를 들어
0.5.2와 같은 정확한 버전이나>0.5.1과 같은 버전 범위를 지정할 수 있습니다. olm.gvk- 이 유형을 사용하면 작성자는 CSV의 기존 CRD 및 API 기반 사용과 유사하게 GVK(그룹/버전/종류) 정보를 사용하여 종속성을 지정할 수 있습니다. 이 경로를 통해 Operator 작성자는 모든 종속 항목, API 또는 명시적 버전을 동일한 위치에 통합할 수 있습니다.
olm.constraint- 이 유형은 임의의 Operator 속성에 대한 일반 제약 조건을 선언합니다.
다음 예제에서는 Prometheus Operator 및 etcd CRD에 대한 종속 항목을 지정합니다.
dependencies.yaml 파일의 예
dependencies:
- type: olm.package
value:
packageName: prometheus
version: ">0.27.0"
- type: olm.gvk
value:
group: etcd.database.coreos.com
kind: EtcdCluster
version: v1beta2
2.2.1.4. opm CLI 정보 링크 복사링크가 클립보드에 복사되었습니다!
opm CLI는 OpenShift Container Platform의 번들 이미지에서 Operator 카탈로그를 생성하고 유지 관리하는 Operator 프레임워크 툴입니다. 이 이미지를 사용하여 OLM(Operator Lifecycle Manager)이 카탈로그 소스를 통해 참조하는 카탈로그 컨테이너 이미지를 빌드할 수 있습니다.
카탈로그에는 컨테이너 이미지가 실행될 때 제공되는 포함된 API를 통해 쿼리할 수 있는 Operator 매니페스트 콘텐츠에 대한 포인터 데이터베이스가 포함되어 있습니다. OpenShift Container Platform에서 OLM(Operator Lifecycle Manager)은 CatalogSource 오브젝트에서 정의한 카탈로그 소스의 이미지를 참조할 수 있으며 주기적으로 이미지를 폴링하여 클러스터에 설치된 Operator를 자주 업데이트할 수 있습니다.
-
opmCLI 설치 단계는 CLI 툴 을 참조하십시오.