Reputation: 5955
My frontend pod is trying to talk to my backend pod to fetch all the users in a DB. The call is straightforward and works when I use curl inside BOTH the frontend and istio-proxy containers in the frontend pod:
kubectl exec -it frontend-pod -c frontend-container -- bash
curl backend-svc:8000/users/
# returns correct response
kubectl exec -it frontend-pod -c istio-proxy -- bash
curl backend-svc:8000/users/
# returns correct response
However, my frontend react app is having trouble hitting this endpoint in Chrome. Here are the console logs:
GET http://backend-svc:8000/users/ net::ERR_NAME_NOT_RESOLVED
Looks like the domain name cannot be resolved. Any idea what I'm doing wrong here?
I'm using nginx to serve my frontend react application (not sure if that may be a problem).
EDIT: Some feedback says I need to adjust my Gateway and/or Virtual service files. Here's what they look like now:
# Source: myapp/gateway.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: myapp-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- '*'
---
# Source: myapp/virtual-service.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: myapp
spec:
hosts:
- '*'
gateways:
- myapp-gateway
http:
- route:
- destination:
host: frontend-svc
port:
number: 80
Upvotes: 3
Views: 1159
Reputation: 11860
Couple of things look wrong in your code samples:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "*"
gateways:
- bookinfo-gateway
http:
- match:
- uri:
exact: /frontend
route:
- destination:
host: frontend-svc
port:
number: 80
A good resource to piece these things together is the Istio Getting Started Page
Upvotes: 1
Reputation: 316
Just to make sure: is your call triggered on the client side? If yes, that's the reason, since http://backend-svc:8000/users/
are DNS entries that are issued by core components and that are available only internally in the cluster.
That being said you should create a Gateway Custom Resource. The full description is here
A Gateway allows Istio features such as monitoring and route rules to be applied to traffic entering the cluster.
Hope I helped.
Upvotes: 0