elasticsearch와 kibana를 공부해볼까 싶어 설치를 해보았다.
Elastic stack 소개
ELK는 Elasticsearch, Logstash, Kibana를 말한다.
각각 다음과 같은 역할을 담당한다.
- Elasticsearch : 데이터 저장 & 검색 엔진
- Logstash : 데이터 수집
- Kibana : 시각화
기존 아파치 솔라 같은 검색 엔진은 라이브러리 형태로 제공되어 사용하기 위해 구현해야 하는 항목들이 많았다.
ELK는 라이브러리가 아닌 플랫폼 수준으로 제공되는 오픈소스이고 이러한 묶음을 Elastic stack이라고 통칭한다.
(이와 비슷하게 CNCF stack도 있다.)
설치하기
내 경우 window에서 docker desktop을 사용하여 kubernetes로 설치해보았고 ELK 중 Elasticsearch와 Kibana를 우선 설치해보았다.
k8s pod 띄우기
docker hub image
- elasticsearch : https://hub.docker.com/_/elasticsearch
- kibana : https://hub.docker.com/_/kibana
설치 안내 문서
- elasticsearch : https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
- kibana : https://www.elastic.co/guide/en/kibana/current/docker.html
각각 다음과 같이 yaml 파일을 만들었다.
elasticsearch.yaml :
apiVersion: apps/v1
kind: Deployment
metadata:
name: elasticsearch-deployment
labels:
app: elasticsearch
spec:
replicas: 1
selector:
matchLabels:
app: elasticsearch
template:
metadata:
labels:
app: elasticsearch
spec:
containers:
- name: elasticsearch
image: elasticsearch:8.4.3
env:
- name: discovery.type
value: "single-node"
ports:
- containerPort: 9200
- containerPort: 9300
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-service
spec:
selector:
app: elasticsearch
ports:
- protocol: TCP
name: kibana-port
port: 9200
targetPort: 9200
- protocol: TCP
name: kibana-port2
port: 9300
targetPort: 9300
type: LoadBalancer
kibana.yaml :
apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana-deployment
labels:
app: kibana
spec:
replicas: 1
selector:
matchLabels:
app: kibana
template:
metadata:
labels:
app: kibana
spec:
containers:
- name: kibana
image: kibana:8.4.3
ports:
- containerPort: 5601
---
apiVersion: v1
kind: Service
metadata:
name: kibana-service
spec:
selector:
app: kibana
ports:
- protocol: TCP
name: kibana-port
port: 5601
targetPort: 5601
type: LoadBalancer
위 두 yaml을 적용하여 k8s pod를 띄운다.
F:\dev\kubernetes>kubectl apply -f elasticsearch.yaml
deployment.apps/elasticsearch-deployment created
service/elasticsearch-service created
F:\dev\kubernetes>kubectl apply -f kibana.yaml
deployment.apps/kibana-deployment created
service/kibana-service created
elasticsearch의 경우 학습 용도로 띄워보는 것이기 때문에 single node로 설정하여 띄웠다.
elastic stack의 image들은 최신 버전에 대한 latest 태그가 없고 직접 버전을 지정해주어야 한다.
(글 작성 기준 시점엔 8.4.3 버전이 가장 최신 버전)
kibana에 elasticsearch 설정하기
pod를 띄운 후 kibana를 접속해보면
http://localhost:5601/
다음과 같은 설정 화면이 뜬다.
여기에 elasticsearch의 enrollment token을 설정해야 한다.
elasticsearch pod에서 해당 token 정보를 확인할 수 있다.
F:\dev\kubernetes>kubectl get pods
NAME READY STATUS RESTARTS AGE
elasticsearch-deployment-649dd89d45-sjvgv 1/1 Running 4 (7m3s ago) 9m2s
kibana-deployment-68d88b75f4-m44bg 1/1 Running 1 (7m3s ago) 80m
F:\dev\kubernetes>kubectl exec -it elasticsearch-deployment-649dd89d45-sjvgv -- /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana
WARNING: Owner of file [/usr/share/elasticsearch/config/users] used to be [root], but now is [elasticsearch]
WARNING: Owner of file [/usr/share/elasticsearch/config/users_roles] used to be [root], but now is [elasticsearch]
eyJ2ZXIiOiI4LjQuMyIsImFkciI6WyIxMC4xLjEuMTMyOjkyMDAiXSwiZmdyIjoiOTk5MjJkMjhiZWQ1MjVhZDliNDhhNzY2NGQ5YzIwZTE4MzQ2NTIyYjgzMTg3YzJlNjk0ZDVjNzVkOWM5MGE4YSIsImtleSI6ImtYd3d0SU1CVTlrMl9OdnZKRmFJOmRWZVNzMW1iUWJtMHJYM3puNXpQNUEifQ==
위와 같이 획득한 token 정보를 입력하면 다음과 같이 verification code를 확인하라는 창이 뜬다.
이 코드는 kibana pod 에서 확인할 수 있다.
F:\dev\kubernetes>kubectl exec -it kibana-deployment-68d88b75f4-m44bg -- /usr/share/kibana/bin/kibana-verification-code
Your verification code is: 535 953
해당 코드를 입력하면 설정이 진행된다.
이제 로그인 창이 뜬다.
로그인을 하려면 elasticsearch에 계정을 생성해야 한다.
elasticsearch의 기본 계정인 elastic으로는 kibana에서 접근을 할 수 없다.
다음과 같이 elasticsearch-users 명령어를 호출하여 계정을 생성한다.
kubectl exec -it elasticsearch-deployment-649dd89d45-sjvgv -- /usr/share/elasticsearch/bin/elasticsearch-users useradd bluesky -p bluesky -r superuser
아직 어떤 role이 있는지 모르기 때문에 최고 권한인 superuser role을 설정하였다.
여기까지 진행하면 kibana에서 elasticsearch를 사용할 수 있게 된다.
'Study > Docker & Kubernetes' 카테고리의 다른 글
kubernetes에 sonarqube 설치 & jenkins에서 사용해 보기 (0) | 2023.03.16 |
---|---|
kubernetes에 Prometheus, Grafana 설치하고 metric 정보 수집해 보기 (1) | 2023.03.15 |
kubernetes ConfigMap, Secret 사용해 보기 (0) | 2023.03.11 |
kubernetes PersistentVolume, PersistentVolumeClaim 사용해 보기 (0) | 2023.03.11 |
Rancher Desktop에서 docker 명령어 사용하기 (0) | 2022.10.20 |
Window에서 Docker Desktop 없이 docker, kubernetes 사용하기 (Rancher Desktop 사용하기) (0) | 2021.12.01 |
kubernetes kubectl 명령어 모음 (0) | 2021.08.13 |
Dockerfile 명령어 (0) | 2021.07.02 |
개인 공부용 Docker Desktop kubernetes 설정 모음 (0) | 2021.06.02 |
Docker Desktop Community 2.3.0.2 이후 Windows 10 Home 지원 시작 (0) | 2020.05.17 |