Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
logstash_beats.yaml 10.8 KiB
Newer Older
Natalia Szakiel's avatar
Natalia Szakiel committed
{{- if eq .Values.namespaceTag .Values.mainNamespace }}
Natalia Szakiel's avatar
Natalia Szakiel committed
apiVersion: logstash.k8s.elastic.co/v1alpha1
Natalia Szakiel's avatar
Natalia Szakiel committed
kind: Logstash
metadata:
Natalia Szakiel's avatar
Natalia Szakiel committed
  name: logstash-beats
Natalia Szakiel's avatar
Natalia Szakiel committed
  labels:
    app: logstash
spec:
Natalia Szakiel's avatar
Natalia Szakiel committed
  image: {{ .Values.logstash.image }}:{{ default .Values.elasticVersion  .Values.logstash.imageTag }}
  version: {{ .Values.elasticVersion }}
Natalia Szakiel's avatar
Natalia Szakiel committed
  count: {{ .Values.logstash.count_beats }}
Natalia Szakiel's avatar
Natalia Szakiel committed
  elasticsearchRefs:
  - name: {{ .Release.Name }}-elasticsearch
    clusterName: {{ .Release.Name }}-elasticsearch
Natalia Szakiel's avatar
Natalia Szakiel committed
  monitoring:
    logs:
      elasticsearchRefs:
        - name: {{ .Release.Name }}-elasticsearch    
Natalia Szakiel's avatar
Natalia Szakiel committed
  volumeClaimTemplates:
    - metadata:
        name: logstash-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: {{ .Values.logstash.diskSpace }}
        storageClassName: {{ .Values.logstash.storageClassName }}
Natalia Szakiel's avatar
Natalia Szakiel committed
  services: 
Natalia Szakiel's avatar
Natalia Szakiel committed
{{- range $index :=  until (.Values.logstash.count_beats |int ) -}}
Natalia Szakiel's avatar
Natalia Szakiel committed
{{- printf "\n"}}  
    - name: beats-{{$index}}
Natalia Szakiel's avatar
Natalia Szakiel committed
      service:
        spec:
          ports:
          - port: 5044
Natalia Szakiel's avatar
Natalia Szakiel committed
            name: {{ $.Values.logstash.beats.pipelines_group_name }}
Natalia Szakiel's avatar
Natalia Szakiel committed
            protocol: TCP
          selector:
Natalia Szakiel's avatar
Natalia Szakiel committed
            statefulset.kubernetes.io/pod-name: logstash-beats-ls-{{$index}}
{{- end}}
    xpack.monitoring.enabled: true
    xpack.monitoring.elasticsearch.hosts: ["${ELASTIC_ELASTICSEARCH_ES_HOSTS}"]
    xpack.monitoring.elasticsearch.username: "${MONITORING_USER}"
    xpack.monitoring.elasticsearch.password: "${MONITORING_PASSWORD}"
    xpack.monitoring.elasticsearch.ssl.certificate_authority: /usr/share/logstash/config/certs/ca.crt
Natalia Szakiel's avatar
Natalia Szakiel committed
  podTemplate:
Natalia Szakiel's avatar
Natalia Szakiel committed
    metadata:
      labels:
        stack-namespace: {{ .Release.Namespace }} 
Natalia Szakiel's avatar
Natalia Szakiel committed
    spec:
Natalia Szakiel's avatar
Natalia Szakiel committed
      securityContext:
        runAsUser: 1000
        fsGroup: 1000    
      initContainers:
      - name: git-clone
        image: alpine/git
        args:
          - clone
          - --single-branch
          - --branch
          - {{ .Values.kibana.dashboardsBranch }}            
          - https://code.europa.eu/simpl/simpl-open/development/monitoring/eck-monitoring.git
          - /mnt/ilm/
        volumeMounts:
          - name: repo
            mountPath: /mnt/ilm/
Natalia Szakiel's avatar
Natalia Szakiel committed
      - name: load-objects
Natalia Szakiel's avatar
Natalia Szakiel committed
        command:  ["/bin/sh", "-c", "cd /mnt/ilm/charts/kibana/scripts; chmod +x ./load_objects.sh; ./load_objects.sh 2>&1 "]
        volumeMounts:
          - name: repo
            mountPath: /mnt/ilm/
          - name:  logstash-business-ilm-vol
            mountPath: /usr/share/logstash/ilm/logstash-business-ilm.json
            subPath: logstash-business-ilm.json
          - name:  logstash-technical-ilm-vol
            mountPath: /usr/share/logstash/ilm/logstash-technical-ilm.json
            subPath: logstash-technical-ilm.json
Natalia Szakiel's avatar
Natalia Szakiel committed
        env:
Natalia Szakiel's avatar
Natalia Szakiel committed
          - name: RELEASE_NAME
            value: {{ .Release.Name }}
Natalia Szakiel's avatar
Natalia Szakiel committed
          - name: ELASTIC_PASSWORD
            valueFrom:
              secretKeyRef:
                name: {{ .Release.Name }}-elasticsearch-es-elastic-user 
                key: elastic
Natalia Szakiel's avatar
Natalia Szakiel committed
      containers:
Natalia Szakiel's avatar
Natalia Szakiel committed
      - name: logstash
Natalia Szakiel's avatar
Natalia Szakiel committed
        {{- with .Values.logstash.resources }}
        resources:
          {{- toYaml . | nindent 10 }}
        {{- end }}
Natalia Szakiel's avatar
Natalia Szakiel committed
        volumeMounts:
Natalia Szakiel's avatar
Natalia Szakiel committed
        {{- range .Values.logstash.beats.pipelines }}
Natalia Szakiel's avatar
Natalia Szakiel committed
        - name: pipeline-config-{{- .name }}
          mountPath: /app/elastic/logstash/config/pipelines/{{- .name -}}.config
          subPath: {{ .name -}}.config
Natalia Szakiel's avatar
Natalia Szakiel committed
          readOnly: false
Natalia Szakiel's avatar
Natalia Szakiel committed
        {{- end }}
        - name: es-certs
Natalia Szakiel's avatar
Natalia Szakiel committed
          mountPath: /usr/share/logstash/config/certs
Natalia Szakiel's avatar
Natalia Szakiel committed
        - name: certs-logstash
          mountPath: /usr/share/logstash/certs-logstash
        - name: repo
          mountPath: /mnt/ilm/
        - name:  logstash-business-ilm-vol
          mountPath: /usr/share/logstash/ilm/logstash-business-ilm.json
          subPath: logstash-business-ilm.json
        - name:  logstash-technical-ilm-vol
          mountPath: /usr/share/logstash/ilm/logstash-technical-ilm.json
          subPath: logstash-technical-ilm.json
Natalia Szakiel's avatar
Natalia Szakiel committed
        - name:  logstash-test
Natalia Szakiel's avatar
Natalia Szakiel committed
          mountPath: /usr/share/logstash/test/logstash-replace.sh
          subPath: logstash-replace.sh
Natalia Szakiel's avatar
Natalia Szakiel committed
        env:
          - name: LS_JAVA_OPTS
            value: {{ .Values.logstash.env.ls_java_opts }}
Natalia Szakiel's avatar
Natalia Szakiel committed
          - name: LOGSTASH_USER
            valueFrom:
              secretKeyRef:
                name: logstash-writer-secret
                key: username
          - name: LOGSTASH_PASSWORD
            valueFrom:
              secretKeyRef:
                name: logstash-writer-secret
                key: password
          - name: MONITORING_USER
            valueFrom:
              secretKeyRef:
                name: user-monitoring-secret
                key: username
          - name: MONITORING_PASSWORD
            valueFrom:
              secretKeyRef:
                name: user-monitoring-secret
                key: password  
Natalia Szakiel's avatar
Natalia Szakiel committed
          - name: ELASTIC_ELASTICSEARCH_ES_HOSTS
Natalia Szakiel's avatar
Natalia Szakiel committed
            value: 'https://{{ .Release.Name }}-elasticsearch-es-http.{{ .Release.Namespace }}.svc:9200'
          - name: ELASTICSEARCH_SSL_CERTIFICATE_VERIFICATION
            value: "true"
Natalia Szakiel's avatar
Natalia Szakiel committed
          - name: ELASTICSEARCH_SSL_CA_PATH
            value: "/usr/share/logstash/config/certs/ca.crt"
Natalia Szakiel's avatar
Natalia Szakiel committed
      volumes:
Natalia Szakiel's avatar
Natalia Szakiel committed
      {{- range .Values.logstash.beats.pipelines }}
Natalia Szakiel's avatar
Natalia Szakiel committed
      - name: pipeline-config-{{- .name }}
Natalia Szakiel's avatar
Natalia Szakiel committed
        configMap:
Natalia Szakiel's avatar
Natalia Szakiel committed
          name: logstash-{{- $.Values.logstash.beats.pipelines_group_name -}}-{{- .name -}}-config
Natalia Szakiel's avatar
Natalia Szakiel committed
          defaultMode: 511
      {{- end }}
      - name: es-certs
        secret:
Ivan Pasqualini's avatar
Ivan Pasqualini committed
          secretName: {{ .Release.Name }}-elasticsearch-http-cert-secret-internal
      - name: certs-logstash
        secret:
          secretName: logstash-secret-{{ .Values.logstash.beats.pipelines_group_name }}
Natalia Szakiel's avatar
Natalia Szakiel committed
      - name: repo
        emptyDir: {}
      - name: logstash-business-ilm-vol
        configMap:
          name: logstash-business-ilm-configmap
Natalia Szakiel's avatar
Natalia Szakiel committed
          defaultMode: 511
Natalia Szakiel's avatar
Natalia Szakiel committed
      - name: logstash-technical-ilm-vol
        configMap:
          name: logstash-technical-ilm-configmap
Natalia Szakiel's avatar
Natalia Szakiel committed
          defaultMode: 511
Natalia Szakiel's avatar
Natalia Szakiel committed
      - name: logstash-test
        configMap:
          name: logstash-test
          defaultMode: 511
Natalia Szakiel's avatar
Natalia Szakiel committed
  pipelinesRef:
Natalia Szakiel's avatar
Natalia Szakiel committed
    secretName: logstash-{{ .Values.logstash.beats.pipelines_group_name }}-pipelines-yml
Natalia Szakiel's avatar
Natalia Szakiel committed
---
apiVersion: v1
kind: Secret
metadata:
Natalia Szakiel's avatar
Natalia Szakiel committed
  name: logstash-{{ .Values.logstash.beats.pipelines_group_name }}-pipelines-yml
Natalia Szakiel's avatar
Natalia Szakiel committed
data:
  pipelines.yml: |
Natalia Szakiel's avatar
Natalia Szakiel committed
   {{ tpl .Values.logstash.pipelines_yml_config $ | nindent 6 | b64enc }}
Natalia Szakiel's avatar
Natalia Szakiel committed
---
Natalia Szakiel's avatar
Natalia Szakiel committed
{{- range .Values.logstash.beats.pipelines }}
Natalia Szakiel's avatar
Natalia Szakiel committed
apiVersion: v1
kind: ConfigMap
metadata:
Natalia Szakiel's avatar
Natalia Szakiel committed
  name: logstash-{{ $.Values.logstash.beats.pipelines_group_name }}-{{ .name }}-config
Natalia Szakiel's avatar
Natalia Szakiel committed
data:
  {{ .name }}.config: |
Natalia Szakiel's avatar
Natalia Szakiel committed
    {{- tpl .input $ | nindent 4 }}
    {{- tpl .filter $ | nindent 4 }}
Natalia Szakiel's avatar
Natalia Szakiel committed
    {{- tpl .output $ | nindent 4 }}
Natalia Szakiel's avatar
Natalia Szakiel committed
---
{{- end }}
Natalia Szakiel's avatar
Natalia Szakiel committed
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: logstash-api-{{ .Values.logstash.beats.pipelines_group_name }}
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/proxy-body-size: 50m
    external-dns.alpha.kubernetes.io/hostname: "{{ template "logstash.dns" . }},{{- include "logstash.dns.array" . | trim}}"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
      - {{ template "logstash.dns" . }}
    secretName: logstash-secret-{{ .Values.logstash.beats.pipelines_group_name }}
  rules:
    - host: {{ template "logstash.dns" . }}
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: logstash-{{ .Values.logstash.beats.pipelines_group_name }}-ls-api
                port:
                  number: 9600
Natalia Szakiel's avatar
Natalia Szakiel committed
---
{{ $concatUrl :=  (include "logstash.dns"  .) }}
{{ $prefix := (default "l" .Values.logstash.urlPrefix) }}
Natalia Szakiel's avatar
Natalia Szakiel committed
{{- range $index_i :=  until (.Values.logstash.count_beats |int ) -}}
Natalia Szakiel's avatar
Natalia Szakiel committed
{{- printf "\n"}}
apiVersion: v1
kind: ConfigMap
metadata:
Natalia Szakiel's avatar
Natalia Szakiel committed
  name: tcp-services-{{ $.Values.logstash.beats.pipelines_group_name }}-{{$index_i}}
Natalia Szakiel's avatar
Natalia Szakiel committed
data:
  5044: "observability/logstash-{{ $.Values.logstash.beats.pipelines_group_name }}-ls-{{$index_i}}:5044"
Natalia Szakiel's avatar
Natalia Szakiel committed
{{- end }}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: logstash-{{ .Values.logstash.beats.pipelines_group_name }}
spec:
  duration: {{ .Values.logstash.cert.duration }}
  renewBefore: {{ .Values.logstash.cert.renewBefore }}
  commonName: {{ template "logstash.dns" . }}
  secretName: logstash-secret-{{ .Values.logstash.beats.pipelines_group_name }}
  dnsNames:
    - "{{ template "logstash.dns" . }}"
Natalia Szakiel's avatar
Natalia Szakiel committed
{{- range $index_i :=  until (.Values.logstash.count_beats |int ) }}
    - "{{$prefix}}{{$index_i}}.{{$concatUrl}}"
{{- end }}    
    - "logstash.{{ .Release.Namespace }}" 
Natalia Szakiel's avatar
Natalia Szakiel committed
    - "logstash.{{ .Values.logstash.beats.pipelines_group_name }}-ls-api.{{ .Values.namespaceTag }}.{{ .Values.domainSuffix }}"
    - "logstash-{{ .Values.logstash.beats.pipelines_group_name }}-ls-api.{{ .Release.Namespace }}"
Natalia Szakiel's avatar
Natalia Szakiel committed
    - "logstash-{{ .Values.logstash.beats.pipelines_group_name }}-ls-api.{{ .Release.Namespace }}.svc.cluster.local"
Natalia Szakiel's avatar
Natalia Szakiel committed
    name: elk-clusterissuer
    kind: ClusterIssuer
Natalia Szakiel's avatar
Natalia Szakiel committed
    encoding: "PKCS8" 
Natalia Szakiel's avatar
Natalia Szakiel committed
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: logstash-business-ilm-configmap
data: 
  logstash-business-ilm.json: |
    {
      "policy": {
        "phases": {
          "hot": {
            "actions": {
              "rollover": {
                "max_age": "{{ .Values.logstash.ilm.business.hot.max_age }}",
                "max_primary_shard_size": "{{ .Values.logstash.ilm.business.hot.max_primary_shard_size }}"
              },
              "set_priority": {
                "priority": 100
              }
            },
            "min_age": "0ms"
          },
          "delete": {
            "min_age":  "{{ .Values.logstash.ilm.business.delete.min_age }}",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: logstash-technical-ilm-configmap
data: 
  logstash-technical-ilm.json: |
    {
      "policy": {
        "phases": {
          "hot": {
            "actions": {
              "rollover": {
                "max_age": "{{ .Values.logstash.ilm.technical.hot.max_age }}",
                "max_primary_shard_size": "{{ .Values.logstash.ilm.technical.hot.max_primary_shard_size }}"
              },
              "set_priority": {
                "priority": 100
              }
            },
            "min_age": "0ms"
          },
          "delete": {
            "min_age":  "{{ .Values.logstash.ilm.technical.delete.min_age }}",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
Natalia Szakiel's avatar
Natalia Szakiel committed
---
Natalia Szakiel's avatar
Natalia Szakiel committed
apiVersion: v1
kind: ConfigMap
metadata:
  name: logstash-test
data: 
Natalia Szakiel's avatar
Natalia Szakiel committed
  logstash-replace.sh: |
    #!/bin/bash
Natalia Szakiel's avatar
Natalia Szakiel committed
    sed -i 's/@{/${/g' /app/elastic/logstash/config/pipelines/beats-pipeline.config
Natalia Szakiel's avatar
Natalia Szakiel committed
---
Natalia Szakiel's avatar
Natalia Szakiel committed
{{- end }}