PanMichael
作者PanMichael·2019-06-25 18:48
软件架构设计师·兴业数金

Openshift-F5集成(南北流量走F5)

字数 1891阅读 5037评论 1赞 3

使用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对象,提供南北流量的服务。
9t2vekcw1q

9t2vekcw1q

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,其中端口号不能重复。

  • 1、这种方式在真正使用时不能满足业务需求,除非在F5的前面再加一层代理,这又增加了架构的复杂性。
  • 2、理想的状态是,所以的App应用的HTTP请求都访问F5的80端口,而HTTPS的请求访问F5的443端口,根据请求的域名路由到对应的Pool中(每个Pool是一个Service下的所有Pod的列表)。
  • 很高兴告诉大家,第二种方式能够满足上面的需求

为Openshift中的Route提供代理流量
使用BIG-IP作为Openshift的Router,能实现以下功能:

1、为Services创建BIG-IP本地流量规则
2、提供HTTP/HTTPS路由
3、为Route资源添加BIG-IP健康检查

本文只介绍,如何使用F5提供HTTP/HTTPS路由。这也是最核心的部分。

部署环境版本:
2台F5:v13 192.168.200.82 192.168.200.83
Openshift集群: v3.9.1

创建新的HostSub Openshift
xfmxrrqy3m

xfmxrrqy3m

whix1e5lj1
whix1e5lj1

查看执行结果
9zezw2hmubu

9zezw2hmubu

创建一个VXLAN profile F5

在F5的TMOS终端,创建一个多点模式的vxlan
w1pehdq1t4b

w1pehdq1t4b

创建一个VXLAN Tunnel F5

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

ws6etof1smg

ws6etof1smg

在F5 Node2上的TMOS创建Tunnel
8egyprkv8aw

8egyprkv8aw

在每个F5设备VXLAN中创建Self IP F5

IP为设备对应在Openshift的HostSubnet下的一个IP(只要在对应的HostSubnet下就OK)
在F5 Node1中创建Self IP

gt7yw95si7b

gt7yw95si7b

61hw7ii3zjs
61hw7ii3zjs

oe69cqw607h
oe69cqw607h

1、对应每台F5设备创建一个Deployment
2、Deployment中的 --bigip-url 为设备的IP
3、Deployment中的 --bigip-partition为之前F5下创建的Partition,Openshift
4、Deployment中的 --route-vserver-addr 为F5对外提供服务的IP
nialwb7l98k

nialwb7l98k

murt82bwmff
murt82bwmff

yrq9ys772cm
yrq9ys772cm

9zv101q9z9i
9zv101q9z9i

当BIG-IP Controller POD启动后,在F5上会自动创建两个virtual servers

"ose-vserver" 为HTTP请求
"https-ose-vserver" 为HTTPS请求
这两个virtual servers是Openshift下所有的Route共用的。

gkkwok1aark

gkkwok1aark

624t73a9um
624t73a9um

说明
Openshit上创建Service后,F5会自动创建新的Pool,Pool里的资源即为Service下的Pod
请求到达F5后,F5根据请求的域名,找到对应的Pool,请求直接到达Pod。不会请求集群里的Route。

文章作者:潘晓华

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论1 条评论

wuwenpinwuwenpin软件开发工程师南京
2019-06-25 21:38
感谢分享!
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广