We are a team quite new to Kubernetes. Recently we have created an ECK installation running on Google Kubernetes Engine using the recommended deployment instructions (https://www.elastic.co/elasticsearch-kubernetes). So far all is very good, we are comfortable with upgrading versions, changing Elasticsearch node counts and applying basic config changes. Next up, we are looking to install Kibana plugins which does not seem quite so straightforward. All online documentation that we can find for this perform actions directly on the VMs, which seems irrelevant for Kubernetes installs. For this type of install, we would have thought that the Kubernetes yaml definition files will need updating... Can someone confirm this is correct, and if so which files and what changes need to be made to add plugins to our Kibana install?
We are still missing some documentation around that specific for Kibana. But in general the two methods outlined in the section about Elasticsearch plugins apply here as well https://www.elastic.co/guide/en/cloud-on-k8s/0.9/k8s-bundles-plugins.html
You can either use an init container to install the desired plugins (once) at runtime. This has a few downsides though:
- it will slow down Kibana's startup time significantly on the first run. Not only because the plugin needs to be downloaded and installed but also because Kibana runs an optimization script after the plugin has been added. You will have to adjust the readiness probe to account for the startup delay
- it will make Kibana susceptible to failures due to the download location for the plugin not being reachable (temporarily) or similar disruptions
- the optimize script that runs after plugin installation might change the resource requirments for your Kibana so you may have to give it more memory to be able to complete the optimization run
The alternative is to build a custom docker image based on the official distribution with the plugins you want to use pre-installed (and pre-optimized)