Fluent Bit 설치
이 가이드는 k8s 1.30이상에 Elasticsearch 8.x를 설치한 경우 Fluent bit를 설치하는 방법을 안내합니다.
Elasticsearch 8.x 설치 가이드는 아래 글을 참조하세요.
https://happycloud-lee.tistory.com/294
엘라스틱 서치 헬름 저장소 추가
아래와 같이 엘라스틱 서치 헬름 차트 저장소를 추가 하고 차트 리스트를 업데이트 합니다.
[root@osboxes ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
[root@osboxes ~]# helm repo update
Fluent bit의 헬름 차트명과 버전을 찾습니다.
ubuntu@bastion:~/install/efk$ helm search repo fluent-bit
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/fluent-bit 2.3.21 3.1.9 Fluent Bit is a Fast and Lightweight Log Proces..
설치 Config파일 작성
작업 디렉토리를 만들고 이동 합니다.
[root@osboxes ~]# mkdir -p ~/install/efk && cd ~/install/efk
설치를 위한 환경설정 파일을 만듭니다. fluentbit.yaml이라는 이름을 만들었다고 가정하고 설명하겠습니다.
Elasticsearch의 Service 주소과 password는 변경 하셔야 합니다.
SSL키를 갖고 있는 Secret이 정확한 지 확인하십시오. 위 Elasticsearch 가이드대로 설치했으면 맞을 겁니다.
daemonset:
enabled: true
config:
outputs: |
[OUTPUT]
Name es
Match *
Host elasticsearch-master-hl.efk.svc.cluster.local
Port 9200
Logstash_Format On
Logstash_Prefix fluent-bit
Suppress_Type_Name On
Retry_Limit False
tls On
tls.verify On
tls.ca_file /opt/bitnami/fluent-bit/certs/ca.crt
HTTP_User elastic
HTTP_Passwd P@ssw0rd$
existingSecret:
- name: elasticsearch-master-crt
keys:
tls.crt: tls.crt
tls.key: tls.key
ca.crt: ca.crt
extraVolumeMounts:
- name: elasticsearch-certs
mountPath: /opt/bitnami/fluent-bit/certs
readOnly: true
extraVolumes:
- name: elasticsearch-certs
secret:
secretName: elasticsearch-master-crt
이 설정에서 중요한 부분은 Elasticsearch 연결 정보를 셋팅하는 아래 부분입니다.
- Host: Elasticsearch의 service객체 주소로서, SSL통신을 하므로 인증서의 SAN(Subject Alternative Name)과 반드시 일치해야 함
- HTTP_Passwd: elastic 서버 인증 암호. Secret 'elasticsearch-master-credentials'에서 구함
CA, Cert, Key는 Secret 'elasticsearch-master-crt'에서 마운트 함
아래는 SSL인증서(tls.crt)의 SAN값을 확인하는 방법입니다.
kubectl get secret elasticsearch-master-crt -o jsonpath="{.data['tls\.crt']}" | base64 --decode > elastic-tls.crt
openssl x509 -in elastic-tls.crt -text -noout
아래와 같이 SAN을 확인할 수 있습니다.
...
X509v3 Subject Alternative Name:
DNS:*.elasticsearch-master-hl.efk.svc.cluster.local, DNS:elasticsearch-master-hl.efk.svc.cluster.local, DNS:elasticsearch-master, DNS:127.0.0.1, DNS:localhost
...
설치하기
namespace를 만들고 이동합니다.
k create ns efk
kubens efk
helm 명령으로 설치합니다.
helm upgrade fluentbit -i -f fluentbit.yaml bitnami/fluent-bit
Pod가 실행될때까지 기다립니다. 아래와 같이 모든 Pod가 실행되어야 합니다.
파드는 DaemonSet으로 설치되므로 각 노드 당 1개씩 생성됩니다.
ubuntu@bastion:~/install/efk$ k get po
NAME READY STATUS RESTARTS AGE
elasticsearch-coordinating-0 1/1 Running 0 6h54m
elasticsearch-data-0 1/1 Running 0 6h54m
elasticsearch-ingest-0 1/1 Running 0 6h54m
elasticsearch-kibana-6486cc7b88-vq9fd 1/1 Running 0 6h54m
elasticsearch-master-0 1/1 Running 0 6h54m
elasticsearch-metrics-85c74dfbdf-hb69p 1/1 Running 0 6h54m
fluentbit-fluent-bit-fcsp6 1/1 Running 0 9m17s
fluentbit-fluent-bit-qs4xg 1/1 Running 0 9m17s
fluentbit-fluent-bit-rkgh2 1/1 Running 0 9m17s
fluentbit-fluent-bit-v8gtg 1/1 Running 0 9m17s