Istio是什么?
Istio 1.0版本于8月1号凌晨准点发布,核心特性已支持上生产环境,各大微信公众号、博客纷纷发文转载。那么Istio到底是什么?能解决问题什么?
Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等,它提供了完整的非侵入式的微服务治理解决方案,解决微服务的管理、网络连接以及安全管理等应用网络治理问题
它无需修改任何代码就能够实现微服务的负载均衡,服务与服务之间的认证授权以及流量监控和治理。从整个基础设施角度上看,可以将它理解为PaaS平台上的一个面向微服务管理平台的补充。
Istio与Kubernetes
Kubernetes提供了部署、升级和有限的运行流量管理能力;利用service的机制来做服务注册和发现、转发,通过kubeproxy有一定的转发和负载均衡能力,但并不具备上层如熔断、限流降级、调用链治理等能力。
Istio则很好的补齐了k8s在微服务治理上的这部分能力,同时是基于k8s构建的,但不是像SpringCloud Netflix等完全重新做一套。Istio是谷歌微服务治理上的非常关键的一环。
云上一键安装Istio 1.0 + K8S 1.9
目前业界大部分云平台上所提供的Istio能力均需要自己负责istio包的下载、配置、安装等,还是比较费劲的。多个平台对比后发现华为云CCE服务这里深度集成了Istio服务网格,为简单起见,下方以华为云为例:
一键安装kubernetes + Istio
登录CCE控制台,在左侧导航栏中单击“资源管理 > 虚拟机集群”,在“虚拟机集群”界面,单击“创建Kubernetes集群”,按照向导式逐步配置:
图1:创建Kubernetes集群
图2:使能服务网格,一键式安装Istio并自动使能应用sidecar注入:
其他集群创建步骤、配置不变。
一键升级至Istio1.0
由于当前系统默认安装0.8版本,提供的1.0升级包仅供试用,完整能力集成据内部消息将在八月中旬正式推出,所以这里需要再做一步升级操作:
进入cce模板市场-官方模板,查看对应集群下的isito-master实例,点击升级:
升级成功:
无侵入、配置式实现应用灰度发布
应用部署
为简单起见,我们通过cce的应用管理提前把应用部署好,拓扑结构以及应用信息如下:
这里以Istio社区的bookinfo样例为例,其包含ProductPage、Reviews、Details、Ratings这4个微服务,拓扑结构以及网络访问信息如下:
创建好的应用信息如下:
灰度发布
在页面上只需要两步即可以实现应用的快速灰度发布:(如下视频所示)
1、配置版本号(系统默认选择最新版本镜像)
2、配置灰度策略(以百分比为例)
对review服务进行灰度发布后的流量走向:
review v2版本调用ratings服务获取星级评价,并将20%流量分流至本版本上
访问productpage,可以看到部分请求可以显示星级评价,部分请求仍然是老版本的显示效果,部分访问结果为带有星级评价特性的页面:
一键式版本切换
点击“接管所有流量”:
现在所有访问reviews的流量都导向v2版本,访问productpage,所有的请求都会呈现星级评价特性:
Istioctl命令行工具
目前华为云portal上开放的流量治理策略还相对有限,按照官介绍,需要从Istio命令行工具入口配置。进入”资源管理“->“虚拟机集群“,选择对应集群,可以看到Istio命令行的下载和使用指导: