Mi pod de frontend está tratando de comunicarse con mi pod de backend para buscar a todos los usuarios en una base de datos. La llamada es sencilla y funciona cuando uso curl dentro de AMBOS contenedores frontend e istio-proxy en el pod frontend:
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 responseSin embargo, mi aplicación de reacción frontal tiene problemas para llegar a este punto final en Chrome. Aquí están los registros de la consola:
GET http://backend-svc:8000/users/ net::ERR_NAME_NOT_RESOLVEDParece que el nombre de dominio no se puede resolver. ¿Alguna idea de lo que estoy haciendo mal aquí?
Estoy usando nginx para servir mi aplicación de reacción de interfaz (no estoy seguro de si eso puede ser un problema).
EDITAR: algunos comentarios dicen que necesito ajustar mis archivos de Gateway y/o servicio virtual. Así es como se ven ahora:
# 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: 80Un par de cosas se ven mal en sus ejemplos de código:
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: 80Un buen recurso para juntar estas cosas es la página de inicio de Istio.
Solo para asegurarse: ¿su llamada se activa en el lado del cliente? En caso afirmativo, esa es la razón, ya que http://backend-svc:8000/users/ son entradas de DNS emitidas por componentes principales y que solo están disponibles internamente en el clúster.
Dicho esto, debe crear un recurso personalizado de puerta de enlace. La descripción completa está aquí
Una puerta de enlace permite que se apliquen características de Istio, como la supervisión y las reglas de ruta, al tráfico que ingresa al clúster.
Espero haber ayudado.