3.4. OpenShift Serverless 제거

클러스터에서 OpenShift Serverless를 제거해야 하는 경우 OpenShift Serverless Operator 및 기타 OpenShift Serverless 구성 요소를 수동으로 제거하여 이를 수행할 수 있습니다. OpenShift Serverless Operator를 제거하려면 먼저 Knative Serving 및 Knative Eventing을 제거해야 합니다.

3.4.1. Knative Serving 설치 제거

OpenShift Serverless Operator를 제거하려면 먼저 Knative Serving을 제거해야 합니다. Knative Serving을 설치 제거하려면 KnativeServing 사용자 정의 리소스(CR)를 제거하고 knative-serving 네임스페이스를 삭제해야 합니다.

사전 요구 사항

  • 클러스터 관리자 액세스 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
  • OpenShift CLI(oc)를 설치합니다.

프로세스

  1. KnativeServing CR을 삭제합니다.

    $ oc delete knativeservings.operator.knative.dev knative-serving -n knative-serving
  2. 명령이 완료되고 knative-serving 네임스페이스에서 모든 Pod가 제거되면 네임스페이스를 삭제합니다.

    $ oc delete namespace knative-serving

3.4.2. Knative Eventing 설치 제거

OpenShift Serverless Operator를 제거하려면 먼저 Knative Eventing을 제거해야 합니다. Knative Eventing을 설치 제거하려면 KnativeEventing 사용자 정의 리소스(CR)를 제거하고 knative-eventing 네임스페이스를 삭제해야 합니다.

사전 요구 사항

  • 클러스터 관리자 액세스 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
  • OpenShift CLI(oc)를 설치합니다.

절차

  1. KnativeEventing CR을 삭제합니다.

    $ oc delete knativeeventings.operator.knative.dev knative-eventing -n knative-eventing
  2. 명령이 완료되고 knative-eventing 네임스페이스에서 모든 Pod가 제거된 후 네임스페이스를 삭제합니다.

    $ oc delete namespace knative-eventing

3.4.3. OpenShift Serverless Operator 제거

Knative Serving 및 Knative Eventing을 제거한 후 OpenShift Serverless Operator를 제거할 수 있습니다. OpenShift Container Platform 웹 콘솔 또는 oc CLI를 사용하여 이 작업을 수행할 수 있습니다.

3.4.3.1. 웹 콘솔을 사용하여 클러스터에서 Operator 삭제

클러스터 관리자는 웹 콘솔을 사용하여 선택한 네임스페이스에서 설치된 Operator를 삭제할 수 있습니다.

사전 요구 사항

  • cluster-admin 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터 웹 콘솔에 액세스할 수 있습니다.

절차

  1. Operator설치된 Operator 페이지에서 스크롤하거나 이름별 필터링에 키워드를 입력하여 원하는 Operator를 찾습니다. 그런 다음 해당 Operator를 클릭합니다.
  2. Operator 세부 정보 페이지 오른쪽에 있는 작업 목록에서 Operator 제거를 선택합니다.

    Operator를 설치 제거하시겠습니까? 대화 상자가 표시되고 다음 메시지가 표시됩니다.

    Operator를 제거해도 사용자 정의 리소스 정의 또는 관리형 리소스는 제거되지 않습니다. Operator에서 클러스터에 애플리케이션을 배포하거나 클러스터 외부 리소스를 구성한 경우 해당 리소스는 계속 실행되며 수동으로 정리해야 합니다.

    이 작업은 Operator 배포 및 Pod(있는 경우)를 제거합니다. CRD 및 CR을 포함하여 Operator에서 관리하는 Operand 및 리소스는 제거되지 않습니다. 웹 콘솔에서는 일부 Operator의 대시보드 및 탐색 항목을 활성화합니다. Operator를 설치 제거한 후 해당 항목을 제거하려면 Operator CRD를 수동으로 삭제해야 할 수 있습니다.

  3. 설치 제거를 선택합니다. 이 Operator는 실행을 중지하고 더 이상 업데이트를 수신하지 않습니다.

3.4.3.2. CLI를 사용하여 클러스터에서 Operator 삭제

클러스터 관리자는 CLI를 사용하여 선택한 네임스페이스에서 설치된 Operator를 삭제할 수 있습니다.

사전 요구 사항

  • cluster-admin 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • oc 명령이 워크스테이션에 설치되어 있습니다.

절차

  1. currentCSV 필드에서 구독한 Operator(예: jaeger)의 현재 버전을 확인합니다.

    $ oc get subscription jaeger -n openshift-operators -o yaml | grep currentCSV

    출력 예

      currentCSV: jaeger-operator.v1.8.2

  2. 서브스크립션을 삭제합니다(예: jaeger).

    $ oc delete subscription jaeger -n openshift-operators

    출력 예

    subscription.operators.coreos.com "jaeger" deleted

  3. 이전 단계의 currentCSV 값을 사용하여 대상 네임스페이스에서 Operator의 CSV를 삭제합니다.

    $ oc delete clusterserviceversion jaeger-operator.v1.8.2 -n openshift-operators

    출력 예

    clusterserviceversion.operators.coreos.com "jaeger-operator.v1.8.2" deleted

3.4.3.3. 실패한 서브스크립션 새로 고침

OLM(Operator Lifecycle Manager)에서는 네트워크상에서 액세스할 수 없는 이미지를 참조하는 Operator를 구독하는 경우 openshift-marketplace 네임스페이스에 다음 오류로 인해 실패하는 작업을 확인할 수 있습니다.

출력 예

ImagePullBackOff for
Back-off pulling image "example.com/openshift4/ose-elasticsearch-operator-bundle@sha256:6d2587129c846ec28d384540322b40b05833e7e00b25cca584e004af9a1d292e"

출력 예

rpc error: code = Unknown desc = error pinging docker registry example.com: Get "https://example.com/v2/": dial tcp: lookup example.com on 10.0.0.1:53: no such host

결과적으로 서브스크립션이 이러한 장애 상태에 고착되어 Operator를 설치하거나 업그레이드할 수 없습니다.

서브스크립션, CSV(클러스터 서비스 버전) 및 기타 관련 오브젝트를 삭제하여 실패한 서브스크립션을 새로 고칠 수 있습니다. 서브스크립션을 다시 생성하면 OLM에서 올바른 버전의 Operator를 다시 설치합니다.

사전 요구 사항

  • 액세스할 수 없는 번들 이미지를 가져올 수 없는 실패한 서브스크립션이 있습니다.
  • 올바른 번들 이미지에 액세스할 수 있는지 확인했습니다.

절차

  1. Operator가 설치된 네임스페이스에서 SubscriptionClusterServiceVersion 오브젝트의 이름을 가져옵니다.

    $ oc get sub,csv -n <namespace>

    출력 예

    NAME                                                       PACKAGE                  SOURCE             CHANNEL
    subscription.operators.coreos.com/elasticsearch-operator   elasticsearch-operator   redhat-operators   5.0
    
    NAME                                                                         DISPLAY                            VERSION    REPLACES   PHASE
    clusterserviceversion.operators.coreos.com/elasticsearch-operator.5.0.0-65   OpenShift Elasticsearch Operator   5.0.0-65              Succeeded

  2. 서브스크립션을 삭제합니다.

    $ oc delete subscription <subscription_name> -n <namespace>
  3. 클러스터 서비스 버전을 삭제합니다.

    $ oc delete csv <csv_name> -n <namespace>
  4. openshift-marketplace 네임스페이스에서 실패한 모든 작업 및 관련 구성 맵의 이름을 가져옵니다.

    $ oc get job,configmap -n openshift-marketplace

    출력 예

    NAME                                                                        COMPLETIONS   DURATION   AGE
    job.batch/1de9443b6324e629ddf31fed0a853a121275806170e34c926d69e53a7fcbccb   1/1           26s        9m30s
    
    NAME                                                                        DATA   AGE
    configmap/1de9443b6324e629ddf31fed0a853a121275806170e34c926d69e53a7fcbccb   3      9m30s

  5. 작업을 삭제합니다.

    $ oc delete job <job_name> -n openshift-marketplace

    이렇게 하면 액세스할 수 없는 이미지를 가져오려는 Pod가 다시 생성되지 않습니다.

  6. 구성 맵을 삭제합니다.

    $ oc delete configmap <configmap_name> -n openshift-marketplace
  7. 웹 콘솔에서 OperatorHub를 사용하여 Operator를 다시 설치합니다.

검증

  • Operator가 제대로 다시 설치되었는지 확인합니다.

    $ oc get sub,csv,installplan -n <namespace>

3.4.4. OpenShift Serverless 사용자 정의 리소스 정의 삭제

OpenShift Serverless를 설치 제거해도 Operator 및 API CRD(사용자 정의 리소스 정의)는 클러스터에 남아 있습니다. 다음 절차를 사용하여 남아 있는 CRD를 제거할 수 있습니다.

중요

Operator 및 API CRD를 제거하면 Knative 서비스를 포함하여 해당 리소스를 사용하여 정의한 모든 리소스도 제거됩니다.

사전 요구 사항

  • 클러스터 관리자 액세스 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
  • Knative Serving을 설치 제거하고 OpenShift Serverless Operator를 제거했습니다.
  • OpenShift CLI(oc)를 설치합니다.

절차

  • 남아 있는 OpenShift Serverless CRD를 삭제하려면 다음 명령을 입력합니다.

    $ oc get crd -oname | grep 'knative.dev' | xargs oc delete