向集群外暴露 ingress-controller 本身的服务端口(80/443/8080)一般有以下三种方法:
- 1.部署ingress-controller时使用
hostNetwork: true
,这样就可以直接使用上述端口,可能与host已listen端口冲突 - 2.部署ingress-controller时使用
LoadBalancer
类型服务,需要集群支持LoadBalancer
- 3.部署ingress-controller时使用
nodePort
类型服务,然后在集群外使用 haproxy/f5 等配置 virtual server 集群
本文档讲解使用 haproxy 配置 ingress的 VS 集群,前提是配置了自建ex-lb
节点
# 编辑 roles/ex-lb/defaults/main.yml,配置如下变量
INGRESS_NODEPORT_LB: "yes"
INGRESS_TLS_NODEPORT_LB: "yes"
$ ansible-playbook /etc/ansible/roles/ex-lb/ex-lb.yml
... 前文省略
listen kube-master
bind 0.0.0.0:8443
mode tcp
option tcplog
balance roundrobin
server 192.168.1.1 192.168.1.1:6443 check inter 2000 fall 2 rise 2 weight 1
server 192.168.1.2 192.168.1.2:6443 check inter 2000 fall 2 rise 2 weight 1
listen ingress-node
bind 0.0.0.0:80
mode tcp
option tcplog
balance roundrobin
server 192.168.1.3 192.168.1.3:23456 check inter 2000 fall 2 rise 2 weight 1
server 192.168.1.4 192.168.1.4:23456 check inter 2000 fall 2 rise 2 weight 1
listen ingress-node-tls
bind 0.0.0.0:443
mode tcp
option tcplog
balance roundrobin
server 192.168.1.3 192.168.1.3:23457 check inter 2000 fall 2 rise 2 weight 1
server 192.168.1.4 192.168.1.4:23457 check inter 2000 fall 2 rise 2 weight 1
验证成功后,我们可以方便的去做配置ingress和配置https ingress实验了。