파란하늘의 지식창고
article thumbnail
반응형

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

설치 안내 문서

각각 다음과 같이 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를 사용할 수 있게 된다.

반응형
profile

파란하늘의 지식창고

@Bluesky_

내용이 유익했다면 광고 배너를 클릭 해주세요