Elastic 에서 공식 제공하는 Elasticsearch, Kibana 등의 구성을 위한 Kubernetes Operator 로서 OpenShift 도 지원
Elasticsearch, kibana 등을 CRD instance 로 생성하고 관리한다 → Elasticsearch,Kibana 가 (pod 과 같은) kubernetes 의 object 로 관리
CRD 스펙만으로도 기능이 풍부하고 다양한 설정을 지원한다. → 별도의 config file 을 관리할 필요가 없음.
사용자는 Elasticsearch 를 Kubernets 에서 제공하는 PaaS 서비스 처럼 사용
이 글에서는 openshift에서 설정하는 방법을 주로 다룬다.
Operator(지정된프로젝트:elastic-system 에 설치됨)
-> elasticsearch -> statefulset -> pod, pvc
-> service 4개 (default, http, internal-http, transport)
-> secret (사용자 계정정보, 설정 등)
-> configmap (script 등)
등을 자동으로 생성한다. 즉 elasticsearch 인스턴스만 생성하면, elasticsearch 인스턴스의 spec 을 읽어서, 필요한 하위 리소스(오브젝트)가 자동으로 생성된다.
물론 생성된 하위 리소스(오브젝트) 는 사용자가 임의로 수정하면 안된다.
예) pod 설정을 수정하고 싶다 : elasticsearch 인스턴스의 pod 설정 부분을 수정해야 한다.
참고주소: 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
|
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 항목은 삭제한다.
Kubernetes 설치 - disconnected network (controle-plane) (0) | 2024.10.25 |
---|---|
[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 |
댓글 영역