<p>I have some tools running in my kubernetes cluster (ELK, zipkin,..) and i want to know in which namespace to place them, for example i have fluentd which is a daemonset running in kube-system namespace so should i place elasticsearch in the same namespace or put them together in a custom namespace so they can reach each other, i just want to know what is the best practice to do it</p>

touati ahmed
<p>I would say you can have fluentd in multiple namespaces and Elasticsearch in one namespace and fluentd can discover Elasticsearch via K8s internal DNS A/AAAA record e.g. <code>elasticsearch.${namespace}.svc.cluster.local</code>.</p>

<p>I don't have any link to the best practice, but I would show you a practice I saw from the community.</p>

<ul>
<li><p>If you are not familiar with configuring K8s cluster, I recommend to deploy ELK by Helm. It will save you a lot of time and give you enough configuration options.
<a href="https://github.com/helm/charts/tree/master/stable/elastic-stack" rel="nofollow noreferrer">https://github.com/helm/charts/tree/master/stable/elastic-stack</a>.</p></li>
<li><p>Install your ELK helm release on a <code>separate</code> namespace, for example: <code>logging</code>.</p></li>
<li><p>Install fluentd in any namespaces in your cluster and configure elasticsearch host <a href="https://github.com/helm/charts/tree/master/stable/fluentd-elasticsearch" rel="nofollow noreferrer">https://github.com/helm/charts/tree/master/stable/fluentd-elasticsearch</a></p></li>
</ul>
