使用带有路径重定向的Nginx kubernetes路由LoadBalancer时,为什么我不能正确访问我的服务?

问题描述 投票:0回答:1

我在Helm v2.2中使用AKS尝试部署一个图表,该图表利用nginx LoadBalancer Pod通过一个IP地址控制进入我的服务的所有入口。这非常处于实验阶段,但是我已经证明,当我对.net核心webapi服务使用以下Helm入口配置时:

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
  hosts:
    - host:
      paths:
        - /

然后我确实可以访问暴露的api并在以下位置查看swagger ui

http://[My External IP]/index.html 

然后我想要做的就是将多个服务放在同一个LoadBalancer后面(如您所愿),因此我的期望是我可以将上述服务配置更改为类似这样的内容:

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
  hosts:
    - host:
      paths:
        - /serviceA

这应该意味着我可以通过现在更新的URL访问相同的服务:

http://[My External IP]/serviceA/index.html

这是我应该期望的工作吗?到目前为止,我是否需要使用任何种类的重写系统,因为我从该URL处收到错误消息,提示它找不到某些丢失的资源。使用重写注释的任何尝试也都没有帮助我。有人可以帮我指出我可能做错了什么吗?使用新的url路径,我最终在index.html页试图加载的文件上出现以下类型的错误,表明该文件可以正常工作,但需要重写或执行某些操作?

Failed to load resource: the server responded with a status of 404 ()

作为Helm图表模板引擎的结果,创建了以下入口yaml文件:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: myrelease-release-manager
  labels:
    app.kubernetes.io/name: release-manager
    helm.sh/chart: release-manager-0.1.0
    app.kubernetes.io/instance: release-name
    app.kubernetes.io/version: "1.0"
    app.kubernetes.io/managed-by: Tiller
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /serviceA
    nginx.ingress.kubernetes.io/ssl-redirect: "false"

spec:
  rules:
    - host:
      http:
        paths:
          - path: /serviceA
            backend:
              serviceName: myrelease-release-manager
              servicePort: 80

由于此入口文件,当我使用路径/serviceA/index.html转到我的外部IP地址时,我想访问此服务。>

我在Helm v2.2中使用AKS尝试部署一个图表,该图表利用nginx LoadBalancer Pod通过一个IP地址控制进入我的服务的所有入口。这在实验中非常重要...

kubernetes kubernetes-helm nginx-ingress azure-aks
1个回答
0
投票

关闭,您需要将重写目标更新为/ $ 2

© www.soinside.com 2019 - 2024. All rights reserved.