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

时间:2018-09-08 22:04:54

标签: azure kubernetes azure-kubernetes

我正在尝试在Azure Kubernetes Service中重新创建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的“入口”页面中看到所有服务都具有相同的外部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

1 个答案:

答案 0 :(得分: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地址访问入口。 如果该主机文件黑客有效,那么您只需要修改DNS即可使其不受主机文件t-shoot黑客的攻击。<​​/ p>

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

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

有一个标志启用RBAC是或否(我的YAML中看不到RBAC语句) 还有一个[HTTP应用程序路由yes或no]标志。 (默认情况下处于启用状态,但是我们将其关闭,因此我们可以使用自己的DNS和自己的Ingress)


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

1。)指定启用RBAC和关闭HTTP路由

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

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

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