검색

7.4. OLM 1.0에서 일반 번들 관리 (기술 프리뷰)

download PDF

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 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

클러스터 관리자는 다음 절차를 완료하여 일반 번들 이미지가 포함된 파일 기반 카탈로그를 빌드하고 게시할 수 있습니다.

  1. 일반 번들 이미지를 빌드합니다.
  2. 파일 기반 카탈로그를 생성합니다.
  3. 파일 기반 카탈로그에 일반 번들 이미지를 추가합니다.
  4. 카탈로그를 이미지로 빌드합니다.
  5. 카탈로그 이미지를 게시합니다.

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 컨트롤러는 현재 일반 번들 이미지에서만 생성된 일반 번들 설치를 지원합니다.

프로세스

  1. 프로젝트 루트에서 번들 이미지를 빌드할 수 있는 Dockerfile을 생성합니다.

    plainbundle.Dockerfile의 예

    FROM scratch 1
    ADD manifests /manifests

    1
    FROM scratch 지시문을 사용하여 이미지 크기를 줄입니다. 번들 이미지에 다른 파일 또는 디렉터리는 필요하지 않습니다.
  2. 다음 예와 유사하게 기본 빌드 툴을 사용하여 OCI(Open Container Initiative) 호환 이미지를 빌드합니다.

    $ podman build -f plainbundle.Dockerfile -t \
        quay.io/<organization_name>/<repository_name>:<image_tag> . 1
    1
    내보내기 액세스 권한이 있는 리포지토리를 참조하는 이미지 태그를 사용합니다.
  3. 다음 명령을 실행하여 원격 레지스트리로 이미지를 푸시합니다.

    $ podman push quay.io/<organization_name>/<repository_name>:<image_tag>

7.4.3. 파일 기반 카탈로그 생성

파일 기반 카탈로그가 없는 경우 다음 단계를 수행하여 카탈로그를 초기화해야 합니다.

프로세스

  1. 다음 명령을 실행하여 카탈로그의 디렉터리를 생성합니다.

    $ mkdir <catalog_dir>
  2. 이전 단계와 동일한 디렉터리 수준에서 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

  3. opm init 명령을 실행하여 카탈로그를 확장 패키지 정의로 채웁니다.

    $ opm init <extension_name> \
        --output json \
        > <catalog_dir>/index.json

    이 명령은 지정된 카탈로그 구성 파일에 olm.package 선언적 구성 blob을 생성합니다.

7.4.4. 파일 기반 카탈로그에 일반 번들 추가

opm render 명령은 카탈로그에 일반 번들 추가를 지원하지 않습니다. 다음 절차에 표시된 대로 파일 기반 카탈로그에 일반 번들을 수동으로 추가해야 합니다.

프로세스

  1. 카탈로그의 index.json 또는 index.yaml 파일이 다음 예와 유사한지 확인합니다.

    예: <catalog_dir>/index.json 파일

    {
        {
         "schema": "olm.package",
         "name": "<extension_name>",
         "defaultChannel": ""
        }
    }

  2. olm.bundle blob을 생성하려면 다음 예와 유사하게 index.json 또는 index.yaml 파일을 편집합니다.

    olm.bundle blob이 있는 & lt;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"
            }
      ]
    }

  3. olm.channel blob을 생성하려면 다음 예제와 유사하게 index.json 또는 index.yaml 파일을 편집합니다.

    olm.channel blob이 있는 & lt;catalog_dir>/index.json 파일의 예

    {
        "schema": "olm.channel",
        "name": "<desired_channel_name>",
        "package": "<extension_name>",
        "entries": [
            {
                "name": "<extension_name>.v<version>"
            }
        ]
    }

검증

  1. index.json 또는 index.yaml 파일을 열고 다음 예와 유사한지 확인합니다.

    예: <catalog_dir>/index.json 파일

    {
        "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"
            }
        ]
    }

  2. 다음 명령을 실행하여 카탈로그를 확인합니다.

    $ opm validate <catalog_dir>

7.4.5. 파일 기반 카탈로그 빌드 및 게시

프로세스

  1. 다음 명령을 실행하여 파일 기반 카탈로그를 이미지로 빌드합니다.

    $ podman build -f <catalog_dir>.Dockerfile -t \
        quay.io/<organization_name>/<repository_name>:<image_tag> .
  2. 다음 명령을 실행하여 카탈로그 이미지를 내보냅니다.

    $ podman push quay.io/<organization_name>/<repository_name>:<image_tag>
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.