2022. 6. 16. 17:25ㆍ프로그래밍 개발(Development)/k8s
k8s에 Elasticsearch 구축은 아래의 링크를 참조하세요.
2022.06.16 - [프로그래밍 개발(Development)/k8s] - Kubernetes에 ELK(Elasticsearch) 구축하기 #1
이번에는 elasticseach가 구축 되었으니, Logstash 구축하는 방법에 대해서 알아보겠습니다.
Logstash
1. logstash-configmap.yaml
logstash.conf 파일과 logstash.yaml 파일을 configmap을 생성하여 관리할 수 있습니다.
input, filter, output 정보는 상황에 맞게 작성
elasticsearch로 데이터를 output으로 지정시 url은 {elasticsearch service name} : {elasticsearch service port}으로 연결
apiVersion: v1
kind: ConfigMap
metadata:
namespace: elk
name: logstash-configmap
labels:
task: logging
k8s-app: logstash
data:
logstash.yml: |
http.host: "127.0.0.0"
path.config: /usr/share/logstash/pipeline
logstash.conf:
input
{
tcp
{
port => 5000
}
}
filter
{
json
{
source => "message"
remove_field => ["@version","beat","count","fields","input_type","offset","source","host","tags","port","message"]
}
}
output
{
elasticsearch
{
hosts => ["elasticsearch:9200"]
manage_template => false
index => "my_index"
document_type => "doc"
}
}
2. logstash-deployment.yaml
logstash Deployment 생성과 docker repository에서 logstash 이미지를 다운로드를 하며 logstash.conf 파일은 volume에서 매핑을 시켜준다.
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: elk
name: logstash
spec:
replicas: 1
selector:
matchLabels:
app: logstash
template:
metadata:
labels:
app: logstash
spec:
containers:
- name: logstash
image: docker.elastic.co/logstash/logstash-oss:6.8.23
ports:
- name: logstash-tcp
containerPort: 5000
imagePullPolicy: IfNotPresent, # Always, Never
volumeMounts:
- name: config-volume
mountPath: /usr/share/logstash/config
- name: logstash-pipeline-volume
mountPath: /usr/share/logstash/pipeline
- name: tz-seoul
mountPath: /etc/localtime
volumes:
- name: tz-seoul
hostPath:
path: /usr/share/zoneinfo/Asia/Seoul
- name: config-volume
configMap:
name: logstash-configmap
items:
- key: logstash.yml
path: logstash.yml
- name: logstash-pipeline-volume
configMap:
name: logstash-configmap
items:
- key: logstash.conf
path: logstash.conf
3. logstash-service.yaml
컨테이너간의 logstash를 통신할때는 아래와 같이 내부용 서비스를 생성하지만, 외부로부터 데이터를 수집하게 된다면, externalP 또는 NodePort 등을 이용하여 외부 접근을 허용하게 한다.
apiVersion: v1
kind: Service
metadata:
namespace: elk
name: logstash
labels:
app: logstash
spec:
clusterIP: None
ports:
- name: logstash-tcp
port: 5000
selector:
app: logstash
소스코드는 Github에서 다운로드 할 수 있다.
Github : https://github.com/Byeongin-Jeong/kubernetes
'프로그래밍 개발(Development) > k8s' 카테고리의 다른 글
쿠버네티스 컨테이너 타임존 설정하기(Setting the Kubernetes container timezone) (0) | 2022.06.17 |
---|---|
Kubernetes에 ELK(Kibana) 구축하기 #3 (2) | 2022.06.17 |
Kubernetes에 ELK(Elasticsearch) 구축하기 #1 (0) | 2022.06.16 |
Kubernetes Dashboard 설치(Install k8s dashboard) (0) | 2022.05.23 |
우분투에 Kubernetes 설치하기 (Installing Kubernetes on Ubuntu) (0) | 2022.05.23 |