$ helm install opensearch-dashboards opensearch-dashboards-2.24.1.tgz --create-namespace --namespace logging
# 실행 후 확인
$ kubectl get pods -n logging
NAME READY STATUS RESTARTS AGE
opensearch-dashboards-649d556895-r4vwn 1/1 Running 0 2m13s
Host는 oepnsearch가 statefulset으로 동작하므로 opensearch service의 headless service로 연결한다.
$ kubectl edit cm fluent-bit
# [OUTPUT] 에 stdout이 있으면 해당 부분 제거 후 아래 부분 추가
[OUTPUT]
Name opensearch
Match kube.*
Host opensearch-cluster-master-headless.logging
Port 9200
tls On
tls.verify Off
HTTP_User admin
HTTP_Passwd wkyKr!2024
Retry_Limit False
Suppress_Type_Name On
fluent-bit 의 config map hot reload 를 설정하지 않았으므로, fluent-bit pod를 전체 재기동한다.
11. 연동 후 OpenSearch에서 확인을 위해 서비스를 통한 로깅 테스트 후 Fluent-Bit 확인
$ kubectl apply -f k8s.yaml
deployment.apps/stdout-node created
service/stdout-node-service created
ingress.networking.k8s.io/stdout-node-ingress created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
stdout-node-6f945d7989-6xjp2 1/1 Running 0 20s
3. fluent-bit install
$ helm repo add fluent https://fluent.github.io/helm-charts
$ helm upgrade --install fluent-bit fluent/fluent-bit
# namespace 를 주지않으면 default namespace에 생성된다
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
fluent-bit-67blm 0/1 ContainerCreating 0 5s
fluent-bit-vvt7c 0/1 ContainerCreating 0 5s
4. 현재 elasticsearch 나 opensearch 를 설치하지 않았으므로 stdout테스트를 진행한다. (테스트 후 opensearch 설치 예정)
기존에 있던 OUTPUT인 elasticsearch를 삭제하고 [OUTPUT]으로 stdout 을 추가한다.
(해당 Name의 경우 이름이 정해져있으며, 이름마다 사용할 수 있는 변수?가 다르다. 공식 가이드에서 확인 가능하다.)
$ kubectl edit cm fluent-bit
기존에 있던 elasticsearch OUTPUT 삭제
[OUTPUT]
Name es
Match host.*
Host elasticsearch-master
Logstash_Format On
Logstash_Prefix node
Retry_Limit False
아래 stdout OUTPUT 추가
[OUTPUT]
Name stdout
Match kube.*
# config map 수정 후 fluent-bit pod 삭제를 통해 재기동한다.
$ kubectl delete pods fluent-bit-67blm fluent-bit-vvt7c
pod "fluent-bit-67blm" deleted
pod "fluent-bit-vvt7c" deleted
5. 1번에서 설치한 테스트 pod 위치를 확인 후 같은 위치의 fluent-bit pod 의 로그를 f option을 통해 확인한다.