5장. 클러스터 확장
5.1. 클러스터 확장 관리
OLM(Operator Lifecycle Manager) v1은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
카탈로그가 클러스터에 추가되면 카탈로그에 게시된 확장 및 Operator의 버전, 패치 및 무선 업데이트에 액세스할 수 있습니다.
CR(사용자 정의 리소스)을 사용하여 CLI에서 확장 기능을 선언적으로 관리할 수 있습니다.
현재 OLM(Operator Lifecycle Manager) v1은 Red Hat 제공 Operator 카탈로그와 같은 프라이빗 레지스트리를 인증할 수 없습니다. 이것은 확인된 문제입니다. 결과적으로 Red Hat Operator 카탈로그를 설치하는 데 사용하는 OLM v1 절차가 작동하지 않습니다. (OCPBUGS-36364)
5.1.1. 지원되는 확장
현재 OLM(Operator Lifecycle Manager) v1에서는 다음 기준을 모두 충족하는 클러스터 확장 설치를 지원합니다.
-
확장 기능은 기존 OLM에 도입된
registry+v1
번들 형식을 사용해야 합니다. -
확장 기능은
AllNamespaces
설치 모드를 통한 설치를 지원해야 합니다. - 확장에서는 Webhook를 사용하지 않아야 합니다.
확장자는 다음 파일 기반 카탈로그 속성을 사용하여 종속성을 선언해서는 안 됩니다.
-
olm.gvk.required
-
olm.package.required
-
olm.constraint
-
OLM v1은 설치하려는 확장이 이러한 제약 조건을 충족하는지 확인합니다. 설치하려는 확장이 이러한 제약 조건을 충족하지 않으면 클러스터 확장 상태에 오류 메시지가 출력됩니다.
OLM(Operator Lifecycle Manager) v1은 기존 OLM에 도입된 OperatorConditions
API를 지원하지 않습니다.
확장 프로그램이 OperatorConditions
API만 사용하여 업데이트를 관리하는 경우 확장이 올바르게 설치되지 않을 수 있습니다. 이 API에 의존하는 대부분의 확장은 시작 시 실패하지만 조정 중에 일부 확장이 실패할 수 있습니다.
이 문제를 해결하려면 확장 기능을 특정 버전에 고정할 수 있습니다. 확장을 업데이트하려는 경우 확장 기능을 참조하여 확장 기능을 새 버전에 고정하는 것이 안전한지 확인합니다.
추가 리소스
5.1.2. 카탈로그에서 설치할 Operator 찾기
클러스터에 카탈로그를 추가한 후 카탈로그를 쿼리하여 설치할 Operator 및 확장을 찾을 수 있습니다. 카탈로그를 쿼리하려면 먼저 카탈로그 서버 서비스를 전달하도록 포트해야 합니다.
사전 요구 사항
- 클러스터에 카탈로그를 추가했습니다.
-
jq
CLI 툴을 설치했습니다.
프로세스
포트 다음 명령을 실행하여
openshift-catalogd
네임스페이스에서 카탈로그 서버 서비스를 전달합니다.$ oc -n openshift-catalogd port-forward svc/catalogd-catalogserver 8080:443
새 터미널 창 또는 탭에서 다음 명령을 실행하여 카탈로그의 JSON 파일을 로컬로 다운로드합니다.
$ curl -L -k https://localhost:8080/catalogs/<catalog_name>/all.json \ -C - -o /<path>/<catalog_name>.json
예 5.1. 명령 예
$ curl -L -k https://localhost:8080/catalogs/redhat-operators/all.json \ -C - -o /home/username/catalogs/rhoc.json
다음 명령 중 하나를 실행하여 카탈로그의 Operator 및 확장 목록을 반환합니다.
중요현재 OLM(Operator Lifecycle Manager) v1에서는 다음 기준을 모두 충족하는 클러스터 확장 설치를 지원합니다.
-
확장 기능은 기존 OLM에 도입된
registry+v1
번들 형식을 사용해야 합니다. -
확장 기능은
AllNamespaces
설치 모드를 통한 설치를 지원해야 합니다. - 확장에서는 Webhook를 사용하지 않아야 합니다.
확장자는 다음 파일 기반 카탈로그 속성을 사용하여 종속성을 선언해서는 안 됩니다.
-
olm.gvk.required
-
olm.package.required
-
olm.constraint
-
OLM v1은 설치하려는 확장이 이러한 제약 조건을 충족하는지 확인합니다. 설치하려는 확장이 이러한 제약 조건을 충족하지 않으면 클러스터 확장 상태에 오류 메시지가 출력됩니다.
다음 명령을 실행하여 로컬 카탈로그 파일에서 모든 Operator 및 확장 프로그램 목록을 가져옵니다.
$ jq -s '.[] | select(.schema == "olm.package") | .name' \ /<path>/<filename>.json
예 5.2. 명령 예
$ jq -s '.[] | select(.schema == "olm.package") | .name' \ /home/username/catalogs/rhoc.json
예 5.3. 출력 예
NAME AGE "3scale-operator" "advanced-cluster-management" "amq-broker-rhel8" "amq-online" "amq-streams" "amq7-interconnect-operator" "ansible-automation-platform-operator" "ansible-cloud-addons-operator" "apicast-operator" "aws-efs-csi-driver-operator" "aws-load-balancer-operator" "bamoe-businessautomation-operator" "bamoe-kogito-operator" "bare-metal-event-relay" "businessautomation-operator" ...
AllNamespaces
설치 모드를 지원하는 패키지 목록을 가져오고 다음 명령을 실행하여 로컬 카탈로그 파일의 Webhook를 사용하지 않습니다.$ jq -c 'select(.schema == "olm.bundle") | \ {"package":.package, "version":.properties[] | \ select(.type == "olm.bundle.object").value.data | @base64d | fromjson | \ select(.kind == "ClusterServiceVersion" and (.spec.installModes[] | \ select(.type == "AllNamespaces" and .supported == true) != null) \ and .spec.webhookdefinitions == null).spec.version}' \ /<path>/<catalog_name>.json
예 5.4. 출력 예
{"package":"3scale-operator","version":"0.10.0-mas"} {"package":"3scale-operator","version":"0.10.5"} {"package":"3scale-operator","version":"0.11.0-mas"} {"package":"3scale-operator","version":"0.11.1-mas"} {"package":"3scale-operator","version":"0.11.2-mas"} {"package":"3scale-operator","version":"0.11.3-mas"} {"package":"3scale-operator","version":"0.11.5-mas"} {"package":"3scale-operator","version":"0.11.6-mas"} {"package":"3scale-operator","version":"0.11.7-mas"} {"package":"3scale-operator","version":"0.11.8-mas"} {"package":"amq-broker-rhel8","version":"7.10.0-opr-1"} {"package":"amq-broker-rhel8","version":"7.10.0-opr-2"} {"package":"amq-broker-rhel8","version":"7.10.0-opr-3"} {"package":"amq-broker-rhel8","version":"7.10.0-opr-4"} {"package":"amq-broker-rhel8","version":"7.10.1-opr-1"} {"package":"amq-broker-rhel8","version":"7.10.1-opr-2"} {"package":"amq-broker-rhel8","version":"7.10.2-opr-1"} {"package":"amq-broker-rhel8","version":"7.10.2-opr-2"} ...
-
확장 기능은 기존 OLM에 도입된
다음 명령을 실행하여 Operator 또는 확장의 메타데이터 콘텐츠를 검사합니다.
$ jq -s '.[] | select( .schema == "olm.package") | \ select( .name == "<package_name>")' /<path>/<catalog_name>.json
예 5.5. 명령 예
$ jq -s '.[] | select( .schema == "olm.package") | \ select( .name == "openshift-pipelines-operator-rh")' \ /home/username/rhoc.json
예 5.6. 출력 예
{ "defaultChannel": "stable", "icon": { "base64data": "PHN2ZyB4bWxu..." "mediatype": "image/png" }, "name": "openshift-pipelines-operator-rh", "schema": "olm.package" }
5.1.2.1. 공통 카탈로그 쿼리
jq
CLI 툴을 사용하여 카탈로그를 쿼리할 수 있습니다.
쿼리 | 요청 |
---|---|
카탈로그에서 사용 가능한 패키지 |
$ jq -s '.[] | select( .schema == "olm.package") | \ .name' <catalog_name>.json |
|
$ jq -c 'select(.schema == "olm.bundle") | \ {"package":.package, "version":.properties[] | \ select(.type == "olm.bundle.object").value.data | \ @base64d | fromjson | \ select(.kind == "ClusterServiceVersion" and (.spec.installModes[] | \ select(.type == "AllNamespaces" and .supported == true) != null) \ and .spec.webhookdefinitions == null).spec.version}' \ <catalog_name>.json |
패키지 메타데이터 |
$ jq -s '.[] | select( .schema == "olm.package") | \ select( .name == "<package_name>")' <catalog_name>.json |
패키지의 카탈로그 Blob |
$ jq -s '.[] | select( .package == "<package_name>")' \ <catalog_name>.json |
쿼리 | 요청 |
---|---|
패키지의 채널 |
$ jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "<package_name>") | .name' \ <catalog_name>.json |
채널의 버전 |
$ jq -s '.[] | select( .package == "<package_name>" ) | \ select( .schema == "olm.channel" ) | \ select( .name == "<channel_name>" ) | \ .entries | .[] | .name' <catalog_name>.json |
|
$ jq -s '.[] | select( .schema == "olm.channel" ) | \ select ( .name == "<channel>") | \ select( .package == "<package_name>")' \ <catalog_name>.json |
쿼리 | 요청 |
---|---|
패키지의 번들 |
$ jq -s '.[] | select( .schema == "olm.bundle" ) | \ select( .package == "<package_name>") | .name' \ <catalog_name>.json |
|
$ jq -s '.[] | select( .schema == "olm.bundle" ) | \ select ( .name == "<bundle_name>") | \ select( .package == "<package_name>")' \ <catalog_name>.json |
5.1.3. 클러스터 확장을 관리하는 서비스 계정 생성
기존 OLM(Operator Lifecycle Manager)과 달리 OLM v1에는 클러스터 확장 기능을 설치, 업데이트 및 관리할 수 있는 권한이 없습니다. 클러스터 관리자는 서비스 계정을 생성하고 클러스터 확장을 설치, 업데이트 및 관리하는 데 필요한 RBAC(역할 기반 액세스 제어)를 할당해야 합니다.
OLM v1에는 알려진 문제가 있습니다. 확장의 서비스 계정에 올바른 역할 기반 액세스 제어(RBAC)를 할당하지 않으면 OLM v1이 중단되고 조정이 중지됩니다.
현재 OLM v1에는 확장 관리자가 서비스 계정에 대한 올바른 RBAC를 찾는 데 도움이 되는 도구가 없습니다.
OLM v1은 기술 프리뷰 기능이므로 프로덕션 클러스터에서 사용해서는 안되므로 문서에 포함된 보다 허용적인 RBAC를 사용하여 이 문제를 방지할 수 있습니다.
이 RBAC는 테스트 목적으로만 사용됩니다. 프로덕션 클러스터에서는 사용하지 마십시오.
사전 요구 사항
-
cluster-admin
권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
프로세스
다음 예와 유사한 서비스 계정을 생성합니다.
apiVersion: v1 kind: ServiceAccount metadata: name: <extension>-installer namespace: <namespace>
예 5.7.
extension-service-account.yaml
파일의 예apiVersion: v1 kind: ServiceAccount metadata: name: pipelines-installer namespace: pipelines
다음 명령을 실행하여 서비스 계정을 적용합니다.
$ oc apply -f extension-service-account.yaml
다음 예와 유사하게 클러스터 역할을 생성하고 RBAC를 할당합니다.
주의다음 클러스터 역할은 최소 권한 원칙을 따르지 않습니다. 이 클러스터 역할은 테스트 목적으로만 사용됩니다. 프로덕션 클러스터에서는 사용하지 마십시오.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <extension>-installer-clusterrole rules: - apiGroups: ["*"] resources: ["*"] verbs: ["*"]
예 5.8.
pipelines-cluster-role.yaml
파일의 예apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: pipelines-installer-clusterrole rules: - apiGroups: ["*"] resources: ["*"] verbs: ["*"]
다음 명령을 실행하여 클러스터에 클러스터 역할을 추가합니다.
$ oc apply -f pipelines-role.yaml
다음 예와 유사하게 클러스터 역할 바인딩을 생성하여 클러스터 역할에 의해 부여된 권한을 서비스 계정에 바인딩합니다.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: <extension>-installer-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: <extension>-installer-clusterrole subjects: - kind: ServiceAccount name: <extension>-installer namespace: <namespace>
예 5.9.
pipelines-cluster-role-binding.yaml
파일의 예apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: pipelines-installer-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: pipelines-installer-clusterrole subjects: - kind: ServiceAccount name: pipelines-installer namespace: pipelines
다음 명령을 실행하여 클러스터 역할 바인딩을 적용합니다.
$ oc apply -f pipelines-cluster-role-binding.yaml
5.1.4. 카탈로그에서 클러스터 확장 설치
CR(사용자 정의 리소스)을 생성하고 클러스터에 적용하여 카탈로그에서 확장을 설치할 수 있습니다. OLM(Operator Lifecycle Manager) v1은 클러스터 범위인 registry+v1
번들 형식을 통해 기존 OLM Operator를 포함한 클러스터 확장 설치를 지원합니다. 자세한 내용은 지원되는 확장 기능을 참조하십시오.
현재 OLM(Operator Lifecycle Manager) v1은 Red Hat 제공 Operator 카탈로그와 같은 프라이빗 레지스트리를 인증할 수 없습니다. 이것은 확인된 문제입니다. 결과적으로 Red Hat Operator 카탈로그를 설치하는 데 사용하는 OLM v1 절차가 작동하지 않습니다. (OCPBUGS-36364)
사전 요구 사항
- 클러스터에 카탈로그를 추가했습니다.
- 카탈로그 파일의 로컬 사본을 다운로드했습니다.
-
jq
CLI 툴을 설치했습니다. - 서비스 계정을 생성하고 설치할 확장 기능을 설치, 업데이트 및 관리할 충분한 RBAC(역할 기반 액세스 제어)가 할당되었습니다. 자세한 내용은 서비스 계정 생성을 참조하십시오.
프로세스
다음 단계를 완료하여 카탈로그 파일의 로컬 사본에서 채널 및 버전 정보에 대한 패키지를 검사합니다.
다음 명령을 실행하여 선택한 패키지에서 채널 목록을 가져옵니다.
$ jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "<package_name>") | \ .name' /<path>/<catalog_name>.json
예 5.10. 명령 예
$ jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "openshift-pipelines-operator-rh") | \ .name' /home/username/rhoc.json
예 5.11. 출력 예
"latest" "pipelines-1.11" "pipelines-1.12" "pipelines-1.13" "pipelines-1.14"
다음 명령을 실행하여 채널에 게시된 버전 목록을 가져옵니다.
$ jq -s '.[] | select( .package == "<package_name>" ) | \ select( .schema == "olm.channel" ) | \ select( .name == "<channel_name>" ) | .entries | \ .[] | .name' /<path>/<catalog_name>.json
예 5.12. 명령 예
$ jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) | \ select( .schema == "olm.channel" ) | select( .name == "latest" ) | \ .entries | .[] | .name' /home/username/rhoc.json
예 5.13. 출력 예
"openshift-pipelines-operator-rh.v1.12.0" "openshift-pipelines-operator-rh.v1.12.1" "openshift-pipelines-operator-rh.v1.12.2" "openshift-pipelines-operator-rh.v1.13.0" "openshift-pipelines-operator-rh.v1.13.1" "openshift-pipelines-operator-rh.v1.11.1" "openshift-pipelines-operator-rh.v1.12.0" "openshift-pipelines-operator-rh.v1.12.1" "openshift-pipelines-operator-rh.v1.12.2" "openshift-pipelines-operator-rh.v1.13.0" "openshift-pipelines-operator-rh.v1.14.1" "openshift-pipelines-operator-rh.v1.14.2" "openshift-pipelines-operator-rh.v1.14.3" "openshift-pipelines-operator-rh.v1.14.4"
새 네임스페이스에 확장을 설치하려면 다음 명령을 실행합니다.
$ oc adm new-project <new_namespace>
다음 예와 유사한 CR을 생성합니다.
pipelines-operator.yaml
CR의 예apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: name: pipelines-operator spec: packageName: openshift-pipelines-operator-rh installNamespace: <namespace> serviceAccount: name: <service_account> channel: <channel> version: "<version>"
다음과 같습니다.
<namespace>
-
파이프라인
또는my-extension
와 같이 번들을 설치할 네임스페이스를 지정합니다. 확장 기능은 여전히 클러스터 범위이며 다른 네임스페이스에 설치된 리소스가 포함될 수 있습니다. <service_account>
- 확장 기능을 설치, 업데이트 및 관리하기 위해 만든 서비스 계정의 이름을 지정합니다.
<channel>
-
선택 사항: 설치 또는 업데이트하려는 패키지에 대해
pipelines-1.11
또는latest
와 같은 채널을 지정합니다. <version>
선택 사항: 설치 또는 업데이트하려는 패키지의
1.11.1
,1.12.x
또는 >=1.12.1
과 같은 버전 범위를 지정합니다. 자세한 내용은 "대상 버전을 지정하는 CR(사용자 정의 리소스) 예" 및 "버전 범위에 대한 지원"을 참조하십시오.중요고유한 이름이 없는 Operator 또는 확장을 설치하려고 하면 설치에 실패하거나 예기치 않은 결과가 발생할 수 있습니다. 이는 다음과 같은 이유로 발생합니다.
- mulitple 카탈로그가 클러스터에 설치된 경우 OLM(Operator Lifecycle Manager) v1에는 Operator 또는 확장을 설치할 때 카탈로그를 지정하는 메커니즘이 포함되지 않습니다.
- OLM v1에서는 클러스터에 설치할 수 있는 모든 Operator 및 확장이 번들 및 패키지에 고유한 이름을 사용해야 합니다.
다음 명령을 실행하여 클러스터에 CR을 적용합니다.
$ oc apply -f pipeline-operator.yaml
출력 예
clusterextension.olm.operatorframework.io/pipelines-operator created
검증
다음 명령을 실행하여 Operator 또는 확장의 CR을 YAML 형식으로 표시합니다.
$ oc get clusterextension pipelines-operator -o yaml
예 5.14. 출력 예
apiVersion: v1 items: - apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"olm.operatorframework.io/v1alpha1","kind":"ClusterExtension","metadata":{"annotations":{},"name":"pipelines-operator"},"spec":{"channel":"latest","installNamespace":"pipelines","packageName":"openshift-pipelines-operator-rh","serviceAccount":{"name":"pipelines-installer"},"pollInterval":"30m"}} creationTimestamp: "2024-06-10T17:50:51Z" finalizers: - olm.operatorframework.io/cleanup-unpack-cache generation: 1 name: pipelines-operator resourceVersion: "53324" uid: c54237be-cde4-46d4-9b31-d0ec6acc19bf spec: channel: latest installNamespace: pipelines packageName: openshift-pipelines-operator-rh serviceAccount: name: pipelines-installer upgradeConstraintPolicy: Enforce status: conditions: - lastTransitionTime: "2024-06-10T17:50:58Z" message: resolved to "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:dd3d18367da2be42539e5dde8e484dac3df33ba3ce1d5bcf896838954f3864ec" observedGeneration: 1 reason: Success status: "True" type: Resolved - lastTransitionTime: "2024-06-10T17:51:11Z" message: installed from "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:dd3d18367da2be42539e5dde8e484dac3df33ba3ce1d5bcf896838954f3864ec" observedGeneration: 1 reason: Success status: "True" type: Installed - lastTransitionTime: "2024-06-10T17:50:58Z" message: "" observedGeneration: 1 reason: Deprecated status: "False" type: Deprecated - lastTransitionTime: "2024-06-10T17:50:58Z" message: "" observedGeneration: 1 reason: Deprecated status: "False" type: PackageDeprecated - lastTransitionTime: "2024-06-10T17:50:58Z" message: "" observedGeneration: 1 reason: Deprecated status: "False" type: ChannelDeprecated - lastTransitionTime: "2024-06-10T17:50:58Z" message: "" observedGeneration: 1 reason: Deprecated status: "False" type: BundleDeprecated - lastTransitionTime: "2024-06-10T17:50:58Z" message: 'unpack successful: observedGeneration: 1 reason: UnpackSuccess status: "True" type: Unpacked installedBundle: name: openshift-pipelines-operator-rh.v1.14.4 version: 1.14.4 resolvedBundle: name: openshift-pipelines-operator-rh.v1.14.4 version: 1.14.4
다음과 같습니다.
spec.channel
- 확장의 CR에 정의된 채널을 표시합니다.
spec.version
- 확장의 CR에 정의된 버전 또는 버전 범위를 표시합니다.
status.conditions
- 확장의 상태 및 상태에 대한 정보를 표시합니다.
유형: 더 이상 사용되지 않음
다음 중 하나 이상이 더 이상 사용되지 않는지 여부를 표시합니다.
type: PackageDeprecated
- 해결된 패키지가 더 이상 사용되지 않는지 여부를 표시합니다.
type: ChannelDeprecated
- 해결된 채널이 더 이상 사용되지 않는지 여부를 표시합니다.
유형: BundleDeprecated
- 해결된 번들이 더 이상 사용되지 않는지 여부를 표시합니다.
status
필드의False
값은reason: 더 이상 사용되지 않는 조건이 더 이상
사용되지 않음을 나타냅니다.status
필드의True
값은reason: 더 이상 사용되지 않는 조건이 더 이상 사용되지
않음을 나타냅니다.installedBundle.name
- 설치된 번들의 이름을 표시합니다.
installedBundle.version
- 설치된 번들의 버전을 표시합니다.
resolvedBundle.name
- 확인된 번들의 이름을 표시합니다.
resolvedBundle.version
- 해결된 번들의 버전을 표시합니다.
5.1.5. 클러스터 확장 업데이트
CR(사용자 정의 리소스)을 수동으로 편집하고 변경 사항을 적용하여 클러스터 확장 또는 Operator를 업데이트할 수 있습니다.
사전 요구 사항
- 카탈로그가 설치되어 있어야 합니다.
- 카탈로그 파일의 로컬 사본을 다운로드했습니다.
- Operator 또는 확장이 설치되어 있어야 합니다.
-
jq
CLI 툴을 설치했습니다.
프로세스
다음 단계를 완료하여 카탈로그 파일의 로컬 사본에서 채널 및 버전 정보에 대한 패키지를 검사합니다.
다음 명령을 실행하여 선택한 패키지에서 채널 목록을 가져옵니다.
$ jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "<package_name>") | \ .name' /<path>/<catalog_name>.json
예 5.15. 명령 예
$ jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "openshift-pipelines-operator-rh") | \ .name' /home/username/rhoc.json
예 5.16. 출력 예
"latest" "pipelines-1.11" "pipelines-1.12" "pipelines-1.13" "pipelines-1.14"
다음 명령을 실행하여 채널에 게시된 버전 목록을 가져옵니다.
$ jq -s '.[] | select( .package == "<package_name>" ) | \ select( .schema == "olm.channel" ) | \ select( .name == "<channel_name>" ) | .entries | \ .[] | .name' /<path>/<catalog_name>.json
예 5.17. 명령 예
$ jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) | \ select( .schema == "olm.channel" ) | select( .name == "latest" ) | \ .entries | .[] | .name' /home/username/rhoc.json
예 5.18. 출력 예
"openshift-pipelines-operator-rh.v1.11.1" "openshift-pipelines-operator-rh.v1.12.0" "openshift-pipelines-operator-rh.v1.12.1" "openshift-pipelines-operator-rh.v1.12.2" "openshift-pipelines-operator-rh.v1.13.0" "openshift-pipelines-operator-rh.v1.14.1" "openshift-pipelines-operator-rh.v1.14.2" "openshift-pipelines-operator-rh.v1.14.3" "openshift-pipelines-operator-rh.v1.14.4"
다음 명령을 실행하여 Operator 또는 확장의 CR에 지정된 버전 또는 채널을 확인합니다.
$ oc get clusterextension <operator_name> -o yaml
명령 예
$ oc get clusterextension pipelines-operator -o yaml
예 5.19. 출력 예
apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"olm.operatorframework.io/v1alpha1","kind":"ClusterExtension","metadata":{"annotations":{},"name":"pipelines-operator"},"spec":{"channel":"latest","installNamespace":"openshift-operators","packageName":"openshift-pipelines-operator-rh","pollInterval":"30m","version":"\u003c1.12"}} creationTimestamp: "2024-06-11T15:55:37Z" generation: 1 name: pipelines-operator resourceVersion: "69776" uid: 6a11dff3-bfa3-42b8-9e5f-d8babbd6486f spec: channel: latest installNamespace: openshift-operators packageName: openshift-pipelines-operator-rh upgradeConstraintPolicy: Enforce version: <1.12 status: conditions: - lastTransitionTime: "2024-06-11T15:56:09Z" message: installed from "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:e09d37bb1e754db42324fd18c1cb3e7ce77e7b7fcbf4932d0535391579938280" observedGeneration: 1 reason: Success status: "True" type: Installed - lastTransitionTime: "2024-06-11T15:55:50Z" message: resolved to "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:e09d37bb1e754db42324fd18c1cb3e7ce77e7b7fcbf4932d0535391579938280" observedGeneration: 1 reason: Success status: "True" type: Resolved - lastTransitionTime: "2024-06-11T15:55:50Z" message: "" observedGeneration: 1 reason: Deprecated status: "False" type: Deprecated - lastTransitionTime: "2024-06-11T15:55:50Z" message: "" observedGeneration: 1 reason: Deprecated status: "False" type: PackageDeprecated - lastTransitionTime: "2024-06-11T15:55:50Z" message: "" observedGeneration: 1 reason: Deprecated status: "False" type: ChannelDeprecated - lastTransitionTime: "2024-06-11T15:55:50Z" message: "" observedGeneration: 1 reason: Deprecated status: "False" type: BundleDeprecated installedBundle: name: openshift-pipelines-operator-rh.v1.11.1 version: 1.11.1 resolvedBundle: name: openshift-pipelines-operator-rh.v1.11.1 version: 1.11.1
다음 방법 중 하나를 사용하여 CR을 편집합니다.
Operator 또는 확장을
1.12.1
과 같은 특정 버전으로 고정하려면 다음 예와 유사한 CR을 편집합니다.pipelines-operator.yaml
CR의 예apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: name: pipelines-operator spec: packageName: openshift-pipelines-operator-rh installNamespace: <namespace> version: "1.12.1" 1
- 1
- 버전
1.11.1
에서1.12.1
로 업데이트
허용 가능한 업데이트 버전의 범위를 정의하려면 다음 예와 유사한 CR을 편집합니다.
버전 범위가 지정된 CR의 예
apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: name: pipelines-operator spec: packageName: openshift-pipelines-operator-rh installNamespace: <namespace> version: ">1.11.1, <1.13" 1
- 1
- 원하는 버전 범위가 버전
1.11.1
보다 크고1.13
보다 작도록 지정합니다. 자세한 내용은 "버전 범위 지원" 및 "버전 비교 문자열"을 참조하십시오.
채널에서 확인할 수 있는 최신 버전으로 업데이트하려면 다음 예제와 유사한 CR을 편집합니다.
지정된 채널이 있는 CR의 예
apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: name: pipelines-operator spec: packageName: openshift-pipelines-operator-rh installNamespace: <namespace> channel: pipelines-1.13 1
- 1
- 지정된 채널에서 확인할 수 있는 최신 릴리스를 설치합니다. 채널 업데이트가 자동으로 설치됩니다.
채널 및 버전 범위를 지정하려면 다음 예와 유사한 CR을 편집합니다.
지정된 채널 및 버전 범위가 있는 CR의 예
apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: name: pipelines-operator spec: packageName: openshift-pipelines-operator-rh installNamespace: <namespace> channel: latest version: "<1.13"
자세한 내용은 "대상 버전을 지정하는 CR(사용자 정의 리소스) 예"를 참조하십시오.
다음 명령을 실행하여 클러스터에 업데이트를 적용합니다.
$ oc apply -f pipelines-operator.yaml
출력 예
clusterextension.olm.operatorframework.io/pipelines-operator configured
작은 정보다음 명령을 실행하여 CLI에서 CR을 패치하고 적용할 수 있습니다.
$ oc patch clusterextension/pipelines-operator -p \ '{"spec":{"version":"<1.13"}}' \ --type=merge
출력 예
clusterextension.olm.operatorframework.io/pipelines-operator patched
검증
다음 명령을 실행하여 채널 및 버전 업데이트가 적용되었는지 확인합니다.
$ oc get clusterextension pipelines-operator -o yaml
예 5.20. 출력 예
apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"olm.operatorframework.io/v1alpha1","kind":"ClusterExtension","metadata":{"annotations":{},"name":"pipelines-operator"},"spec":{"channel":"latest","installNamespace":"openshift-operators","packageName":"openshift-pipelines-operator-rh","pollInterval":"30m","version":"\u003c1.13"}} creationTimestamp: "2024-06-11T18:23:26Z" generation: 2 name: pipelines-operator resourceVersion: "66310" uid: ce0416ba-13ea-4069-a6c8-e5efcbc47537 spec: channel: latest installNamespace: openshift-operators packageName: openshift-pipelines-operator-rh upgradeConstraintPolicy: Enforce version: <1.13 status: conditions: - lastTransitionTime: "2024-06-11T18:23:33Z" message: resolved to "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:814742c8a7cc7e2662598e114c35c13993a7b423cfe92548124e43ea5d469f82" observedGeneration: 2 reason: Success status: "True" type: Resolved - lastTransitionTime: "2024-06-11T18:23:52Z" message: installed from "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:814742c8a7cc7e2662598e114c35c13993a7b423cfe92548124e43ea5d469f82" observedGeneration: 2 reason: Success status: "True" type: Installed - lastTransitionTime: "2024-06-11T18:23:33Z" message: "" observedGeneration: 2 reason: Deprecated status: "False" type: Deprecated - lastTransitionTime: "2024-06-11T18:23:33Z" message: "" observedGeneration: 2 reason: Deprecated status: "False" type: PackageDeprecated - lastTransitionTime: "2024-06-11T18:23:33Z" message: "" observedGeneration: 2 reason: Deprecated status: "False" type: ChannelDeprecated - lastTransitionTime: "2024-06-11T18:23:33Z" message: "" observedGeneration: 2 reason: Deprecated status: "False" type: BundleDeprecated installedBundle: name: openshift-pipelines-operator-rh.v1.12.2 version: 1.12.2 resolvedBundle: name: openshift-pipelines-operator-rh.v1.12.2 version: 1.12.2
문제 해결
더 이상 사용되지 않거나 존재하지 않는 대상 버전 또는 채널을 지정하는 경우 다음 명령을 실행하여 확장 상태를 확인할 수 있습니다.
$ oc get clusterextension <operator_name> -o yaml
예 5.21. 존재하지 않는 버전의 출력 예
apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"olm.operatorframework.io/v1alpha1","kind":"ClusterExtension","metadata":{"annotations":{},"name":"pipelines-operator"},"spec":{"channel":"latest","installNamespace":"openshift-operators","packageName":"openshift-pipelines-operator-rh","pollInterval":"30m","version":"3.0"}} creationTimestamp: "2024-06-11T18:23:26Z" generation: 3 name: pipelines-operator resourceVersion: "71852" uid: ce0416ba-13ea-4069-a6c8-e5efcbc47537 spec: channel: latest installNamespace: openshift-operators packageName: openshift-pipelines-operator-rh upgradeConstraintPolicy: Enforce version: "3.0" status: conditions: - lastTransitionTime: "2024-06-11T18:29:02Z" message: 'error upgrading from currently installed version "1.12.2": no package "openshift-pipelines-operator-rh" matching version "3.0" found in channel "latest"' observedGeneration: 3 reason: ResolutionFailed status: "False" type: Resolved - lastTransitionTime: "2024-06-11T18:29:02Z" message: installation has not been attempted as resolution failed observedGeneration: 3 reason: InstallationStatusUnknown status: Unknown type: Installed - lastTransitionTime: "2024-06-11T18:29:02Z" message: deprecation checks have not been attempted as resolution failed observedGeneration: 3 reason: Deprecated status: Unknown type: Deprecated - lastTransitionTime: "2024-06-11T18:29:02Z" message: deprecation checks have not been attempted as resolution failed observedGeneration: 3 reason: Deprecated status: Unknown type: PackageDeprecated - lastTransitionTime: "2024-06-11T18:29:02Z" message: deprecation checks have not been attempted as resolution failed observedGeneration: 3 reason: Deprecated status: Unknown type: ChannelDeprecated - lastTransitionTime: "2024-06-11T18:29:02Z" message: deprecation checks have not been attempted as resolution failed observedGeneration: 3 reason: Deprecated status: Unknown type: BundleDeprecated
추가 리소스
5.1.6. Operator 삭제
ClusterExtension
CR(사용자 정의 리소스)을 삭제하여 Operator 및 해당 CRD(사용자 정의 리소스 정의)를 삭제할 수 있습니다.
사전 요구 사항
- 카탈로그가 설치되어 있어야 합니다.
- Operator가 설치되어 있어야 합니다.
프로세스
다음 명령을 실행하여 Operator 및 해당 CRD를 삭제합니다.
$ oc delete clusterextension <operator_name>
출력 예
clusterextension.olm.operatorframework.io "<operator_name>" deleted
검증
다음 명령을 실행하여 Operator 및 해당 리소스가 삭제되었는지 확인합니다.
다음 명령을 실행하여 Operator가 삭제되었는지 확인합니다.
$ oc get clusterextensions
출력 예
No resources found
다음 명령을 실행하여 Operator의 시스템 네임스페이스가 삭제되었는지 확인합니다.
$ oc get ns <operator_name>-system
출력 예
Error from server (NotFound): namespaces "<operator_name>-system" not found