<p>my problem is why ingress doesnt assigne an Address for the services?</p>
<p>first of all i create 3 deployments:</p>
<pre><code>kubectl create deployment cheddar --image=errm/cheese:cheddar
kubectl create deployment stilton --image=errm/cheese:stilton
kubectl create deployment wensleydale --image=errm/cheese:wensleydale
</code></pre>
<p>second of all i expose those 3 deployment:</p>
<pre><code>kubectl expose deployment cheddar --port=80                  
kubectl expose deployment stilton --port=80                  
kubectl expose deployment wensleydale --port=80
</code></pre>
<p>then i apply my ingress.yaml with <code>kubectl apply -f ingress.yaml</code>, the ingress.yaml content is:</p>
<pre><code>apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cheddar
spec:
  ingressClassName: nginx
  rules:
  - host: cheddar.127.0.0.1.nip.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: cheddar
            port:
              number: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: stilton
spec:
  ingressClassName: nginx
  rules:
  - host: stilton.127.0.0.1.nip.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: stilton
            port:
              number: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: wensleydale
spec:
  ingressClassName: nginx
  rules:
  - host: wensleydale.127.0.0.1.nip.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: wensleydale
            port:
              number: 80
---
</code></pre>
<p>but when i route this paths, the result would still be <code>404-nginx</code></p>
<p>the <code>kubectl get ingress</code> returns:</p>
<pre><code>NAME          CLASS   HOSTS                          ADDRESS   PORTS   AGE
cheddar       nginx   cheddar.127.0.0.1.nip.io                 80      43s
stilton       nginx   stilton.127.0.0.1.nip.io                 80      43s
wensleydale   nginx   wensleydale.127.0.0.1.nip.io             80      43s
</code></pre>
<p>NOTE1: im using microk8s on ubuntu, my clusterversion is: <code>v1.21.7-3+7700880a5c71e2</code></p>
<pre><code>➜  ~ k get no
NAME   STATUS   ROLES    AGE   VERSION
ali    Ready    &lt;none&gt;   8d    v1.21.7-3+7700880a5c71e2

➜  ~ kubectl version
Client Version: version.Info{Major:&quot;1&quot;, Minor:&quot;21+&quot;, GitVersion:&quot;v1.21.7-3+7700880a5c71e2&quot;, GitCommit:&quot;7700880a5c71e25c44491ef5c7d7fb30527d8337&quot;, GitTreeState:&quot;clean&quot;, BuildDate:&quot;2021-11-17T22:07:23Z&quot;, GoVersion:&quot;go1.16.10&quot;, Compiler:&quot;gc&quot;, Platform:&quot;linux/amd64&quot;}
Server Version: version.Info{Major:&quot;1&quot;, Minor:&quot;21+&quot;, GitVersion:&quot;v1.21.7-3+7700880a5c71e2&quot;, GitCommit:&quot;7700880a5c71e25c44491ef5c7d7fb30527d8337&quot;, GitTreeState:&quot;clean&quot;, BuildDate:&quot;2021-11-17T22:02:47Z&quot;, GoVersion:&quot;go1.16.10&quot;, Compiler:&quot;gc&quot;, Platform:&quot;linux/amd64&quot;}
</code></pre>
<p>NOTE2: i've already enaled the ingress extention by this command: <code>microk8s enable ingress</code></p>

<p>If you're using this cluster bare-metal, you'll have to use something like metallb. Kubernetes does not implement network load balancers and therefore will not be able to assign an ip address to your ingress.</p>
<p>Since you're using microk8s, you can use <code>microk8s enable metallb</code></p>
<p>If you're using aws, gcp, aks, you'll find it in their documentation.</p>
<p>For bare-metal see the following :
<a href="https://metallb.org/" rel="nofollow noreferrer">https://metallb.org/</a></p>
