背景
终于进入大家都比较感兴趣的服务网格系列了,在前面已经讲解了:
如何部署应用到
kubernetes
服务之间如何调用
如何通过域名访问我们的服务
如何使用
kubernetes
自带的配置ConfigMap
基本上已经够我们开发一般规模的 web 应用了;但在企业中往往有着复杂的应用调用关系,应用与应用之间的请求也需要进行管理。比如常见的限流、降级、trace、监控、负载均衡等功能。
在我们使用 kubernetes
之前往往都是由微服务框架来解决这些问题,比如 Dubbo、SpringCloud 都有对应的功能。
但当我们上了 kubernetes
之后这些事情就应该交给一个专门的云原生组件来解决,也就是本次会讲到的 Istio
,它是目前使用最为广泛的服务网格解决方案。
官方对于 Istio 的解释比较简洁,落到具体的功能点也就是刚才提到的:
限流降级
路由转发、负载均衡
入口网关、
TLS安全认证
灰度发布等

再结合官方的架构图可知:Istio 分为控制面 control plane
和数据面 data plane
。
控制面可以理解为 Istio 自身的管理功能:
比如服务注册发现
管理配置数据面所需要的网络规则等
而数据面可以简单的把他理解为由 Envoy
代理的我们的业务应用,我们应用中所有的流量进出都会经过 Envoy
代理。
所以它可以实现负载均衡、熔断保护、认证授权等功能。
安装
首先安装 Istio 命令行工具
这里的前提是有一个 kubernetes 运行环境
Linux 使用:
curl -L https://istio.io/downloadIstio | sh -
Mac 可以使用 brew: