
IC 进程处理Kubernetes资源(ingress和CRD)的流程如下:
- 用户创建Ingress或CRD资源
- IC 进程会缓存关注的资源(Ingress和其它CRD资源),通过watch Kuberntes API保持缓存的同步
- 当资源发生变化,会通知 Control Loop
- Control Loop 从缓存中获取更新的资源,比如 TLS 证书、Ingress等
- Control Loop 生成TLS证书和私钥文件
- Control Loop 生成nginx配置文件
- Control Loop 执行 nginx reload,并等待nginx完成配置文件的加载:
7.1. nginx 重载并读取 TLS 证书
7.2. nginx 重载并读取配置文件 - Control Loop 推送event并更新资源状态
IC 关注的Kuberntes资源有以下这些:
- 七层负责均衡:Ingress、VirtualServers (CR)、VirtualServerRoutes (CR)
- 七层策略:Policies (CR)
- 四层负载均衡:TransportServers (CR)
- 服务发现:Service、Endpoints、Pods
- 密钥配置:Secrets
- 全局配置:ConfigMap、GlobalConfiguration (CR)
- 其它自定义资源(默认不启用):APPolicies, APLogConfs, APUserSigs、IngressLink