九 ingress 控制器
如果 k8s 需要提供一个网站,并且这个站点需要以 https 访问,而 iptables/ipvs 工作在 4 层,客户发出的 ssl 请求根本不被解析就被调度到后端 POD了。解决方法有两个:
-
可以在公有云的负载均衡器上配置上 ssl 证书。
-
新建一个负载均衡器的 POD ,例如 nignx ,这个 POD 共享主机的网络命名空间,也就是说可以直接通过 nodeip 访问到负载均衡器,ssl 证书配置在这个负载均衡器上,对外连接为 https 而对内的代理为 http 协议到 POD 网络的 POD 上。
新建一个 service 将需要代理的不同服务的 pod 分类
新建一个 ingress 资源,从 service 中取得分类结果,映射进 Envoy 中,重载 Envoy 软件。
9.1 ingress.spec 规范
9.2 ingress-nginx 代理
- 创建 ingress 对象,它能将 ingress-nginx 与 service 关联,从而在 service 后主机发生变动的时候,反应在 ingress-nginx 这个容器的配置文件中
- 查看 ingress-nginx 对外暴露的端口,这里为30080,和 30443 两个
- 使用 nodeip + ingress-nginx 暴露端口访问,由于上面创建的 ingress 为基于主机名称的,所以需要在访问时在 /etc/hosts 做好映射到 node。
9.3 ingress-tomcat 代理
- 制作自签名证书,让 ingress-nginx 带有证书来访问
- 创建 secret 证书对象,它是标准的 k8s 对象
- 创建带证书的 ingress 对象,它能将 ingress-tomcat 与 service 关联,从而在 service 后主机发生变动的时候,反应在 ingress-tomcat 这个容器的配置文件中
- 查看 ingress-nginx 对外暴露的端口,这里为30080,和 30443 两个
- 使用 nodeip + ingress-nginx 暴露端口访问,由于上面创建的 ingress 为基于主机名称的,所以需要在访问时在 /etc/hosts 做好映射到 node。