ASMMeshConfig CRD说明

更新时间:
复制为 MD 格式

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
  accessLogConfiguration:
    logEncoding: JSON
    logProject: test-project
    sidecarEnabled: true
重要

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

字段说明

Spec(网格配置)

字段路径

数据类型

描述

示例值

tcpKeepalive

TcpKeepalive

日志投递的阿里云 SLS 日志 project 名称。

30s

connectTimeout

Duration

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

30s

protocolDetectionTimeout

Duration

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

重要

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

pathNormalization

PathNormalization

路径标准化。

defaultHttpRetryPolicy

DefaultHttpRetryPolicy

Sidecar 默认 HTTP 重试策略。

enablePrometheusMerge

Bool

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

true

sidecarInjectorWebhookConfiguration

SidecarInjectorWebhookConfiguration

Sidecar 注入配置。

accessLogExtraConf

AccessLogExtraConf

访问日志格式与采集配置。

ratelimitService

RatelimitService

全局限流服务配置。

重要

此字段仅在 ASM 1.25 及以上版本可配置。

TcpKeepalive(TCP保活配置)

字段路径

数据类型

描述

示例值

影响范围

probes

Uint32

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

9

出站TCP长连接。

time

Duration

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

7200s

interval

Duration

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

75s

PathNormalization(路径标准化)

字段路径

数据类型

描述

示例值

影响范围

normalization

Enum

URI路径处理策略:

  • NONE:禁用标准化。

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

  • MERGE_SLASHES:仅合并连续斜杠。

NONE

网格维度HTTP路由。

DefaultHttpRetryPolicy(HTTP重试策略)

字段路径

数据类型

描述

示例值

影响范围

attempts

Int32

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

2

HTTP路由策略。

perTryTimeout

Duration

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

0s(无限制)

retryOn

String

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

gateway-error, connect-failure, refused-stream

SidecarInjectorWebhookConfiguration(Sidecar注入器配置)

字段路径

数据类型

描述

示例值

影响范围

rewriteAppHTTPProbe

Bool

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

true

Sidecar注入行为。

replicaCount

Int

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

2

Sidecar注入器组件。

resources

Object

资源配额配置:

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

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

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

Sidecar注入器组件。

AccessLogExtraConf(访问日志配置)

字段路径

数据类型

描述

示例值

logEncoding

String

日志输出格式。可选值为 JSON,TEXT。

JSON

logProject

String

日志投递的阿里云 SLS 日志 project 名称。

重要

此字段仅在 ASM 1.25 及以上版本可配置。

log-project-test

gatewayEnabled

Boolean

是否将网关的访问日志采集至阿里云 SLS。

true

sidecarEnabled

Boolean

是否将 Sidecar 的访问日志采集至阿里云 SLS。

true

ztunnelEnabled

Boolean

是否将 Ztunnel 的访问日志采集至阿里云 SLS。

重要

此字段仅在 ASM 1.25 及以上版本可配置。

true

gatewayLifecycle

Integer

网关访问日志的保留时间,默认为 90 天。

30

sidecarLifecycle

Integer

Sidecar 访问日志的保留时间,默认为 90 天。

30

ztunnelLifecycle

Integer

Ztunnel 访问日志的保留时间,默认为 90 天。

重要

此字段仅在 ASM 1.25 及以上版本可配置。

30

RatelimitService(全局限流配置)

字段路径

数据类型

描述

示例值

影响范围

enabled

Bool

是否启用限流服务。

true

全局启用限流服务能力。

replicas

Int

限流服务的副本数。

1

限流服务可用性与性能。

resources

Object

限流服务的资源配置。

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

限流服务可用性与性能。

redis

Object

限流服务查询的 Redis 配置。

说明

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

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

限流状态存储后端。

redis.type

String

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

single

限流状态存储后端。

redis.url

String

redis 地址。

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

限流状态存储后端。

redis.auth

String

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

xxxxxx

凭据安全管理。

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

凭据安全管理。

redis.cacheKeyPrefix

String

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

N/A

限流状态存储后端。

说明

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

实例类型

架构类型

连接模式

集群类型配置

单节点

/

/

single

高可用

不启用集群

/

single

启用集群

直连模式

cluster

代理模式

single

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