原文: https://istio.io/latest/news/releases/1.10.x/announcing-1.10/
¶新功能
¶Discovery Selectors
针对大规模的集群下,有部分的 Namespace 会经常的进行快速变动,创建很多临时的 Pod/Service,会带来 Istiod 监听之后Push xDS 的压力变大。因此增加了一个新特性,来忽略部分 namespace
- 我们首先对 Ns 标记上特定标签
1 | kubectl label namespace default istio-discovery=enabled |
- 修改 Istio 的全局配置
1 | meshConfig: |
这样 istiod 仅仅会监听 default 这个 namespace
¶Discovery Selectors vs Sidecar Resource
discoverySelectors
是全局性配置并且仅仅针对 istiod
生效,和 sidecarResource
功能有重叠,
Discovery Selectors
相较于 Sidecar
的使用难度,低了很多,对于大部分的场景下,我们仅仅希望忽略一些 namespace
,会比 sidecar
要好用些。
¶Stable revision labels (experimental)
在以前的版本中,我们也讨论过灰度升级的方案,Istioldie 1.9 / Canary Upgrades
我们部署多个版本,通过 revision
进行区分。
1 | kubectl get pods -n istio-system -l app=istiod |
而在这个版本中,我们增加一个新的映射 (by Label)
1 | istioctl x revision tag set prod --revision 1-7-6 |
Namespaces A and B -> 1-7-6,
Namespace C -> 1-8-0
我们现在仅仅需要修改 tag
即可
1 | istioctl x revision tag set prod --revision 1-8-0 |
相较于之前的版本,我们多一层抽象,这样可以保持 Namespace
Label
的稳定,对于升级的行为就完全控制在 istio 的 scope 内。
¶Sidecar Networking Changes
在 istio 1.10 之前,所有的外部流量都会被重定向到 lo
这样有个问题,就是导致了如果应用仅仅 listen on eth0 就会导致无法处理,从 1.10 之后
所有的流量都从 eth0 进出,这样要注意,如果在 localhost 进行模拟测试会导致未经过 istio sidecar 的处理。
¶废弃项
- Kubernetes 第一方 JWT 支持(values.global.jwtPolicy=first-party-jwt)将被删除;它的安全性较低,仅用于向后兼容旧版 Kubernetes。
- values.global.arch 选项已经被 Kubernetes 配置中的 Affinity 设置所取代。
¶其他
- 更新了网站的UI,变的更好看些