中间件容器化部署是为了实现GitOps模式的持续交付,实现部署即代码。痛点在于大多数中间件都是有状态的,本篇介绍如何实现有状态中间件的容器化部署。
常见中间件要实现容器化部署,需要解决以下问题:
- 对于网关类中间件,作为流量入口,虽然是无状态类型的中间件,但由于需要提供固定ip配置SLB,因此容器化部署就需要解决固定ip的问题。
- 对于存储类中间件,是有状态类型的中间件,容器重启后需要能访问同一个“持久化存储设备”,数据不容忍丢失,因此容器化部署需要解决持久化存储问题。
网关项目容器化部署解决方案
关于Ingress Controller
Ingress是k8s提供将集群内部服务(Service)暴露外部访问的定义http路由规则的资源,Ingress资源本身只是定义http路由策略,需要依赖Ingress Controller实现Ingress资源的路由策略。
Ingress Controller本身也是一个Service,通过设置Service的类型为NodePort(使用节点IP)或者ExternalIP、云服务提供商提供的LoadBalancer暴露给外部访问。
BFE Ingress Controller
BFE Ingress Controller是基于BFE实现的Ingress Controller,用于支持在Kubernetes中部署使用BFE进行七层流量代理