Expose Kubernetes Ingress to LAN computers

1/27/2021

I have computer A and B on LAN: A at IP 192.168.0.104 B at IP 192.168.0.110

On computer B I have a Kubernetes service with ingress: path hello host hello-node.com

minikube ip is 192.168.49.2 /etc/hosts has a line: 192.168.49.2 hello-node.com

On B I see the service response to hello-node.com/hello but not to 192.168.49.2/hello. On 192.168.49.2/hello I see 404 error from nginx.

How do I access either hello-node.com/hello or 192.168.49.2/hello from computer A?

I do not want to rely on any 3rd party service (load balancer etc)

<hr>

info: minikube version: v1.16.0

$ kubectl cluster-info
Kubernetes control plane is running at https://192.168.49.2:8443
KubeDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
<hr> Workaround without using ingress, but NodePort expose command. From link from @mariusz-k
kubectl expose deployment/hello-node --type="NodePort" --port 8080

SERVICE_NODE_IP=$(minikube ip)
FORWARD_PORT=8090
SERVICE_NODE_PORT=$(kubectl get services/hello-node -o go-template='{{(index .spec.ports 0).nodePort}}')

ssh -i ~/.minikube/machines/minikube/id_rsa docker@$SERVICE_NODE_IP -NL \*:$FORWARD_PORT:0.0.0.0:$SERVICE_NODE_PORT
-- poijqwef
kubernetes
microservices
networking

2 Answers

1/27/2021

You need to get the address of Computer B (the cluster ip) and then connect to it.

# Get the cluster "master" ip
$ kubectl cluster-info
Kubernetes master is running at https://<the desired ip/DNS record>......:443

# use the above ip to get the content of your service
curl -vsI <ip>/hello

enter image description here

-- CodeWizard
Source: StackOverflow

1/28/2021

You can access your minikube service from another machine by following steps from this github issue:

service_name=web # This is what you need to replace with your own service
service_port=$(minikube service $service_name --url | cut -d':' -f3)
ssh -i ~/.minikube/machines/minikube/id_rsa docker@$(minikube ip) -NL \*:${service_port}:0.0.0.0:${service_port}

After that your service will be available under `<minikube's-host-ip>:<nodeport>

-- kool
Source: StackOverflow