Всем привет!
Устанавливаем логстеш в текущий кластер ELK.
С помощью ранчера создаем простой конфиг (ConfigMap) для наcтройки логстеша (или можно через kubectl apply -f logstash-config.yaml ):
logstash-config
Стандартный конфиг, ничего необычного. Отключаем SSL.
Далее создаем модуль для логстеша:
Тоже все довольно просто, главное указать адрес сервера Elastic'a.
apiVersion: v1
kind: Pod
metadata:
labels:
app: logstash
name: logstash
spec:
containers:
- image: docker.elastic.co/logstash/logstash:7.9.1
name: logstash
ports:
- containerPort: 25826
- containerPort: 5044
env:
- name: ES_HOSTS
value: "http://172.27.64.31:30949/"
- name: ES_USER
value: "elastic"
- name: ES_PASSWORD
valueFrom:
secretKeyRef:
name: quickstart-es-elastic-user
key: elastic
resources: {}
volumeMounts:
- name: config-volume
mountPath: /usr/share/logstash/config
- name: logstash-pipeline-volume
mountPath: /usr/share/logstash/pipeline
restartPolicy: OnFailure
volumes:
- 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
- name: cert-ca
secret:
secretName: elasticsearch-es-http-certs-public
status: {}
Теперь нужно прокинуть порты для сервиса или создать NodePort:
apiVersion: v1
kind: Service
metadata:
labels:
app: logstash
name: logstash
spec:
ports:
- name: "5044"
port: 5044
targetPort: 5044
selector:
app: logstash
status:
loadBalancer: {}
Далее направляем файлбит на логстеш.
ertwert
apiVersion: v1
kind: ConfigMap
metadata:
name: logstash-configmap
data:
logstash.yml: |
http.host: "0.0.0.0"
path.config: /usr/share/logstash/pipeline
logstash.conf: |
# all input will come from filebeat, no local logs
input {
beats {
port => 5044
ssl => false
}
}
filter {
}
output {
elasticsearch {
#index => "logstash-%{[@metadata][beat]}"
hosts => [ "${ES_HOSTS}" ]
user => "${ES_USER}"
password => "${ES_PASSWORD}"
#cacert => '/etc/logstash/certificates/ca.crt'
}
}