상세 컨텐츠

본문 제목

Elastic Cloud on Kubernetes 설치

Ops/Kubernetes

by 크리두 2022. 10. 23. 14:36

본문

반응형

Elastic Cloud on Kubernetes 란?


Elastic 에서 공식 제공하는 Elasticsearch, Kibana 등의 구성을 위한 Kubernetes Operator 로서 OpenShift 도 지원

Elasticsearch, kibana 등을 CRD instance 로 생성하고 관리한다 → Elasticsearch,Kibana 가 (pod 과 같은) kubernetes 의 object 로 관리
CRD 스펙만으로도 기능이 풍부하고 다양한 설정을 지원한다. → 별도의 config file 을 관리할 필요가 없음.
사용자는 Elasticsearch 를 Kubernets 에서 제공하는 PaaS 서비스 처럼 사용

이 글에서는 openshift에서 설정하는 방법을 주로 다룬다.

 

Elasticsearch CRD 관계도


Operator(지정된프로젝트:elastic-system 에 설치됨)
-> elasticsearch -> statefulset -> pod, pvc
                 -> service 4개 (default, http, internal-http, transport)
                 -> secret (사용자 계정정보, 설정 등)
                 -> configmap (script 등)

등을 자동으로 생성한다. 즉 elasticsearch 인스턴스만 생성하면, elasticsearch 인스턴스의 spec 을 읽어서, 필요한 하위 리소스(오브젝트)가 자동으로 생성된다.

물론 생성된 하위 리소스(오브젝트) 는 사용자가 임의로 수정하면 안된다. 

예) pod 설정을 수정하고 싶다 : elasticsearch 인스턴스의 pod 설정 부분을 수정해야 한다.

 

설치 방법 (OpenShift)

참고주소: https://www.elastic.co/guide/en/cloud-on-k8s/2.1/k8s-openshift.html

CRD, Operator yaml 적용 (현재 최신버전 v2.1.0)

# CRD 스펙을 추가한다. 
oc create -f https://download.elastic.co/downloads/eck/2.1.0/crds.yaml
 
# elastic-system 프로젝트를 만들고, operator 를 배포한다.
oc apply -f https://download.elastic.co/downloads/eck/2.1.0/operator.yaml
 
# ES 에서 사용할 프로젝트 생성 (자유롭게)
oc new-project elastic

 

YAML spec

1) elasticsearch

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: <앱이름>
  nodeSets: # 다양한 nodeset 을 정의 가능
  - name: default # nodeset 의 이름
    count: 3 # 대수
    config: {} # node config 추가하는 부분
    podTemplate:
      metadata: {}
      spec:
        containers:
        - name: elasticsearch
          env:
          - name: ES_JAVA_OPTS
            value: -Xms8g -Xmx8g # ES 가 사용할 mem, pod mem 절반
          resources: # pod 의 리소스
            requests:
              memory: 16Gi
              cpu: 8
            limits:
              memory: 16Gi
              cpu: 8
        nodeSelector: {} # 필요시 설정
        tolerations: {} # 필요시 설정
    volumeClaimTemplates:
    - apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        creationTimestamp: null
        name: elasticsearch-data # 변경불가
      spec:
        accessModes:
        - ReadWriteOnce
        storageClassName: local-storage # default storageclass 가 아닌 경우 수정
        resources:
          requests:
            storage: 100Gi # 용량 기입

 

2) route

route 는 kubernetes 공통 object 가 아니므로 기본 생성되지 않으며, 별도로 yaml 로 생성해야 한다.

apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: <앱이름>
spec:
  #host: elasticsearch.example.com # override if you don't want to use the host that is automatically generated by OpenShift (<route-name>[-<namespace>].<suffix>)
  tls:
    termination: passthrough # Elasticsearch is the TLS endpoint
    insecureEdgeTerminationPolicy: Allow
  to:
    kind: Service
    name: <앱이름>-es-http

TLS 를 사용하지 않을 것이므로 tls:, termination, insecureEdgeTerminationPolicy 항목은 삭제한다. 

 

반응형

'Ops > Kubernetes' 카테고리의 다른 글

Logging Tool 기능 비교 분석  (0) 2024.02.22
[Kubernetes]권한관리 (role, rbac 등)  (0) 2022.11.21
RBAC Authorization  (0) 2021.10.20
K8S ingress에 대하여  (0) 2021.06.24
Private 도커 Registry 설치 및 설정  (0) 2020.11.10

관련글 더보기

댓글 영역