3.3. CLI를 사용하여 Red Hat OpenShift의 로깅 하위 시스템 설치
OpenShift Container Platform CLI를 사용하여 OpenShift Elasticsearch Operator 및 Red Hat OpenShift Logging Operator를 설치할 수 있습니다.
사전 요구 사항
Elasticsearch에 필요한 영구 스토리지가 있는지 확인합니다. 각 Elasticsearch 노드에는 자체 스토리지 볼륨이 필요합니다.
참고영구 스토리지에 로컬 볼륨을 사용하는 경우
LocalVolume
개체에서volumeMode: block
에 설명된 원시 블록 볼륨을 사용하지 마십시오. Elasticsearch는 원시 블록 볼륨을 사용할 수 없습니다.Elasticsearch는 메모리를 많이 사용하는 애플리케이션입니다. 기본적으로 OpenShift Container Platform은 메모리 요청 및 제한이 16GB인 3 개의 Elasticsearch 노드를 설치합니다. 이 초기 3개의 OpenShift Container Platform 노드 세트에는 클러스터 내에서 Elasticsearch를 실행하기에 충분한 메모리가 없을 수 있습니다. Elasticsearch와 관련된 메모리 문제가 발생하는 경우 기존 노드의 메모리를 늘리는 대신 클러스터에 Elasticsearch 노드를 더 추가합니다.
프로세스
CLI를 사용하여 OpenShift Elasticsearch Operator 및 Red Hat OpenShift Logging Operator를 설치하려면 다음을 수행합니다.
OpenShift Elasticsearch Operator의 네임스페이스를 생성합니다.
OpenShift Elasticsearch Operator를 위한 네임스페이스 오브젝트 YAML 파일(예:
eo-namespace.yaml
)을 생성합니다.apiVersion: v1 kind: Namespace metadata: name: openshift-operators-redhat 1 annotations: openshift.io/node-selector: "" labels: openshift.io/cluster-monitoring: "true" 2
- 1
openshift-operators-redhat
네임스페이스를 지정해야 합니다. 지표의 충돌을 방지하려면openshift-operators
네임스페이스가 아니라openshift-operators-redhat
네임스페이스에서 지표를 스크랩하도록 Prometheus 클러스터 모니터링 스택을 구성해야 합니다.openshift-operators
네임스페이스에 신뢰할 수 없는 Community Operator가 포함될 수 있고, 여기에서 OpenShift Container Platform 지표와 동일한 이름의 지표를 게시하면 충돌이 발생합니다.- 2
- 문자열. 클러스터 모니터링이
openshift-operators-redhat
네임스페이스를 스크랩하도록 하려면 표시된 이 레이블을 지정해야 합니다.
네임스페이스를 생성합니다.
$ oc create -f <file-name>.yaml
예를 들면 다음과 같습니다.
$ oc create -f eo-namespace.yaml
Red Hat OpenShift Logging Operator의 네임스페이스를 생성합니다.
Red Hat OpenShift Logging Operator를 위한 네임스페이스 오브젝트 YAML 파일(예:
olo-namespace.yaml
)을 생성합니다.apiVersion: v1 kind: Namespace metadata: name: openshift-logging annotations: openshift.io/node-selector: "" labels: openshift.io/cluster-monitoring: "true"
네임스페이스를 생성합니다.
$ oc create -f <file-name>.yaml
예를 들면 다음과 같습니다.
$ oc create -f olo-namespace.yaml
다음 오브젝트를 생성하여 OpenShift Elasticsearch Operator를 설치합니다.
OpenShift Elasticsearch Operator를 위한 Operator 그룹 오브젝트 YAML 파일(예:
eo-og.yaml
)을 생성합니다.apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-operators-redhat namespace: openshift-operators-redhat 1 spec: {}
- 1
openshift-operators-redhat
네임스페이스를 지정해야 합니다.
Operator 그룹 오브젝트를 생성합니다.
$ oc create -f <file-name>.yaml
예를 들면 다음과 같습니다.
$ oc create -f eo-og.yaml
서브스크립션 오브젝트 YAML 파일(예:
eo-sub.yaml
)을 생성하여 네임스페이스에서 OpenShift Elasticsearch Operator를 서브스크립션합니다.서브스크립션의 예
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: "elasticsearch-operator" namespace: "openshift-operators-redhat" 1 spec: channel: "stable-5.1" 2 installPlanApproval: "Automatic" 3 source: "redhat-operators" 4 sourceNamespace: "openshift-marketplace" name: "elasticsearch-operator"
- 1
openshift-operators-redhat
네임스페이스를 지정해야 합니다.- 2
- 다음 참고 사항을 참조하십시오.
- 3
자동
을 사용하면 새 버전이 사용 가능할 때 OLM(Operator Lifecycle Manager)이 자동으로 Operator를 업데이트할 수 있습니다. Operator 업데이트를 승인하려면 적절한 인증 정보를 가진 사용자가수동
이 필요합니다.- 4
redhat-operators
를 지정합니다. OpenShift Container Platform 클러스터가 제한된 네트워크(연결이 끊긴 클러스터)에 설치된 경우 OLM(Operator Lifecycle Manager)을 구성할 때 생성된 CatalogSource 오브젝트의 이름을 지정합니다.
참고stable
을 지정하면 안정적인 최신 릴리스의 현재 버전이 설치됩니다.installPlanApproval: "Automatic"
과 함께stable
을 사용하면 Operator가 안정적인 최신 메이저 및 마이너 릴리스로 자동 업그레이드됩니다.stable-5.<x>
를 지정하면 특정 주요 릴리스의 현재 마이너 버전이 설치됩니다.installPlanApproval: "Automatic"
과 함께stable-5.<x>
를 사용하면x
로 지정하는 주요 릴리스 내에서 Operator를 안정적인 최신 마이너 릴리스로 자동 업그레이드합니다.서브스크립션 오브젝트를 생성합니다.
$ oc create -f <file-name>.yaml
예를 들면 다음과 같습니다.
$ oc create -f eo-sub.yaml
OpenShift Elasticsearch Operator는
openshift-operators-redhat
네임스페이스에 설치되고 클러스터의 각 프로젝트에 복사됩니다.Operator 설치를 확인합니다.
$ oc get csv --all-namespaces
출력 예
NAMESPACE NAME DISPLAY VERSION REPLACES PHASE default elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded kube-node-lease elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded kube-public elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded kube-system elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded openshift-apiserver-operator elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded openshift-apiserver elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded openshift-authentication-operator elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded openshift-authentication elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded ...
각 네임스페이스에 OpenShift Elasticsearch Operator가 있어야 합니다. 버전 번호가 표시된 것과 다를 수 있습니다.
다음 오브젝트를 생성하여 Red Hat OpenShift Logging Operator를 설치합니다.
Red Hat OpenShift Logging Operator를 위한 OperatorGroup 오브젝트 YAML 파일(예:
olo-og.yaml
)을 생성합니다.apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: cluster-logging namespace: openshift-logging 1 spec: targetNamespaces: - openshift-logging 2
OperatorGroup 개체를 생성합니다.
$ oc create -f <file-name>.yaml
예를 들면 다음과 같습니다.
$ oc create -f olo-og.yaml
서브스크립션 오브젝트 YAML 파일(예:
olo-sub.yaml
)을 생성하여 네임스페이스에서 Red Hat OpenShift Logging Operator를 서브스크립션합니다.apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: cluster-logging namespace: openshift-logging 1 spec: channel: "stable" 2 name: cluster-logging source: redhat-operators 3 sourceNamespace: openshift-marketplace
$ oc create -f <file-name>.yaml
예를 들면 다음과 같습니다.
$ oc create -f olo-sub.yaml
Red Hat OpenShift Logging Operator는
openshift-logging
네임스페이스에 설치됩니다.Operator 설치를 확인합니다.
openshift-logging
네임스페이스에 Red Hat OpenShift Logging Operator가 있어야 합니다. 버전 번호가 표시된 것과 다를 수 있습니다.$ oc get csv -n openshift-logging
출력 예
NAMESPACE NAME DISPLAY VERSION REPLACES PHASE ... openshift-logging clusterlogging.5.1.0-202007012112.p0 OpenShift Logging 5.1.0-202007012112.p0 Succeeded ...
OpenShift Logging 인스턴스를 생성합니다.
Red Hat OpenShift Logging Operator를 위한 인스턴스 오브젝트 YAML 파일(예:
olo-instance.yaml
)을 생성합니다.참고이 기본 OpenShift Logging 구성은 다양한 환경을 지원해야 합니다. OpenShift Logging 클러스터에 수행할 수 있는 수정 사항에 대한 정보는 로깅 하위 시스템 구성 요소 튜닝 및 구성 주제를 검토하십시오.
apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" 1 namespace: "openshift-logging" spec: managementState: "Managed" 2 logStore: type: "elasticsearch" 3 retentionPolicy: 4 application: maxAge: 1d infra: maxAge: 7d audit: maxAge: 7d elasticsearch: nodeCount: 3 5 storage: storageClassName: "<storage-class-name>" 6 size: 200G resources: 7 limits: memory: "16Gi" requests: memory: "16Gi" proxy: 8 resources: limits: memory: 256Mi requests: memory: 256Mi redundancyPolicy: "SingleRedundancy" visualization: type: "kibana" 9 kibana: replicas: 1 collection: logs: type: "fluentd" 10 fluentd: {}
- 1
- 이름은
instance
이어야 합니다. - 2
- OpenShift Logging 관리 상태입니다. 경우에 따라 OpenShift Logging 기본값을 변경하는 경우 이를
Unmanaged
로 설정해야 합니다. 그러나 관리되지 않는 배포는 OpenShift Logging이 다시 Managed 상태로 될 때까지 업데이트를 받지 않습니다. 배포를 다시 Managed 상태로 설정하면 수정한 내용이 취소될 수 있습니다. - 3
- Elasticsearch 구성을 위한 설정입니다. CR(사용자 정의 리소스)을 사용하여 shard 복제 정책 및 영구 스토리지를 구성할 수 있습니다.
- 4
- Elasticsearch가 각 로그 소스를 유지해야 하는 시간을 지정합니다. 정수 및 시간 지정을 입력합니다(주(w), 시간(h/H), 분(m) 및 초(s)). 예를 들어 7일은
7d
입니다.maxAge
보다 오래된 로그는 삭제됩니다. 각 로그 소스에 대한 보존 정책을 지정해야 합니다. 그렇지 않으면 해당 소스에 대해 Elasticsearch 인덱스가 생성되지 않습니다. - 5
- Elasticsearch 노드 수를 지정합니다. 이 목록 뒤에 나오는 참고 사항을 참조하십시오.
- 6
- Elasticsearch 스토리지의 기존 스토리지 클래스 이름을 입력합니다. 최상의 성능을 위해서는 블록 스토리지를 할당하는 스토리지 클래스를 지정합니다. 스토리지 클래스를 지정하지 않으면 OpenShift Container Platform은 임시 스토리지로만 OpenShift Logging을 배포합니다.
- 7
- 필요에 따라 Elasticsearch에 대한 CPU 및 메모리 요청을 지정합니다. 이러한 값을 비워 두면 OpenShift Elasticsearch Operator는 대부분의 배포에 충분한 기본값을 설정합니다. 기본값은 메모리 요청 시
16Gi
이고 CPU 요청 시1
입니다. - 8
- 필요에 따라 Elasticsearch 프록시에 대한 CPU 및 메모리 요청을 지정합니다. 이 값을 비워 두면 OpenShift Elasticsearch Operator가 대부분의 배포에 충분한 기본값으로 설정합니다. 기본값은 메모리 요청 시
256Mi
이고 CPU 요청 시100m
입니다. - 9
- Kibana 구성을 위한 설정입니다. CR을 사용하여 중복성을 위해 Kibana를 확장하고 Kibana 노드의 CPU 및 메모리를 구성할 수 있습니다. 자세한 내용은 로그 시각화 프로그램 구성을 참조하십시오.
- 10
- Fluentd 구성을 위한 설정입니다. CR을 사용하여 Fluentd CPU 및 메모리 제한을 구성할 수 있습니다. 자세한 내용은 Fluentd 구성을 참조하십시오.
참고Elasticsearch 컨트롤 플레인 노드의 최대 수는 3입니다.
3
보다 큰nodeCount
를 지정하면 OpenShift Container Platform은 마스터, 클라이언트 및 데이터 역할을 가진 마스터 적격 노드인 Elasticsearch 노드 3개를 생성합니다. 추가 Elasticsearch 노드는 클라이언트 및 데이터 역할을 사용하여 데이터 전용 노드로 생성됩니다. 컨트롤 플레인 노드는 인덱스 작성 또는 삭제, shard 할당 및 추적 노드와 같은 클러스터 전체 작업을 수행합니다. 데이터 노드는 shard를 보유하고 CRUD, 검색 및 집계와 같은 데이터 관련 작업을 수행합니다. 데이터 관련 작업은 I/O, 메모리 및 CPU 집약적입니다. 현재 노드에 과부하가 걸리면 이러한 리소스를 모니터링하고 더 많은 데이터 노드를 추가하는 것이 중요합니다.예를 들어
nodeCount = 4
인 경우 다음 노드가 생성됩니다.$ oc get deployment
출력 예
cluster-logging-operator 1/1 1 1 18h elasticsearch-cd-x6kdekli-1 1/1 1 0 6m54s elasticsearch-cdm-x6kdekli-1 1/1 1 1 18h elasticsearch-cdm-x6kdekli-2 1/1 1 0 6m49s elasticsearch-cdm-x6kdekli-3 1/1 1 0 6m44s
인덱스 템플릿의 기본 shard 수는 Elasticsearch 데이터 노드 수와 같습니다.
인스턴스를 생성합니다.
$ oc create -f <file-name>.yaml
예를 들면 다음과 같습니다.
$ oc create -f olo-instance.yaml
이렇게 하면 로깅 하위 시스템 구성 요소,
Elasticsearch
사용자 정의 리소스 및 구성 요소, Kibana 인터페이스가 생성됩니다.
openshift-logging 프로젝트에 Pod를 나열하여 설치를 확인합니다.
$ oc get pods -n openshift-logging
출력 예
NAME READY STATUS RESTARTS AGE cluster-logging-operator-66f77ffccb-ppzbg 1/1 Running 0 7m elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp 2/2 Running 0 2m40s elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc 2/2 Running 0 2m36s elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2 2/2 Running 0 2m4s collector-587vb 1/1 Running 0 2m26s collector-7mpb9 1/1 Running 0 2m30s collector-flm6j 1/1 Running 0 2m33s collector-gn4rn 1/1 Running 0 2m26s collector-nlgb6 1/1 Running 0 2m30s collector-snpkt 1/1 Running 0 2m28s kibana-d6d5668c5-rppqm 2/2 Running 0 2m39s