Hey
Im new to Logstash/ECK
Ive tried deploying an ECK cluster and then deploying Logstash, using ArgoCD.
The ECK works well, for the Logstash I'm having issues with the statefulset. it returns the error;
Your settings are invalid. Reason: Setting "logstash.yml" doesn't exist. Please check if you haven't made a typo.
I'm trying to understand what the issue is
for logstash my template is
apiVersion: logstash.k8s.elastic.co/v1alpha1
kind: Logstash
metadata:
name: {{ .Values.logstash.name }}
namespace: {{ .Values.logstash.namespace }}
spec:
version: {{ .Values.logstash.version }}
count: {{ .Values.logstash.replicas }}
config:
logstash.yml: |
http.host: "0.0.0.0"
podTemplate:
spec:
containers:
- name: logstash
resources:
requests:
memory: {{ .Values.resources.requests.memory | default "1Gi" }}
cpu: {{ .Values.resources.requests.cpu | default "500m" }}
limits:
memory: {{ .Values.resources.limits.memory | default "2Gi" }}
cpu: {{ .Values.resources.limits.cpu | default "1" }}
env:
- name: LS_JAVA_OPTS
value: "-Xmx1g -Xms1g"
pipelines:
- id: main
config:
pipeline.conf: |
input {
kafka {
bootstrap_servers => {{ .Values.kafka.bootstrapServers | quote }}
topics => [{{ .Values.kafka.topic | quote }}]
group_id => {{ .Values.kafka.groupId | quote }}
security_protocol => "SSL"
codec => "json"
}
}
output {
elasticsearch {
hosts => ["{{ .Values.elasticsearch.host }}"]
user => "{{ .Values.elasticsearch.user }}"
password => "{{ .Values.elasticsearch.password}}"
index => "kubernetes-logs"
}
}
then i pass values;
logstash:
name: logstash
namespace: logging
version: "8.12.0"
replicas: 1
kafka:
bootstrapServers: ".."
topic: "filebeat-logs"
groupId: "logstash-group"
elasticsearch:
host: ${ELASTICSEARCH_HOSTS}
user: ${ELASTICSEARCH_USERNAME}
password: ${ELASTICSEARCH_PASSWORD}
resources:
requests:
memory: "1Gi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "1"
I think I understand whats causing this issue,
it seems like the logstash.yaml is being mounted by a secret created by ECK (logstash-ls-config
). This secret contains;
api:
http:
host: 0.0.0.0
ssl:
enabled: true
keystore:
password: changeit
path: /usr/share/logstash/config/api_keystore.p12
config:
reload:
automatic: true
logstash:
yml: |
http.host: "0.0.0.0"
This isn't a valid logstash config, but i dont understand why this is whats being used? it's supposed to use just the last line if i understand correctly.
Does anyone have experience with setting up LS using ECK or with this issue?