## Global Docker image parameters
## Please, note that this will override the image parameters, including dependencies, configured to use the global value
## Current available global Docker image parameters: imageRegistry, and imagePullSecrets
##
# global:
#   imageRegistry: myRegistryName
#   imagePullSecrets:
#     - myRegistryKeySecretName

## Bitnami Logstash image
## ref: https://hub.docker.com/r/bitnami/logstash/tags/
##
image:
  registry: docker.io
  repository: bitnami/logstash
  tag: 7.9.2-debian-10-r0
  ## Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
  ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
  ##
  pullPolicy: IfNotPresent
  ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
  ##
  # pullSecrets:
  #   - myRegistryKeySecretName

  ## Set to true if you would like to see extra information on logs
  ## ref:  https://github.com/bitnami/minideb-extras/#turn-on-bash-debugging
  ##
  debug: false

## String to partially override logstash.fullname template (will maintain the release name)
##
# nameOverride:

## String to fully override logstash.fullname template
##
# fullnameOverride:

## Kubernetes Cluster Domain
##
clusterDomain: cluster.local

## Logstash configuration file name. It must match the name of the configuration file mounted as a configmap
##
configFileName: logstash.conf
## Whether to enable the Logstash Monitoring API or not  Kubernetes cluster domain
##
enableMonitoringAPI: true
## Logstash Monitoring API Port
##
monitoringAPIPort: 9600

## An array to add extra environment variables
## For example:
## extraEnvVars:
##  - name: ELASTICSEARCH_HOST
##    value: "x.y.z"
##
# extraEnvVars:

## Input Plugins configuration
## ref: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
##
input: |-
  # udp {
  #   port => 1514
  #   type => syslog
  # }
  # tcp {
  #   port => 1514
  #   type => syslog
  # }
  http { port => 8080 }
## Filter Plugins configuration
## ref: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
##
# filter: |-
#   grok {
#     match => { "message" => "%{COMBINEDAPACHELOG}" }
#   }
#   date {
#     match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
#   }
## Output Plugins configuration
## ref: https://www.elastic.co/guide/en/logstash/current/output-plugins.html
##
output: |-
  # elasticsearch {
  #   hosts => ["${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"]
  #   manage_template => false
  #   index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
  # }
  # gelf {
  #   host => "${GRAYLOG_HOST}"
  #   port => ${GRAYLOG_PORT}
  # }
  stdout {}

## ConfigMap with Logstash configuration
## NOTE: This will override input, filter, and output parameters
##
# existingConfiguration:


## Array to add extra volumes (evaluated as a template)
## extraVolumes:
##   - name: myvolume
##     configMap:
##       name: myconfigmap
extraVolumes: []

## Array to add extra mounts (normally used with extraVolumes, evaluated as a template)
##
## extraVolumeMounts:
##   - mountPath: /opt/bitnami/desired-path
##     name: myvolume
##     readOnly: true
extraVolumeMounts: []

containerPorts:
  # - name: syslog-udp
  #   containerPort: 1514
  #   protocol: UDP
  # - name: syslog-tcp
  #   containerPort: 1514
  #   protocol: TCP
  - name: http
    containerPort: 8080
    protocol: TCP
  - name: monitoring
    containerPort: 9600
    protocol: TCP

## Number of Logstash replicas to deploy
##
replicaCount: 1

## Update strategy, can be set to RollingUpdate or OnDelete by default.
## ref: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets
##
updateStrategy: RollingUpdate

## Pod management policy
## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies
##
podManagementPolicy: OrderedReady

## Pod annotations. Evaluated as a template
## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
##
podAnnotations: {}

## Affinity for pod assignment
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}

## Node labels for pod assignment. Evaluated as a template.
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}

## Tolerations for pod assignment. Evaluated as a template.
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: {}

## Pod priority
## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
##
# priorityClassName: ""

## K8s Security Context for Logstash pods
## https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
##
securityContext:
  enabled: true
  fsGroup: 1001
  runAsUser: 1001

## Logstash containers' resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
resources:
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  limits: {}
  #   cpu: 100m
  #   memory: 128Mi
  requests: {}
  #   cpu: 100m
  #   memory: 128Mi

## Logstash pods' liveness and readiness probes
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
##
livenessProbe:
  httpGet:
    path: /
    port: monitoring
  initialDelaySeconds: 60
  # periodSeconds: 10
  # timeoutSeconds: 5
  # successThreshold: 1
  # failureThreshold: 6
readinessProbe:
  httpGet:
    path: /
    port: monitoring
  initialDelaySeconds: 60
  # periodSeconds: 10
  # timeoutSeconds: 5
  # successThreshold: 1
  # failureThreshold: 6

## Service paramaters
##
service:
  ## Service type
  ##
  type: ClusterIP
  ## Logstash svc ports
  ##
  ports:
    # syslog-udp:
    #   port: 1514
    #   targetPort: syslog-udp
    #   protocol: UDP
    # syslog-tcp:
    #   port: 1514
    #   targetPort: syslog-tcp
    #   protocol: TCP
    http:
      port: 8080
      targetPort: http
      protocol: TCP
  # loadBalancerIP:
  ## Load Balancer sources
  ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
  ##
  # loadBalancerSourceRanges:
  # - 10.10.10.0/24
  ## Set the Cluster IP to use
  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address
  ##
  # clusterIP: None
  ## Provide any additional annotations which may be required
  ##
  annotations: {}

## Ingress paramaters
##
ingress:
  ## Set to true to enable ingress record generation
  enabled: false

  ## Set this to true in order to add the corresponding annotations for cert-manager
  certManager: false

  ## Ingress annotations done as key:value pairs
  ## For a full list of possible ingress annotations, please see
  ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/annotations.md
  ##
  ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be set
  ## If certManager is set to true, annotation kubernetes.io/tls-acme: "true" will automatically be set
  annotations: {}
  #  kubernetes.io/ingress.class: nginx

  ## The list of hostnames to be covered with this ingress record.
  ## Most likely this will be just one host, but in the event more hosts are needed, this is an array
  hosts:
    - name: logstash.local
      path: /

  ## The tls configuration for the ingress
  ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
  # tls:
  # - hosts:
  #   - logstash.local
  #   secretName: logstash.local-tls

  secrets:
  ## If you're providing your own certificates, please use this to add the certificates as secrets
  ## key and certificate should start with -----BEGIN CERTIFICATE----- or
  ## -----BEGIN RSA PRIVATE KEY-----
  ##
  ## name should line up with a tlsSecret set further up
  ## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set
  ##
  ## It is also possible to create and manage the certificates outside of this helm chart
  ## Please see README.md for more information
  # - name: logstash.local-tls
  #   key:
  #   certificate:

## Prometheus metrics
##
metrics:
  enabled: false
  ## Bitnami Logstash Promtheus Exporter image
  ## ref: https://hub.docker.com/r/bitnami/logstash-exporter/tags/
  ##
  image:
    registry: docker.io
    repository: bitnami/logstash-exporter
    tag: 0.1.2-debian-10-r226
    ## Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
    ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
    ##
    pullPolicy: IfNotPresent
    ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)
    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
    ##
    # pullSecrets:
    #   - myRegistryKeySecretName

  ## Logstash Prometheus Exporter containers' resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ##
  resources:
    # We usually recommend not to specify default resources and to leave this as a conscious
    # choice for the user. This also increases chances charts run on environments with little
    # resources, such as Minikube. If you do want to specify resources, uncomment the following
    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
    limits: {}
    #   cpu: 100m
    #   memory: 128Mi
    requests: {}
    #   cpu: 100m
    #   memory: 128Mi

  ## Prometheus Operator ServiceMonitor configuration
  ##
  serviceMonitor:
    enabled: false
    ## Namespace in which Prometheus is running
    ##
    # namespace: monitoring

    ## Interval at which metrics should be scraped.
    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
    ##
    # interval: 10s

    ## Timeout after which the scrape is ended
    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
    ##
    # scrapeTimeout: 10s

    ## ServiceMonitor selector labels
    ## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration
    ##
    # selector:
    #   prometheus: my-prometheus

  ## Logstash Prometheus Exporter containers' liveness and readiness probes
  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
  ##
  livenessProbe:
    httpGet:
      path: /metrics
      port: metrics
    initialDelaySeconds: 60
    # periodSeconds: 10
    # timeoutSeconds: 5
    # successThreshold: 1
    # failureThreshold: 6
  readinessProbe:
    httpGet:
      path: /metrics
      port: metrics
    initialDelaySeconds: 60
    # periodSeconds: 10
    # timeoutSeconds: 5
    # successThreshold: 1
    # failureThreshold: 6

  service:
    ## Service type
    ##
    type: ClusterIP
    ## Logstash Prometheus port
    ##
    port: 9198
    ## Specify the nodePort value for the LoadBalancer and NodePort service types.
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
    ##
    nodePort: ""
    ## Set the LoadBalancer service type to internal only.
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
    ##
    # loadBalancerIP:
    ## Load Balancer sources
    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
    ##
    # loadBalancerSourceRanges:
    # - 10.10.10.0/24
    ## Set the Cluster IP to use
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address
    ##
    # clusterIP: None
    ## Annotations for the Prometheus metrics service
    ##
    annotations:
      prometheus.io/scrape: "true"
      prometheus.io/port: "9198"
      prometheus.io/path: "/metrics"

## Pod disruption budget configuration
## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
##
podDisruptionBudget:
  ## Specifies whether a Pod disruption budget should be created
  ##
  create: false
  minAvailable: 1
  # maxUnavailable: 1
