(在学习Kubernetes时,我从未真正找到任何好的资源来解释这一点)
场景:
我拥有mywebsite1.com和mywebsite2.com,我想将它们都托管在Kubernetes集群中。
我使用以下2个
kubectl apply -f
https://kubernetes.github.io/ingress-nginx/deploy/
所以问题是该架构是什么样的?以及数据如何流入集群?
答案 0 :(得分:2)
我将2个证书转换为2个.key和2个.crt文件
我使用这些文件制作2个TLS秘密(每个网站1个,因此它们将启用HTTPS)
我创建了2个Ingress对象:
一个表示website1.com/,指向名为website1fe的服务,并引用website1的HTTPS / TLS证书密钥。
(website1fe服务仅在端口80上侦听,并将流量转发到由website1fe部署产生的Pod)
另一个表示website2.com/,指向名为website2fe的服务,并引用website2的HTTPS / TLS证书机密。
(website2fe服务仅侦听端口80,并将流量转发到由website2fe部署产生的Pod)
我有一个3节点Kubernetes集群,存在于私有子网中。
他们有IP
10.1.1.10 10.1.1.11 10.1.1.12
当我跑2时
kubectl apply -f
生成的命令:
kubectl get svc --all-命名空间
提供L4 LB的IPv4 IP地址(假设为1.2.3.4)
由于我同时拥有两个域:我配置了Internet DNS,以便website1.com和website2.com都指向1.2.3.4
注意:入口控制器是云提供商所知的,因此它会自动进行以下反向代理/负载平衡配置:
L4LB 1.2.3.4:80 --(LB between)--> 10.1.1.10:30080, 10.1.1.11:30080, 10.1.1.12:30080
L4LB 1.2.3.4:443 --(LB between)--> 10.1.1.10:30443, 10.1.1.11:30443, 10.1.1.12:30443
KubeProxy使之能够将群集中任何节点的端口30080或30443上的请求转发到ClusterIP类型的L7 Nginx LB服务,然后将流量转发到L7 Nginx LB Pods。
L7 Nginx LB Pod终止HTTPS连接,并将流量转发到website1.com和website2.com服务,它们正在侦听未加密的端口80。
(因为我们处于群集中,没有人,所以未加密会监听流量。)
(L7 LB根据流量进入的L7地址知道要转发到哪个服务)
请注意避免错误: 假设website1.com希望访问website2.com上存在的一些资源
好website2.com实际上有2个IP地址和2个DNS名称。
website2fe.default.svc.cluster.local <-内部群集可解析的DNS地址
website2.com <-外部解析DNS地址
而不是让website1通过website2.com访问资源
您应该具有通过website2fe.default.svc.cluster.local提供的website1访问资源。
(这是更有效的路由)