From 32bc595e98d268ff591d9625a643b84a00df48ae Mon Sep 17 00:00:00 2001 From: Prashanth Josyula Date: Fri, 19 Sep 2025 04:09:28 -0700 Subject: [PATCH] Add TraceContextOption enum to ZipkinTracingProvider (#3566) * Add TraceContextOption enum to ZipkinTracingProvider Add support for configuring trace context propagation format in Zipkin tracing provider. This enables users to choose between B3-only headers (default) or dual B3/W3C header support for better interoperability with W3C trace context systems. Changes: - Add TraceContextOption enum with USE_B3 and USE_B3_WITH_W3C_PROPAGATION values - Add trace_context_option field to ZipkinTracingProvider message - Maintain backward compatibility with USE_B3 as default * Add TraceContextOption enum to ZipkinTracingProvider Add support for configuring trace context propagation format in Zipkin tracing provider. This enables users to choose between B3-only headers (default) or dual B3/W3C header support for better interoperability with W3C trace context systems. Changes: - Add TraceContextOption enum with USE_B3 and USE_B3_WITH_W3C_PROPAGATION values - Add trace_context_option field to ZipkinTracingProvider message - Maintain backward compatibility with USE_B3 as default * Add support for configuring trace context propagation format in Zipkin tracing provider. This enables users to choose between B3-only headers (default) or dual B3/W3C header support for better interoperability with W3C trace context systems. Changes: - Add TraceContextOption enum with USE_B3 and USE_B3_WITH_W3C_PROPAGATION values - Add trace_context_option field to ZipkinTracingProvider message - Maintain backward compatibility with USE_B3 as default --- mesh/v1alpha1/config.pb.go | 378 +++++++++++------- mesh/v1alpha1/config.proto | 16 + mesh/v1alpha1/istio.mesh.v1alpha1.pb.html | 47 ++- .../notes/zipkin-trace-context-option.yaml | 13 + 4 files changed, 299 insertions(+), 155 deletions(-) create mode 100644 releasenotes/notes/zipkin-trace-context-option.yaml diff --git a/mesh/v1alpha1/config.pb.go b/mesh/v1alpha1/config.pb.go index 94b57122..a665d6c5 100644 --- a/mesh/v1alpha1/config.pb.go +++ b/mesh/v1alpha1/config.pb.go @@ -456,6 +456,58 @@ func (MeshConfig_ServiceScopeConfigs_Scope) EnumDescriptor() ([]byte, []int) { return file_mesh_v1alpha1_config_proto_rawDescGZIP(), []int{0, 4, 0} } +// Available trace context options for handling different trace header formats. +type MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption int32 + +const ( + // Use B3 headers only (default behavior). + MeshConfig_ExtensionProvider_ZipkinTracingProvider_USE_B3 MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption = 0 + // Enable B3 and W3C dual header support: + // - For downstream: Extract from B3 headers first, fallback to W3C traceparent if B3 is unavailable. + // - For upstream: Inject both B3 and W3C traceparent headers. + // When this option is NOT set, only B3 headers are used for both extraction and injection. + MeshConfig_ExtensionProvider_ZipkinTracingProvider_USE_B3_WITH_W3C_PROPAGATION MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption = 1 +) + +// Enum value maps for MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption. +var ( + MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption_name = map[int32]string{ + 0: "USE_B3", + 1: "USE_B3_WITH_W3C_PROPAGATION", + } + MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption_value = map[string]int32{ + "USE_B3": 0, + "USE_B3_WITH_W3C_PROPAGATION": 1, + } +) + +func (x MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption) Enum() *MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption { + p := new(MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption) + *p = x + return p +} + +func (x MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption) Descriptor() protoreflect.EnumDescriptor { + return file_mesh_v1alpha1_config_proto_enumTypes[8].Descriptor() +} + +func (MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption) Type() protoreflect.EnumType { + return &file_mesh_v1alpha1_config_proto_enumTypes[8] +} + +func (x MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption.Descriptor instead. +func (MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption) EnumDescriptor() ([]byte, []int) { + return file_mesh_v1alpha1_config_proto_rawDescGZIP(), []int{0, 6, 3, 0} +} + // TraceContext selects the context propagation headers used for // distributed tracing. type MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider_TraceContext int32 @@ -510,11 +562,11 @@ func (x MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider_TraceContext } func (MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider_TraceContext) Descriptor() protoreflect.EnumDescriptor { - return file_mesh_v1alpha1_config_proto_enumTypes[8].Descriptor() + return file_mesh_v1alpha1_config_proto_enumTypes[9].Descriptor() } func (MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider_TraceContext) Type() protoreflect.EnumType { - return &file_mesh_v1alpha1_config_proto_enumTypes[8] + return &file_mesh_v1alpha1_config_proto_enumTypes[9] } func (x MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider_TraceContext) Number() protoreflect.EnumNumber { @@ -575,11 +627,11 @@ func (x MeshConfig_ProxyPathNormalization_NormalizationType) String() string { } func (MeshConfig_ProxyPathNormalization_NormalizationType) Descriptor() protoreflect.EnumDescriptor { - return file_mesh_v1alpha1_config_proto_enumTypes[9].Descriptor() + return file_mesh_v1alpha1_config_proto_enumTypes[10].Descriptor() } func (MeshConfig_ProxyPathNormalization_NormalizationType) Type() protoreflect.EnumType { - return &file_mesh_v1alpha1_config_proto_enumTypes[9] + return &file_mesh_v1alpha1_config_proto_enumTypes[10] } func (x MeshConfig_ProxyPathNormalization_NormalizationType) Number() protoreflect.EnumNumber { @@ -628,11 +680,11 @@ func (x MeshConfig_TLSConfig_TLSProtocol) String() string { } func (MeshConfig_TLSConfig_TLSProtocol) Descriptor() protoreflect.EnumDescriptor { - return file_mesh_v1alpha1_config_proto_enumTypes[10].Descriptor() + return file_mesh_v1alpha1_config_proto_enumTypes[11].Descriptor() } func (MeshConfig_TLSConfig_TLSProtocol) Type() protoreflect.EnumType { - return &file_mesh_v1alpha1_config_proto_enumTypes[10] + return &file_mesh_v1alpha1_config_proto_enumTypes[11] } func (x MeshConfig_TLSConfig_TLSProtocol) Number() protoreflect.EnumNumber { @@ -3097,9 +3149,13 @@ type MeshConfig_ExtensionProvider_ZipkinTracingProvider struct { Enable_64BitTraceId bool `protobuf:"varint,4,opt,name=enable_64bit_trace_id,json=enable64bitTraceId,proto3" json:"enable_64bit_trace_id,omitempty"` // Optional. Specifies the endpoint of Zipkin API. // The default value is "/api/v2/spans". - Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` + // Optional. Determines which trace context format to use for trace header extraction and propagation. + // This controls both downstream request header extraction and upstream request header injection. + // The default value is USE_B3 to maintain backward compatibility. + TraceContextOption MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption `protobuf:"varint,6,opt,name=trace_context_option,json=traceContextOption,proto3,enum=istio.mesh.v1alpha1.MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption" json:"trace_context_option,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MeshConfig_ExtensionProvider_ZipkinTracingProvider) Reset() { @@ -3167,6 +3223,13 @@ func (x *MeshConfig_ExtensionProvider_ZipkinTracingProvider) GetPath() string { return "" } +func (x *MeshConfig_ExtensionProvider_ZipkinTracingProvider) GetTraceContextOption() MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption { + if x != nil { + return x.TraceContextOption + } + return MeshConfig_ExtensionProvider_ZipkinTracingProvider_USE_B3 +} + // Defines configuration for a Lightstep tracer. // Note: Lightstep has moved to OpenTelemetry-based integrations. Istio 1.15+ // will generate OpenTelemetry-compatible configuration when using this option. @@ -5050,7 +5113,7 @@ var File_mesh_v1alpha1_config_proto protoreflect.FileDescriptor const file_mesh_v1alpha1_config_proto_rawDesc = "" + "\n" + - "\x1amesh/v1alpha1/config.proto\x12\x13istio.mesh.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x19mesh/v1alpha1/proxy.proto\x1a*networking/v1alpha3/destination_rule.proto\x1a)networking/v1alpha3/virtual_service.proto\"\xa5m\n" + + "\x1amesh/v1alpha1/config.proto\x12\x13istio.mesh.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x19mesh/v1alpha1/proxy.proto\x1a*networking/v1alpha3/destination_rule.proto\x1a)networking/v1alpha3/virtual_service.proto\"\xf7n\n" + "\n" + "MeshConfig\x12*\n" + "\x11proxy_listen_port\x18\x04 \x01(\x05R\x0fproxyListenPort\x129\n" + @@ -5133,7 +5196,7 @@ const file_mesh_v1alpha1_config_proto_rawDesc = "" + "\ftls_settings\x18\x02 \x01(\v2,.istio.networking.v1alpha3.ClientTLSSettingsR\vtlsSettings\x12B\n" + "\x0frequest_timeout\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\x0erequestTimeout\x12\x1f\n" + "\vistiod_side\x18\x04 \x01(\bR\n" + - "istiodSide\x1a\xf0>\n" + + "istiodSide\x1a\xc2@\n" + "\x11ExtensionProvider\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\x12\x8b\x01\n" + "\x14envoy_ext_authz_http\x18\x02 \x01(\v2X.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProviderH\x00R\x11envoyExtAuthzHttp\x12\x8b\x01\n" + @@ -5189,13 +5252,18 @@ const file_mesh_v1alpha1_config_proto_rawDesc = "" + "\tfail_open\x18\x03 \x01(\bR\bfailOpen\x12*\n" + "\x11clear_route_cache\x18\a \x01(\bR\x0fclearRouteCache\x12&\n" + "\x0fstatus_on_error\x18\x04 \x01(\tR\rstatusOnError\x12\x99\x01\n" + - "\x1dinclude_request_body_in_check\x18\x06 \x01(\v2W.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationRequestBodyR\x19includeRequestBodyInCheck\x1a\xb2\x01\n" + + "\x1dinclude_request_body_in_check\x18\x06 \x01(\v2W.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationRequestBodyR\x19includeRequestBodyInCheck\x1a\x84\x03\n" + "\x15ZipkinTracingProvider\x12\x18\n" + "\aservice\x18\x01 \x01(\tR\aservice\x12\x12\n" + "\x04port\x18\x02 \x01(\rR\x04port\x12$\n" + "\x0emax_tag_length\x18\x03 \x01(\rR\fmaxTagLength\x121\n" + "\x15enable_64bit_trace_id\x18\x04 \x01(\bR\x12enable64bitTraceId\x12\x12\n" + - "\x04path\x18\x05 \x01(\tR\x04path\x1a\x91\x01\n" + + "\x04path\x18\x05 \x01(\tR\x04path\x12\x8c\x01\n" + + "\x14trace_context_option\x18\x06 \x01(\x0e2Z.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ZipkinTracingProvider.TraceContextOptionR\x12traceContextOption\"A\n" + + "\x12TraceContextOption\x12\n" + + "\n" + + "\x06USE_B3\x10\x00\x12\x1f\n" + + "\x1bUSE_B3_WITH_W3C_PROPAGATION\x10\x01\x1a\x91\x01\n" + "\x18LightstepTracingProvider\x12\x18\n" + "\aservice\x18\x01 \x01(\tR\aservice\x12\x12\n" + "\x04port\x18\x02 \x01(\rR\x04port\x12!\n" + @@ -5381,7 +5449,7 @@ func file_mesh_v1alpha1_config_proto_rawDescGZIP() []byte { return file_mesh_v1alpha1_config_proto_rawDescData } -var file_mesh_v1alpha1_config_proto_enumTypes = make([]protoimpl.EnumInfo, 11) +var file_mesh_v1alpha1_config_proto_enumTypes = make([]protoimpl.EnumInfo, 12) var file_mesh_v1alpha1_config_proto_msgTypes = make([]protoimpl.MessageInfo, 46) var file_mesh_v1alpha1_config_proto_goTypes = []any{ (Resource)(0), // 0: istio.mesh.v1alpha1.Resource @@ -5392,154 +5460,156 @@ var file_mesh_v1alpha1_config_proto_goTypes = []any{ (MeshConfig_OutboundTrafficPolicy_Mode)(0), // 5: istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy.Mode (MeshConfig_InboundTrafficPolicy_Mode)(0), // 6: istio.mesh.v1alpha1.MeshConfig.InboundTrafficPolicy.Mode (MeshConfig_ServiceScopeConfigs_Scope)(0), // 7: istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs.Scope - (MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider_TraceContext)(0), // 8: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider.TraceContext - (MeshConfig_ProxyPathNormalization_NormalizationType)(0), // 9: istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization.NormalizationType - (MeshConfig_TLSConfig_TLSProtocol)(0), // 10: istio.mesh.v1alpha1.MeshConfig.TLSConfig.TLSProtocol - (*MeshConfig)(nil), // 11: istio.mesh.v1alpha1.MeshConfig - (*LabelSelector)(nil), // 12: istio.mesh.v1alpha1.LabelSelector - (*LabelSelectorRequirement)(nil), // 13: istio.mesh.v1alpha1.LabelSelectorRequirement - (*ConfigSource)(nil), // 14: istio.mesh.v1alpha1.ConfigSource - (*Certificate)(nil), // 15: istio.mesh.v1alpha1.Certificate - (*MeshConfig_OutboundTrafficPolicy)(nil), // 16: istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy - (*MeshConfig_InboundTrafficPolicy)(nil), // 17: istio.mesh.v1alpha1.MeshConfig.InboundTrafficPolicy - (*MeshConfig_CertificateData)(nil), // 18: istio.mesh.v1alpha1.MeshConfig.CertificateData - (*MeshConfig_ServiceSettings)(nil), // 19: istio.mesh.v1alpha1.MeshConfig.ServiceSettings - (*MeshConfig_ServiceScopeConfigs)(nil), // 20: istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs - (*MeshConfig_CA)(nil), // 21: istio.mesh.v1alpha1.MeshConfig.CA - (*MeshConfig_ExtensionProvider)(nil), // 22: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider - (*MeshConfig_DefaultProviders)(nil), // 23: istio.mesh.v1alpha1.MeshConfig.DefaultProviders - (*MeshConfig_ProxyPathNormalization)(nil), // 24: istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization - (*MeshConfig_TLSConfig)(nil), // 25: istio.mesh.v1alpha1.MeshConfig.TLSConfig - (*MeshConfig_ServiceSettings_Settings)(nil), // 26: istio.mesh.v1alpha1.MeshConfig.ServiceSettings.Settings - (*MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationRequestBody)(nil), // 27: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationRequestBody - (*MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationHttpProvider)(nil), // 28: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider - (*MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationGrpcProvider)(nil), // 29: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProvider - (*MeshConfig_ExtensionProvider_ZipkinTracingProvider)(nil), // 30: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ZipkinTracingProvider - (*MeshConfig_ExtensionProvider_LightstepTracingProvider)(nil), // 31: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.LightstepTracingProvider - (*MeshConfig_ExtensionProvider_DatadogTracingProvider)(nil), // 32: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.DatadogTracingProvider - (*MeshConfig_ExtensionProvider_SkyWalkingTracingProvider)(nil), // 33: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.SkyWalkingTracingProvider - (*MeshConfig_ExtensionProvider_StackdriverProvider)(nil), // 34: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider - (*MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider)(nil), // 35: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider - (*MeshConfig_ExtensionProvider_PrometheusMetricsProvider)(nil), // 36: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.PrometheusMetricsProvider - (*MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider)(nil), // 37: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider - (*MeshConfig_ExtensionProvider_EnvoyHttpGrpcV3LogProvider)(nil), // 38: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyHttpGrpcV3LogProvider - (*MeshConfig_ExtensionProvider_EnvoyTcpGrpcV3LogProvider)(nil), // 39: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyTcpGrpcV3LogProvider - (*MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider)(nil), // 40: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider - (*MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider)(nil), // 41: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider - (*MeshConfig_ExtensionProvider_SDSProvider)(nil), // 42: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.SDSProvider - (*MeshConfig_ExtensionProvider_HttpService)(nil), // 43: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService - (*MeshConfig_ExtensionProvider_HttpHeader)(nil), // 44: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpHeader - (*MeshConfig_ExtensionProvider_ResourceDetectors)(nil), // 45: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors - (*MeshConfig_ExtensionProvider_GrpcService)(nil), // 46: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.GrpcService - nil, // 47: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.IncludeAdditionalHeadersInCheckEntry - (*MeshConfig_ExtensionProvider_StackdriverProvider_Logging)(nil), // 48: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging - nil, // 49: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging.LabelsEntry - (*MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider_LogFormat)(nil), // 50: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider.LogFormat - (*MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider_LogFormat)(nil), // 51: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider.LogFormat - (*MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler)(nil), // 52: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler - (*MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler_DynatraceApi)(nil), // 53: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler.DynatraceApi - (*MeshConfig_ExtensionProvider_ResourceDetectors_EnvironmentResourceDetector)(nil), // 54: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.EnvironmentResourceDetector - (*MeshConfig_ExtensionProvider_ResourceDetectors_DynatraceResourceDetector)(nil), // 55: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.DynatraceResourceDetector - nil, // 56: istio.mesh.v1alpha1.LabelSelector.MatchLabelsEntry - (*duration.Duration)(nil), // 57: google.protobuf.Duration - (*v1alpha3.ConnectionPoolSettings_TCPSettings_TcpKeepalive)(nil), // 58: istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive - (*ProxyConfig)(nil), // 59: istio.mesh.v1alpha1.ProxyConfig - (*wrappers.BoolValue)(nil), // 60: google.protobuf.BoolValue - (*v1alpha3.LocalityLoadBalancerSetting)(nil), // 61: istio.networking.v1alpha3.LocalityLoadBalancerSetting - (*v1alpha3.HTTPRetry)(nil), // 62: istio.networking.v1alpha3.HTTPRetry - (*v1alpha3.ClientTLSSettings)(nil), // 63: istio.networking.v1alpha3.ClientTLSSettings - (*wrappers.Int64Value)(nil), // 64: google.protobuf.Int64Value - (*_struct.Struct)(nil), // 65: google.protobuf.Struct + (MeshConfig_ExtensionProvider_ZipkinTracingProvider_TraceContextOption)(0), // 8: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ZipkinTracingProvider.TraceContextOption + (MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider_TraceContext)(0), // 9: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider.TraceContext + (MeshConfig_ProxyPathNormalization_NormalizationType)(0), // 10: istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization.NormalizationType + (MeshConfig_TLSConfig_TLSProtocol)(0), // 11: istio.mesh.v1alpha1.MeshConfig.TLSConfig.TLSProtocol + (*MeshConfig)(nil), // 12: istio.mesh.v1alpha1.MeshConfig + (*LabelSelector)(nil), // 13: istio.mesh.v1alpha1.LabelSelector + (*LabelSelectorRequirement)(nil), // 14: istio.mesh.v1alpha1.LabelSelectorRequirement + (*ConfigSource)(nil), // 15: istio.mesh.v1alpha1.ConfigSource + (*Certificate)(nil), // 16: istio.mesh.v1alpha1.Certificate + (*MeshConfig_OutboundTrafficPolicy)(nil), // 17: istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy + (*MeshConfig_InboundTrafficPolicy)(nil), // 18: istio.mesh.v1alpha1.MeshConfig.InboundTrafficPolicy + (*MeshConfig_CertificateData)(nil), // 19: istio.mesh.v1alpha1.MeshConfig.CertificateData + (*MeshConfig_ServiceSettings)(nil), // 20: istio.mesh.v1alpha1.MeshConfig.ServiceSettings + (*MeshConfig_ServiceScopeConfigs)(nil), // 21: istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs + (*MeshConfig_CA)(nil), // 22: istio.mesh.v1alpha1.MeshConfig.CA + (*MeshConfig_ExtensionProvider)(nil), // 23: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider + (*MeshConfig_DefaultProviders)(nil), // 24: istio.mesh.v1alpha1.MeshConfig.DefaultProviders + (*MeshConfig_ProxyPathNormalization)(nil), // 25: istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization + (*MeshConfig_TLSConfig)(nil), // 26: istio.mesh.v1alpha1.MeshConfig.TLSConfig + (*MeshConfig_ServiceSettings_Settings)(nil), // 27: istio.mesh.v1alpha1.MeshConfig.ServiceSettings.Settings + (*MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationRequestBody)(nil), // 28: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationRequestBody + (*MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationHttpProvider)(nil), // 29: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider + (*MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationGrpcProvider)(nil), // 30: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProvider + (*MeshConfig_ExtensionProvider_ZipkinTracingProvider)(nil), // 31: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ZipkinTracingProvider + (*MeshConfig_ExtensionProvider_LightstepTracingProvider)(nil), // 32: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.LightstepTracingProvider + (*MeshConfig_ExtensionProvider_DatadogTracingProvider)(nil), // 33: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.DatadogTracingProvider + (*MeshConfig_ExtensionProvider_SkyWalkingTracingProvider)(nil), // 34: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.SkyWalkingTracingProvider + (*MeshConfig_ExtensionProvider_StackdriverProvider)(nil), // 35: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider + (*MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider)(nil), // 36: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider + (*MeshConfig_ExtensionProvider_PrometheusMetricsProvider)(nil), // 37: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.PrometheusMetricsProvider + (*MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider)(nil), // 38: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider + (*MeshConfig_ExtensionProvider_EnvoyHttpGrpcV3LogProvider)(nil), // 39: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyHttpGrpcV3LogProvider + (*MeshConfig_ExtensionProvider_EnvoyTcpGrpcV3LogProvider)(nil), // 40: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyTcpGrpcV3LogProvider + (*MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider)(nil), // 41: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider + (*MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider)(nil), // 42: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider + (*MeshConfig_ExtensionProvider_SDSProvider)(nil), // 43: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.SDSProvider + (*MeshConfig_ExtensionProvider_HttpService)(nil), // 44: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService + (*MeshConfig_ExtensionProvider_HttpHeader)(nil), // 45: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpHeader + (*MeshConfig_ExtensionProvider_ResourceDetectors)(nil), // 46: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors + (*MeshConfig_ExtensionProvider_GrpcService)(nil), // 47: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.GrpcService + nil, // 48: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.IncludeAdditionalHeadersInCheckEntry + (*MeshConfig_ExtensionProvider_StackdriverProvider_Logging)(nil), // 49: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging + nil, // 50: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging.LabelsEntry + (*MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider_LogFormat)(nil), // 51: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider.LogFormat + (*MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider_LogFormat)(nil), // 52: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider.LogFormat + (*MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler)(nil), // 53: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler + (*MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler_DynatraceApi)(nil), // 54: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler.DynatraceApi + (*MeshConfig_ExtensionProvider_ResourceDetectors_EnvironmentResourceDetector)(nil), // 55: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.EnvironmentResourceDetector + (*MeshConfig_ExtensionProvider_ResourceDetectors_DynatraceResourceDetector)(nil), // 56: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.DynatraceResourceDetector + nil, // 57: istio.mesh.v1alpha1.LabelSelector.MatchLabelsEntry + (*duration.Duration)(nil), // 58: google.protobuf.Duration + (*v1alpha3.ConnectionPoolSettings_TCPSettings_TcpKeepalive)(nil), // 59: istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive + (*ProxyConfig)(nil), // 60: istio.mesh.v1alpha1.ProxyConfig + (*wrappers.BoolValue)(nil), // 61: google.protobuf.BoolValue + (*v1alpha3.LocalityLoadBalancerSetting)(nil), // 62: istio.networking.v1alpha3.LocalityLoadBalancerSetting + (*v1alpha3.HTTPRetry)(nil), // 63: istio.networking.v1alpha3.HTTPRetry + (*v1alpha3.ClientTLSSettings)(nil), // 64: istio.networking.v1alpha3.ClientTLSSettings + (*wrappers.Int64Value)(nil), // 65: google.protobuf.Int64Value + (*_struct.Struct)(nil), // 66: google.protobuf.Struct } var file_mesh_v1alpha1_config_proto_depIdxs = []int32{ - 57, // 0: istio.mesh.v1alpha1.MeshConfig.connect_timeout:type_name -> google.protobuf.Duration - 57, // 1: istio.mesh.v1alpha1.MeshConfig.protocol_detection_timeout:type_name -> google.protobuf.Duration - 58, // 2: istio.mesh.v1alpha1.MeshConfig.tcp_keepalive:type_name -> istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive + 58, // 0: istio.mesh.v1alpha1.MeshConfig.connect_timeout:type_name -> google.protobuf.Duration + 58, // 1: istio.mesh.v1alpha1.MeshConfig.protocol_detection_timeout:type_name -> google.protobuf.Duration + 59, // 2: istio.mesh.v1alpha1.MeshConfig.tcp_keepalive:type_name -> istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive 1, // 3: istio.mesh.v1alpha1.MeshConfig.ingress_controller_mode:type_name -> istio.mesh.v1alpha1.MeshConfig.IngressControllerMode 3, // 4: istio.mesh.v1alpha1.MeshConfig.access_log_encoding:type_name -> istio.mesh.v1alpha1.MeshConfig.AccessLogEncoding - 59, // 5: istio.mesh.v1alpha1.MeshConfig.default_config:type_name -> istio.mesh.v1alpha1.ProxyConfig - 16, // 6: istio.mesh.v1alpha1.MeshConfig.outbound_traffic_policy:type_name -> istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy - 17, // 7: istio.mesh.v1alpha1.MeshConfig.inbound_traffic_policy:type_name -> istio.mesh.v1alpha1.MeshConfig.InboundTrafficPolicy - 14, // 8: istio.mesh.v1alpha1.MeshConfig.config_sources:type_name -> istio.mesh.v1alpha1.ConfigSource - 60, // 9: istio.mesh.v1alpha1.MeshConfig.enable_auto_mtls:type_name -> google.protobuf.BoolValue - 18, // 10: istio.mesh.v1alpha1.MeshConfig.ca_certificates:type_name -> istio.mesh.v1alpha1.MeshConfig.CertificateData - 61, // 11: istio.mesh.v1alpha1.MeshConfig.locality_lb_setting:type_name -> istio.networking.v1alpha3.LocalityLoadBalancerSetting - 57, // 12: istio.mesh.v1alpha1.MeshConfig.dns_refresh_rate:type_name -> google.protobuf.Duration + 60, // 5: istio.mesh.v1alpha1.MeshConfig.default_config:type_name -> istio.mesh.v1alpha1.ProxyConfig + 17, // 6: istio.mesh.v1alpha1.MeshConfig.outbound_traffic_policy:type_name -> istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy + 18, // 7: istio.mesh.v1alpha1.MeshConfig.inbound_traffic_policy:type_name -> istio.mesh.v1alpha1.MeshConfig.InboundTrafficPolicy + 15, // 8: istio.mesh.v1alpha1.MeshConfig.config_sources:type_name -> istio.mesh.v1alpha1.ConfigSource + 61, // 9: istio.mesh.v1alpha1.MeshConfig.enable_auto_mtls:type_name -> google.protobuf.BoolValue + 19, // 10: istio.mesh.v1alpha1.MeshConfig.ca_certificates:type_name -> istio.mesh.v1alpha1.MeshConfig.CertificateData + 62, // 11: istio.mesh.v1alpha1.MeshConfig.locality_lb_setting:type_name -> istio.networking.v1alpha3.LocalityLoadBalancerSetting + 58, // 12: istio.mesh.v1alpha1.MeshConfig.dns_refresh_rate:type_name -> google.protobuf.Duration 4, // 13: istio.mesh.v1alpha1.MeshConfig.h2_upgrade_policy:type_name -> istio.mesh.v1alpha1.MeshConfig.H2UpgradePolicy - 15, // 14: istio.mesh.v1alpha1.MeshConfig.certificates:type_name -> istio.mesh.v1alpha1.Certificate - 19, // 15: istio.mesh.v1alpha1.MeshConfig.service_settings:type_name -> istio.mesh.v1alpha1.MeshConfig.ServiceSettings - 20, // 16: istio.mesh.v1alpha1.MeshConfig.service_scope_configs:type_name -> istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs - 60, // 17: istio.mesh.v1alpha1.MeshConfig.enable_prometheus_merge:type_name -> google.protobuf.BoolValue - 60, // 18: istio.mesh.v1alpha1.MeshConfig.verify_certificate_at_client:type_name -> google.protobuf.BoolValue - 21, // 19: istio.mesh.v1alpha1.MeshConfig.ca:type_name -> istio.mesh.v1alpha1.MeshConfig.CA - 22, // 20: istio.mesh.v1alpha1.MeshConfig.extension_providers:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider - 23, // 21: istio.mesh.v1alpha1.MeshConfig.default_providers:type_name -> istio.mesh.v1alpha1.MeshConfig.DefaultProviders - 12, // 22: istio.mesh.v1alpha1.MeshConfig.discovery_selectors:type_name -> istio.mesh.v1alpha1.LabelSelector - 24, // 23: istio.mesh.v1alpha1.MeshConfig.path_normalization:type_name -> istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization - 62, // 24: istio.mesh.v1alpha1.MeshConfig.default_http_retry_policy:type_name -> istio.networking.v1alpha3.HTTPRetry - 25, // 25: istio.mesh.v1alpha1.MeshConfig.mesh_mTLS:type_name -> istio.mesh.v1alpha1.MeshConfig.TLSConfig - 25, // 26: istio.mesh.v1alpha1.MeshConfig.tls_defaults:type_name -> istio.mesh.v1alpha1.MeshConfig.TLSConfig - 56, // 27: istio.mesh.v1alpha1.LabelSelector.matchLabels:type_name -> istio.mesh.v1alpha1.LabelSelector.MatchLabelsEntry - 13, // 28: istio.mesh.v1alpha1.LabelSelector.matchExpressions:type_name -> istio.mesh.v1alpha1.LabelSelectorRequirement - 63, // 29: istio.mesh.v1alpha1.ConfigSource.tls_settings:type_name -> istio.networking.v1alpha3.ClientTLSSettings + 16, // 14: istio.mesh.v1alpha1.MeshConfig.certificates:type_name -> istio.mesh.v1alpha1.Certificate + 20, // 15: istio.mesh.v1alpha1.MeshConfig.service_settings:type_name -> istio.mesh.v1alpha1.MeshConfig.ServiceSettings + 21, // 16: istio.mesh.v1alpha1.MeshConfig.service_scope_configs:type_name -> istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs + 61, // 17: istio.mesh.v1alpha1.MeshConfig.enable_prometheus_merge:type_name -> google.protobuf.BoolValue + 61, // 18: istio.mesh.v1alpha1.MeshConfig.verify_certificate_at_client:type_name -> google.protobuf.BoolValue + 22, // 19: istio.mesh.v1alpha1.MeshConfig.ca:type_name -> istio.mesh.v1alpha1.MeshConfig.CA + 23, // 20: istio.mesh.v1alpha1.MeshConfig.extension_providers:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider + 24, // 21: istio.mesh.v1alpha1.MeshConfig.default_providers:type_name -> istio.mesh.v1alpha1.MeshConfig.DefaultProviders + 13, // 22: istio.mesh.v1alpha1.MeshConfig.discovery_selectors:type_name -> istio.mesh.v1alpha1.LabelSelector + 25, // 23: istio.mesh.v1alpha1.MeshConfig.path_normalization:type_name -> istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization + 63, // 24: istio.mesh.v1alpha1.MeshConfig.default_http_retry_policy:type_name -> istio.networking.v1alpha3.HTTPRetry + 26, // 25: istio.mesh.v1alpha1.MeshConfig.mesh_mTLS:type_name -> istio.mesh.v1alpha1.MeshConfig.TLSConfig + 26, // 26: istio.mesh.v1alpha1.MeshConfig.tls_defaults:type_name -> istio.mesh.v1alpha1.MeshConfig.TLSConfig + 57, // 27: istio.mesh.v1alpha1.LabelSelector.matchLabels:type_name -> istio.mesh.v1alpha1.LabelSelector.MatchLabelsEntry + 14, // 28: istio.mesh.v1alpha1.LabelSelector.matchExpressions:type_name -> istio.mesh.v1alpha1.LabelSelectorRequirement + 64, // 29: istio.mesh.v1alpha1.ConfigSource.tls_settings:type_name -> istio.networking.v1alpha3.ClientTLSSettings 0, // 30: istio.mesh.v1alpha1.ConfigSource.subscribed_resources:type_name -> istio.mesh.v1alpha1.Resource 5, // 31: istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy.mode:type_name -> istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy.Mode 6, // 32: istio.mesh.v1alpha1.MeshConfig.InboundTrafficPolicy.mode:type_name -> istio.mesh.v1alpha1.MeshConfig.InboundTrafficPolicy.Mode - 26, // 33: istio.mesh.v1alpha1.MeshConfig.ServiceSettings.settings:type_name -> istio.mesh.v1alpha1.MeshConfig.ServiceSettings.Settings - 12, // 34: istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs.namespace_selector:type_name -> istio.mesh.v1alpha1.LabelSelector - 12, // 35: istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs.services_selector:type_name -> istio.mesh.v1alpha1.LabelSelector + 27, // 33: istio.mesh.v1alpha1.MeshConfig.ServiceSettings.settings:type_name -> istio.mesh.v1alpha1.MeshConfig.ServiceSettings.Settings + 13, // 34: istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs.namespace_selector:type_name -> istio.mesh.v1alpha1.LabelSelector + 13, // 35: istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs.services_selector:type_name -> istio.mesh.v1alpha1.LabelSelector 7, // 36: istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs.scope:type_name -> istio.mesh.v1alpha1.MeshConfig.ServiceScopeConfigs.Scope - 63, // 37: istio.mesh.v1alpha1.MeshConfig.CA.tls_settings:type_name -> istio.networking.v1alpha3.ClientTLSSettings - 57, // 38: istio.mesh.v1alpha1.MeshConfig.CA.request_timeout:type_name -> google.protobuf.Duration - 28, // 39: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_ext_authz_http:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider - 29, // 40: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_ext_authz_grpc:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProvider - 30, // 41: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.zipkin:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ZipkinTracingProvider - 31, // 42: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.lightstep:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.LightstepTracingProvider - 32, // 43: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.datadog:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.DatadogTracingProvider - 34, // 44: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.stackdriver:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider - 35, // 45: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.opencensus:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider - 33, // 46: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.skywalking:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.SkyWalkingTracingProvider - 41, // 47: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.opentelemetry:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider - 36, // 48: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.prometheus:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.PrometheusMetricsProvider - 37, // 49: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_file_access_log:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider - 38, // 50: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_http_als:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyHttpGrpcV3LogProvider - 39, // 51: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_tcp_als:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyTcpGrpcV3LogProvider - 40, // 52: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_otel_als:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider - 42, // 53: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.sds:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.SDSProvider - 9, // 54: istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization.normalization:type_name -> istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization.NormalizationType - 10, // 55: istio.mesh.v1alpha1.MeshConfig.TLSConfig.min_protocol_version:type_name -> istio.mesh.v1alpha1.MeshConfig.TLSConfig.TLSProtocol - 57, // 56: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.timeout:type_name -> google.protobuf.Duration - 47, // 57: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.include_additional_headers_in_check:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.IncludeAdditionalHeadersInCheckEntry - 27, // 58: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.include_request_body_in_check:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationRequestBody - 57, // 59: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProvider.timeout:type_name -> google.protobuf.Duration - 27, // 60: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProvider.include_request_body_in_check:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationRequestBody - 64, // 61: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.max_number_of_attributes:type_name -> google.protobuf.Int64Value - 64, // 62: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.max_number_of_annotations:type_name -> google.protobuf.Int64Value - 64, // 63: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.max_number_of_message_events:type_name -> google.protobuf.Int64Value - 48, // 64: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.logging:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging - 8, // 65: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider.context:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider.TraceContext - 50, // 66: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider.log_format:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider.LogFormat - 51, // 67: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider.log_format:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider.LogFormat - 43, // 68: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.http:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService - 46, // 69: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.grpc:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.GrpcService - 45, // 70: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.resource_detectors:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors - 52, // 71: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.dynatrace_sampler:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler - 57, // 72: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService.timeout:type_name -> google.protobuf.Duration - 44, // 73: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService.headers:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpHeader - 54, // 74: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.environment:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.EnvironmentResourceDetector - 55, // 75: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.dynatrace:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.DynatraceResourceDetector - 57, // 76: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.GrpcService.timeout:type_name -> google.protobuf.Duration - 44, // 77: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.GrpcService.initial_metadata:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpHeader - 49, // 78: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging.labels:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging.LabelsEntry - 65, // 79: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider.LogFormat.labels:type_name -> google.protobuf.Struct - 65, // 80: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider.LogFormat.labels:type_name -> google.protobuf.Struct - 53, // 81: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler.http_service:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler.DynatraceApi - 43, // 82: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler.DynatraceApi.http:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService - 83, // [83:83] is the sub-list for method output_type - 83, // [83:83] is the sub-list for method input_type - 83, // [83:83] is the sub-list for extension type_name - 83, // [83:83] is the sub-list for extension extendee - 0, // [0:83] is the sub-list for field type_name + 64, // 37: istio.mesh.v1alpha1.MeshConfig.CA.tls_settings:type_name -> istio.networking.v1alpha3.ClientTLSSettings + 58, // 38: istio.mesh.v1alpha1.MeshConfig.CA.request_timeout:type_name -> google.protobuf.Duration + 29, // 39: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_ext_authz_http:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider + 30, // 40: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_ext_authz_grpc:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProvider + 31, // 41: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.zipkin:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ZipkinTracingProvider + 32, // 42: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.lightstep:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.LightstepTracingProvider + 33, // 43: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.datadog:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.DatadogTracingProvider + 35, // 44: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.stackdriver:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider + 36, // 45: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.opencensus:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider + 34, // 46: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.skywalking:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.SkyWalkingTracingProvider + 42, // 47: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.opentelemetry:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider + 37, // 48: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.prometheus:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.PrometheusMetricsProvider + 38, // 49: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_file_access_log:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider + 39, // 50: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_http_als:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyHttpGrpcV3LogProvider + 40, // 51: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_tcp_als:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyTcpGrpcV3LogProvider + 41, // 52: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.envoy_otel_als:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider + 43, // 53: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.sds:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.SDSProvider + 10, // 54: istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization.normalization:type_name -> istio.mesh.v1alpha1.MeshConfig.ProxyPathNormalization.NormalizationType + 11, // 55: istio.mesh.v1alpha1.MeshConfig.TLSConfig.min_protocol_version:type_name -> istio.mesh.v1alpha1.MeshConfig.TLSConfig.TLSProtocol + 58, // 56: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.timeout:type_name -> google.protobuf.Duration + 48, // 57: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.include_additional_headers_in_check:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.IncludeAdditionalHeadersInCheckEntry + 28, // 58: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider.include_request_body_in_check:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationRequestBody + 58, // 59: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProvider.timeout:type_name -> google.protobuf.Duration + 28, // 60: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProvider.include_request_body_in_check:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationRequestBody + 8, // 61: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ZipkinTracingProvider.trace_context_option:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ZipkinTracingProvider.TraceContextOption + 65, // 62: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.max_number_of_attributes:type_name -> google.protobuf.Int64Value + 65, // 63: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.max_number_of_annotations:type_name -> google.protobuf.Int64Value + 65, // 64: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.max_number_of_message_events:type_name -> google.protobuf.Int64Value + 49, // 65: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.logging:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging + 9, // 66: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider.context:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider.TraceContext + 51, // 67: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider.log_format:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider.LogFormat + 52, // 68: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider.log_format:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider.LogFormat + 44, // 69: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.http:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService + 47, // 70: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.grpc:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.GrpcService + 46, // 71: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.resource_detectors:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors + 53, // 72: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.dynatrace_sampler:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler + 58, // 73: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService.timeout:type_name -> google.protobuf.Duration + 45, // 74: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService.headers:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpHeader + 55, // 75: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.environment:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.EnvironmentResourceDetector + 56, // 76: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.dynatrace:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.ResourceDetectors.DynatraceResourceDetector + 58, // 77: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.GrpcService.timeout:type_name -> google.protobuf.Duration + 45, // 78: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.GrpcService.initial_metadata:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpHeader + 50, // 79: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging.labels:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.StackdriverProvider.Logging.LabelsEntry + 66, // 80: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider.LogFormat.labels:type_name -> google.protobuf.Struct + 66, // 81: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider.LogFormat.labels:type_name -> google.protobuf.Struct + 54, // 82: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler.http_service:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler.DynatraceApi + 44, // 83: istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler.DynatraceApi.http:type_name -> istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.HttpService + 84, // [84:84] is the sub-list for method output_type + 84, // [84:84] is the sub-list for method input_type + 84, // [84:84] is the sub-list for extension type_name + 84, // [84:84] is the sub-list for extension extendee + 0, // [0:84] is the sub-list for field type_name } func init() { file_mesh_v1alpha1_config_proto_init() } @@ -5585,7 +5655,7 @@ func file_mesh_v1alpha1_config_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_mesh_v1alpha1_config_proto_rawDesc), len(file_mesh_v1alpha1_config_proto_rawDesc)), - NumEnums: 11, + NumEnums: 12, NumMessages: 46, NumExtensions: 0, NumServices: 0, diff --git a/mesh/v1alpha1/config.proto b/mesh/v1alpha1/config.proto index 227e50a3..8d5ecc10 100755 --- a/mesh/v1alpha1/config.proto +++ b/mesh/v1alpha1/config.proto @@ -783,6 +783,17 @@ message MeshConfig { // Defines configuration for a Zipkin tracer. message ZipkinTracingProvider { + // Available trace context options for handling different trace header formats. + enum TraceContextOption { + // Use B3 headers only (default behavior). + USE_B3 = 0; + // Enable B3 and W3C dual header support: + // - For downstream: Extract from B3 headers first, fallback to W3C traceparent if B3 is unavailable. + // - For upstream: Inject both B3 and W3C traceparent headers. + // When this option is NOT set, only B3 headers are used for both extraction and injection. + USE_B3_WITH_W3C_PROPAGATION = 1; + } + // REQUIRED. Specifies the service that the Zipkin API. // The format is `[/]`. The specification of `` is required only when it is insufficient // to unambiguously resolve a service in the service registry. The `` is a fully qualified host name of a @@ -805,6 +816,11 @@ message MeshConfig { // Optional. Specifies the endpoint of Zipkin API. // The default value is "/api/v2/spans". string path = 5; + + // Optional. Determines which trace context format to use for trace header extraction and propagation. + // This controls both downstream request header extraction and upstream request header injection. + // The default value is USE_B3 to maintain backward compatibility. + TraceContextOption trace_context_option = 6; } // Defines configuration for a Lightstep tracer. diff --git a/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html b/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html index 9f59cbb8..120fcabe 100644 --- a/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html +++ b/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html @@ -5,7 +5,7 @@ location: https://istio.io/docs/reference/config/istio.mesh.v1alpha1.html layout: protoc-gen-docs generator: protoc-gen-docs weight: 20 -number_of_entries: 83 +number_of_entries: 84 ---

Configuration affecting the service mesh as a whole.

@@ -1435,6 +1435,51 @@ If true, will result in a 64 bit trace id being used.

Specifies the endpoint of Zipkin API. The default value is “/api/v2/spans”.

+ + + + + +

Determines which trace context format to use for trace header extraction and propagation. +This controls both downstream request header extraction and upstream request header injection. +The default value is USE_B3 to maintain backward compatibility.

+ + + + + + +
TraceContextOption
+
+

Available trace context options for handling different trace header formats.

+ + + + + + + + + + + + + + + + diff --git a/releasenotes/notes/zipkin-trace-context-option.yaml b/releasenotes/notes/zipkin-trace-context-option.yaml new file mode 100644 index 00000000..7b6659d3 --- /dev/null +++ b/releasenotes/notes/zipkin-trace-context-option.yaml @@ -0,0 +1,13 @@ +apiVersion: release-notes/v2 + +kind: feature +area: telemetry +issue: [] + +releaseNotes: +- | + **Added** `trace_context_option` field to `ZipkinTracingProvider` in MeshConfig to support configuring trace context propagation format. Users can now choose between B3-only headers (default) or dual B3/W3C header support for better interoperability with W3C trace context systems. + +docs: +- https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/trace/v3/zipkin.proto#enum-config-trace-v3-zipkinconfig-tracecontextoption +- https://www.w3.org/TR/trace-context/
NameDescription
USE_B3 +

Use B3 headers only (default behavior).

+ +
USE_B3_WITH_W3C_PROPAGATION +

Enable B3 and W3C dual header support:

+
    +
  • For downstream: Extract from B3 headers first, fallback to W3C traceparent if B3 is unavailable.
  • +
  • For upstream: Inject both B3 and W3C traceparent headers. +When this option is NOT set, only B3 headers are used for both extraction and injection.
  • +
+