Kubernetes - запуск только logstash

Thank you for reading this post, don't forget to subscribe!

Есть зада­ча запу­стить в кла­сте­ре kubernetes - logstash.
filebeat отправ­ля­ют логи с мно­же­ства серверов
logstash (он в кубе­ре) филь­тру­ет вхо­дя­щие логи и отправ­ля­ет их в elasticsearch (отдель­ные сервера)

Наши дей­ствия:

git clone https://github.com/elastic/helm-charts.git
cd helm-charts/
git checkout 7.9

Копи­ру­ем отту­да толь­ко logstash и пра­вим valuses.yaml
Так как кон­фи­ги мы будем под­ки­ды­вать сами то ком­мен­ти­ру­ем всё что отно­сит­ся к
logstashConfig и logstashPipeline

Добав­ля­ем секреты:

Про­ве­ря­ем что раз­дел service име­ет вид:

Созда­ём секреты:
1. созда­ём сек­рет кото­рый будет добав­лять­ся в pipline
kubectl create secret generic logstash-sample-config -n НАШname_space --from-file=config/logstash-sample.conf
2.создаём сек­рет кото­рый будет добав­лять­ся в config, там мно­го наших кон­фиг фай­лов поэто­му коман­да такая большая:
kubectl create secret generic logstash-configs -n НАШname_space --from-file=config/jvm.options --from-file=config/log4j2.properties --from-file=config/logstash-sample.conf --from-file=config/logstash.yml --from-file=config/pipelines.yml --from-file=config/startup.options

Всё мож­но запус­кать уста­нов­ку через HELM
helm upgrade --install --atomic --timeout 2m -n НАШname_space logstash logstash/ --values logstash/values.yaml

Так как filebeat отправ­ля­ет толь­ко на уровне tcp а ingress рабо­та­ет на уровне http.ТО созда­ём configmap

cat ConfigMap.yml

В нём порт 5050 дол­жен быть про­ки­нут наружу,
m-logstash-megabuilder - это наш неймспей
logstash-logstash - это наш сервис
5044 - это порт на кото­ром слу­ша­ет сервис

При­ме­ня­ем:
kubectl apply -f ConfigMap.yml

Пра­вим сер­вис ingress
kubectl edit service -n ingress-nginx ingress-nginx

А имен­но добав­ля­ем новый порт 5050

После это­го пра­вим deployment ingress в нашем слу­чае это daemonsets
kubectl edit daemonsets.apps -n ingress-nginx ingress-nginx-controller

Добав­ля­ем наш порт:

И про­ве­ря­ем что есть аргумент:
tcp-services-configmap

Вот в этом блоке:

После прав­ки daemonsets поды ingress будут пере­за­пу­ще­ны и появит­ся наш порт

 

про­ве­рим что всё нор­маль­но добавилось:
[root@prod-vsrv-kubemaster1 ~]# kubectl exec -ti -n ingress-nginx ingress-nginx-controller-dtb2q bash

bash-5.0$ cat /etc/nginx/nginx.conf | tail -20

 

Всё, теперь всё что при­ле­тит на порт 5050 пой­дёт на наш logstash

 

подроб­нее мож­но гля­нуть тут:
https://minikube.sigs.k8s.io/docs/tutorials/nginx_tcp_udp_ingress/
и тут:
https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md