Replies: 1 comment
-
|
@mfordjody 为何 close 这个 dicussion 呢? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
前言
在我们谈 ingress controller 之前,先认识一下 kubernetes 的 controller manager,它作为 kubernetes 集群的大脑,也是一个集合,集合里面有很多 controller,每个 controller 的逻辑都是一样的,它们代码逻辑都是大同小异的,为什么说每个 controller manager 都是生产者消费者模型,它会一边 watch apiserver 的变化,发生变化会通知放到中心的队列里面,消费者从队列里面取数据,取出来然后去配置,所以任何 controller 都是生产者消费者模型。那么 default ingress controller 就可以做出来了。
ingress
ingress 本身它是一个对象,是社区提供的一个标准的接入网关描述的这样一个对象,这个对象包含的是 ingress spec 一堆转发规则的集合,第二它有 controller ,这个 controller 就是来 watch 这个 ingress 配置然后把它转换成我这个反向代理软件的配置,然后热加载这个反向代理软件让这个配置生效,ingress controller 会配负载均衡策略,其实就是反向代理软件的,有些 ingress controller 要配边缘路由,有些要配 dns。
ingress 跑着一个反向代理软件以及 controller 的组件,它去 watch 这个集群里面一些对象,这些对象叫 service 和叫 ingress 这些对象,然后它把这些对象转成我对应反向代理软件的配置,然后把它加载起来,当你这个请求进来的时候先从 LB 转进来然后这个请求经过这个反向代理软件(ingress)它来做终止,把证书卸载掉,它去基于你的 http header 来决定这个请求往哪转,这样的话就相当于我的整个 API 网关能够实现了。
pixiu ingress
pixiu 作为反向代理负责承载业务流量。ingress controller 作为负责将 CRDs 资源转发给 pixiu。
client 请求发送到 pixiu 会直接把相应的业务流量传输到 backend 完成转发过程。过程不需要经过 Ingress Controller,这样可以保证ingress controller 有问题出现不会影响到用户和业务流量。
配置侧通过创建 yaml 资源,可将自定义 CRDs 配置应用到 kubernetes 集群,Ingress Controller 会持续 watch 这些资源变更,来将相应配置应用到 pixiu。
Beta Was this translation helpful? Give feedback.
All reactions