我使用的是infra团队提供的kubernetes集群(不是minikube),我已经创建了带有所有配置的traefik入口控制器,入口容器,我们的应用程序在集群中运行。现在我想使用域名或ip地址访问应用程序,为此,我创建了一个入口资源,如下所示
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
rules:
- host: dummy.domain.com
http:
paths:
- path: /
backend:
serviceName: app-web-ui
servicePort: web
我这里没有得到的是主机名,因为应用程序在集群中运行,这个主机名应该是集群主节点名吗?实际prod环境中的主机名或IP地址应该是什么?
注意:我们没有使用任何云提供商,它只是与kubernetes集群环境的简单docker(集群配置在Mirantis kubernetes中,客户端是Windows)。
如果你在入口后使用任何负载平衡器或任何带有负载平衡器的入口控制器,你必须在任何地方使用负载平衡器IP。
所以你必须为dummy.domain.com
映射Loadbalancer IP
到DNS
,否则如果你不使用负载平衡器,你必须使用主IP。
您正在从local machine
进行测试,您可以在etc/host
文件中添加domain
和IP条目并检查。
Ingress对象配置Ingress控制器路由对dummy.domain.com的任何请求到您刚刚部署的应用程序。您需要更新/etc/hostsdummy.domain.com输入控制虚拟机的IP地址,例如2192.168.50.212,此地址为主IP地址。
在Kubernetes集群外运行HAProxy Kubernetes入口控制器我能够通过向Infra团队请求新的域名(dns条目)来解决这个问题,对于这个域名,我已经映射了集群的主节点Ip地址,我们有3个管理节点,所以我已经映射了域名(dummy.domain.com)与3个管理节点Ip地址。
在此之后,我能够使用DNS名称和节点端口访问应用程序(节点端口在服务中提到)。.
https://dummy.domain.com: 3429