Istio 1.0
我们很自豪地发布了 Istio 1.0!Istio 至今已经开发了近两年,1.0 版本对我们来说是一个重要的里程碑。我们所有的核心功能现在都已经可以用于生产环境。
本文描述了 Istio 1.0 与 Istio 0.8 之间的不同之处。 此版本的大部分工作都用于修复错误和提高性能,因此相对于 0.8 来说,Istio 1.0 只提供了很少的新功能。
网络
使用 Virtual Service 进行 SNI 路由:
VirtualService
中新引入的 TLS 部分可用于根据 SNI 值路由 TLS 流量。名为 TLS/HTTPS 的服务端口可与虚拟服务 TLS 路由一起使用。没有附带虚拟服务的 TLS/HTTPS 端口将被视为不透明 TCP。流式 gRPC 恢复:Istio 0.8 中,长时间运行的流式 gRPC 连接会周期性的遭遇中断。这一问题已经在 1.0 中得以修复。
移除旧版本(v1alpha1)的网络 API:已删除对旧的
v1alpha1
流量管理模型的支持。Istio Ingress 被弃用:Istio Ingress 已弃用。默认情况下,旧的 Istio ingress 已被弃用和禁用。我们鼓励用户改用 Gateway。
策略和遥测
属性更新:用于描述流量来源和目的地的一组属性得到大幅改进,变得更加精确和全面。
预检缓存:Mixer 现在为策略检查提供了较大的二级缓存,为 Sidecar 代理中的一级缓存提供了有力补充。进一步降低了的策略检查过程造成的平均延迟。
遥测缓存:在调用适配器之前,Mixer 会对报告进行缓冲,这使适配器有机会以更大的块来处理遥测数据,从而减少了 Mixer 及其适配器的总体计算开销。
进程外适配器:Mixer 现在为进程外适配器提供了初步支持。这是与 Mixer 集成的推荐方法。关于如何构建进程外适配器,可以阅读进程外适配器开发指南和 进程外 gRPC 适配器开发解析。
客户端遥测:除了服务器端遥测之外,现在还可以从交互的客户端收集遥测数据。
适配器
SignalFX:提供了新的
signalfx
适配器。Stackdriver:此版本中的
stackdriver
适配器已得到充分增强,添加了新功能,同时也提高了性能。
安全
授权:我们重新实现了授权功能。现在可以在不需要 Mixer 和 Mixer 适配器的情况下实现 RPC 级授权策略。
改进的双向 TLS 认证控制。现在,在服务之间控制双向 TLS 身份验证变得更加容易。我们提供 “PERMISSIVE”模式,以便您可以逐步为您的服务启用双向 TLS。我们删除了服务注解,并借助客户端目标规则,实现了一种独特的方法来启用双向 TLS。
istioctl
添加了
istioctl authn tls-check
命令。添加了
istioctl proxy-status
命令。添加了
istioctl experimental convert-ingress
命令。移除了
istioctl experimental convert-networking-config
命令。增强和 bug 修复:
istioctl
和kubectl
使用相同的kubeconfig
。istioctl get all
返回网络和身份验证配置的所有类型。在
istioctl get
命令中添加--all-namespaces
标志,可用于检索所有 namespace 中的资源。
1.0 的已知问题
亚马逊的 EKS 服务尚未支持 Sidecar 的自动注入。通过使用 Helm 参数
--set galley.enabled=false
,使用手动注入 Sidecar 的方式,并关闭 Galley,可以在亚马逊的 EKS 中使用 Istio。在多集群部署中,mixer-telemetry 和 mixer-policy 组件不会连接到任何远程集群的 Kubernetes API 端点。这将导致遥测保真度受损,因为与远程集群上的工作负载相关联的一些元数据不完整。
当前有 Kubernetes 清单文件可用于独立启用 Citadel 或执行 Citadel 运行状况检查。这些模型还没有通过 Helm 实现。有关详细信息,请参见 Issue 6922。
让用户能够将原始虚拟机加入网格的扩展功能目前无法工作,我们将在未来几天内提供一个补丁来修正这一问题。