ASMMeshConfig CRD说明

ASMMeshConfig是阿里云服务网格ASM提供的自定义资源,用于全局配置服务网格的核心参数,其功能类似IstioMeshConfig。通过该CRD可集中管理网格层级的连接超时、协议检测、路径标准化、重试策略等配置,同时支持Sidecar注入器的资源配额与行为控制。

配置示例

以下示例指定了网格实例在连接配置、路径标准化、HTTP重试策略、Sidecar注入器策略和全局限流等方面的配置。

apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMMeshConfig
metadata:
  name: default
spec:
  connectTimeout: 30s
  tcpKeepalive:
    probes: 5
    time: 7200s
    interval: 72s
  pathNormalization:
    normalization: MERGE_SLASHES
  defaultHttpRetryPolicy:
    attempts: 3
    perTryTimeout: 1s
    retryOn: gateway-error,connect-failure,refused-stream
  enablePrometheusMerge: true
  sidecarInjectorWebhookConfiguration:
    rewriteAppHTTPProbe: true
    replicaCount: 2
    resources:
      requests:
        cpu: 100m
        memory: 256Mi
      limits:
        cpu: '2'
        memory: 2Gi
  rateLimitService:
    enabled: true
    redis:
      authSecret: redis-secret
      url: redis.istio-system.svc:6379
    replicas: 1
重要

要使用ASMMeshConfig CRD的完整字段,需要服务网格实例版本为1.24及以上,其中rateLimitService配置需要实例版本为1.25.6.84版本。此外,ASMMeshConfig CR无命名空间,名称必须为default,其他名称的ASMMeshConfig CR不会生效。

字段说明

基础配置

字段路径

数据类型

描述

示例值

影响范围

.spec.connectTimeout

Duration

定义Envoy代理建立TCP连接的最大等待时间,超时触发upstream connect timeout错误。单位支持ns/ms/s/m/h

30s

网格维度出站TCP连接。

.spec.protocolDetectionTimeout

Duration

自动协议检测的超时时间,用于识别HTTP/HTTPS流量。超时后按原始协议处理流量。

重要

此字段仅在ASM 1.19及以下版本可配置。

30s

网格维度协议嗅探。

TCP保活配置

字段路径

数据类型

描述

示例值

影响范围

.spec.tcpKeepalive.probes

Uint32

发送的TCP保活探测包最大次数。设置为0时禁用保活机制。

9

出站TCP长连接。

.spec.tcpKeepalive.time

Duration

TCP连接空闲等待时间,超时后开始发送保活探测包。

7200s

.spec.tcpKeepalive.interval

Duration

保活探测包发送间隔,需小于time参数。

75s

路径标准化

字段路径

数据类型

描述

示例值

影响范围

.spec.pathNormalization.normalization

Enum

URI路径处理策略:

  • NONE:禁用标准化。

  • BASE:合并斜杠并保留路径参数(如;)。

  • MERGE_SLASHES:仅合并连续斜杠。

NONE

网格维度HTTP路由。

HTTP重试策略

字段路径

数据类型

描述

示例值

影响范围

.spec.defaultHttpRetryPolicy.attempts

Int32

全局HTTP请求最大重试次数(含初始请求),仅当VirtualService未显式配置时生效。

2

HTTP路由策略。

.spec.defaultHttpRetryPolicy.perTryTimeout

Duration

单次重试的超时时间,需短于VirtualService中定义的总超时时间。

0s(无限制)

.spec.defaultHttpRetryPolicy.retryOn

String

触发重试的条件,支持标准错误类型: 5xx/gateway-error/connect-failure/reset等,多值以逗号分隔。

gateway-error, connect-failure, refused-stream

监控集成

字段路径

数据类型

描述

示例值

影响范围

.spec.enablePrometheusMerge

Bool

自动合并Pod原有prometheus.io注解与ASM监控配置,避免指标重复采集。

true

Prometheus监控配置。

Sidecar注入器配置

字段路径

数据类型

描述

示例值

影响范围

.spec.sidecarInjectorWebhookConfiguration.rewriteAppHTTPProbe

Bool

自动将PodHTTP就绪探针重定向到Sidecar代理端口。

true

Sidecar注入行为。

.spec.sidecarInjectorWebhookConfiguration.replicaCount

Int

Sidecar注入控制器的副本数,用于提升高可用性。

2

Sidecar注入器组件。

.spec.sidecarInjectorWebhookConfiguration.resources

Object

资源配额配置:

  • requests:容器启动最小资源需求。

  • limits:容器资源使用上限。

...
    resources:
      requests:
        cpu: 100m
        memory: 256Mi
      limits:
        cpu: '2'
        memory: 2Gi

Sidecar注入器组件。

全局限流配置

字段路径

数据类型

描述

示例值

影响范围

.spec.rateLimitService.enabled

Bool

是否启用限流服务。

true

全局启用限流服务能力。

.spec.rateLimitService.replicas

Int

限流服务的副本数。

1

限流服务可用性与性能。

.spec.rateLimitService.resources

Object

限流服务的资源配置。

limits:
  cpu: 500m
  memory: 512Mi
requests:
  cpu: 100m
  memory: 128Mi

限流服务可用性与性能。

.spec.rateLimitService.redis

Object

限流服务查询的 Redis 配置。

说明

全局限流服务使用redis记录限流策略以及决策。

    redis:
      authSecret: redis-secret
      url: redis.istio-system.svc:6379

限流状态存储后端。

.spec.rateLimitService.redis.type

String

redis 集群类型,可选值:singleclustersentinel。默认为single

single

限流状态存储后端。

.spec.rateLimitService.redis.url

String

redis 地址。

redis.istio-system.svc.cluster.local:6379

限流状态存储后端。

.spec.rateLimitService.redis.auth

String

redis 认证信息,格式为:passworduser:password。(为了安全起见,推荐您使用 AuthSecret 的形式)。

xxxxxx

凭据安全管理。

.spec.rateLimitService.redis.authSecret

String

存储redis认证信息的 secret 名称。

说明

该 secret 需要部署在istio-system中,将认证信息通过base64编码后记录在secretredis-auth key中。

apiVersion: v1
data:
  redis-auth: ${base64编码后的认证信息}
kind: Secret
metadata:
  name: redis-secret
  namespace: istio-system
type: Opaque

凭据安全管理。

.spec.rateLimitService.redis.cacheKeyPrefix

String

Redis cache 的key前缀。默认为空。

N/A

限流状态存储后端。

说明

推荐您使用阿里云 Redis来保证高可用,您可以基于Redis实例的类型结合下表来对限流服务rateLimitService.redis.type进行配置。

实例类型

架构类型

连接模式

集群类型配置

单节点

/

/

single

高可用

不启用集群

/

single

启用集群

直连模式

cluster

代理模式

single

ASM会汇总所有的配置并自动在istio-system 命名空间下生成一个名为ratelimit-service-config的限流服务配置。当您开启限流服务后,该配置会自动挂载,无需手动更新限流服务配置。