3.2. 네임스페이스에 Operator 설치


클러스터 관리자가 계정에 Operator 설치 권한을 위임한 경우 셀프서비스 방식으로 Operator를 설치하고 네임스페이스에 등록할 수 있습니다.

3.2.1. 사전 요구 사항

3.2.2. OperatorHub를 통한 Operator 설치 정보

OperatorHub는 Operator를 검색하는 사용자 인터페이스입니다. 이는 클러스터에 Operator를 설치하고 관리하는 OLM(Operator Lifecycle Manager)과 함께 작동합니다.

적절한 권한이 있는 사용자는 OpenShift Container Platform 웹 콘솔 또는 CLI를 사용하여 OperatorHub에서 Operator를 설치할 수 있습니다.

설치하는 동안 Operator의 다음 초기 설정을 결정해야합니다.

설치 모드
Operator를 설치할 특정 네임스페이스를 선택합니다.
업데이트 채널
여러 채널을 통해 Operator를 사용할 수있는 경우 구독할 채널을 선택할 수 있습니다. 예를 들어, stable 채널에서 배치하려면 (사용 가능한 경우) 목록에서 해당 채널을 선택합니다.
승인 전략

자동 또는 수동 업데이트를 선택할 수 있습니다.

설치된 Operator에 대해 자동 업데이트를 선택하는 경우 선택한 채널에 해당 Operator의 새 버전이 제공되면 OLM(Operator Lifecycle Manager)에서 Operator의 실행 중인 인스턴스를 개입 없이 자동으로 업그레이드합니다.

수동 업데이트를 선택하면 최신 버전의 Operator가 사용 가능할 때 OLM이 업데이트 요청을 작성합니다. 클러스터 관리자는 Operator를 새 버전으로 업데이트하려면 OLM 업데이트 요청을 수동으로 승인해야 합니다.

3.2.3. 웹 콘솔을 사용하여 OperatorHub에서 설치

OpenShift Container Platform 웹 콘솔을 사용하여 OperatorHub에서 Operator를 설치하고 구독할 수 있습니다.

사전 요구 사항

  • Operator 설치 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.

프로세스

  1. 웹 콘솔에서 Operators OperatorHub 페이지로 이동합니다.
  2. 원하는 Operator를 찾으려면 키워드를 Filter by keyword 상자에 입력하거나 스크롤합니다. 예를 들어 Kubernetes Operator의 고급 클러스터 관리 기능을 찾으려면 advanced를 입력합니다.

    인프라 기능에서 옵션을 필터링할 수 있습니다. 예를 들어, 연결이 끊긴 환경 (제한된 네트워크 환경이라고도 함)에서 작업하는 Operator를 표시하려면 Disconnected를 선택합니다.

  3. Operator를 선택하여 추가 정보를 표시합니다.

    참고

    커뮤니티 Operator를 선택하면 Red Hat이 커뮤니티 Operator를 인증하지 않는다고 경고합니다. 계속하기 전에 경고를 확인해야합니다.

  4. Operator에 대한 정보를 확인하고 Install을 클릭합니다.
  5. Operator 설치 페이지에서 Operator 설치를 구성합니다.

    1. 특정 버전의 Operator를 설치하려면 목록에서 업데이트 채널버전을 선택합니다. 보유할 수 있는 채널에서 다양한 버전의 Operator를 검색하고 해당 채널 및 버전의 메타데이터를 보고 설치할 정확한 버전을 선택할 수 있습니다.

      참고

      버전 선택 기본값은 선택한 채널의 최신 버전입니다. 채널의 최신 버전이 선택되어 있으면 기본적으로 자동 승인 전략이 활성화됩니다. 그렇지 않으면 선택한 채널의 최신 버전을 설치하지 않는 경우 수동 승인이 필요합니다.

      수동 승인을 사용하여 Operator를 설치하면 네임스페이스 내에 설치된 모든 Operator가 수동 승인 전략과 함께 작동하고 모든 Operator가 함께 업데이트됩니다. Operator를 독립적으로 업데이트하려면 Operator를 별도의 네임스페이스에 설치합니다.

    2. Operator를 설치할 특정 단일 네임스페이스를 선택합니다. Operator는 이 단일 네임 스페이스에서만 모니터링 및 사용할 수 있게 됩니다.
    3. 토큰 인증이 활성화된 클라우드 공급자의 클러스터의 경우:

      • 클러스터가 웹 콘솔에서 AWS Security Token Service(TS모드 )를 사용하는 경우 역할 ARN 필드에 서비스 계정의 AWS IAM 역할의 Amazon Resource Name( ARN )을 입력합니다. 역할의 ARN을 생성하려면 AWS 계정 준비에 설명된 절차를 따르십시오.
      • 클러스터에서 Microsoft Entra Workload ID(웹 콘솔에서워크로드 ID / Federated Identity Mode )를 사용하는 경우 적절한 필드에 클라이언트 ID, 테넌트 ID 및 구독 ID를 추가합니다.
      • 클러스터가 Google Cloud Platform Workload Identity(웹 콘솔에서GCP Workload Identity/Federated Identity Mode )를 사용하는 경우 적절한 필드에 프로젝트 번호, 풀 ID, 공급자 ID 및 서비스 계정 이메일을 추가합니다.
    4. 업데이트 승인 의 경우 자동 또는 수동 승인 전략을 선택합니다.

      중요

      웹 콘솔에서 클러스터가 AWS STS, Microsoft Entra Workload ID 또는 GCP Workload Identity를 사용함을 표시하는 경우 업데이트 승인을 Manual 로 설정해야 합니다.

      업데이트에 대한 자동 승인이 있는 서브스크립션은 업데이트하기 전에 권한을 변경할 수 있으므로 권장되지 않습니다. 업데이트에 대한 수동 승인이 있는 서브스크립션을 통해 관리자는 최신 버전의 권한을 확인하고 필요한 단계를 수행한 다음 업데이트할 수 있습니다.

  6. 이 OpenShift Container Platform 클러스터에서 선택한 네임스페이스에서 Operator를 사용할 수 있도록 하려면 설치를 클릭합니다.

    1. 수동 승인 전략을 선택한 경우 설치 계획을 검토하고 승인할 때까지 서브스크립션의 업그레이드 상태가 업그레이드 중으로 유지됩니다.

      Install Plan 페이지에서 승인 한 후 subscription 업그레이드 상태가 Up to date로 이동합니다.

    2. 자동 승인 전략을 선택한 경우 업그레이드 상태가 개입 없이 최신 상태로 확인되어야 합니다.

검증

  • 서브스크립션 업그레이드 상태가 최신이면 Operator 설치된 Operator 를 선택하여 설치된 Operator 의 CSV(클러스터 서비스 버전)가 최종적으로 표시되는지 확인합니다. Status 는 결국 관련 네임스페이스에서 Succeeded 로 확인되어야 합니다.

    참고

    All namespaces…​ 설치 모드의 경우 openshift-operators 네임스페이스에서 상태는 Succeeded 로 확인되지만 다른 네임스페이스에서 확인하는 경우 상태가 복사 됩니다.

    그렇지 않은 경우 다음을 수행합니다.

    • 문제를 보고하는 워크로드 Pod 페이지에서 openshift-operators 프로젝트(또는 A specific namespace…​ 설치 모드가 선택된 경우 기타 관련 네임스페이스)의 Pod 의 로그를 확인하여 문제를 추가로 해결합니다.
  • Operator가 설치되면 메타데이터에서 설치된 채널 및 버전을 나타냅니다.

    참고

    이 카탈로그 컨텍스트에서 채널버전 드롭다운 메뉴를 계속 사용하여 다른 버전 메타데이터를 볼 수 있습니다.

3.2.4. CLI를 사용하여 OperatorHub에서 설치

OpenShift Container Platform 웹 콘솔을 사용하는 대신 CLI를 사용하여 OperatorHub에서 Operator를 설치할 수 있습니다. oc 명령을 사용하여 Subscription 개체를 만들거나 업데이트합니다.

SingleNamespace 설치 모드의 경우 관련 네임스페이스에 적절한 Operator group이 있는지 확인해야 합니다. OperatorGroup 오브젝트로 정의되는 Operator group에서 Operator group과 동일한 네임스페이스에 있는 모든 Operator에 대해 필요한 RBAC 액세스 권한을 생성할 대상 네임스페이스를 선택합니다.

작은 정보

대부분의 경우 SingleNamespace 모드를 선택할 때 OperatorGroupSubscription 오브젝트 생성을 자동으로 처리하는 등 백그라운드에서 작업을 자동화하기 때문에 이 절차의 웹 콘솔 방법이 권장됩니다.

사전 요구 사항

  • Operator 설치 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. OperatorHub에서 클러스터에 사용 가능한 Operator의 목록을 표시합니다.

    $ oc get packagemanifests -n openshift-marketplace

    예 3.1. 출력 예

    NAME                               CATALOG               AGE
    3scale-operator                    Red Hat Operators     91m
    advanced-cluster-management        Red Hat Operators     91m
    amq7-cert-manager                  Red Hat Operators     91m
    # ...
    couchbase-enterprise-certified     Certified Operators   91m
    crunchy-postgres-operator          Certified Operators   91m
    mongodb-enterprise                 Certified Operators   91m
    # ...
    etcd                               Community Operators   91m
    jaeger                             Community Operators   91m
    kubefed                            Community Operators   91m
    # ...

    필요한 Operator의 카탈로그를 기록해 둡니다.

  2. 필요한 Operator를 검사하여 지원되는 설치 모드 및 사용 가능한 채널을 확인합니다.

    $ oc describe packagemanifests <operator_name> -n openshift-marketplace

    예 3.2. 출력 예

    # ...
    Kind:         PackageManifest
    # ...
          Install Modes: 1
            Supported:  true
            Type:       OwnNamespace
            Supported:  true
            Type:       SingleNamespace
            Supported:  false
            Type:       MultiNamespace
            Supported:  true
            Type:       AllNamespaces
    # ...
        Entries:
          Name:       example-operator.v3.7.11
          Version:    3.7.11
          Name:       example-operator.v3.7.10
          Version:    3.7.10
        Name:         stable-3.7 2
    # ...
       Entries:
          Name:         example-operator.v3.8.5
          Version:      3.8.5
          Name:         example-operator.v3.8.4
          Version:      3.8.4
        Name:           stable-3.8 3
      Default Channel:  stable-3.8 4
    1
    지원되는 설치 모드를 나타냅니다.
    2 3
    채널 이름 예.
    4
    하나가 지정되지 않은 경우 기본적으로 선택한 채널입니다.
    작은 정보

    다음 명령을 실행하여 Operator 버전 및 채널 정보를 YAML 형식으로 출력할 수 있습니다.

    $ oc get packagemanifests <operator_name> -n <catalog_namespace> -o yaml
    • 네임스페이스에 두 개 이상의 카탈로그가 설치된 경우 다음 명령을 실행하여 특정 카탈로그에서 사용 가능한 버전 및 Operator 채널을 조회합니다.

      $ oc get packagemanifest \
         --selector=catalog=<catalogsource_name> \
         --field-selector metadata.name=<operator_name> \
         -n <catalog_namespace> -o yaml
      중요

      Operator 카탈로그를 지정하지 않으면 다음 조건이 충족되는 경우 oc get packagemanifestoc describe packagemanifest 명령을 실행하면 예기치 않은 카탈로그에서 패키지를 반환할 수 있습니다.

      • 여러 카탈로그가 동일한 네임스페이스에 설치됩니다.
      • 카탈로그에는 동일한 이름의 Operator 또는 Operator가 포함됩니다.
  3. 설치하려는 Operator가 AllNamespaces 설치 모드를 지원하며 이 모드를 사용하도록 선택한 경우 openshift-operators 네임스페이스에 기본적으로 global-operators 라는 적절한 Operator 그룹이 있으므로 이 단계를 건너뜁니다.

    설치하려는 Operator가 SingleNamespace 설치 모드를 지원하며 이 모드를 사용하도록 선택한 경우 관련 네임스페이스에 적절한 Operator group이 있는지 확인해야 합니다. 존재하지 않는 경우 다음 단계에 따라 생성을 생성할 수 있습니다.

    중요

    네임스페이스당 하나의 Operator 그룹만 있을 수 있습니다. 자세한 내용은 "Operator groups"을 참조하십시오.

    1. SingleNamespace 설치 모드의 경우 OperatorGroup 오브젝트 YAML 파일(예: operatorgroup.yaml )을 생성합니다.

      SingleNamespace 설치 모드의 OperatorGroup 오브젝트의 예

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: <operatorgroup_name>
        namespace: <namespace> 1
      spec:
        targetNamespaces:
        - <namespace> 2

      1 2
      SingleNamespace 설치 모드의 경우 metadata. namespace spec.targetNamespaces 필드 모두에 동일한 <namespace> 값을 사용합니다.
    2. OperatorGroup 개체를 생성합니다.

      $ oc apply -f operatorgroup.yaml
  4. Operator에 네임스페이스를 서브스크립션할 Subscription 오브젝트를 생성합니다.

    1. Subscription 오브젝트에 대한 YAML 파일을 생성합니다(예: subscription.yaml ).

      참고

      특정 버전의 Operator를 구독하려면 startingCSV 필드를 원하는 버전으로 설정하고 이후 버전이 카탈로그에 있는 경우 Operator가 자동으로 업그레이드되지 않도록 installPlanApproval 필드를 Manual 로 설정합니다. 자세한 내용은 다음 "특정 시작 Operator 버전이 있는 서브스크립션 오브젝트 예"를 참조하십시오.

      예 3.3. Subscription 개체 예

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: <subscription_name>
        namespace: <namespace_per_install_mode> 1
      spec:
        channel: <channel_name> 2
        name: <operator_name> 3
        source: <catalog_name> 4
        sourceNamespace: <catalog_source_namespace> 5
        config:
          env: 6
          - name: ARGS
            value: "-v=10"
          envFrom: 7
          - secretRef:
              name: license-secret
          volumes: 8
          - name: <volume_name>
            configMap:
              name: <configmap_name>
          volumeMounts: 9
          - mountPath: <directory_name>
            name: <volume_name>
          tolerations: 10
          - operator: "Exists"
          resources: 11
            requests:
              memory: "64Mi"
              cpu: "250m"
            limits:
              memory: "128Mi"
              cpu: "500m"
          nodeSelector: 12
            foo: bar
      1
      기본 AllNamespaces 설치 모드 사용량의 경우 openshift-operators 네임스페이스를 지정합니다. 또는 사용자 지정 글로벌 네임스페이스를 생성한 경우 지정할 수 있습니다. SingleNamespace 설치 모드 사용의 경우 관련 단일 네임스페이스를 지정합니다.
      2
      등록할 채널의 이름입니다.
      3
      등록할 Operator의 이름입니다.
      4
      Operator를 제공하는 카탈로그 소스의 이름입니다.
      5
      카탈로그 소스의 네임스페이스입니다. 기본 OperatorHub 카탈로그 소스에는 openshift-marketplace를 사용합니다.
      6
      env 매개변수는 OLM에서 생성한 Pod의 모든 컨테이너에 있어야 하는 환경 변수 목록을 정의합니다.
      7
      envFrom 매개 변수는 컨테이너에서 환경 변수를 채울 소스 목록을 정의합니다.
      8
      volumes 매개변수는 OLM에서 생성한 Pod에 있어야 하는 볼륨 목록을 정의합니다.
      9
      volumeMounts 매개변수는 OLM에서 생성한 Pod의 모든 컨테이너에 있어야 하는 볼륨 마운트 목록을 정의합니다. volumeMount가 존재하지 않는 볼륨을 참조하는 경우 OLM에서 Operator를 배포하지 못합니다.
      10
      tolerations 매개변수는 OLM에서 생성한 Pod의 허용 오차 목록을 정의합니다.
      11
      resources 매개변수는 OLM에서 생성한 Pod의 모든 컨테이너에 대한 리소스 제약 조건을 정의합니다.
      12
      nodeSelector 매개변수는 OLM에서 생성한 Pod에 대한 NodeSelector 를 정의합니다.

      예 3.4. 특정 시작 Operator 버전이 있는 Subscription 오브젝트의 예

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: example-operator
        namespace: example-operator
      spec:
        channel: stable-3.7
        installPlanApproval: Manual 1
        name: example-operator
        source: custom-operators
        sourceNamespace: openshift-marketplace
        startingCSV: example-operator.v3.7.10 2
      1
      지정된 버전이 카탈로그의 이후 버전으로 대체될 경우 승인 전략을 Manual로 설정합니다. 이 계획에서는 이후 버전으로 자동 업그레이드할 수 없으므로 시작 CSV에서 설치를 완료하려면 수동 승인이 필요합니다.
      2
      Operator CSV의 특정 버전을 설정합니다.
    2. AWS(Amazon Web Services) Security Token Service(STS), Microsoft Entra Workload ID 또는 Google Cloud Platform Workload Identity와 같이 토큰 인증이 활성화된 클라우드 공급자의 클러스터의 경우 다음 단계를 수행하여 서브스크립션 오브젝트를 구성합니다.

      1. Subscription 오브젝트가 수동 업데이트 승인으로 설정되어 있는지 확인합니다.

        예 3.5. 수동 업데이트 승인이 있는 Subscription 오브젝트의 예

        kind: Subscription
        # ...
        spec:
          installPlanApproval: Manual 1
        1
        업데이트에 대한 자동 승인이 있는 서브스크립션은 업데이트하기 전에 권한을 변경할 수 있으므로 권장되지 않습니다. 업데이트에 대한 수동 승인이 있는 서브스크립션을 통해 관리자는 최신 버전의 권한을 확인하고 필요한 단계를 수행한 다음 업데이트할 수 있습니다.
      2. Subscription 오브젝트의 config 섹션에 관련 클라우드 공급자별 필드를 포함합니다.

        • 클러스터가 AWS STS 모드에 있는 경우 다음 필드를 포함합니다.

          예 3.6. AWS STS 변수가 있는 Subscription 오브젝트의 예

          kind: Subscription
          # ...
          spec:
            config:
              env:
              - name: ROLEARN
                value: "<role_arn>" 1
          1
          역할 ARN 세부 정보를 포함합니다.
        • 클러스터가 Workload ID 모드에 있는 경우 다음 필드를 포함합니다.

          예 3.7. Workload ID 변수가 있는 Subscription 오브젝트의 예

          kind: Subscription
          # ...
          spec:
           config:
             env:
             - name: CLIENTID
               value: "<client_id>" 1
             - name: TENANTID
               value: "<tenant_id>" 2
             - name: SUBSCRIPTIONID
               value: "<subscription_id>" 3
          1
          클라이언트 ID를 포함합니다.
          2
          테넌트 ID를 포함합니다.
          3
          서브스크립션 ID를 포함합니다.
        • 클러스터가 GCP Workload Identity 모드에 있는 경우 다음 필드를 포함합니다.

          예 3.8. GCP 워크로드 ID 변수가 있는 Subscription 오브젝트의 예

          kind: Subscription
          # ...
          spec:
           config:
             env:
             - name: AUDIENCE
               value: "<audience_url>" 1
             - name: SERVICE_ACCOUNT_EMAIL
               value: "<service_account_email>" 2

          다음과 같습니다.

          <audience>

          GCP Workload Identity를 설정할 때 관리자가 GCP에서 생성한 AUDIENCE 값은 다음 형식의 사전 형식의 URL이어야 합니다.

          //iam.googleapis.com/projects/<project_number>/locations/global/workloadIdentityPools/<pool_id>/providers/<provider_id>
          <service_account_email>

          SERVICE_ACCOUNT_EMAIL 값은 Operator 작업 중에 가장하는 GCP 서비스 계정 이메일입니다. 예를 들면 다음과 같습니다.

          <service_account_name>@<project_id>.iam.gserviceaccount.com
    3. 다음 명령을 실행하여 Subscription 오브젝트를 생성합니다.

      $ oc apply -f subscription.yaml
  5. installPlanApproval 필드를 Manual 로 설정하는 경우 보류 중인 설치 계획을 수동으로 승인하여 Operator 설치를 완료합니다. 자세한 내용은 "Manually approving a pending Operator update"를 참조하십시오.

이 시점에서 OLM은 이제 선택한 Operator를 인식합니다. Operator의 CSV(클러스터 서비스 버전)가 대상 네임스페이스에 표시되고 Operator에서 제공하는 API를 생성에 사용할 수 있어야 합니다.

검증

  1. 다음 명령을 실행하여 설치된 Operator의 Subscription 오브젝트의 상태를 확인합니다.

    $ oc describe subscription <subscription_name> -n <namespace>
  2. SingleNamespace 설치 모드에 대한 Operator group을 생성한 경우 다음 명령을 실행하여 OperatorGroup 오브젝트의 상태를 확인합니다.

    $ oc describe operatorgroup <operatorgroup_name> -n <namespace>

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.