Trouble installing plugins on ECK with initContainers method

I'm attempting to install plugins using the initContainers method, my code is as follows:

  version: 7.2.0
  nodes:
  - podTemplate:
      spec:
        initContainers:
        - name: install-plugins
          command: ['sh', '-c', '| bin/elasticsearch-plugin install --batch repository-s3']
  - nodeCount: 3
    config:
      node.master: true
      node.data: true
      node.ingest: true
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data # note: elasticsearch-data must be the name of the Elasticsearch volume
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 100Gi
        storageClassName: do-block-storage
  updateStrategy:
    changeBudget:
      maxSurge: 0
      maxUnavailable: 1

However the plugins aren't install and the pods don't update. I can see the version has updated with kubectl describe -f elasticsearch.yaml

How do I get the plugin to install?

https://www.elastic.co/guide/en/cloud-on-k8s/0.9/k8s-bundles-plugins.html is maybe a bit brief about the structure, but the podTemplate element has to be part of the node spec. In your sample you are defining inadvertently a second empty group of nodes.

So probably what you want is something like this

  version: 7.2.0
  nodes:
  - nodeCount: 3
    config:
      node.master: true
      node.data: true
      node.ingest: true
    podTemplate:
      spec:
        initContainers:
        - name: install-plugins
          command: ['sh', '-c', 'bin/elasticsearch-plugin install --batch repository-s3']
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data # note: elasticsearch-data must be the name of the Elasticsearch volume
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 100Gi
        storageClassName: do-block-storage
  updateStrategy:
    changeBudget:
      maxSurge: 0
      maxUnavailable: 1

that didn't do anything different, the pods aren't updating.

the client and server versions are as follows:

Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:13:54Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:50Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}```

I've tried to run the yaml on a brand new cluter, at least I'm getting an error from a typo, but if I try and change any entries under initContainer, and apply the changes, it has no effect, except on the first first run.

Fixed the typo, seemed to have to build the cluster again, but was receiving the same error as described here, https://github.com/elastic/cloud-on-k8s/issues/1590