AKS入口控制器未重定向到SmartHotel360服务

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

我正在努力在Azure Kubernetes服务中重新创建SmartHotel360演示,但似乎入口控制器无法正常工作。

这是一个工作示例应该是什么样的(将酒店服务重定向到/ hotels-api):http://sh360production.2c3abf6edd44497688b2.westus.aksapp.io/hotels-api/

但是当我部署我的网站时,它会将/ hotels-api重定向到一个空白网页,这就是我怀疑Ingress Controller中出现了什么问题。 http://23.96.16.121/hotels-api

从我正在阅读的有关入口控制器的文档中,我使用kubectl apply -f ingress.yaml部署了该服务。我可以在K8s UI的Ingresses页面中看到所有服务都具有相同的外部IP地址,并且入口服务在服务下,但我没有看到任何其他内容。我使用helm部署了所有后端服务,看起来它们也出现在UI中。

ingress.yaml文件看起来像:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    app: sh360
    component: frontend
  name: sh360-ingress
  annotations:
    kubernetes.io/ingress.class: addon-http-application-routing
    ingress.kubernetes.io/ssl-redirect: "false"  
    nginx.ingress.kubernetes.io/ssl-redirect: "false"  
spec:
  rules:
  - host: swsmarthotel360-409bbcc0.hcp.eastus.azmk8s.io
    http:
      paths:
      - path: /hotels-api
        backend:
          serviceName: helm-test2-hotels-sh360-hotels
          servicePort: 80
      - path: /bookings-api
        backend:
          serviceName: bookings
          servicePort: 80
      - path: /suggestions-api
        backend:
          serviceName: suggestions
          servicePort: 80

由于我是AKS和Kubernetes的新手,ingress.yaml文件中是否会缺少重定向到服务的内容?

(完整参考:https://github.com/Microsoft/SmartHotel360-AKS-DevSpaces-Demo

azure kubernetes azure-kubernetes
1个回答
1
投票

再次阅读你的问题: - 主持人:swsmarthotel360-409bbcc0.hcp.eastus.azmk8s.io http:路径: - 路径:/ hotels-api

所以你的入口可能工作正常。我相信你的http://23.96.16.121/hotels-api测试方法就是问题所在。

我想你想要做的是编辑你的主机文件,使其具有如下条目:swsmarthotel360-409bbcc0.hcp.eastus.azmk8s.io 23.96.16.121

然后当你去swsmarthotel360-409bbcc0.hcp.eastus.azmk8s.io/hotels-api它将转到你的群集。

只能通过L7地址访问Ingress。如果该主机文件hack有效,那么你只需要修改DNS以使其在没有主机文件的情况下工作。

================================= (原始答案)

我还使用AKS(Azure的Kbuernetes即服务)答案取决于部署群集时指定的选项。

有一个标志可以启用RBAC是或否(我没有在您的YAML中看到RBAC语句)还有[HTTP应用程序路由是或否]标志。 (它默认开启,但我们将其关闭,以便我们可以使用自己的DNS和我们自己的Ingress)


无论如何,我希望这能指出你正确的方向: 我建议您创建一个测试集群以了解更多信息并在该测试集群上:

1.)指定RBAC on和HTTP路由关闭

2.)转到此处https://kubernetes.github.io/ingress-nginx/deploy/应用强制命令和云通用入口控制器命令。

云通用入口控制器将在Azure中生成L4负载平衡器VM,将其自动化到nodeports服务,由于上面提到的kubectl应用命令,它将转发到集群内存在的L7 Nginx LB服务。 L7 Nginx服务的pod由入口控制器pod控制,并使用入口对象进行管理/配置。

要测试它,你可以查看L4 LB的IP地址(kubectl get svc --all-namespaces -o wide)应该显示它的IP。您的入口规则之一可能是mywebsite.com/homepage。所以要测试你可以使用像mywebsite.com这样的条目编辑你的主机文件

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