ASMMeshConfig是阿里云服务网格ASM提供的自定义资源,用于全局配置服务网格的核心参数,其功能类似Istio的MeshConfig。通过该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 | 日志投递的阿里云 SLS 日志 project 名称。 |
|
| Duration | 定义Envoy代理建立TCP连接的最大等待时间,超时触发 |
|
| Duration | 自动协议检测的超时时间,用于识别HTTP/HTTPS流量。超时后按原始协议处理流量。 重要 此字段仅在ASM 1.19及以下版本可配置。 | |
| PathNormalization | 路径标准化。 | |
| DefaultHttpRetryPolicy | Sidecar 默认 HTTP 重试策略。 | |
| Bool | 自动合并Pod原有 |
|
| SidecarInjectorWebhookConfiguration | Sidecar 注入配置。 | |
| AccessLogExtraConf | 访问日志格式与采集配置。 | |
| RatelimitService | 全局限流服务配置。 重要 此字段仅在 ASM 1.25 及以上版本可配置。 |
TcpKeepalive(TCP保活配置)
字段路径 | 数据类型 | 描述 | 示例值 | 影响范围 |
| Uint32 | 发送的TCP保活探测包最大次数。设置为 |
| 出站TCP长连接。 |
| Duration | TCP连接空闲等待时间,超时后开始发送保活探测包。 |
| |
| Duration | 保活探测包发送间隔,需小于 |
|
PathNormalization(路径标准化)
字段路径 | 数据类型 | 描述 | 示例值 | 影响范围 |
| Enum | URI路径处理策略:
|
| 网格维度HTTP路由。 |
DefaultHttpRetryPolicy(HTTP重试策略)
字段路径 | 数据类型 | 描述 | 示例值 | 影响范围 |
| Int32 | 全局HTTP请求最大重试次数(含初始请求),仅当VirtualService未显式配置时生效。 |
| HTTP路由策略。 |
| Duration | 单次重试的超时时间,需短于VirtualService中定义的总超时时间。 |
| |
| String | 触发重试的条件,支持标准错误类型:
|
|
SidecarInjectorWebhookConfiguration(Sidecar注入器配置)
字段路径 | 数据类型 | 描述 | 示例值 | 影响范围 |
| Bool | 自动将Pod的HTTP就绪探针重定向到Sidecar代理端口。 |
| Sidecar注入行为。 |
| Int | Sidecar注入控制器的副本数,用于提升高可用性。 |
| Sidecar注入器组件。 |
| Object | 资源配额配置:
| | Sidecar注入器组件。 |
AccessLogExtraConf(访问日志配置)
字段路径 | 数据类型 | 描述 | 示例值 |
| String | 日志输出格式。可选值为 JSON,TEXT。 |
|
| String | 日志投递的阿里云 SLS 日志 project 名称。 重要 此字段仅在 ASM 1.25 及以上版本可配置。 |
|
| Boolean | 是否将网关的访问日志采集至阿里云 SLS。 |
|
| Boolean | 是否将 Sidecar 的访问日志采集至阿里云 SLS。 |
|
| Boolean | 是否将 Ztunnel 的访问日志采集至阿里云 SLS。 重要 此字段仅在 ASM 1.25 及以上版本可配置。 |
|
| Integer | 网关访问日志的保留时间,默认为 90 天。 |
|
| Integer | Sidecar 访问日志的保留时间,默认为 90 天。 |
|
| Integer | Ztunnel 访问日志的保留时间,默认为 90 天。 重要 此字段仅在 ASM 1.25 及以上版本可配置。 |
|
RatelimitService(全局限流配置)
字段路径 | 数据类型 | 描述 | 示例值 | 影响范围 |
| Bool | 是否启用限流服务。 |
| 全局启用限流服务能力。 |
| Int | 限流服务的副本数。 |
| 限流服务可用性与性能。 |
| Object | 限流服务的资源配置。 | | 限流服务可用性与性能。 |
| Object | 限流服务查询的 Redis 配置。 说明 全局限流服务使用redis记录限流策略以及决策。 | | 限流状态存储后端。 |
| String | redis 集群类型,可选值: |
| 限流状态存储后端。 |
| String | redis 地址。 |
| 限流状态存储后端。 |
| String | redis 认证信息,格式为: | xxxxxx | 凭据安全管理。 |
| String | 存储redis认证信息的 secret 名称。 说明 该 secret 需要部署在 | | 凭据安全管理。 |
| String | Redis cache 的key前缀。默认为空。 | N/A | 限流状态存储后端。 |
推荐您使用阿里云 Redis来保证高可用,您可以基于Redis实例的类型结合下表来对限流服务rateLimitService.redis.type进行配置。
实例类型 | 架构类型 | 连接模式 | 集群类型配置 |
单节点 | / | / |
|
高可用 | 不启用集群 | / |
|
启用集群 | 直连模式 |
| |
代理模式 |
|
ASM会汇总所有的配置并自动在istio-system 命名空间下生成一个名为ratelimit-service-config的限流服务配置。当您开启限流服务后,该配置会自动挂载,无需手动更新限流服务配置。