Alauda Service Mesh v2.2

Alauda Service Mesh v2.2 基于 Istio 项目构建,并使用由 Sail Operator 衍生的新 Istio Operator 进行安装(托管于 istio-ecosystem GitHub 组织)。该 Operator 提供了一组扩展的自定义资源定义(CRD),用于管理 Istio 组件。

Alauda Service Mesh v2.2.0

支持的组件版本

  • Istio 版本:v1.28.6 和 v1.30.4
  • Kiali operator 版本:v2.27.1

Istio 功能

  • Istio 已更新至 1.30.4 版本。
    • AmbientServiceEntry 中的 CIDR 地址、waypoint 中可选的 XFCC 合成、可配置的 HBONE 窗口大小、ztunnel 运行时指标,以及默认启用的 DNS 捕获。
    • Gateway APITLSRoute 终止和混合模式、east-west gateway 上的 TLS 直通 listener,以及在 Gateway 状态中报告的附加 ListenerSets
    • 流量管理:命名空间级流量分发、可配置的 DNS 上游超时和故障转移优先级,以及新的 TrafficExtension API,作为 Wasm 和 Lua 的统一扩展机制。
    • 安全性:默认启用 XDS 调试端点身份验证、ztunnel 支持证书吊销列表(CRL),以及可选的 istiod、istio-cni 和 ztunnel NetworkPolicy 资源。
    • 多集群:多网络多集群 Ambient 晋级为 beta,并改进遥测和对等元数据交换。
    • 安装与运维:支持 Helm v4 server-side apply、可配置网络 gateway service 端口,并自动将 istiod 设置 GOMEMLIMIT,以降低内存不足故障的风险。
  • 参考

升级注意事项

以下 Istio 1.29 和 1.30 的变更会影响从 Istio 1.28 更新时的现有 mesh:

  • Kubernetes:Istio 1.30 要求 Kubernetes 1.32 或更高版本。如果集群运行的是 Kubernetes 1.30 或 1.31(这些版本对 Istio 1.28 有效),请先升级集群,再更新控制平面。
  • Gateway API TLSRoute:Istio 1.30 在 gateway.networking.k8s.io/v1 读取 TLSRoute,并忽略 bundle 版本低于 v1.5.0 的 CRD;而 Istio 1.28.6 在 v1alpha2 读取它,并忽略 bundle 版本高于 v1.4.0 的 CRD。没有任何 bundle 版本同时满足两者,因此在 Alauda Container Platform 4.4 上运行 Istio 1.30 之前,TLSRoute 仍不可用,并且 TLS 直通 listener 会报告 attachedRoutes: 0,同时 CRD 被忽略。GatewayHTTPRoute 不受影响。
  • Gateway API ListenerSet:Istio 1.28 读取实验性的 XListenerSet 资源(gateway.networking.x-k8s.io/v1alpha1);Istio 1.30 则读取 ListenerSetgateway.networking.k8s.io/v1)。这些是独立的 CRD,因此较新的 Gateway API bundle 不会迁移现有对象:Istio 1.30 会忽略每个 XListenerSet,并停止为其贡献的 listener 编程。将 Alauda Container Platform 更新到提供 ListenerSet CRD 的 4.4 后,将每个对象重新创建为 ListenerSet,设置现在必需的字段 spec.listeners[].port,并更新附加到它的路由的 parentRefsGateway.spec.allowedListeners 未改变。
  • Ambient tracing:waypoint proxy 会使用 waypoint service name 而非目标 service name 报告 span。在 Kiali 资源中,将 external_services.tracing.use_waypoint_name 设置为 true,否则 Kiali 不会显示 Ambient 工作负载的 trace。请参阅更新 Kiali tracing 配置
  • Ambient CNI:Istio CNI agent 现在遵循 values.cni.excludeNamespaces。被排除命名空间中的 Ambient 工作负载会从 mesh 中移除。
  • Ambient DNS:默认对 Ambient 工作负载启用 DNS 捕获,并且 Istio CNI 启动时会协调现有工作负载的 pod 内规则。
  • 指标:已移除 sidecar.istio.io/statsCompression annotation;请改用 proxyConfig 中的 statsCompression 选项。Circuit breaker remaining 指标默认不再跟踪;设置 DISABLE_TRACK_REMAINING_CB_METRICS=false 可恢复这些指标。
  • 服务选择:当某个 hostname 存在于多个命名空间时,sidecar 现在会优先选择 Kubernetes Service,而非其他 service 类型。将 PILOT_SIDECAR_PICK_BEST_SERVICE_NAMESPACE 设置为 false,或将 spec.values.compatibilityVersion 设置为 1.28,即可恢复之前的行为。
  • 调试端点:15010 端口上的 XDS 调试端点现在需要身份验证,15014 端口上的调试端点按命名空间受到限制。设置 ENABLE_DEBUG_ENDPOINT_AUTH=false 可恢复之前的行为。
  • Istio CNI:CNI 配置文件以 0600 权限写入。如果非 root 组必须读取这些文件,请将 values.cni.env.CNI_CONF_GROUP_READ 设置为 true

Kiali 功能

  • Kiali 已更新至 2.27 版本。
    • 概览和命名空间:新增 Overview 和 Namespaces 页面、专用的命名空间详情页、融合 L4 指标的服务洞察,以及 Ambient 和 sidecar 徽标。详情页采用相同样式。
    • Ambient:Ambient 流量 trace overlay、改进的跨集群遥测,以及修复 ztunnel dump 错误和 Ambient tracing 命名空间中缺失 heatmap 的问题。
    • 验证:验证和 MeshConfig 的多主模式支持,以及移除验证对 Istio service registry 的依赖。
    • Mesh 页面:多 mesh 控制平面环形图。
    • 部署:可启用或禁用 Prometheus(external_services.prometheus.enabled),可配置 pod disruption budget(deployment.pod_disruption_budget),并且在初始健康检查失败后自动重新启用 Prometheus。
    • 可观测性:重新定义 kiali_health_status 指标以生成更低基数的时间序列,现在需选择启用(server.observability.metrics.health_status.enabled)。
    • 性能:更快的流量动画、istio graph appender、health cache 内存使用,以及单个命名空间的工作负载获取。
    • 已弃用字段spec.istio_labels.egress_gateway_labelspec.istio_labels.ingress_gateway_labelspec.istio_labels.injection_label_namespec.istio_labels.injection_label_rev 会被忽略,并由标准常量值替代。
    • 有关影响升级的配置变更,请参阅升级 Alauda Build of Kiali
  • 参考