그냥 해보자 #1 EFK 구축하기 -ElasticSearch 배포

이든·2023년 1월 12일
0

이전글에 간략하게 EFK가 무엇인지 왜 사용해야 하는지에 대해 간략하게 설명했다.
필자는 모든 툴을 모두 이해한 상태에서 시작해야 한다고 생각하지 않기 때문에 일단 그냥 해보자

우선 쿠버네티스에서 모든 리소스는 namespace로 구분하기 편하기 때문에 Elastic Search , Fluentd , Kibana가 배포될 namespace를 생성하자. 본인은 kube-efk로 하겠다

  • Namespace
### 명령어로 올리지 말고 yaml 형태로 리소스 생성하자 
apiVersion: v1
kind: Namespace
metadata:
  name: kube-efk

*ElasticSearch
ElasticSearch는 Fluentd에서 수집된 로그를 여러 파드들이 공유받고 그 상태값을 유지해야 하기 때문에 상태값이 변하는 Deployment보다는 Statefulset이 좋겠다

apiVersion: apps/v1
kind: Statefulset
metadata:
  name: elasticsearch
  labels:
    app: elasticsearch
spec:
  replicas: 1         #노드 하나로만 구성하는 ElasticSearch를 실행할 것이므로 replicas=1로 하겠다 
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
      - name: elasticsearch 
        image: elastic/elasticsearch:6.4.0 #공식 사이트에서 이미지 정보를 받아오자
        env:
        - name: discovery.type
          value: "single-node" #Discovery.type의 value를 single-node로 설정해서 노드가 한개인걸로 설정
        ports:
        - containerPort: 9200   # ElasticSearch가 사용하는 포트인 9200,9300번을 설정
        - containerPort: 9300   
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: elasticsearch
  name: elasticsearch-svc
  namespace: default
spec:
  ports:                  # 위에서 지정한 port들을 각각 nodeport 30920,30930으로 접근 가능하도록 nodeport 필드를 설정했습니다.
  - name: elasticsearch-rest           
    nodePort: 30920
    port: 9200
    protocol: TCP
    targetPort: 9200
  - name: elasticsearch-nodecom
    nodePort: 30930
    port: 9300
    protocol: TCP
    targetPort: 9300
  selector:
    app: elasticsearch
  type: NodePort

자 이제 yaml을 저장하고 kubectl apply -f elasticsearch.yaml로 파드를 실행합니다.

localhost:30920을 통해 다음 설정이 확인되면 elasticsearch가 정상적으로 실행 된겁니다.

다음에는 로그 데이터를 시각화해서 편하게 보기위한 kibana를 배포해보도록 하겠다
필자가 쓰고도 부끄러우니 이 글은 잘 다듬어서 주말에 수정하도록 하겠다

0개의 댓글