<p>For the purpose of log file aggregation, I'm looking to setup a production Elasticsearch instance on an on-premise (vanilla) Kubernetes cluster.</p>

<p>There seems to be two main options for deployment:</p>

<ol>
<li>Elastic Cloud (ECK) - <a href="https://github.com/elastic/cloud-on-k8s" rel="nofollow noreferrer">https://github.com/elastic/cloud-on-k8s</a></li>
<li>Helm Charts - <a href="https://github.com/elastic/helm-charts" rel="nofollow noreferrer">https://github.com/elastic/helm-charts</a></li>
</ol>

<p>I've used the <a href="https://github.com/helm/charts/tree/master/stable/elasticsearch" rel="nofollow noreferrer">old (soon to be deprecated) helm charts</a> successfully but just discovered ECK.</p>

<p>What are the benefits and disadvantages of both of these options? Any constraints or limitations that could impact long-term use?</p>

<p>The main difference is that the Helm Charts are pretty unopinionated while the Operator is opinionated — it has a lot of best practices built in like a hard requirement on using security. Also the Operator Framework is built on the reconcilliation loop and will continuously check if your cluster is in the desired state or not. Helm Charts are more like a package manager where you run specific commands (install a cluster in version X with Y nodes, now add 2 more nodes, now upgrade to version Z,...).</p>

<p>If ECK is Cloud-on-Kubernetes, you can think of the Helm charts as Stack-on-Kubernetes. They're a way of defining exact specifications running our Docker images in a Kubernetes environment.</p>

<p>Another difference is that the Helm Charts are open source while the Operator is free, but uses the Elastic License (you can't use it to run a paid Elasticsearch service is the main limitation).</p>
