Custom configuration files and pluginsedit

To run Elasticsearch with specific plugins or configuration files installed on ECK you have two options:

  1. Create a custom Docker image with the plugins or files pre-installed.
  2. Install the plugins or configuration files at Pod startup time.

The first option has the advantage that you can verify the correctness of the image before rolling it out to your ECK installation, while the second option gives you maximum flexibility. But the second option also means you might catch any errors only at runtime. Plugin installation at runtime has another drawback in that it needs access to the Internet from your cluster and downloads each plugin multiple times, once for each Elasticsearch node.

Building your custom Docker images is outside the scope of this documentation despite being the better solution for most users.

The following example describes option 2, using a repository plugin. To install the plugin before the Elasticsearch nodes start, use an init container to run the plugin installation tool.

  - podTemplate:
        - name: install-plugins
          - sh
          - -c
          - |
            bin/elasticsearch-plugin install --batch repository-azure

To install custom configuration files you can use volumes and volume mounts.

The next example shows how to add a synonyms file for the synonym token filter in Elasticsearch. But you can use the same approach for any kind of file you want to mount into the configuration directory of Elasticsearch.

  - podTemplate:
        - name: elasticsearch 
          - name: synonyms
            mountPath: /usr/share/elasticsearch/config/dictionaries
        - name: synonyms
            name: synonyms 

Elasticsearch runs by convention in a container called elasticsearch

Assuming you have created a config map in the same namespace as Elasticsearch with the name synonyms containing the synonyms file(s)