4.3. 카탈로그 관리
OLM(Operator Lifecycle Manager) v1은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
클러스터 관리자는 카탈로그 또는 Operator 및 Kubernetes 확장의 컬렉션을 클러스터에 추가할 수 있습니다. Operator 작성자는 해당 카탈로그에 제품을 게시합니다. 클러스터에 카탈로그를 추가할 때 카탈로그에 게시된 Operator 및 확장의 버전, 패치 및 무선 업데이트에 액세스할 수 있습니다.
CR(사용자 정의 리소스)을 사용하여 CLI에서 카탈로그 및 확장을 선언적으로 관리할 수 있습니다.
파일 기반 카탈로그는 OLM(Operator Lifecycle Manager) 카탈로그 형식의 최신 버전입니다. 일반 텍스트 기반(JSON 또는 YAML)과 이전 SQLite 데이터베이스 형식의 선언적 구성 진화이며 완전히 이전 버전과 호환됩니다.
Kubernetes는 후속 릴리스에서 제거된 특정 API를 주기적으로 사용하지 않습니다. 결과적으로 Operator는 API를 제거한 Kubernetes 버전을 사용하는 OpenShift Container Platform 버전에서 시작하여 제거된 API를 사용할 수 없습니다.
클러스터가 사용자 정의 카탈로그를 사용하는 경우 Operator 작성자가 워크로드 문제를 방지하고 호환되지 않는 업그레이드를 방지하는 방법에 대한 자세한 내용은 OpenShift Container Platform 버전과 Operator 호환성 제어를 참조하십시오.
4.3.1. OLM v1의 카탈로그 정보
카탈로그 구성 요소를 사용하여 Operator 및 컨트롤러와 같은 Kubernetes 확장 카탈로그를 쿼리하여 설치 가능한 콘텐츠를 검색할 수 있습니다. Catalogd는 클러스터 내 클라이언트의 카탈로그 콘텐츠의 압축을 풀고 OLM(Operator Lifecycle Manager) v1 마이크로 서비스 제품군의 일부입니다. 현재 catalogd는 컨테이너 이미지로 패키지 및 배포되는 카탈로그 콘텐츠의 압축을 풉니다.
고유한 이름이 없는 Operator 또는 확장을 설치하려고 하면 설치에 실패하거나 예기치 않은 결과가 발생할 수 있습니다. 이는 다음과 같은 이유로 발생합니다.
- mulitple 카탈로그가 클러스터에 설치된 경우 OLM(Operator Lifecycle Manager) v1에는 Operator 또는 확장을 설치할 때 카탈로그를 지정하는 메커니즘이 포함되지 않습니다.
- OLM v1에서는 클러스터에 설치할 수 있는 모든 Operator 및 확장이 번들 및 패키지에 고유한 이름을 사용해야 합니다.
추가 리소스
4.3.2. OLM v1의 Red Hat 제공 Operator 카탈로그
OLM(Operator Lifecycle Manager) v1에는 기본적으로 Red Hat 제공 Operator 카탈로그가 포함되어 있지 않습니다. Red Hat 제공 카탈로그를 클러스터에 추가하려면 카탈로그의 CR(사용자 정의 리소스)을 생성하여 클러스터에 적용합니다. 다음 CR(사용자 정의 리소스) 예제에서는 OLM v1에 대한 카탈로그 리소스를 생성하는 방법을 보여줍니다.
현재 OLM(Operator Lifecycle Manager) v1은 Red Hat 제공 Operator 카탈로그와 같은 프라이빗 레지스트리를 인증할 수 없습니다. 이것은 확인된 문제입니다. 결과적으로 Red Hat Operator 카탈로그를 설치하는 데 사용하는 OLM v1 절차가 작동하지 않습니다. (OCPBUGS-36364)
registry.redhat.io
에서 Red Hat 제공 Operator 카탈로그와 같이 프라이빗 레지스트리에서 호스팅되는 카탈로그를 사용하려면openshift-catalogd
네임스페이스에 풀 시크릿 범위가 지정되어야 합니다.자세한 내용은 "보안 레지스트리에서 호스팅되는 카탈로그의 풀 시크릿 생성"을 참조하십시오.
Red Hat Operator 카탈로그의 예
apiVersion: catalogd.operatorframework.io/v1alpha1
kind: ClusterCatalog
metadata:
name: redhat-operators
spec:
source:
type: image
image:
ref: registry.redhat.io/redhat/redhat-operator-index:v4.17
pullSecret: <pull_secret_name>
pollInterval: <poll_interval_duration> 1
- 1
- 최신 이미지 다이제스트를 위해 원격 레지스트리를 폴링하는 간격을 지정합니다. 기본값은
24h
입니다. 유효한 단위에는 초(s
), 분(m
) 및 시간(h
)이 포함됩니다. 폴링을 비활성화하려면0s
와 같은 0 값을 설정합니다.
인증된 Operator 카탈로그의 예
apiVersion: catalogd.operatorframework.io/v1alpha1 kind: ClusterCatalog metadata: name: certified-operators spec: source: type: image image: ref: registry.redhat.io/redhat/certified-operator-index:v4.17 pullSecret: <pull_secret_name> pollInterval: 24h
커뮤니티 Operator 카탈로그의 예
apiVersion: catalogd.operatorframework.io/v1alpha1 kind: ClusterCatalog metadata: name: community-operators spec: source: type: image image: ref: registry.redhat.io/redhat/community-operator-index:v4.17 pullSecret: <pull_secret_name> pollInterval: 24h
다음 명령은 클러스터에 카탈로그를 추가합니다.
명령 구문
$ oc apply -f <catalog_name>.yaml 1
- 1
redhat-operators.yaml
과 같은 카탈로그 CR을 지정합니다.
4.3.3. 프라이빗 레지스트리에서 호스팅되는 카탈로그의 풀 시크릿 생성
registry.redhat.io
에서 Red Hat 제공 Operator 카탈로그와 같이 프라이빗 레지스트리에서 호스팅되는 카탈로그를 사용하려면 openshift-catalogd
네임스페이스에 풀 시크릿 범위가 지정되어야 합니다.
Catalogd는 OpenShift Container Platform 클러스터에서 글로벌 풀 시크릿을 읽을 수 없습니다. Catalogd는 배포된 네임스페이스에서만 보안에 대한 참조를 읽을 수 있습니다.
현재 OLM(Operator Lifecycle Manager) v1은 Red Hat 제공 Operator 카탈로그와 같은 프라이빗 레지스트리를 인증할 수 없습니다. 이것은 확인된 문제입니다. 결과적으로 Red Hat Operator 카탈로그를 설치하는 데 사용하는 OLM v1 절차가 작동하지 않습니다. (OCPBUGS-36364)
사전 요구 사항
- 보안 레지스트리의 로그인 인증 정보
- 워크스테이션에 Docker 또는 Podman이 설치되어 있어야 합니다.
프로세스
보안 레지스트리에 대한 로그인 인증 정보가 있는
.dockercfg
파일이 이미 있는 경우 다음 명령을 실행하여 가져오기 보안을 생성합니다.$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<file_path>/.dockercfg \ --type=kubernetes.io/dockercfg \ --namespace=openshift-catalogd
예 4.9. 명령 예
$ oc create secret generic redhat-cred \ --from-file=.dockercfg=/home/<username>/.dockercfg \ --type=kubernetes.io/dockercfg \ --namespace=openshift-catalogd
보안 레지스트리의 로그인 인증 정보가 있는
$HOME/.docker/config.json
파일이 이미 있는 경우 다음 명령을 실행하여 풀 시크릿을 생성합니다.$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<file_path>/.docker/config.json \ --type=kubernetes.io/dockerconfigjson \ --namespace=openshift-catalogd
예 4.10. 명령 예
$ oc create secret generic redhat-cred \ --from-file=.dockerconfigjson=/home/<username>/.docker/config.json \ --type=kubernetes.io/dockerconfigjson \ --namespace=openshift-catalogd
보안 레지스트리에 대한 로그인 인증 정보가 있는 Docker 구성 파일이 없는 경우 다음 명령을 실행하여 가져오기 보안을 생성합니다.
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<username> \ --docker-password=<password> \ --docker-email=<email> \ --namespace=openshift-catalogd
예 4.11. 명령 예
$ oc create secret docker-registry redhat-cred \ --docker-server=registry.redhat.io \ --docker-username=username \ --docker-password=password \ --docker-email=user@example.com \ --namespace=openshift-catalogd
4.3.4. 클러스터에 카탈로그 추가
클러스터에 카탈로그를 추가하려면 카탈로그 CR(사용자 정의 리소스)을 생성하여 클러스터에 적용합니다.
현재 OLM(Operator Lifecycle Manager) v1은 Red Hat 제공 Operator 카탈로그와 같은 프라이빗 레지스트리를 인증할 수 없습니다. 이것은 확인된 문제입니다. 결과적으로 Red Hat Operator 카탈로그를 설치하는 데 사용하는 OLM v1 절차가 작동하지 않습니다. (OCPBUGS-36364)
사전 요구 사항
registry.redhat.io
에서 Red Hat 제공 Operator 카탈로그와 같이 프라이빗 레지스트리에서 호스팅되는 카탈로그를 사용하려면openshift-catalogd
네임스페이스에 풀 시크릿 범위가 지정되어야 합니다.Catalogd는 OpenShift Container Platform 클러스터에서 글로벌 풀 시크릿을 읽을 수 없습니다. Catalogd는 배포된 네임스페이스에서만 보안에 대한 참조를 읽을 수 있습니다.
프로세스
다음 예와 유사한 카탈로그 CR(사용자 정의 리소스)을 생성합니다.
예:
redhat-operators.yaml
apiVersion: catalogd.operatorframework.io/v1alpha1 kind: ClusterCatalog metadata: name: redhat-operators spec: source: type: image image: ref: registry.redhat.io/redhat/redhat-operator-index:v4.17 1 pullSecret: <pull_secret_name> 2 pollInterval: <poll_interval_duration> 3
다음 명령을 실행하여 클러스터에 카탈로그를 추가합니다.
$ oc apply -f redhat-operators.yaml
출력 예
catalog.catalogd.operatorframework.io/redhat-operators created
검증
다음 명령을 실행하여 카탈로그 상태를 확인합니다.
다음 명령을 실행하여 카탈로그를 사용할 수 있는지 확인합니다.
$ oc get clustercatalog
출력 예
NAME AGE redhat-operators 20s
다음 명령을 실행하여 카탈로그의 상태를 확인합니다.
$ oc describe clustercatalog
출력 예
Name: redhat-operators Namespace: Labels: <none> Annotations: <none> API Version: catalogd.operatorframework.io/v1alpha1 Kind: ClusterCatalog Metadata: Creation Timestamp: 2024-06-10T17:34:53Z Finalizers: catalogd.operatorframework.io/delete-server-cache Generation: 1 Resource Version: 46075 UID: 83c0db3c-a553-41da-b279-9b3cddaa117d Spec: Source: Image: Pull Secret: redhat-cred Ref: registry.redhat.io/redhat/redhat-operator-index:v4.17 Type: image Status: 1 Conditions: Last Transition Time: 2024-06-10T17:35:15Z Message: Reason: UnpackSuccessful 2 Status: True Type: Unpacked Content URL: https://catalogd-catalogserver.openshift-catalogd.svc/catalogs/redhat-operators/all.json Observed Generation: 1 Phase: Unpacked 3 Resolved Source: Image: Last Poll Attempt: 2024-06-10T17:35:10Z Ref: registry.redhat.io/redhat/redhat-operator-index:v4.17 Resolved Ref: registry.redhat.io/redhat/redhat-operator-index@sha256:f2ccc079b5e490a50db532d1dc38fd659322594dcf3e653d650ead0e862029d9 4 Type: image Events: <none>
4.3.5. 카탈로그 삭제
CR(사용자 정의 리소스)을 삭제하여 카탈로그를 삭제할 수 있습니다.
사전 요구 사항
- 카탈로그가 설치되어 있어야 합니다.
프로세스
다음 명령을 실행하여 카탈로그를 삭제합니다.
$ oc delete clustercatalog <catalog_name>
출력 예
catalog.catalogd.operatorframework.io "my-catalog" deleted
검증
다음 명령을 실행하여 카탈로그가 삭제되었는지 확인합니다.
$ oc get clustercatalog