Openshift-F5集成(总结)——与Router方案对比
这篇文章来自9月份自己在F5年度会议上分享的PPT,感谢过程中帮忙一起联调的小伙伴。
Openshift的基础概念
Openshift简介
红帽® OpenShift 是一款性能强大的开源企业级PaaS产品。不仅是企业级的Kubernetes,可以构建、部署与管理容器应用,还提供从开发到投入生产的整个应用生命周期内使用的完整解决方案,帮助客户享受快速创新带来的收益,同时保持企业级平台的稳定性、可靠性和安全性。
Openshift支持多种环境下部署,无论是在企业内部,公共云,或是托管环境中。
Openshift Pod
Pod是Openshift调度的最小单元
一个Pod包含一个或多个容器
Pod内的容器共享网络,IP不固定
Pod
实例:
apiVersion: v1 kind: Pod metadata: name: MyApp labels: app: MyApp spec: containers: - name: myapp image: app/myapp:latest ports: - containerPort: 9376
Openshift Service
Service是一个内部负均衡器,能将流量代理转发到一组pod中
Service能提供一个稳定可靠的内部IP
Service标识的一组pod可以任意伸缩,而不影响业务
Service
实例:
apiVersion: v1kind: Servicemetadata: name: MyAppService spec: selector: app: MyApp clusterIP: 172.30.136.123 ports: - port: 9376 protocol: TCP targetPort: 9376
Openshift Router与Route
Router组件是解决外部访问Openshift集群中应用的一种解决方案
Router节点上运行一个特殊定制的Haproxy
Route为Openshift中的资源对象,配置对应的Service及域名
Service更新会自动更新Haproxy的配置
Route.png
Openshift Router的不足
Router无法支持灰度发布 (可以引入Nginx/Haproxy实现灰度发布)
对外所有南北流量都走Router,随着流量增加,Router的压力也不断增加
生产环境中,面对突发流量,Router的可靠性与稳定性是一个挑战
全站SSL的性能压力如何解决
F5与Openshift集成架构与实践
F5与Openshift集成架构
F5与Openshift集成架构
F5与Openshift中的Service集成
通过对应的应用配置ConfigMap(Openshift的配置资源)为每个ConfigMap自动创建对应的Virtual Server并与Pool映射
F5与Service
实例:
kind: ConfigMap apiVersion: v1 metadata: name: myApp.vs labels: f5type: virtual-server data: schema: "f5schemadb://bigip-virtual-server_v0.1.7.json" data: | { "virtualServer": { "backend": { "servicePort": 9376, "serviceName": "myAppService" }] }, "frontend": { "virtualAddress": { "port": 8080, "bindAddr": "99.248.82.220" }, "partition": "openshift", "balance": "round-robin", "mode": "http" } }
F5与Openshift中的Route集成
F5代替了Openshift中的Router组件的功能
Bigip-ctl启动配置中添加参数:
--manage-routes=true,
--route-vserver-addr=99.248.82.220Bigip-ctl一启动就会在F5上创建好Virtual Server:80与Virtual Server:443
Route
实例:
apiVersion: route.openshift.io/v1 kind: Route metadata: labels: name: f5-test name: f5-test annotations: virtual-server.f5.com/balance: least-connections-node spec: host: f5-test.example.com port: targetPort: 8080 to: kind: Service name: f5-test
F5与Openshift实现灰度发布
手动创建Virtual Server 80(testroute)与443(testroute_https)
Bigip-ctl启动配置中添加参数:
--manage-routes=true,
--route-http-vserver=testroute,
--route-https-vserver=testroute_https,
--route-vserver-addr=99.248.82.220手动创建iRule规则应用到Virtual Server
灰度
实例:
when HTTP_REQUEST { if { [HTTP::host] equals "test1.apps.openshift.com" }{ if {[IP::addr [IP::client_addr] equals 192.168.100.23/32 ]} { pool /f5-openShift/openshift_testapp_myapp-v2 } else { pool /f5-openShift/openshift_testapp_myapp-v1 } } }
使用F5实现灰度发布的不足
自定义iRule无法通过控制器自动下发,所以需要在F5端手动创建VServer及添加iRule来实现灰度发布
F5与Openshift的集成与Openshift的Router可以并存
F5与Router节点是可以并存,同时为应用提供对外服务,并不会产生冲突。
F5与Router并存
作者:潘晓华Michael
链接:https://www.jianshu.com/p/d883857e7af3
共同学习,写下你的评论
评论加载中...
作者其他优质文章