28.3. Network Observability Operator 설치

Loki를 설치하는 것은 Network Observability Operator를 사용하기 위한 사전 요구 사항입니다. Loki Operator를 사용하여 Loki를 설치하는 것이 좋습니다. 따라서 이러한 단계는 Network Observability Operator 설치 전에 아래에 설명되어 있습니다.

Loki Operator는 데이터 흐름 스토리지를 위해 Loki와 멀티 테넌시 및 인증을 구현하는 게이트웨이를 통합합니다. LokiStack 리소스는 확장 가능하고 가용성이 높은 다중 테넌트 로그 집계 시스템 및 OpenShift Container Platform 인증을 사용하는 웹 프록시인 Loki 를 관리합니다. LokiStack 프록시는 OpenShift Container Platform 인증을 사용하여 멀티 테넌시를 적용하고 Loki 로그 저장소에서 데이터 저장 및 인덱싱을 용이하게 합니다.

참고

Loki Operator는 LokiStack을 사용하여 로깅 에 사용할 수도 있습니다. Network Observability Operator에는 로깅과 별도로 전용 LokiStack이 필요합니다.

28.3.1. Loki Operator 설치

Loki Operator 버전 5.7 을 설치하는 것이 좋습니다. 이 버전은 openshift-network 테넌트 구성 모드를 사용하여 LokiStack 인스턴스를 생성하는 기능을 제공합니다. 또한 네트워크 Observability에 대한 완전 자동 클러스터 내 인증 및 권한 부여 지원을 제공합니다.

사전 요구 사항

  • 지원되는 Log Store (AWS S3, Google Cloud Storage, Azure, Swift, Minio, OpenShift Data Foundation)
  • OpenShift Container Platform 4.10 이상.
  • Linux Kernel 4.18+.

Loki를 설치하는 방법은 여러 가지가 있습니다. Loki Operator를 설치하는 한 가지 방법은 OpenShift Container Platform 웹 콘솔 Operator Hub를 사용하는 것입니다.

절차

  1. Loki Operator 를 설치합니다.

    1. OpenShift Container Platform 웹 콘솔에서 OperatorOperatorHub를 클릭합니다.
    2. 사용 가능한 Operator 목록에서 Loki Operator 를 선택하고 설치를 클릭합니다.
    3. 설치 모드에서 클러스터의 모든 네임스페이스를 선택합니다.
    4. Loki Operator를 설치했는지 확인합니다. Operator → 설치된 Operator 페이지를 방문하여 Loki Operator 를 찾습니다.
    5. Loki Operator 가 모든 프로젝트에 Succeeded 로 나열되어 있는지 확인합니다.
  2. Secret YAML 파일을 생성합니다. 웹 콘솔 또는 CLI에서 이 시크릿을 생성할 수 있습니다.

    1. 웹 콘솔을 사용하여 프로젝트 → 모든 프로젝트 드롭다운으로 이동하여 프로젝트 생성 을 선택합니다. 프로젝트 이름을 netobserv 로 지정하고 생성 을 클릭합니다.
    2. 오른쪽 상단에 있는 Import(가져오기) 아이콘 (+ )으로 이동합니다. YAML 파일을 편집기에 놓습니다. access_key_idaccess_key_secret 을 사용하여 인증 정보를 지정하는 netobserv 네임스페이스에 이 YAML 파일을 생성하는 것이 중요합니다.
    3. 시크릿을 생성하면 웹 콘솔에 워크로드 → 시크릿 아래에 표시되어야 합니다.

      다음은 시크릿 YAML 파일의 예를 보여줍니다.

apiVersion: v1
kind: Secret
metadata:
  name: loki-s3
  namespace: netobserv
stringData:
  access_key_id: QUtJQUlPU0ZPRE5ON0VYQU1QTEUK
  access_key_secret: d0phbHJYVXRuRkVNSS9LN01ERU5HL2JQeFJmaUNZRVhBTVBMRUtFWQo=
  bucketnames: s3-bucket-name
  endpoint: https://s3.eu-central-1.amazonaws.com
  region: eu-central-1
중요

Loki를 설치 제거하려면 Loki를 설치하는 데 사용한 방법과 일치하는 제거 프로세스를 참조하십시오. 나머지 ClusterRolesClusterRoleBindings, 오브젝트 저장소에 저장된 데이터 및 제거해야 하는 영구 볼륨이 있을 수 있습니다.

28.3.1.1. LokiStack 사용자 정의 리소스 생성

FlowCollector 사양인 spec.namespace 에서 참조하는 동일한 네임스페이스에 LokiStack을 배포하는 것이 좋습니다. 웹 콘솔 또는 CLI를 사용하여 네임스페이스 또는 새 프로젝트를 생성할 수 있습니다.

절차

  1. Operator → 설치된 Operator 로 이동하여 프로젝트 드롭다운에서 모든 프로젝트를 확인합니다.
  2. Loki Operator 를 찾습니다. 세부 정보에서 제공된 API에서 LokiStack 을 선택합니다.
  3. 다음 필드가 양식 보기 또는 YAML 보기에 지정되었는지 확인합니다.

      apiVersion: loki.grafana.com/v1
      kind: LokiStack
      metadata:
        name: loki
        namespace: netobserv
      spec:
        size: 1x.small
        storage:
          schemas:
          - version: v12
            effectiveDate: '2022-06-01'
          secret:
            name: loki-s3
            type: s3
        storageClassName: gp3  1
        tenants:
          mode: openshift-network
    1
    ReadWriteOnce 액세스 모드에서 클러스터에서 사용할 수 있는 스토리지 클래스 이름을 사용합니다. oc get storageclasses 를 사용하여 클러스터에서 사용 가능한 항목을 확인할 수 있습니다.
    중요

    클러스터 로깅에 사용되는 동일한 LokiStack을 재사용해서는 안 됩니다.

  4. 생성을 클릭합니다.
28.3.1.1.1.

참고

표 28.1.

 1x.extra-small1x.small1x.medium

2TB/day

없음

2

3

7.5Gi

63Gi

139Gi

150Gi

300Gi

450Gi

28.3.1.2.

spec:
  limits:
    global:
      ingestion:
        ingestionBurstSize: 40
        ingestionRate: 20
        maxGlobalStreamsPerTenant: 25000
      queries:
        maxChunksPerQuery: 2000000
        maxEntriesLimitPerQuery: 10000
        maxQuerySeries: 3000

28.3.2.

절차

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: netobserv-reader    1
rules:
- apiGroups:
  - 'loki.grafana.com'
  resources:
  - network
  resourceNames:
  - logs
  verbs:
  - 'get'

1

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: netobserv-writer
rules:
- apiGroups:
  - 'loki.grafana.com'
  resources:
  - network
  resourceNames:
  - logs
  verbs:
  - 'create'

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: netobserv-writer-flp
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: netobserv-writer
subjects:
- kind: ServiceAccount
  name: flowlogs-pipeline    1
  namespace: netobserv
- kind: ServiceAccount
  name: flowlogs-pipeline-transformer
  namespace: netobserv

1

28.3.3.

사전 요구 사항

  • FlowCollector spec.loki.authToken 구성을 FORWARD 로 설정해야 합니다.

절차

  1. 다음 명령을 실행하여 user1 에 읽기 권한을 부여합니다.

    $ oc adm policy add-cluster-role-to-user netobserv-reader user1

    이제 데이터는 허용된 사용자 네임스페이스로 제한됩니다. 예를 들어 단일 네임스페이스에 액세스할 수 있는 사용자는 이 네임스페이스 내부 및 이 네임스페이스로 이동하는 모든 흐름을 볼 수 있습니다. 프로젝트 관리자는 OpenShift Container Platform 콘솔의 관리자 화면에 액세스하여 네트워크 흐름 트래픽 페이지에 액세스할 수 있습니다.

28.3.4. Kafka 설치 (선택 사항)

Kafka Operator는 대규모 환경에서 지원됩니다. Loki Operator 및 Network Observability Operator가 설치된 것처럼 Operator Hub에서 Kafka Operator를 Red Hat AMQ Streams 로 설치할 수 있습니다.

참고

Kafka를 설치 제거하려면 설치하는 데 사용한 방법과 일치하는 제거 프로세스를 참조하십시오.

28.3.5. Network Observability Operator 설치

OpenShift Container Platform 웹 콘솔 Operator Hub를 사용하여 Network Observability Operator를 설치할 수 있습니다. Operator를 설치할 때 FlowCollector CRD(사용자 정의 리소스 정의)를 제공합니다. FlowCollector 를 만들 때 웹 콘솔에서 사양을 설정할 수 있습니다.

사전 요구 사항

  • 설치된 Loki입니다. Loki Operator 버전 5.7을 사용하여 Loki 를 설치하는 것이 좋습니다.
  • 지원되는 아키텍처 중 하나는 amd64,ppc64 le,arm64 또는 s390x 입니다.
  • Red Hat Enterprise Linux (RHEL) 9에서 지원하는 모든 CPU
참고

이 문서에서는 LokiStack 인스턴스 이름이 loki 라고 가정합니다. 다른 이름을 사용하려면 추가 구성이 필요합니다.

절차

  1. OpenShift Container Platform 웹 콘솔에서 OperatorOperatorHub를 클릭합니다.
  2. OperatorHub 의 사용 가능한 Operator 목록에서 Network Observability Operator 를 선택하고 설치를 클릭합니다.
  3. 이 네임스페이스에서 Operator 권장 클러스터 모니터링 활성화 확인란을 선택합니다.
  4. Operators설치된 Operator로 이동합니다. 네트워크 관찰성을 위한 제공된 API에서 흐름 수집기 링크를 선택합니다.

    1. Flow Collector 탭으로 이동하여 FlowCollector 만들기 를 클릭합니다. 폼 보기에서 다음 항목을 선택합니다.

      • spec.agent.ebpf.Sampling : 흐름에 대한 샘플링 크기를 지정합니다. 샘플링 크기가 줄어들면 리소스 사용률에 더 큰 영향을 미칩니다. 자세한 내용은 spec.agent.ebpf 아래의 FlowCollector API 참조를 참조하십시오.
      • spec.deploymentModel: Kafka를 사용하는 경우 Kafka가 선택되어 있는지 확인합니다.
      • spec.exporters: Kafka를 사용하는 경우 Splunk, Elasticsearch 또는 Fluentd와 같은 Kafka 입력을 지원하는 프로세서 또는 스토리지에서 사용할 수 있도록 선택적으로 네트워크 흐름을 Kafka로 보낼 수 있습니다. 이렇게 하려면 다음 사양을 설정합니다.

        • 유형을 KAFKA 로 설정합니다.
        • 주소를 kafka-cluster-kafka-bootstrap.netobserv 로 설정합니다.
        • 주제를 netobserv-flows-export 로 설정합니다. Operator는 모든 흐름을 구성된 Kafka 주제로 내보냅니다.
        • 다음 tls 사양을 설정합니다.

          • 인증서 파일:service-ca.crt,name:kafka-gateway-ca-bundle, 유형:configmap.

            YAML을 직접 편집하여 나중에 이 옵션을 구성할 수도 있습니다. 자세한 내용은 네트워크 흐름 데이터 내보내기 를 참조하십시오.

      • url: 인증이 별도로 지정되어 있으므로 이 URL을 https://loki-gateway-http.netobserv.svc:8080/api/logs/v1/network 로 업데이트해야 합니다. URL의 첫 번째 부분인 "loki"는 해당 스택의 이름과 일치해야 합니다.
      • .statusUrl: 이 값을 https://loki-query-frontend-http.netobserv.svc:3100/ 로 설정합니다. URL의 첫 번째 부분인 "loki"는 해당 스택의 이름과 일치해야 합니다.
      • iPXE.authToken: FORWARD 값을 선택합니다.
      • TLS.enable: 상자가 활성화되어 있는지 확인합니다.
      • statusTls: enable 값은 기본적으로 false입니다.

        인증서 참조 이름의 첫 번째 부분인 loki-gateway-ca-bundle,loki-ca-bundle, loki-query-frontend-http,loki, loki stack의 이름과 일치해야 합니다.

    2. 생성을 클릭합니다.

검증

이 작업이 성공했는지 확인하려면 Observe 로 이동할 때 옵션에 네트워크 트래픽 목록이 표시되어야 합니다.

OpenShift Container Platform 클러스터 내에 애플리케이션 트래픽이 없으면 기본 필터에 "결과 없음"이 표시되어 시각적 흐름이 발생하지 않습니다. 필터 선택 항목 옆에 있는 모든 필터 지우기 를 선택하여 흐름을 확인합니다.

중요

iPXE Operator를 사용하여 설치한 경우 콘솔 액세스를 중단할 수 있으므로 querierUrl 을 사용하지 않는 것이 좋습니다. 다른 유형의 installation을 사용하여 ScanSetting을 설치한 경우 이는 적용되지 않습니다.

추가 리소스

28.3.6. Network Observability Operator 설치 제거

Operator → 설치된 Operator 영역에서 작업하는 OpenShift Container Platform 웹 콘솔 Operator Hub를 사용하여 Network Observability Operator를 설치 제거할 수 있습니다.

절차

  1. FlowCollector 사용자 지정 리소스를 제거합니다.

    1. 제공된 API 열에서 Network Observability Operator 옆에 있는 흐름 수집기 클릭합니다.
    2. 클러스터에 대한 옵션 메뉴 kebab 를 클릭하고 FlowCollector 삭제 를 선택합니다.
  2. Network Observability Operator를 설치 제거합니다.

    1. Operator → 설치된 Operator 영역으로 다시 이동합니다.
    2. Network Observability Operator 옆에 있는 옵션 메뉴 kebab 를 클릭하고 Operator 설치 제거를 선택합니다.
    3. 프로젝트openshift-netobserv-operator를 선택합니다.
    4. Actions 로 이동하여 Delete Project를 선택합니다.
  3. FlowCollector CRD(사용자 정의 리소스 정의)를 제거합니다.

    1. AdministrationCustomResourceDefinitions 로 이동합니다.
    2. FlowCollector 를 찾아 kebab 옵션 메뉴를 클릭합니다.
    3. Delete CustomResourceDefinition 을 선택합니다.

      중요

      CloudEvent Operator 및 Kafka는 설치된 경우에도 남아 있으며 별도로 제거해야 합니다. 또한 오브젝트 저장소에 남아 있는 데이터와 제거해야 하는 영구 볼륨이 있을 수 있습니다.