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