Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:ASMExtensionProvider CRD

Última atualização: Jun 28, 2026

O ASMExtensionProvider é uma Custom Resource Definition (CRD) que configura backends de telemetria para o Alibaba Cloud Service Mesh (ASM). Cada recurso ASMExtensionProvider mapeia um serviço de backend, como Zipkin, OpenTelemetry ou um logger de acesso baseado em arquivo do Envoy.

Para ativar um provedor, referencie-o pelo nome em uma Telemetry CRD.

Antes de começar

  • O name do provedor deve corresponder a um serviço Kubernetes acessível na malha. Para serviços externos, registre-os primeiro por meio de uma ServiceEntry.

  • O campo service usa o formato de nome de domínio totalmente qualificado (FQDN): <service-name>.<namespace>.svc.cluster.local. Para referenciar um serviço em outro namespace, inclua o namespace no FQDN.

Exemplos

Reportar rastreamentos ao Zipkin

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

Personalizar o formato de log de acesso do Envoy

Defina um formato de log JSON personalizado para os logs de acesso do proxy Envoy e direcione a saída para stdout:

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

A string de formatação usa operadores de comando do Envoy, como %RESPONSE_CODE% e %DURATION%. Inclua apenas os campos relevantes para o seu caso de uso. O exemplo acima é um modelo abrangente.

Roteamento de rastreamentos para diferentes backends por cluster

Use um provedor agregado para enviar dados de rastreamento de clusters específicos a backends designados. No exemplo a seguir, o cluster-a reporta rastreamentos ao Zipkin, enquanto todos os outros clusters usam OpenTelemetry.

Importante

O provedor agregado requer a versão 1.22.6.89 ou posterior do ASM.

Etapa 1: Defina o provedor agregado e os provedores de rastreamento individuais.

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

Etapa 2: Referencie os provedores em uma Telemetry CRD para ativá-los.

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

Referência de campos

ASMExtensionProvider

Cada recurso ASMExtensionProvider contém exatamente uma configuração de provedor. Defina o campo correspondente ao seu backend de destino.

Campo

Tipo

Obrigatório

Descrição

zipkin

ZipkinTracingProvider

Não

Backend de rastreamento Zipkin. Consulte ZipkinTracingProvider.

lightstep

LightstepTracingProvider

Não

Backend de rastreamento Lightstep. Consulte LightstepTracingProvider.

datadog

DatadogTracingProvider

Não

Backend de rastreamento Datadog. Consulte DatadogTracingProvider.

stackdriver

StackdriverProvider

Não

Backend de rastreamento Stackdriver. Consulte StackdriverProvider.

opencensus

OpenCensusAgentTracingProvider

Não

Backend de rastreamento OpenCensus. Consulte OpenCensusAgentTracingProvider.

skywalking

SkywalkingTracingProvider

Não

Backend de rastreamento Skywalking. Consulte SkywalkingTracingProvider.

opentelemetry

OpenTelemetryProvider

Não

Backend de rastreamento OpenTelemetry. Consulte OpenTelemetryProvider.

envoyFileAccesslog

EnvoyFileAccessLogProvider

Não

Provedor de log de acesso baseado em arquivo do Envoy. Consulte EnvoyFileAccessLogProvider.

aggregate

AggregateProvider

Não

Roteia telemetria para diferentes provedores com base na identidade do cluster. Consulte AggregateProvider.

ZipkinTracingProvider

Campo

Tipo

Obrigatório

Descrição

service

string

Sim

FQDN do serviço Zipkin. Exemplo: zipkin.istio-system.svc.cluster.local.

path

string

Sim

Caminho do endpoint de API do serviço Zipkin.

port

uint32

Não

Porta do serviço Zipkin.

maxTagLength

uint32

Não

Comprimento máximo de caracteres por tag. Padrão: 256.

LightstepTracingProvider

Campo

Tipo

Obrigatório

Descrição

service

string

Sim

FQDN do serviço Lightstep.

port

uint32

Sim

Porta do serviço Lightstep.

accesstoken

string

Não

Token de acesso para autenticação no Lightstep.

maxTagLength

uint32

Não

Comprimento máximo de caracteres por tag. Padrão: 256.

DatadogTracingProvider

Campo

Tipo

Obrigatório

Descrição

service

string

Sim

FQDN do serviço de agente Datadog.

port

uint32

Sim

Porta do serviço de agente Datadog.

maxTagLength

uint32

Não

Comprimento máximo de caracteres por tag. Padrão: 256.

StackdriverProvider

Campo

Tipo

Obrigatório

Descrição

maxTagLength

uint32

Não

Comprimento máximo de caracteres por tag. Padrão: 256.

logging

StackdriverProvider_Logging

Não

Configuração de logging do Stackdriver. Consulte StackdriverProvider_Logging.

OpenCensusAgentTracingProvider

Campo

Tipo

Obrigatório

Descrição

service

string

Sim

FQDN do serviço de agente OpenCensus.

port

uint32

Sim

Porta do serviço de agente OpenCensus.

context

[]string

Não

Headers de propagação de contexto de rastreamento. Padrão: ["W3C_TRACE_CONTEXT"].

maxTagLength

uint32

Não

Comprimento máximo de caracteres por tag. Padrão: 256.

SkywalkingTracingProvider

Campo

Tipo

Obrigatório

Descrição

service

string

Sim

FQDN do serviço Skywalking.

port

uint32

Sim

Porta do serviço Skywalking.

OpenTelemetryProvider

Campo

Tipo

Obrigatório

Descrição

service

string

Sim

FQDN do serviço coletor OpenTelemetry.

port

uint32

Sim

Porta do serviço coletor OpenTelemetry.

maxTagLength

uint32

Não

Comprimento máximo de caracteres por tag. Padrão: 256.

grpc

OpenTelemetryProvider_GrpcService

Não

Configuração de transporte gRPC. Consulte OpenTelemetryProvider_GrpcService.

http

OpenTelemetryProvider_HttpService

Não

Configuração de transporte HTTP. Se omitido, o gRPC será usado por padrão. Consulte OpenTelemetryProvider_HttpService.

EnvoyFileAccessLogProvider

Campo

Tipo

Obrigatório

Descrição

path

string

Não

Caminho do arquivo para saída de log. Exemplo: /dev/stdout.

logFormat

EnvoyFileAccessLogProvider_LogFormat

Não

Formato de saída de log. Suporta text ou labels (JSON). Consulte EnvoyFileAccessLogProvider_LogFormat.

AggregateProvider

Campo

Tipo

Obrigatório

Descrição

defaultProvider

ProviderRef

Sim

Provedor usado para clusters que não correspondem a nenhuma entrada em uniqueProviders.

uniqueProviders

[]UniqueProvider

Não

Atribuições de provedor por cluster. Consulte UniqueProvider.

UniqueProvider

Campo

Tipo

Obrigatório

Descrição

provider

ProviderRef

Não

Provedor a ser usado para os clusters especificados. Consulte ProviderRef.

clusters

[]ClusterRef

Não

Clusters atribuídos a este provedor. Consulte ClusterRef.

StackdriverProvider_Logging

Campo

Tipo

Obrigatório

Descrição

labels

map[string]string

Não

Nomes de rótulos e expressões incluídos nas entradas de log. Exemplo: path: request.url_path.

OpenTelemetryProvider_HttpService

Campo

Tipo

Obrigatório

Descrição

path

string

Sim

Caminho do endpoint de API do serviço coletor.

timeout

string

Não

Timeout para requisições HTTP.

headers

[]HeaderValue

Não

Headers HTTP personalizados anexados a cada requisição. Consulte HeaderValue.

OpenTelemetryProvider_GrpcService

Campo

Tipo

Obrigatório

Descrição

timeout

string

Não

Timeout para requisições gRPC.

initialMetaData

[]HeaderValue

Não

Headers de metadados personalizados anexados a cada requisição gRPC. Consulte HeaderValue.

HeaderValue

Campo

Tipo

Obrigatório

Descrição

name

string

Sim

Nome do header.

value

string

Sim

Valor do header.

EnvoyFileAccessLogProvider_LogFormat

Especifique o formato de log como texto simples ou JSON estruturado. Use operadores de comando do Envoy para referenciar atributos de requisição e resposta.

Campo

Tipo

Obrigatório

Descrição

text

string

Não

Formato de log em texto simples. Exemplo: "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%".

labels

map[string]string

Não

Formato de log estruturado em JSON. Exemplo: status: "%RESPONSE_CODE%", message: "%LOCAL_REPLY_BODY%".

ProviderRef

Campo

Tipo

Obrigatório

Descrição

name

string

Não

Nome do recurso ASMExtensionProvider a ser referenciado.

ClusterRef

Campo

Tipo

Obrigatório

Descrição

id

string

Sim

ID do cluster.

name

string

Não

Nome do cluster.

region

string

Não

Região onde o cluster está implantado.