Kibana with plugins running on Kubernetes

10/10/2021

I'm trying to install Kibana with a plugin via the initContainers functionality and it doesn't seem to create the pod with the plugin in it.

The pod gets created and Kibana works perfectly, but the plugin is not installed using the yaml below.

initContainers Documentation

apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 7.11.2
  count: 1
  elasticsearchRef:
    name: quickstart
  podTemplate:
    spec:
      initContainers:
      - name: install-plugins
        command:
        - sh
        - -c
        - |
          bin/kibana-plugin install https://github.com/fbaligand/kibana-enhanced-table/releases/download/v1.11.2/enhanced-table-1.11.2_7.11.2.zip
-- Ovi
azure-aks
elasticsearch
kibana
kubernetes

2 Answers

10/10/2021

Building you own image would sure work, though it could be avoided in that case.

Your initContainer is pretty much what you were looking for. With one exception: you need to add some emptyDir volume.

Mount it to both your initContainer and regular kibana container, sharing the plugins you would install during init.

Although I'm not familiar with the Kibana CR, here's how I would do this with elasti.co official images:

spec:
  template:
    spec:
      containers:
      - name: kibana
        image: official-kibana:x.y.z
        securityContext:
          runAsUser: 1000
        volumeMounts:
        - mountPath: /usr/share/kibana/plugins
          name: plugins
      initContainers:
      - command:
        - /bin/bash
        - -c
        - |
          set -xe
          if ! ./bin/kibana-plugin list | grep prometheus-exporter >/dev/null; then
              if ! ./bin/kibana-plugin install "https://github.com/pjhampton/kibana-prometheus-exporter/releases/download/7.12.1/kibanaPrometheusExporter-7.12.1.zip"; then
                  echo WARNING: failed to install Kibana exporter plugin
              fi
          fi
        name: init
        image: official-kibana:x.y.z
        securityContext:
          runAsUser: 1000
        volumeMounts:
        - mountPath: /usr/share/kibana/plugins
          name: plugins
      volumes:
      - emptyDir: {}
        name: plugins
-- SYN
Source: StackOverflow

10/10/2021

Got Kibana working with plugins by using a custom container image

dockerfile

FROM docker.elastic.co/kibana/kibana:7.11.2
RUN /usr/share/kibana/bin/kibana-plugin install https://github.com/fbaligand/kibana-enhanced-table/releases/download/v1.11.2/enhanced-table-1.11.2_7.11.2.zip
RUN /usr/share/kibana/bin/kibana --optimize

yaml

apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 7.11.2
  image: my-conatiner-path/kibana-with-plugins:7.11.2
  count: 1
  elasticsearchRef:
    name: quickstart
-- Ovi
Source: StackOverflow