From 8dc4ba368b235f635e1981f4b6afa322db2c2f42 Mon Sep 17 00:00:00 2001 From: Ricardo Sanchez Date: Tue, 7 Jan 2025 13:50:48 +0100 Subject: [PATCH] Fix #106. Automating Kibana DataView creation --- .../kibana-configuration-cm.yaml | 31 +++++++++++++ .../kibana-configuration-job.yaml | 45 +++++++++++++++++++ .../kibana-config/kustomization.yaml | 6 +++ .../app/overlays/prod/kustomization.yaml | 3 +- 4 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 kubernetes/platform/elastic-stack/app/components/kibana-config/kibana-configuration-cm.yaml create mode 100644 kubernetes/platform/elastic-stack/app/components/kibana-config/kibana-configuration-job.yaml create mode 100644 kubernetes/platform/elastic-stack/app/components/kibana-config/kustomization.yaml diff --git a/kubernetes/platform/elastic-stack/app/components/kibana-config/kibana-configuration-cm.yaml b/kubernetes/platform/elastic-stack/app/components/kibana-config/kibana-configuration-cm.yaml new file mode 100644 index 000000000..66389c923 --- /dev/null +++ b/kubernetes/platform/elastic-stack/app/components/kibana-config/kibana-configuration-cm.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: kibana-config-data +data: + wait-for-kibana.sh: | + #!/bin/sh + # Wait for Kibana to be available & healthy + echo "Testing connection to Kibana" + until $(curl -k -X GET http://${KIBANA_URL}:${KIBANA_PORT}/_cluster/health); do sleep 5; done + until [ "$(curl -k -X GET http://${KIBANA_URL}:${KIBANA_PORT}/_cluster/health | wc -l)" == "0" ] + do sleep 5 + done + + create-data-view.sh: | + #!/bin/sh + #Import data view + echo "Importing data_view..." + curl -u elastic:${ELASTICSEARCH_PASSWORD} \ + -X POST http://${KIBANA_URL}:${KIBANA_PORT}/api/data_views/data_view \ + -H 'Content-Type: application/json; Elastic-Api-Version=2023-10-31' \ + -H 'kbn-xsrf: string' \ + -d ' + { + "data_view": { + "name": "fluentd", + "title": "fluentd-*", + "timeFieldName": "@timestamp" + } + } + ' \ No newline at end of file diff --git a/kubernetes/platform/elastic-stack/app/components/kibana-config/kibana-configuration-job.yaml b/kubernetes/platform/elastic-stack/app/components/kibana-config/kibana-configuration-job.yaml new file mode 100644 index 000000000..9a3ab1c62 --- /dev/null +++ b/kubernetes/platform/elastic-stack/app/components/kibana-config/kibana-configuration-job.yaml @@ -0,0 +1,45 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: kibana-config-job +spec: + parallelism: 1 + completions: 1 + template: + spec: + restartPolicy: Never + initContainers: + - name: wait-for-kibana + image: alpine/curl:latest + imagePullPolicy: IfNotPresent + env: + - name: KIBANA_URL + value: efk-kb-http + - name: KIBANA_PORT + value: "5601" + command: ["/bin/sh","/kibana/wait-for-kibana.sh"] + volumeMounts: + - name: kibana-config-data + mountPath: /kibana/ + containers: + - name: kibana-config-job + image: alpine/curl:latest + env: + - name: ELASTICSEARCH_PASSWORD + valueFrom: + secretKeyRef: + name: efk-es-elastic-user + key: elastic + - name: KIBANA_URL + value: efk-kb-http + - name: KIBANA_PORT + value: "5601" + command: ["/bin/sh","/kibana/create-data-view.sh"] + volumeMounts: + - name: kibana-config-data + mountPath: /kibana/ + volumes: + - name: kibana-config-data + configMap: + name: kibana-config-data + defaultMode: 0777 \ No newline at end of file diff --git a/kubernetes/platform/elastic-stack/app/components/kibana-config/kustomization.yaml b/kubernetes/platform/elastic-stack/app/components/kibana-config/kustomization.yaml new file mode 100644 index 000000000..fbb0b5e21 --- /dev/null +++ b/kubernetes/platform/elastic-stack/app/components/kibana-config/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component + +resources: + - kibana-configuration-cm.yaml + - kibana-configuration-job.yaml diff --git a/kubernetes/platform/elastic-stack/app/overlays/prod/kustomization.yaml b/kubernetes/platform/elastic-stack/app/overlays/prod/kustomization.yaml index 593cb88cf..d72f87291 100644 --- a/kubernetes/platform/elastic-stack/app/overlays/prod/kustomization.yaml +++ b/kubernetes/platform/elastic-stack/app/overlays/prod/kustomization.yaml @@ -8,4 +8,5 @@ resources: components: - ../../components/authentication - ../../components/ingress - - ../../components/istio \ No newline at end of file + - ../../components/istio + - ../../components/kibana-config \ No newline at end of file