<p><a href="https://github.com/kubernetes-sigs/kind" rel="nofollow noreferrer">https://github.com/kubernetes-sigs/kind</a> - version 0.4.0
Create kubernetes from kubernetes-sigs/kind</p>

<pre><code>kind create cluster
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.15.0) 🖼
</code></pre>

<p>kubectl create serviceaccount</p>

<pre><code>kubectl create serviceaccount --namespace kube-system tiller
serviceaccount/tiller created
</code></pre>

<p>kubectl create clusterrolebinding</p>

<pre><code>kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
clusterrolebinding.rbac.authorization.k8s.io/tiller-cluster-rule created
</code></pre>

<p>kubectl patch deploy </p>

<pre><code>kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
deployment.extensions/tiller-deploy patched


helm init

helm install stable/nginx-ingress

helm install --name grafana stable/grafana --set=ingress.enabled=True,ingress.hosts={grafana.domain.com} --namespace demo --set rbac.create=true
</code></pre>

<p>kubectl logs loping-wallaby-nginx-ingress-controller-76d574f8b7-5m6n5</p>

<pre><code>W0629 17:13:59.709497       6 controller.go:797] Service "demo/grafana" does not have any active Endpoint.
[29/Jun/2019:17:14:03 +0000]TCP200000.000
I0629 17:14:45.223234       6 status.go:295] updating Ingress demo/grafana status from [] to [{ }]
I0629 17:14:45.226343       6 event.go:209] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"demo", Name:"grafana", UID:"228cde81-cb97-4313-ad86-90a273b2206d", APIVersion:"extensions/v1beta1", ResourceVersion:"1938", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress demo/grafana
</code></pre>

<p>kubectl get ingress --all-namespaces</p>

<pre><code>NAMESPACE   NAME      HOSTS                ADDRESS   PORTS   AGE
demo        grafana   grafana.domain.com             80      3m58s
</code></pre>

<p>kubectl get svc --all-namespaces -l app=grafana</p>

<pre><code>NAMESPACE   NAME      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
default     grafana   ClusterIP   10.104.203.243   &lt;none&gt;        80/TCP    24m
</code></pre>

<p>kubectl get endpoints </p>

<pre><code>NAME                                           ENDPOINTS                      AGE
grafana                                        10.244.0.10:3000               21m
kubernetes                                     172.17.0.2:6443                56m
loping-wallaby-nginx-ingress-controller        10.244.0.8:80,10.244.0.8:443   48m
loping-wallaby-nginx-ingress-default-backend   10.244.0.7:8080                48m
</code></pre>

<p>Thanks!</p>

Anton Patsev
<p>A few concerns about your current scenario:</p>

<ol>
<li><p>You have to check installed <a href="https://github.com/helm/charts/tree/master/stable/nginx-ingress" rel="nofollow noreferrer">nginx-ingress</a> helm chart in order to find out why <code>grafana</code> service resides in separate namespace <code>default</code> and not in <code>demo</code> namespace as per helm deploy parameter <code>--namespace demo</code>.</p></li>
<li><p>Since you have not specified in <code>helm install</code> command <code>controller.service.type</code> parameter, <a href="https://kubernetes.github.io/ingress-nginx/" rel="nofollow noreferrer">Nginx Ingress Controller</a> would be implemented with <code>LoadBalancer</code> type of relevant service, in this case Ingress Controller expects to receive external IP address using cloud provider’s load balancer and I assume that your current kubernetes provisioner <a href="https://github.com/kubernetes-sigs/kind" rel="nofollow noreferrer">kubernetes-sigs/kind</a> is not a good choice to adopt outward access to the Kubernetes cluster. Therefore, I would suggest to use <a href="https://kubernetes.io/docs/concepts/services-networking/service/#nodeport" rel="nofollow noreferrer">NodePort</a> service for Nginx Ingress controller in order to expose 80 and 443 port on some specific port in the host machine.</p>

<p><code>helm install --name grafana stable/grafana --set=ingress.enabled=True,ingress.hosts={grafana.domain.com} --namespace demo --set rbac.create=true --controller.service.type=NodePort</code></p></li>
<li><p>Issue that you mentioned is more like harmless and doesn't significantly affect the Nginx Ingress Controller's functionality, because it means that for some short period of time <a href="https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#define-a-liveness-command" rel="nofollow noreferrer">Liveness</a> probe for Grafana Pod has not been initiated and target enpoint has not been released during Grafana Helm chart deploy. You can even re-spawn Nginx Ingress controller Pod to justify my assumption.</p></li>
</ol>
