<p>Have been trying to setup Kubeflow on bare metal (on prem etc) on a shared server i.e. not my laptop. I followed the <a href="https://www.kubeflow.org/docs/started/k8s/kfctl-k8s-istio/" rel="nofollow noreferrer">Kubeflow Deployment with kfctl_k8s_istio</a> setup instructions which all well.</p>

<p>Under "Access Kubeflow Dashboard" it says</p>

<blockquote>
  <p>Refer Ingress Gateway guide.</p>
</blockquote>

<p>which just leads to more questions I don't know the answer to coz i didn't write the setup i.e.</p>

<ol>
<li>What is the ingress port for the UI? <code>kubectl get svc istio-ingressgateway -n istio-system</code> returns a hug list??</li>
<li>What do i do if the external IP is <code>&lt;none&gt;</code>? The server has an IP on the local network i.e. 192.168.1.69</li>
<li>I'm assuming <code>kfctl</code> didn't setup an external load balancer?</li>
<li>Whats the container that hosts the web UI? What should the <code>Gateway</code> and <code>VirtualService</code> yaml look like?</li>
</ol>

<p>I want to use Kubeflow and have to learn how Istio works? Why?</p>

<p>Unfortunately, this is how Kubeflow works since verion 0.6. For as long as I remember there was A LOT of hassle with ambassador proxy, and considering that Istio <em>de-facto</em> has become a new service mesh standard for Kubernetes, it was a matter of time for this project to finally integrate it as a default solution. Nevertheless, it has become slightly more complicated for bare-metal users to deploy it.</p>

<p>In your case, that's what you had to do:</p>

<ol>
<li>Install <a href="https://istio.io/docs/setup/install/" rel="nofollow noreferrer">istio</a> in your cluster and enable <a href="https://istio.io/docs/tasks/traffic-management/ingress/ingress-control/" rel="nofollow noreferrer">istio-ingressgateway</a>  (make sure your Kubernetes version is supported)</li>
<li>Install external loadbalancer provisioner, <a href="https://metallb.universe.tf/" rel="nofollow noreferrer">metallb</a> is the way to go. L2 setup works for most cases and requires almost no configuration.</li>
<li>Convert your <code>istio-ingressgateway</code> type from ClusterIP to LoadBalancer, explicitly set LoadBalancer IP for readbility.</li>
<li>Enjoy your poorly configured yet working central dashboard by accessing the loadbalancer.</li>
</ol>

<p>Overall, Istio integration makes it more painful for ML engineers and much more comfortable for Ops- and DevOps-engineers to deploy and provision it.</p>
