<p><a href="http://grs-preprodkubemaster01:5601/kibana" rel="nofollow noreferrer">http://grs-preprodkubemaster01:5601/kibana</a></p>

<p>I have followed docs and installed Kibana, When I used the service as type: LoadBalancer, the service isn't 
coming up, so I deleted the type: LoadBalancer and let it default to ClusterIP, it came up fine. (Note I don't have AWS)
But, I am not sure how to access the UI, I tried this URL but its not working.
<a href="http://my-preprodkubemaster01/api/v1/proxy/namespaces/kube-system/services/elasticsearch-logging/app/kibana" rel="nofollow noreferrer">http://my-preprodkubemaster01/api/v1/proxy/namespaces/kube-system/services/elasticsearch-logging/app/kibana</a>
any ideas how to access the Kibana UI. I checked service, deployment and everything is green check.</p>

<p>Another thing I tried is this URL with this URL which I got from the command kubectl cluster-info
<a href="https://10.123.24.107:6443/api/v1/namespaces/kube-system/services/kibana-logging/proxy" rel="nofollow noreferrer">https://10.123.24.107:6443/api/v1/namespaces/kube-system/services/kibana-logging/proxy</a>
However, this is showing me  this error</p>

<pre><code>{
kind: "Status",
apiVersion: "v1",
metadata: { },
status: "Failure",
message: "services "kibana-logging" is forbidden: User "system:anonymous" cannot get services/proxy in the namespace "kube-system"",
reason: "Forbidden",
details: {
name: "kibana-logging",
kind: "services"
},
code: 403
}
</code></pre>

<p>So, as another try I used Kibana service as NodePort, but that didn't work either.</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: kibana-logging
  namespace: kube-system
  labels:
    k8s-app: kibana-logging
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/name: "Kibana"
spec:
  selector:
    k8s-app: kibana-logging
  type: NodePort
  ports:
  - port: 5601
    protocol: TCP
    targetPort: ui
    nodePort: 30887

$  kubectl -n kube-system get rc,svc,cm,po
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
svc/elasticsearch-logging   ClusterIP   10.98.10.182     &lt;none&gt;        9200/TCP         12m
svc/heapster                ClusterIP   10.107.184.85    &lt;none&gt;        80/TCP           3d
svc/kibana-logging          NodePort    10.102.254.129   &lt;none&gt;        5601:30887/TCP   12m
svc/kube-dns                ClusterIP   10.96.0.10       &lt;none&gt;        53/UDP,53/TCP    3d
svc/kubernetes-dashboard    ClusterIP   10.105.30.246    &lt;none&gt;        80/TCP           3d
svc/monitoring-influxdb     ClusterIP   10.109.144.39    &lt;none&gt;        8086/TCP         3d
</code></pre>

<p>I would like to know what URL I should be using to access the Kibana UI. Please note that I have npot tried to do kubectl proxy and I would like to have it work without it</p>

<p>The most common way to expose internal server outside the cluster is an <a href="https://kubernetes.io/docs/concepts/services-networking/ingress/" rel="nofollow noreferrer">Ingress</a>.</p>

<p>First, you need to have an Ingress controller running in your Kubernetes cluster.<br>
There are two types of maintained Ingress controllers - <a href="https://git.k8s.io/ingress-gce/README.md" rel="nofollow noreferrer">GCE</a> and <a href="https://git.k8s.io/ingress-nginx/README.md" rel="nofollow noreferrer">nginx</a></p>

<p>Then, you need to create a <a href="https://github.com/kubernetes/website/blob/master/content/en/docs/concepts/services-networking/ingress.yaml" rel="nofollow noreferrer">yaml</a> file as shown below and change it according to your needs:</p>

<pre><code>apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: testsvc
    servicePort: 80
</code></pre>

<p>When you create it using <code>kubectl create -f</code>, you should see something like this:</p>

<pre><code>$ kubectl get ingress
NAME                RULE          BACKEND        ADDRESS
test-ingress        -             testsvc:80     1.2.3.4
</code></pre>

<p>In this example, <code>1.2.3.4</code> is the IP allocated by Ingress controller.</p>

<p>When you have all things in place, you'll be able to access your application (Kibana) by IP <code>1.2.3.4</code></p>

<p>Please find more examples and use cases in <a href="https://kubernetes.io/docs/concepts/services-networking/ingress/" rel="nofollow noreferrer">Ingress documentation</a></p>

<p>You can also expose a Kubernetes service without using the Ingress resource:</p>

<ol>
<li><a href="https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer" rel="nofollow noreferrer">Service.Type=LoadBalancer</a></li>
<li><a href="https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport" rel="nofollow noreferrer">Service.Type=NodePort</a></li>
<li><a href="https://git.k8s.io/contrib/for-demos/proxy-to-service" rel="nofollow noreferrer">Port Proxy</a></li>
</ol>
