工具使用

Istio流量管理之TCP流量转移

在上文“Istio流量管理之流量转移”中,我们使用Istio为7层HTTP应用作了流量按比例分配测试。本文使用Istio自带的tcp-echo样例对4层TCP应用作一下测试。 关于Istio安装等环境准备,请参阅“Istio安装使用”。 1 tcp-echo源码解析 tcp-echo是一个4层应用。其启动后会一直监听所暴露的端口,并等待TCP连接,连接成功后提供ping/pong请求响应。从源码可以看到,其接收到一串字符后会拼上一个前缀并返回给客户端。

阅读更多

Istio流量管理之流量转移

在日常的持续部署中,我们一般使用滚动升级的方式来进行微服务升级。若使用Kubernetes容器编排平台进行微服务滚动升级,其一般通过控制实例数的方式来实现。将旧版本下线,将新版本启动,新实例健康检查通过后,统一将流量打到新版本。 而使用Istio,不用控制实例数,且可以更细粒度的控制流量打到各个版本的百分比,从而实现按比例将流量逐渐迁移到新版本来实现升级。 下面使用Bookinfo样例看一下Istio的流量转移如何使用。我们知道reviews有三个版本,假定我们想从v1版本升级到v3版本。(关于Istio的安装及Bookinfo样例的部署,请参看上文“Istio安装使用”) 首先,配置默认的Destination Rule。

阅读更多

Istio流量管理之故障注入

在微服务架构中,若一个服务不可用,会不会导致调用其API的上游服务也不可用,上游服务有没有针对该种情形做容错处理,这对应用的整体可用性来说是很关键的。Istio可以在对微服务无侵入的情况下来模拟其发生故障,以帮助我们测试应用整体的容错能力。 Istio主要使用Virtual Service提供两种故障注入能力:响应延迟与服务中止。 响应延迟 用来模拟被调用服务在高负载情况下造成响应延迟。

阅读更多

Istio流量管理之请求路由

在上文“Istio安装使用”中,我们对Istio进行了安装,并对Bookinfo样例进行了部署测试。本文接着上文,对Istio流量管理中的请求路由进行概念学习及样例测试。 我们知道,Istio通过Envoy数据面拦截了所有服务实例的进出流量。这样基于Istio服务网格即可以实现诸多常规方式难以实现的流量管理策略,诸如灰度发布,A/B测试,按比率分流等。 Istio主要提供两个通过YAML配置的自定义资源来实现流量管理:Virtual Service及Destination Rule。这样即做到流量管理与上游请求服务及下游被请求服务解耦。Virtual Service主要用来配置流量如何流动(即定义符合哪些规则的流量打到哪些服务子集上),而Destination Rule则主要用来定义具体的服务子集。

阅读更多

Golang text/template 使用样例

Golang text/template 包是一个数据驱动的模版渲染工具。提供条件判断,数组或map遍历;参数赋值,函数或方法调用;自定义函数扩展,模板嵌套及重用等功能。基于该工具,可以轻松实现复杂场景的文本渲染。如Helm Template基于此实现了功能强大的Kubernetes配置文件渲染工作。 本文使用一个样例来演示text/template的使用,代码已托管至GitHub。

阅读更多