作者:吴官宝,中国移动云能力中心软件研发工程师,专注于云原生、微服务、算力网络等
背景
提升资源的使用效率是永远的话题,共享集群便是众多公司都会使用的一种部署方案。由于共享集群的使用业务方众多,对于基础组件的管理、升级维护等就带来了新的挑战。
就如服务网格组件istio如何去解决基础版本的灰度升级、版本切换等问题。也许有人会说直接参考官网的upgrade就可以了,那是理想情况直接升级,难以解决以下实际场景:
场景1:业务A使用istio版本1,业务B使用istio版本2
场景2:业务C目前没人力支持升级验证,需沿用istio老版本,后续再升级
此文就带你详细的了解如何丝滑的灰度升级。
灰度升级原理
要实现灰度升级就需要负载按需的使用不同版本的istio,需要解决如下问题:
1、根据条件给负载注入需要版本的istio-proxy sidecar容器
2、istio-proxy sidecar容器连接到对应的istiod控制面
负载是如何注入istio-proxy sidecar容器
istio使用 MutatingAdmissionWebhooks 自动将 Sidecar 代理注入至用户 Pod。 来自 Kubernetes 准入控制机制:
准入 Webhook 是 HTTP 方式的回调