Kubernetes에 ELK(Kibana) 구축하기 #3

2022. 6. 17. 10:38프로그래밍 개발(Development)/k8s

반응형

k8s에 Kibana를 구축 하는 방법에 대해서 알아보겠습니다.


Kibana 구축 이전에 Elasticsearch와 Logstash 구축 방법이 필요하신 분은 아래를 참조 하세요.

 

k8s에 Elasticsearch 구축은 아래의 링크를 참조하세요.

2022.06.16 - [프로그래밍 개발(Development)/k8s] - Kubernetes에 ELK(Elasticsearch) 구축하기 #1

 

Kubernetes에 ELK(Elasticsearch) 구축하기 #1

엘라스틱서치(Elasticsearch)는 분산형 RESTful 검색 및 분석 엔진으로 엘라스틱 스택(Elastic Stack)의 중심에 위치하고 있으며, 엘라스틱 스택은 차세대 데이터 플랫폼으로 자리 잡고 있습니다. Elastic Sta

choco-life.tistory.com

k8s에 Logstash 구축은 아래를 참조하세요.

2022.06.16 - [프로그래밍 개발(Development)/k8s] - Kubernetes에 ELK(Logstash) 구축하기 #2

 

Kubernetes에 ELK(Logstash) 구축하기 #2

k8s에 Elasticsearch 구축은 아래의 링크를 참조하세요. 2022.06.16 - [프로그래밍 개발(Development)/k8s] - Kubernetes에 ELK(Elasticsearch) 구축하기 #1 Kubernetes에 ELK(Elasticsearch) 구축하기 #1 엘라스..

choco-life.tistory.com


Kibana

1. kibana-configmap.yaml

kibana.yaml 파일을 configmap을 통해서 관리한다.

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: elk
  name: kibana-config
  labels:
    app: kibana
data:
  kibana.yml: |-
    server.host: 0.0.0.0
    elasticsearch.hosts: ${ELASTICSEARCH_HOSTS}
    #elasticsearch:
    #  hosts: ${ELASTICSEARCH_HOSTS}
    #  username: ${ELASTICSEARCH_USER}
    #  password: ${ELASTICSEARCH_PASSWORD}

2. kibana-deployment.yaml

elasticsearch url은 logstash에서 설명한 내용과 동일하게 {elasticsearch service name} : {elasticsearch service port} 이다

 

ex) http://elasticsearch-svc:9200

elasticsearch service name : elasticsearch-svc

elasticsearch service port : 9200

 

ex) http://esservice:9300

elasticsearch service name : esservice

elasticsearch service port : 9300

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: elk
  name: kibana
  labels:
    app: kibana
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kibana
  template:
    metadata:
      labels:
        app: kibana
    spec: 
      containers:
      - name: kibana
        #image: docker.elastic.co/kibana/kibana-oss:7.9.3
        image: docker.elastic.co/kibana/kibana-oss:6.8.23
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5601
          name: view
        env:
        - name: ELASTICSEARCH_HOSTS
          value: "http://elasticsearch:9200"
        #- name: ELASTICSEARCH_USER
        #  value: "elastic"
        #- name: ELASTICSEARCH_PASSWORD
        #  valueFrom:
        #    secretKeyRef:
        #      name: elasticsearch-pw-elastic
        #      key: password
        volumeMounts:
        - name: config
          mountPath: /usr/share/kibana/config/kibana.yml
          readOnly: true
          subPath: kibana.yml
        - name: tz-seoul
          mountPath: /etc/localtime
      volumes:
      - name: config
        configMap:
          name: kibana-config
      - name: tz-seoul
        hostPath:
          path: /usr/share/zoneinfo/Asia/Seoul

3. kibana-service.yaml

kibana는 view가 목적이기 때문에 외부망 연결은 대부분 허용한다.

상황에 따라 NodePort or LoadBalancer를 사용할 수 있다.

nodePort는 30000 ~ 32767 범위 내에서 사용자 입력이 가능하며 입력 하지 않을 경우 임의의 포트로 연결이 된다.

apiVersion: v1
kind: Service
metadata:
  namespace: elk
  name: kibana
  labels:
    app: kibana
spec:
  ports:
  - port: 33000
    name: view
    targetPort: 5601
    #nodePort: 30930
  #type: NodePort
  #type: LoadBalancer
  externalIPs:
  - 192.168.1.10
  selector:
    app: kibana

4. Kibana 접속 확인

http://{externalip}:{port}

ex) http://192.168.1.10:33000

 

소스코드는 Github에서 다운로드 할 수 있다.

Github : https://github.com/Byeongin-Jeong/kubernetes

 

GitHub - Byeongin-Jeong/kubernetes

Contribute to Byeongin-Jeong/kubernetes development by creating an account on GitHub.

github.com

 

반응형