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

AKS ingress controller not redirecting to SmartHotel360 services

我正在努力在 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 地址,并且入口服务在 Services 下,但我没有看到任何其他内容。我使用 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

再次阅读您的问题: - 主机:swsmarthotel360-409bbcc0.hcp.eastus.azmk8s.io 网址: 路径: - 路径:/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 它将转到您的集群。

Ingress 只能通过 L7 地址到达。 如果该主机文件 hack 有效,那么您只需要修改 DNS 即可使其在没有主机文件 t-shoot hack 的情况下工作。

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

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

有启用 RBAC 是或否的标志(我在你的 YAML 中没有看到 RBAC 语句) 还有一个 [HTTP application routing yes or no] 标志。 (默认情况下它是打开的,但我们将其关闭以便我们可以使用我们自己的 DNS 和我们自己的 Ingress)


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

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

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

云通用入口控制器将 在 Azure 中生成一个 L4 负载均衡器 VM,将其自动映射到 nodeports 服务,这将通过上面提到的 kubectl apply 命令将其转发到集群中存在的 L7 Nginx LB 服务。 L7 Nginx 服务的 pods 由入口控制器 pod 控制,并且 managed/configuring 使用入口对象。

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