Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:ASMExtensionProvider CRD

Dernière mise à jour :Aug 11, 2026

ASMExtensionProvider est une définition de ressource personnalisée (CRD) qui configure les backends de télémétrie pour Alibaba Cloud Service Mesh (ASM). Chaque ressource ASMExtensionProvider correspond à un service backend tel que Zipkin, OpenTelemetry ou un journal d'accès Envoy basé sur des fichiers.

Pour activer un fournisseur, référencez-le par son nom dans une ressource Telemetry CRD.

Prérequis

  • Le champ name du fournisseur doit correspondre à un service Kubernetes accessible au sein du maillage. Pour les services externes, enregistrez-les d'abord via une ressource ServiceEntry.

  • Le champ service utilise le format de nom de domaine complet (FQDN) : <service-name>.<namespace>.svc.cluster.local. Pour référencer un service situé dans un autre namespace, incluez le namespace dans le FQDN.

Exemples

Envoyer les traces vers Zipkin

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

Personnaliser le format des journaux d'accès Envoy

Définissez un format de journal JSON personnalisé pour les journaux d'accès du proxy Envoy et envoyez la sortie vers 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

La chaîne de format utilise les opérateurs de commande d'Envoy, tels que %RESPONSE_CODE% et %DURATION%. N'incluez que les champs pertinents pour votre cas d'utilisation. L'exemple ci-dessus présente un modèle complet.

Router les traces vers différents backends selon le cluster

Utilisez un fournisseur agrégé pour envoyer les données de traçage de clusters spécifiques vers des backends désignés. Dans l'exemple suivant, le cluster cluster-a envoie ses traces à Zipkin, tandis que tous les autres clusters utilisent OpenTelemetry.

Important

Le fournisseur agrégé nécessite une version ASM 1.22.6.89 ou ultérieure.

Étape 1 : Définissez le fournisseur agrégé ainsi que les fournisseurs de traçage individuels.

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

Étape 2 : Référencez les fournisseurs dans une ressource Telemetry CRD pour les activer.

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

Référence des champs

ASMExtensionProvider

Chaque ressource ASMExtensionProvider contient exactement une configuration de fournisseur. Définissez le champ correspondant à votre backend cible.

Champ Type Obligatoire Description
zipkin ZipkinTracingProvider Non Backend de traçage Zipkin. Voir ZipkinTracingProvider.
lightstep LightstepTracingProvider Non Backend de traçage Lightstep. Voir LightstepTracingProvider.
datadog DatadogTracingProvider Non Backend de traçage Datadog. Voir DatadogTracingProvider.
stackdriver StackdriverProvider Non Backend de traçage Stackdriver. Voir StackdriverProvider.
opencensus OpenCensusAgentTracingProvider Non Backend de traçage OpenCensus. Voir OpenCensusAgentTracingProvider.
skywalking SkywalkingTracingProvider Non Backend de traçage Skywalking. Voir SkywalkingTracingProvider.
opentelemetry OpenTelemetryProvider Non Backend de traçage OpenTelemetry. Voir OpenTelemetryProvider.
envoyFileAccesslog EnvoyFileAccessLogProvider Non Fournisseur de journaux d'accès basé sur des fichiers Envoy. Voir EnvoyFileAccessLogProvider.
aggregate AggregateProvider Non Route la télémétrie vers différents fournisseurs en fonction de l'identité du cluster. Voir AggregateProvider.

ZipkinTracingProvider

Champ Type Obligatoire Description
service string Oui FQDN du service Zipkin. Exemple : zipkin.istio-system.svc.cluster.local.
path string Oui Chemin du point de terminaison API pour le service Zipkin.
port uint32 Non Port du service Zipkin.
maxTagLength uint32 Non Longueur maximale en caractères par tag. Valeur par défaut : 256.

LightstepTracingProvider

Champ Type Obligatoire Description
service string Oui FQDN du service Lightstep.
port uint32 Oui Port du service Lightstep.
accesstoken string Non Jeton d'accès pour l'authentification auprès de Lightstep.
maxTagLength uint32 Non Longueur maximale en caractères par tag. Valeur par défaut : 256.

DatadogTracingProvider

Champ Type Obligatoire Description
service string Oui FQDN du service de l'agent Datadog.
port uint32 Oui Port du service de l'agent Datadog.
maxTagLength uint32 Non Longueur maximale en caractères par tag. Valeur par défaut : 256.

StackdriverProvider

Champ Type Obligatoire Description
maxTagLength uint32 Non Longueur maximale en caractères par tag. Valeur par défaut : 256.
logging StackdriverProvider_Logging Non Configuration de la journalisation pour Stackdriver. Voir StackdriverProvider_Logging.

OpenCensusAgentTracingProvider

Champ Type Obligatoire Description
service string Oui FQDN du service de l'agent OpenCensus.
port uint32 Oui Port du service de l'agent OpenCensus.
context []string Non En-têtes de propagation du contexte de trace. Valeur par défaut : ["W3C_TRACE_CONTEXT"].
maxTagLength uint32 Non Longueur maximale en caractères par tag. Valeur par défaut : 256.

SkywalkingTracingProvider

Champ Type Obligatoire Description
service string Oui FQDN du service Skywalking.
port uint32 Oui Port du service Skywalking.

OpenTelemetryProvider

Champ Type Obligatoire Description
service string Oui FQDN du service du collecteur OpenTelemetry.
port uint32 Oui Port du service du collecteur OpenTelemetry.
maxTagLength uint32 Non Longueur maximale en caractères par tag. Valeur par défaut : 256.
grpc OpenTelemetryProvider_GrpcService Non Configuration du transport gRPC. Voir OpenTelemetryProvider_GrpcService.
http OpenTelemetryProvider_HttpService Non Configuration du transport HTTP. Si ce champ est omis, gRPC est utilisé par défaut. Voir OpenTelemetryProvider_HttpService.

EnvoyFileAccessLogProvider

Champ Type Obligatoire Description
path string Non Chemin du fichier pour la sortie des journaux. Exemple : /dev/stdout.
logFormat EnvoyFileAccessLogProvider_LogFormat Non Format de sortie des journaux. Prend en charge text ou labels (JSON). Voir EnvoyFileAccessLogProvider_LogFormat.

AggregateProvider

Champ Type Obligatoire Description
defaultProvider ProviderRef Oui Fournisseur utilisé pour les clusters qui ne correspondent à aucune entrée dans uniqueProviders.
uniqueProviders []UniqueProvider Non Assignations de fournisseurs par cluster. Voir UniqueProvider.

UniqueProvider

Champ Type Obligatoire Description
provider ProviderRef Non Fournisseur à utiliser pour les clusters spécifiés. Voir ProviderRef.
clusters []ClusterRef Non Clusters assignés à ce fournisseur. Voir ClusterRef.

StackdriverProvider_Logging

Champ Type Obligatoire Description
labels map[string]string Non Noms de libellés et expressions inclus dans les entrées de journal. Exemple : path: request.url_path.

OpenTelemetryProvider_HttpService

Champ Type Obligatoire Description
path string Oui Chemin du point de terminaison API du service de collecte.
timeout string Non Délai d'expiration pour les requêtes HTTP.
headers []HeaderValue Non En-têtes HTTP personnalisés ajoutés à chaque requête. Voir HeaderValue.

OpenTelemetryProvider_GrpcService

Champ Type Obligatoire Description
timeout string Non Délai d'expiration pour les requêtes gRPC.
initialMetaData []HeaderValue Non En-têtes de métadonnées personnalisés ajoutés à chaque requête gRPC. Voir HeaderValue.

HeaderValue

Champ Type Obligatoire Description
name string Oui Nom de l'en-tête.
value string Oui Valeur de l'en-tête.

EnvoyFileAccessLogProvider_LogFormat

Spécifiez le format du journal sous forme de texte brut ou de JSON structuré. Utilisez les opérateurs de commande d'Envoy pour référencer les attributs des requêtes et des réponses.

Champ Type Obligatoire Description
text string Non Format de journal en texte brut. Exemple : "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%".
labels map[string]string Non Format de journal structuré en JSON. Exemple : status: "%RESPONSE_CODE%", message: "%LOCAL_REPLY_BODY%".

ProviderRef

Champ Type Obligatoire Description
name string Non Nom de la ressource ASMExtensionProvider à référencer.

ClusterRef

Champ Type Obligatoire Description
id string Oui ID du cluster.
name string Non Nom du cluster.
region string Non Région où le cluster est déployé.