

Openshift-F5集成(南北流量走F5)
source link: http://www.10tiao.com/html/360/201806/2663487943/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言
本文仅代表原作者PanMichael的个人观点。
在Openshift的技术交流中,我认识了陈沙克。作为Openshift的用户,陈总对Openshift的理解程度很深。本文为沙克公司的同事所写,已取得授权转载。
大魏注:
文章中所提的南北流量,实际上就是客户端对应用FQDN发起访问,通过Openshift的router解析的过程。在Openshift中,有router的概念。router的作用是对外暴露service的FQDN。
那么,router的本质是什么?
router本质上,一个router是以hostnetwork方式运行在一个node上的容器化hproxy,它的pod ip就是所在node的ip,对外暴露的端口就是:80、443、1936。
router就是一个以hostnetwork方式运行在node上的容器化haproxy,它占用了node的80、443、1936端口。所以,这也是为什么一个node上只能运行一个router的原因所在。
而F5与Openshift集成,实际上就是实现router的功能。
使用F5与Openshift集成目的
外部流量访问应用时,通过F5 BIG-IP硬件设备直接代理到集群中的Pod。
这样做的好处,很明显。
使用硬件负载均衡器替换掉软件负载均衡器,提高性能。
F5有更灵活的配置,可以实现更复杂的流量控制
Openshift操作
Openshift通过BIG-IP Controller来控制BIG-IP设备。由于Openshift是基于Kubernetes的,所以它们使用同一个Controller(k8s-bigip-ctlr)。BIG-IP Controller为集群中的应用配置BIG-IP对象,提供南北流量的服务。
BIG-IP Controller有两种方式来使用F5 BIG-IP设备
为Openshift中的Service提供代理流量
为Openshift中的Route提供代理流量
为Openshift中的Service提供代理流量(不介绍具体部署操作)
这种方式,我们测试下来发现,需要为对外提供服务的Service绑定到F5的不同端口,同时外部访问应用时需要指定端口号。如:app1.openshift.example.com:8000
, app2.openshift.example.com:8001
,app3.openshift.example.com:8002
,其中端口号不能重复。
这种方式在真正使用时不能满足业务需求,除非在F5的前面再加一层代理,这又增加了架构的复杂性。
理想的状态是,所以的App应用的HTTP请求都访问F5的80端口,而HTTPS的请求访问F5的443端口,根据请求的域名路由到对应的Pool中(每个Pool是一个Service下的所有Pod的列表)。
很高兴告诉大家,第二种方式能够满足上面的需求
为Openshift中的Route提供代理流量
使用BIG-IP作为Openshift的Router,能实现以下功能:
为Services创建BIG-IP本地流量规则
提供HTTP/HTTPS路由
为Route资源添加BIG-IP健康检查
本文只介绍,如何使用F5提供HTTP/HTTPS路由。这也是最核心的部分。
部署环境版本:
2台F5:v13 192.168.200.82 192.168.200.83
Openshift集群: v3.9.1
创建新的HostSub
Openshift
oc create -f hostsubnet.yml
创建一个VXLAN profile
F5
在F5的TMOS终端,创建一个多点模式的vxlan
create /net tunnels vxlan openshift_vxlan flooding-type multipoint
Local Address使用vip: 192.168.200.84
Secondary Address使用F5的设备IP:node1 192.168.200.82, node2 192.168.200.83
在F5 Node1上的TMOS创建Tunnel
create /net tunnels tunnel <float_tun_name> key 0 profile openshift_vxlan local-address 192.168.200.84 secondary-address 192.168.200.82 traffic-group traffic-group-1
在F5 Node2上的TMOS创建Tunnel
create /net tunnels tunnel <float_tun_name> key 0 profile openshift_vxlan local-address 192.168.200.84 secondary-address 192.168.200.83 traffic-group traffic-group-1
在每个F5设备VXLAN中创建Self IP
F5
IP为设备对应在Openshift的HostSubnet下的一个IP(只要在对应的HostSubnet下就OK)
在F5 Node1中创建Self IP
create /net self 10.129.6.82/14 allow-service none vlan openshift_vxlan
在F5 Node2中创建Self IP
create /net self 10.130.4.83/14 allow-service none vlan openshift_vxlan
在当前主F5设备的VXLAN下创建Floating IP
F5
如:当前主F5设备为node1,那Floating IP为主设备所在的HostSubnet下。
create /net self 10.128.6.84/14 allow-service none traffic-group traffic-group-1 vlan openshift_vxlan
创建一个新的Partition
F5
create auth partition OpenShift
创建访问F5 BIG-IP的私钥
Openshift
oc create secret generic bigip-login --from-literal=username=admin --from-literal=password=admin -n kube-system
创建RBAC认证
Openshift
oc create -f cluster-role.yml
部署BIG-IP Controller
Openshift
对应每台F5设备创建一个Deployment
Deployment中的 --bigip-url 为设备的IP
Deployment中的 --bigip-partition为之前F5下创建的Partition,Openshift
Deployment中的 --route-vserver-addr 为F5对外提供服务的IP
oc create -f deployment.yml
查看BIG-IP Controller的部署进度
当BIG-IP Controller POD启动后,在F5上会自动创建两个virtual servers
"ose-vserver" 为HTTP请求
"https-ose-vserver" 为HTTPS请求
这两个virtual servers是Openshift下所有的Route共用的。
创建新的应用F5-Test,并创建HTTP Route
Openshift
使用自己镜像仓库中的镜像:harbor.example.com/public/nginx:1.14
该镜像的制作方法及说明参考:Openshfit上用ConfigMap来自定义Nginx配置
oc new-project f5-test oc new-app harbor.example.com/public/nginx:1.14 --name=f5-test --allow-missing-images oc expose dc/f5-test --port=8080
创建Route
本地绑定hosts
192.168.200.80 f5-test.example.com
浏览器访问http://f5-test.example.com
,即能看到应用页面。
创建HTTPS Route(仍然使用上面的应用)
Openshift
本地绑定hosts
192.168.200.80 f5-test-2.example.com
浏览器访问https://f5-test.example.com
,即能看到应用页面。
说明
Openshit上创建Service后,F5会自动创建新的Pool,Pool里的资源即为Service下的Pod
请求到达F5后,F5根据请求的域名,找到对应的Pool,请求直接到达Pod。不会请求集群里的Route。
魏新宇
"大魏分享"运营者、红帽资深解决方案架构师
专注开源云计算、容器及自动化运维在金融行业的推广
拥有MBA、ITIL V3、Cobit5、C-STAR、TOGAF9.1(鉴定级)等管理认证。
拥有红帽RHCE/RHCA、VMware VCP-DCV、VCP-DT、VCP-Network、VCP-Cloud、AIX、HPUX等技术认证。
Recommend
-
83
在Service Mesh微服务架构中,我们常常会听到东西流量和南北流量两个术语。 南北流量(NORTH-SOUTH traffic)和东西流量(EAST-WEST traffic)是数据中心环境中的网络流量模式。下面我们通过一个例子来理解这两个术语。
-
51
有问题,上知乎。知乎是中文互联网知名知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。
-
49
南方进一步赶超北方
-
16
任泽平:南北差距根本上是市场化程度的差距 任泽平 7小时前 文:任泽平 熊柴 于嘉俊来源:泽平宏观注:中国人民大学博士生黄汝南对本文有贡献
-
10
网络游戏南北互通问题分析 网络游戏南北互通问题方案 网络游戏用户按接入分,有多数的电信用户,次多数的网通用户,又有处于教育网的学生用户,造成了互联互通上极大的障碍。又由于当今游戏用户数据的越来越强的集中...
-
7
奥迪A7L溜背变三厢褒贬不一 南北奥迪开启共荣局势 Connect with us 上海车展上...
-
16
南北高架彻底完结了 32 12493 只看楼主 几个...
-
5
一汽马自达发“最后推文”告别 此后再无南北派之分 Connect with us “合二为一”?一汽马自达16年...
-
8
被误读的南北经济差距 小鹰财经社
-
3
南北大有看头、营销各有招数…2021年再谈「便利店」究竟谈什么?
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK