微服务 DevOps

Service Mesh - Istio 1.7 任性的小子

2021-05-14  本文已影响0人  CatchZeng

原文:https://makeoptim.com/service-mesh/istio1-7

前言

盼着盼着 Istio 1.7 终于如约而至,Istio 团队完美兑现了发布路线图的诺言。在官方的 Announcing 中是这么描述的:

“伟大的 Istio 社区(Istio’s great community)”

确实,在这个版本中,来自 40 多个公司的 200 多个开发者做出了贡献。

那究竟 Istio 1.7 怎么样呢?值得我们更新吗?还是再等等?且听笔者以下分析。

以下是此版本的一些要点:

安全增强

易用性提升

在易用性方面主要的改进还是围绕 istioctl 命令行工具。

生产运维改进

VM 安全性

本次更新对 VM 没有太多的重量级功能发布,主要更新如下:

其他修复

升级

Require

Require Kubernetes 1.16+

Kubernetes 1.16+ is now required for installation.

说实话,看到需要 Kubernetes 1.16+ 的时候,感觉 Istio 也太任性了吧。目前绝大多数企业和用户所使用的 Kubernetes 版本应该都是 1.16 以下的。这也就相当于拒接了许多现在的用户,因为对于企业和用户来讲 Kubernetes 是比 Istio 更基础的基础设施

另外,对于低版本 Istio 的用户也是伤害极大的,想要升级 Istio,还得先升级 Kubernetes,升级前还要验证下是否有兼容性问题

安装

网关以非根(non-root)用户运行

因为网关以非根(non-root)用户运行,所以不具备绑定 1024 以下端口的权限。所以,在网关端口声明的地方,需要做响应的修改。举例如下:

ingressGateways:
  - name: istio-ingressgateway
    enabled: true
    k8s:
      service:
        ports:
          - port: 15021
            targetPort: 15021
            name: status-port
          - port: 80
            name: http2
          - port: 443
            name: https

这里,需要修改成明确指定有效的 targetPort

ingressGateways:
  - name: istio-ingressgateway
    enabled: true
    k8s:
      service:
        ports:
          - port: 15021
            targetPort: 15021
            name: status-port
          - port: 80
            name: http2
            targetPort: 8080
          - port: 443
            name: https
            targetPort: 8443

如果你还是想以 root 用户运行 gateway 的话,可以通过配置项设置 --set values.gateways.istio-ingressgateway.runAsRoot=true.

变更列表

流量管理

安全

遥测

安装

istioctl

文档

小结

Istio 1.7 版本存在着太多的激进做法,也许 Istio 团队也很无奈,但是 Service Mesh(Istio)作为云原生的一个基础设施,这么“不稳定”,真的是好事吗?

Istio 1.7 版本总体上看来,并无亮点,反而因为一些激进的做法,导致用户在安装、升级过程中增加成本和不稳定性,在用户体验上是一次严重的倒退。

综上所述,笔者不建议大家立即更新 1.7。如果你硬要更新到 1.7,一定要先将升级变更列表仔细查看。

参考

上一篇下一篇

猜你喜欢

热点阅读