Istio 的使用场景
初步使用 Kubernetes 或 Kubernetes 在生产环境中已经稳定运行了一段时间,如果想要接入 Istio 服务网格,那么对 Kubernetes 集群版本也有要求,如果读者正在使用的 Kubernetes 集群不支持对应的 Istio 版本,就需要对 Kubernetes 进行升级。下面给出一个升级 Kubernetes 的方案。
对于 Kubernetes 的升级,如果版本跨度较大,在线升级是非常困难的,可以使用了如下方法。
提前构建几套新的 Kubernets 集群,新集群使用较新的 Kubernetes 和 Istio 版本,Node 规模较小。
修改与 Kubernetes 交互的 PaaS 平台所有服务的代码,兼容所有集群。
开发迁移工具,将业务应用对应在 Kubernetes 集群的资源对象迁移到新集群,尤其做好 Inbound 和 Outbound 的处理,并设置正确的 Pod.metadata.annotations 字段。如果不治理 Dubbo 等协议,要做好应用类型的盘点,关闭流量拦截功能。必要时可以编写工具,去注册中心抓取服务信息,保证服务信息的准确性和实时性。
PaaS 平台做好应用服务迁移前后的标记,相关的服务程序要兼容新旧集群同时在线。对用户无感知,用户使用体验和迁移前后无区别。
梳理应用迁移的流程并制作文档,尽量将所有流程自动化。
迁移过程不断回收老集群的 Node,添加新集群的 Node,充分利用资源。
应用迁移做好快速回滚方案,尽量保持应用在新旧集群同时在线,稳定运行后再回收旧集群的实例。
不管是容器化和还是服务网格,支撑它们不断推广的通常是降低成本、提高效率、提升 SLA 三方面。运维部和基础架构部作为后台技术部门,对业务研发团队提供支撑、赋能、引领。充分了解这些理念,可以让我们对技术的思考更加全面,也更加有利于新技术的落地。
利用 Istio 提供的三大能力,挖掘 Istio 的使用场景并解决生产环境的痛点,有利于服务网格的落地。这里有一些 Istio 的使用场景供参考。
将限流、熔断、超时、重试等 HTTP 流量治理功能平台化,让业务研发人员可以自主申请这些功能,充分保护业务应用的弹性。
利用 Istio 的资源对象 PeerAuthentication 对应用做双向 TLS 加密,提高应用安全性,大大提升项目上线前的安全审核效率。
使用 Istio 的资源对象 AuthorizationPolicy 对应用做访问控制,可以完美替代传统 IP 白名单,不再受固定 IP 的限制。
Istio 的流量镜像功能,可以轻松地将生产环境的宝贵流量复制到其他环境,赋能质量部门。
利用 Istio 的 HTTP 路由功能修改头信息,可以做到流量的染色和应用环境的隔离,极大提高研发人员开发新特性的效率和测试人员的测试效率。
利用 Istio 的 HTTP 路由功能,根据 HTTP 头信息区分流量,转发到不同的服务版本,可以按地区或用户属性等,对新的算法进行 AB 测试。
使用 Istio 的流量调度策略和服务子集功能,可以实现金丝雀发布,保障生产环境快速迭代下的 SLA。
利用 Istio 的 Envoy 代理日志和应用链路信息,绘制应用拓扑,收集调用链信息,快速定位生产故障。
利用 Istio 的故障注入功能,配合 ChaosBlade 构建混沌工程。提前收集应用在故障下的表现并改进。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/123567caeb88ec3ca6013b87b】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论