I have a service (/deployment/pod) running in my Minikube (installed on my Mac) that needs to call an external http service that runs directly on my Mac (i.e. outside Minikube). The domain name of that external service is defined into my Mac /etc/hosts file. Yet, my service within Minikube cannot call that external service. Any idea what I need to configure where? Many thanks. C
Because your minikube is running on a virtual machine on your laptop , you just need minikube ssh
into that machine and enter the address of your external service into the /etc/hosts
file of that virtual machine.
Create Endpoints
that will forward traffic to your desire external IP address (your local machine). You can directly connect using Endpoints
but according to Goole Cloud best practice
(doc) is to access it through a Service
Create your Endpoints
kind: Endpoints
apiVersion: v1
metadata:
name: local-ip
subsets:
- addresses:
- ip: 10.240.0.4 # IP of your desire end point
ports:
- port: 27017 # Port that you want to access
Then create you Service
kind: Service
apiVersion: v1
metadata:
name: local-ip
Spec:
type: ClusterIP
ports:
- port: 27017
targetPort: 27017
Now you can call external http service using the Service
name. In this case loal-ip
like any other internal service of minikube
.