全部产品
Search
文档中心

服务网格 ASM:ASMExtensionProvider CRD说明

更新时间:Feb 06, 2025

ASMExtensionProvider是用于扩展和配置网格功能的组件,支持链路追踪、访问日志等关键特性的灵活集成与定制化配置。本文介绍ASMExtensionProvider的配置示例和字段说明。

配置示例

配置Zipkin链路追踪

以下展示了一个链路追踪通过Zipkin进行上报的配置示例。

apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
  name: zipkin
spec:
  zipkin:
    port: 8090
    service: zipkin.istio-system.svc.cluster.local

配置Envoy访问日志格式

以下展示了一个配置Envoy访问日志格式的示例。

apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
  name: envoy
spec:
  envoyFileAccessLog:
    logFormat:
      text: '{"bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","downstream_local_address":"%DOWNSTREAM_LOCAL_ADDRESS%","downstream_remote_address":"%DOWNSTREAM_REMOTE_ADDRESS%","duration":"%DURATION%","istio_policy_status":"%DYNAMIC_METADATA(istio.mixer:status)%","method":"%REQ(:METHOD)%","path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","protocol":"%PROTOCOL%","request_id":"%REQ(X-REQUEST-ID)%","requested_server_name":"%REQUESTED_SERVER_NAME%","response_code":"%RESPONSE_CODE%","response_flags":"%RESPONSE_FLAGS%","route_name":"%ROUTE_NAME%","start_time":"%START_TIME%","trace_id":"%REQ(X-B3-TRACEID)%","upstream_cluster":"%UPSTREAM_CLUSTER%","upstream_host":"%UPSTREAM_HOST%","upstream_local_address":"%UPSTREAM_LOCAL_ADDRESS%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_response_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_transport_failure_reason":"%UPSTREAM_TRANSPORT_FAILURE_REASON%","user_agent":"%REQ(USER-AGENT)%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","authority_for":"%REQ(:AUTHORITY)%"}'
    path: /dev/stdout

为不同集群配置不同的Tracing上报方式

以下展示了一个聚合Provider的配置,该配置使集群cluster-a通过Zipkin进行链路追踪数据上报,其他集群通过OpenTelemetry进行链路追踪数据上报。

重要

仅支持ASM 1.22.6.89及以上版本。

apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
  name: aggregate-provider
spec:
  aggregate:
    defaultProvider:
      name: opentelemetry
    uniqueProviders:
    - clusters:
      - id: cluster-a
        region: cn-hangzhou
      provider:
        name: zipkin
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
  name: zipkin
spec:
  zipkin:
    port: 8090
    service: zipkin.istio-system.svc.cluster.local
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMExtensionProvider
metadata:
  name: opentelemetry
spec:
  opentelemetry:
    port: 8090
    service: otel.istio-system.svc.cluster.local

在Telemetry资源中引用provider

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: default
  namespace: istio-system
spec:
  accessLogging:
  - disabled: false
    providers:
    - name: envoy
  tracing:
  - providers:
    - name: zipkin

配置项说明

ASMExtensionProvider

配置项

类型

是否必选

说明

zipkin

ZipkinTracingProvider

否

Zipkin追踪配置。

lightstep

LightstepTracingProvider

否

Lightstep追踪配置。

datadog

DatadogTracingProvider

否

Datadog追踪配置。

stackdriver

StackdriverProvider

否

Stackdriver 配置。

opencensus

OpenCensusAgentTracingProvider

否

OpenCensus追踪配置。

skywalking

SkywalkingTracingProvider

否

Skywalking追踪配置。

opentelemetry

OpenTelemetryProvider

否

OpenTelemetry配置。

envoyFileAccesslog

EnvoyFileAccessLogProvider

否

Envoy访问日志配置。

aggregate

AggregateProvider

否

聚合Provider,用于为不同集群配置不同Provider。

重要

在配置链路追踪Provider时,需要保证Provider的服务名称为网格内服务,如果为网格外服务,需要通过ServiceEntry进行注册。具体操作,请参见Service Entry。

ZipkinTracingProvider

配置项

类型

是否必选

说明

service

string

是

Zipkin服务名称。

path

string

是

Zipkin服务请求路径。

port

uint32

否

Zipkin服务端口。

maxTagLength

uint32

否

每个标签的最大字符长度,默认值为256。

LightstepTracingProvider

配置项

类型

是否必选

说明

service

string

是

Lightstep服务名称。

port

uint32

是

Lightstep服务端口。

accesstoken

string

否

Lightstep服务访问令牌。

maxTagLength

uint32

否

每个标签的最大字符长度,默认值为256。

DatadogTracingProvider

配置项

类型

是否必选

说明

service

string

是

Datadog服务名称。

port

uint32

是

Datadog服务端口。

maxTagLength

uint32

否

每个标签的最大字符长度,默认值为256。

StackdriverProvider

配置项

类型

是否必选

说明

maxTagLength

uint32

否

每个标签的最大字符长度,默认值为256。

logging

StackdriverProvider_Logging

否

Stackdriver日志配置。

OpenCensusAgentTracingProvider

配置项

类型

是否必选

说明

service

string

是

OpenCensusAgent服务名称。

port

uint32

是

OpenCensusAgent服务端口。

context

[]string

否

指定用于分布式追踪的上下文传播头,默认为 ["W3C_TRACE_CONTEXT"]。

maxTagLength

uint32

否

每个标签的最大字符长度,默认值为256。

SkywalkingTracingProvider

配置项

类型

是否必选

说明

service

string

是

Skywalking服务名称。

port

uint32

是

Skywalking服务端口。

OpenTelemetryProvider

配置项

类型

是否必选

说明

service

string

是

OpenTelemetry服务名称。

port

uint32

是

OpenTelemetry服务端口。

maxTagLength

uint32

否

每个标签的最大字符长度,默认值为256。

grpc

OpenTelemetryProvider_GrpcService

否

gRPC协议上报配置。

http

OpenTelemetryProvider_HttpService

否

HTTP协议上报配置。未填写的情况下默认采取gRPC协议进行上报。

EnvoyFileAccessLogProvider

配置项

类型

是否必选

说明

path

string

否

日志输出路径。

logFormat

EnvoyFileAccessLogProvider_LogFormat

否

日志格式配置,text或labels其中之一。

AggregateProvider

配置项

类型

是否必选

说明

defaultProvider

ProviderRef

是

默认使用的Provider。

uniqueProviders

[]UniqueProvider

否

为不同集群分别配置Provider。

UniqueProvider

配置项

类型

是否必选

说明

provider

ProviderRef

否

Provider引用。

clusters

[]ClusterRef

否

集群引用。

StackdriverProvider_Logging

配置项

类型

是否必选

说明

labels

map[string]string

否

要包含在日志条目中的标签名称和标签表达式。例:path: request.url_path。

OpenTelemetryProvider_HttpService

配置项

类型

是否必选

说明

path

string

是

设置服务的路径。

timeout

string

否

HTTP请求的超时时间。

headers

[]HeaderValue

否

每个HTTP请求中添加的自定义 HTTP请求头。

OpenTelemetryProvider_GrpcService

配置项

类型

是否必选

说明

timeout

string

否

gRPC请求的超时时间。

initialMetaData

[]HeaderValue

否

每个gRPC请求中添加的自定义 gRPC头。

HeaderValue

配置项

类型

是否必选

说明

name

string

是

请求头名称。

value

string

是

请求头值。

EnvoyFileAccessLogProvider_LogFormat

配置项

类型

是否必选

说明

text

string

否

文本化输出方式的日志格式。例:text: "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%"。

labels

map[string]string

否

配置JSON结构化输出的Envoy日志格式。例:

labels:
  status: "%RESPONSE_CODE%"
  message: "%LOCAL_REPLY_BODY%"

ProviderRef

配置项

类型

是否必选

说明

name

string

否

Provider名称。

ClusterRef

配置项

类型

是否必选

说明

region

string

否

集群所在的区域。

name

string

否

集群的名称。

id

string

是

集群ID。