istio 网关,未加载节点应用程序

istio 网关,未加载节点应用程序

我尝试部署一个示例 nginx 应用程序,并且它运行正常。因此,我用另一个 nodejs 替换了它,因为它包含多个子页面。因此,我可以测试路由。

这里使用LoadBalancer默认的服务类型,页面加载如下。

磅

但是,使用 istio 网关时,它只显示一个空白页面。

网关

请建议如何修复该问题?

我的网关:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: sampleserver-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"

我的虚拟服务:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: nginxserver
spec:
  hosts:
  - "*"
  gateways:
  - sampleserver-gateway
  http:
  - match:
    - uri:
        exact: /
    route:
    - destination:
        host: nginx-service
        port:
          number: 8080

我的部署和服务文件:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    app: nginx
    service: nginx
spec:
  selector:
    app: nginx
  ports:
    - name: http 
      port: 8080
      targetPort: 3000 #80

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-details
  labels:
    account: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
      version: v1
  template:
    metadata:
      labels:
        app: nginx
        version: v1
    spec:
      serviceAccountName: nginx-details
      containers:
        - name: nginx
          image: uday1kiran/getting-started:1.0 #nginx
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3000 #80
              name: nginx-port
          #securityContext:
              #runAsUser: 1000

对于网关,我将默认的 kubernetes 服务设置为 ClusterIP。但是,由于它没有显示,出于测试目的,我将其更改为 LoadBalancer 以检查应用程序是否存在任何问题,但通过正常的 LoadBalancer 服务可以加载,但不能通过 istio ingresss 网关加载。

示例应用程序是公共镜像,你可以直接测试

来源应用程序代码位于 repo 的 app 文件夹中

答案1

我已经重现了您的问题,在虚拟服务中将 http 匹配从“精确”更改为“前缀”后,一切正常,以下是证明:在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

相关内容