<p>I tried deploying on EKS, and my config.yaml follows this suggested format:</p>
<pre><code>botfront:
   app:
# The complete external host of the Botfront application (eg. botfront.yoursite.com). It must be set even if running on a        private or local DNS (it populates the ROOT_URL).
       host: botfront.yoursite.com
mongodb:
   enabled: true # disable to use an external mongoDB host
# Username of the MongoDB user that will have read-write access to the Botfront database. This is not the root user
    mongodbUsername: username
# Password of the MongoDB user that will have read-write access to the Botfront database. This is not the root user
    mongodbPassword: password
# MongoDB root password
     mongodbRootPassword: rootpassword
</code></pre>
<p>And I ran this command:</p>
<pre><code>helm install -f config.yaml -n botfront --namespace botfront botfront/botfront
</code></pre>
<p>and the deployment appeared successful with all pods listed as running.</p>
<p>But botfront.yoursite.com goes nowhere. I checked the ingress and it matches, but there are no external ip addresses or anything. I don't know how to actually access my botfront site once deployed on kubernetes.</p>
<p>What am I missing?</p>
<p>EDIT:</p>
<p>With nginx lb installed <code>kubectl get ingresses -n botfront</code> now
returns:</p>
<pre><code>NAME                   CLASS    HOSTS                ADDRESS                                                                         PORTS   AGE
botfront-app-ingress   &lt;none&gt;   botfront.cream.com   a182b0b24e4fb4a0f8bd6300b440e5fa-423aebd224ce20ac.elb.us-east-2.amazonaws.com   80      4d1h
</code></pre>
<p>and</p>
<p><code>kubectl get svc -n botfront</code> returns:</p>
<pre><code>NAME                        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
botfront-api-service        NodePort   10.100.207.27   &lt;none&gt;        80:31723/TCP      4d1h
botfront-app-service        NodePort   10.100.26.173   &lt;none&gt;        80:30873/TCP      4d1h
botfront-duckling-service   NodePort   10.100.75.248   &lt;none&gt;        80:31989/TCP      4d1h
botfront-mongodb-service    NodePort   10.100.155.11   &lt;none&gt;        27017:30358/TCP   4d1h
</code></pre>

Stephan
<p>If you run <code>kubectl get svc -n botfront</code>, it will show you all the <code>Services</code> that expose your <code>botfront</code></p>
<pre><code>$ kubectl get svc -n botfront
NAME                        TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE
botfront-api-service        NodePort   10.3.252.32    &lt;none&gt;        80:32077/TCP      63s
botfront-app-service        NodePort   10.3.249.247   &lt;none&gt;        80:31201/TCP      63s
botfront-duckling-service   NodePort   10.3.248.75    &lt;none&gt;        80:31209/TCP      63s
botfront-mongodb-service    NodePort   10.3.252.26    &lt;none&gt;        27017:31939/TCP   64s
</code></pre>
<p>Each of them is of type <a href="https://kubernetes.io/docs/concepts/services-networking/service/#nodeport" rel="nofollow noreferrer"><code>NodePort</code></a>, which means it exposes your app on the external IP address of each of your <strong>EKS</strong> cluster nodes on a specific port.</p>
<p>So if you your <strong>node1</strong> ip happens to be <code>1.2.3.4</code> you can acess <code>botfront-api-service</code> on <code>1.2.3.4:32077</code>. Don't forget to allow access to this port on <strong>firewall/security groups</strong>. If you have any registered domain e.g. <code>yoursite.com</code> you can configure for it a subdomain <code>botfront.yoursite.com</code> and point it to one of your <strong>EKS</strong> nodes. Then you'll be able to access it using your domain. This is the simplest way.</p>
<p>To be able to access it in a more effective way than by using specific node's IP and non-standard port, you may want to expose it via <a href="https://kubernetes.io/docs/concepts/services-networking/ingress/" rel="nofollow noreferrer"><code>Ingress</code></a> which will create an external load balancer, making your <code>NodePort</code> services available under one external IP adress and standard http port.</p>
<p><strong>Update:</strong> I see that this chart already comes with <code>ingress</code> that exposes your app:</p>
<pre><code>$ kubectl get ingresses -n botfront 
NAME                   HOSTS                   ADDRESS   PORTS   AGE
botfront-app-ingress   botfront.yoursite.com             80      70m
</code></pre>
<p>If you retrieve its yaml definition by:</p>
<pre><code>$ kubectl get ingresses -n botfront -o yaml
</code></pre>
<p>you'll see that it uses the following annotation:</p>
<pre><code>kubernetes.io/ingress.class: nginx
</code></pre>
<p>which means you need <a href="https://kubernetes.github.io/ingress-nginx" rel="nofollow noreferrer">nginx-ingress controller</a> installed on your <strong>EKS</strong> cluster. This might be one reason why it fails. As you can see in my example, this ingress doesn't get any external IP. That's because <strong>nginx-ingress</strong> wasn't installed on my <strong>GKE</strong> cluster. Not sure about <strong>EKS</strong> but as far as I know it doesn't come with <strong>nginx-ingress</strong> preinstalled.</p>
<p>One more thing: I assume that in your <code>config.yaml</code> you put some real domain name that you have registered instead of <code>botfront.yoursite.com</code>. Suppose your domain is <code>yoursite.com</code> and you successfully created subdomain <code>botfront.yoursite.com</code>, you should redirected it to the IP of your load balancer (the one used by your <code>ingress</code>).</p>
<p>If you run <code>kubectl get ingresses -n botfront</code> but the <code>ADDRESS</code> is empty, you probably don't have <strong>nginx-ingress</strong> installed and the underlying load balancer cannot be created. If you have here some external IP address, then redirect your registered domain to this address.</p>
