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- Istio 1.30 支持 Kubernetes 1.32、1.33、1.34、1.35、1.36
- Istio 1.28 支持 Kubernetes 1.30、1.31、1.32、1.33、1.34
Kiali operator版本:v2.27.1
Istio 功能
- Istio 已更新至 1.30.4 版本。
- Ambient:
ServiceEntry中的 CIDR 地址、waypoint 中可选的 XFCC 合成、可配置的 HBONE 窗口大小、ztunnel 运行时指标,以及默认启用的 DNS 捕获。 - Gateway API:
TLSRoute终止和混合模式、east-west gateway 上的 TLS 直通 listener,以及在 Gateway 状态中报告的附加ListenerSets。 - 流量管理:命名空间级流量分发、可配置的 DNS 上游超时和故障转移优先级,以及新的
TrafficExtensionAPI,作为 Wasm 和 Lua 的统一扩展机制。 - 安全性:默认启用 XDS 调试端点身份验证、ztunnel 支持证书吊销列表(CRL),以及可选的 istiod、istio-cni 和 ztunnel NetworkPolicy 资源。
- 多集群:多网络多集群 Ambient 晋级为 beta,并改进遥测和对等元数据交换。
- 安装与运维:支持 Helm v4 server-side apply、可配置网络 gateway service 端口,并自动将 istiod 设置
GOMEMLIMIT,以降低内存不足故障的风险。
- Ambient:
- 参考
升级注意事项
以下 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 被忽略。Gateway和HTTPRoute不受影响。 - Gateway API
ListenerSet:Istio 1.28 读取实验性的XListenerSet资源(gateway.networking.x-k8s.io/v1alpha1);Istio 1.30 则读取ListenerSet(gateway.networking.k8s.io/v1)。这些是独立的 CRD,因此较新的 Gateway API bundle 不会迁移现有对象:Istio 1.30 会忽略每个XListenerSet,并停止为其贡献的 listener 编程。将 Alauda Container Platform 更新到提供ListenerSetCRD 的 4.4 后,将每个对象重新创建为ListenerSet,设置现在必需的字段spec.listeners[].port,并更新附加到它的路由的parentRefs。Gateway.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/statsCompressionannotation;请改用proxyConfig中的statsCompression选项。Circuit breakerremaining指标默认不再跟踪;设置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)。 - 性能:更快的流量动画、
istiograph appender、health cache 内存使用,以及单个命名空间的工作负载获取。 - 已弃用字段:
spec.istio_labels.egress_gateway_label、spec.istio_labels.ingress_gateway_label、spec.istio_labels.injection_label_name和spec.istio_labels.injection_label_rev会被忽略,并由标准常量值替代。 - 有关影响升级的配置变更,请参阅升级 Alauda Build of Kiali。
- 参考