Istio 1.0版本发布到现在,已经过去8个月。Istio1.1的候选版本也到了rc5,预计近期会正式发布1.1。此版本包含了许多错误修复,在流量管理,安全,策略和遥测,多集群等领域添加了新的功能。

对1.0的用户来说,感受最强烈的是:

  • 默认关闭了策略执行功能
  • 默认开启了Mesh外的访问,再也不用担心未配置ServiceEntry对外的访问突然不通了。
  • 多集群不再只是1.0那种扁平网络的简单方案,提供了单控制面、多控制面几种方案,可以根据自己的场景需求选择。
  • 安全上SDS也终于来了提供更灵活的安全基础能力。
  • 性能上做了多点优化,总体表现值得期待。

另外1.1提供了很多新的能力,在配置使用上也会有所不同,虽然不至于像0.8到1.0引入V1alph3导致接口大变样那么夸张,但API的使用确实值得我们去注意。最直观的感受将是,原来的结构上字段突然多了很多。

Istio社区对1.1发布的初步文档已经在istio.io上提供,今天我们就率先为容器魔方粉丝献上中文版的功能预告

流量管理

新的sidecar:资源:在指定命名空间中使用sidecar资源时,支持定义可访问的服务范围,这样可以降低发给proxy的配置数量。在大规模的集群中,我们推荐给每个namespace增加sidecar对象。 这个功能主要是为了提升性能,减轻proxy计算的负担。

限制网络资源的生效范围:为所有的网络资源增加了exportTo的字段,用来表示此网络资源在哪些namespace中生效。这个字段目前只有两个值:

  • . 表示此网络资源只在自己定义的namespace生效;
  • *表示此网络资源在所有的namespace生效。

更新了serviceEntry的资源:指定服务的位置以及使用双向TLS关联的SAN。带HTTPS端口的service entry不再需要额外的virtualservice来开启基于SNI的路由。

细粒度的多集群路由:简化了多集群的安装,并支持额外部署模式,能够利用ingress gateways连接多个集群,而不使用pod级别的×××。在每个集群中都部署控制面以提供高可用,跨集群创建全局的命名空间。在高可用控制面方案中,默认开启AZ/Region的区域感知能力,降低跨区请求造成的性能损耗。

弃用Istio Ingress:删除了以前弃用的Istio ingress。

安全

Readiness and Liveness 探针:在双向TLS启用的场景下支持Kubernetes HTTP readiness和liveness探针。

集群RBAC配置:使用ClusterRbacConfig资源对象替代原来的RbacConfig。ClusterRbacConfig支持集群范围的配置。

基于SDS的身份设置:On-node秘钥生成和动态证书替换不用重启Envoy。

TCP授权管理:除了HTTP和gRPC外,支持对TCP服务的授权管理。

最终用户组授权管理:支持JWT中组声明或者列表类型的声明。

每路径最终用户认证:可以启用和禁用基于访问路径的JWT认证。

Gateway上外部证书管理:支持动态加载和替换外部证书。

集成Vault PKI:提供Vault保护的秘钥签名并与现有Vault PKI集成。

自定义的可信域:在身份标识中支持特定org或cluster的安全域。

多集群

不可路由的L3网络:在不可路由的L3网络多集群环境中使用一个Istio 控制面。

多控制平面:在多集群环境中,支持安装多个Istio控制平面。

策略和遥测

默认关闭策略检查功能:为了提高多数客户场景下的性能,安装时默认关闭策略检查, 后期可按需开启此功能。

Kiali:弃用ServiceGraph,推荐使用 Kiali:提供了更丰富的可视化体验。

多方面降低开销 ,提升性能和可扩展性:

减少Envoy生成的统计数据的默认收集

为Mixer的工作负载增加load-shedding功能

改进Envoy和Mixer的通信协议

控制请求头和路由:增加选项使适配器可以修改请求头和路由。

进程外适配器:进程外适配器功能生产可用,下个release弃用进程内适配器。

多方面增强Tracing的能力:

Trace id支持128bit的范围

支持向LightStep发送追踪数据

增加选项完全禁用Mixer支持的服务的追踪功能

增加策略的decision-aware 追踪

默认的TCP指标:为追踪TCP连接增加默认指标。

配置管理

Galley:Galley在Istio中提供主要的配置管理和分发机制。它提供了一个健全的模型来验证,转换和分发配置状态到Istio各组件,使Istio组件与Kubernetes的细节隔离。Galley使用Mesh Configuration Protocol(MCP)和组件交互。

监控端口:Galley的默认监控端口从9093改为15014。

istioctl和kubectl

校验命令:为 Istio Kubernetes 的资源增加离线校验命令—— istioctl validate。

验证安装命令:在使用指定的YAML文件安装Istio前,可以用istioctl experimental verify-install 来预先检验Istio的安装状态。

弃用的命令:弃用 istioctl create,istioctl replace, istioctl get 和 istioctl delete,使用 kubectl 代替;弃用 istioctl gen-deploy,使用helm template代替。下个版本(1.2)将删除这些命令。

命令的缩写: 用kubectl操作Istio网络资源时可以使用缩写,例如: gateways简写为gw,virtualservice简写为vs等等。

升级

Istio Helm 配置的更改:

默认关闭Egressgateway

默认关闭Mixer policy

默认允许所有出口流量(不用配置service entry),出口流量策略设置为ALLOW_ANY

相关服务请访问: https://support.huaweicloud.com/cce/index.html?utm_content=cce_helpcenter_2019