全局网格选项
影响整个服务网格的配置。
MeshConfig
MeshConfig 定义了 Istio 服务网格的网格范围设置。
标签选择器
标签选择器要求是一个包含值、键和运算符的选择器,这些运算符将键和值关联起来。从 Kubernetes 复制以避免对 Kubernetes 库的昂贵依赖。
标签选择器要求
标签选择器要求是一个包含值、键和运算符的选择器,这些运算符将键和值关联起来。从 Kubernetes 复制以避免对 Kubernetes 库的昂贵依赖。
配置源
ConfigSource 描述了网格内配置存储的信息。单个控制平面实例可以与一个或多个数据源交互。
MeshConfig.OutboundTrafficPolicy
OutboundTrafficPolicy
设置 sidecar 处理应用程序未知出站流量的默认行为。
MeshConfig.InboundTrafficPolicy
MeshConfig.CertificateData
MeshConfig.CA
MeshConfig.ExtensionProvider
MeshConfig.DefaultProviders
保存对将在其他 Istio 配置资源中默认使用的提供程序的名称引用,如果未指定提供程序。
这些名称必须与 extension_providers
中定义的提供程序匹配,该提供程序是受支持的跟踪提供程序之一。
MeshConfig.ProxyPathNormalization
MeshConfig.TLSConfig
MeshConfig.ServiceSettings.Settings
所选服务的设置。
MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationRequestBody
MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProvider
MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProvider
MeshConfig.ExtensionProvider.ZipkinTracingProvider
定义 Zipkin 追踪器的配置。
MeshConfig.ExtensionProvider.LightstepTracingProvider
定义 Lightstep 追踪器的配置。注意:Lightstep 已迁移到基于 OpenTelemetry 的集成。使用此选项时,Istio 1.15+ 将生成与 OpenTelemetry 兼容的配置。
MeshConfig.ExtensionProvider.DatadogTracingProvider
定义 Datadog 追踪器的配置。
MeshConfig.ExtensionProvider.SkyWalkingTracingProvider
定义 SkyWalking 追踪器的配置。
MeshConfig.ExtensionProvider.StackdriverProvider
定义 Stackdriver 的配置。
**警告:** Stackdriver 追踪在后台使用 OpenCensus 配置,因此无法与任何 OpenCensus 提供程序配置一起使用。这是由于 Envoy 中 OpenCensus 驱动程序实现的限制。
MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider
定义将写入 OpenCensus 后端的 OpenCensus 追踪器的配置。
**警告:** 应谨慎使用 OpenCensusAgentTracingProviders。由于 Envoy 中 OpenCensus 驱动程序实现的限制,在代理生命周期中**无法**更改 OpenCensus 提供程序的配置。这意味着对于任何给定的时间,对于代理或代理组,只能使用一个 OpenCensus 提供程序配置,并且对提供程序配置的任何更改**必须**伴随着所有将使用该配置的代理的重启。
注意:Stackdriver 追踪在后台使用 OpenCensus 配置,因此无法与 OpenCensus 提供程序配置一起使用。
MeshConfig.ExtensionProvider.PrometheusMetricsProvider
MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider
定义用于将 Envoy 基于访问日志写入本地文件(和/或标准流)的配置。
MeshConfig.ExtensionProvider.EnvoyHttpGrpcV3LogProvider
定义用于 Envoy 的配置,访问日志服务 集成 HTTP 流量。
MeshConfig.ExtensionProvider.EnvoyTcpGrpcV3LogProvider
定义用于 Envoy 的配置,访问日志服务 集成 TCP 流量。
MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider
定义用于 Envoy 的配置,OpenTelemetry (gRPC) 访问日志
MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider
定义 OpenTelemetry 追踪后端的配置。需要 Istio 1.16.1 或更高版本。
MeshConfig.ExtensionProvider.HttpService
定义可由扩展提供程序使用的 HTTP 服务的配置。通过 HTTP 进行通信。
MeshConfig.ExtensionProvider.HttpHeader
MeshConfig.ExtensionProvider.ResourceDetectors
MeshConfig.ExtensionProvider.StackdriverProvider.Logging
MeshConfig.ExtensionProvider.EnvoyFileAccessLogProvider.LogFormat
MeshConfig.ExtensionProvider.EnvoyOpenTelemetryLogProvider.LogFormat
MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler
MeshConfig.ExtensionProvider.OpenTelemetryTracingProvider.DynatraceSampler.DynatraceApi
MeshConfig.ExtensionProvider.ResourceDetectors.EnvironmentResourceDetector
OpenTelemetry 环境资源检测器。资源检测器从环境变量 OTEL_RESOURCE_ATTRIBUTES
读取属性并将其添加到 OpenTelemetry 资源。
请参阅:资源规范
MeshConfig.ExtensionProvider.ResourceDetectors.DynatraceResourceDetector
Dynatrace 资源检测器。资源检测器从 Dynatrace 增强文件读取并将主机/进程相关属性添加到 OpenTelemetry 资源。
跟踪
Tracing 定义了 Envoy 实例执行的跟踪的配置。
拓扑
拓扑结构描述了代理相对于中间可信代理和客户端的相对位置配置。这些设置控制网关代理如何从传入流量中检索客户端属性,并将其传播到集群中的上游服务。
私钥提供程序
PrivateKeyProvider 定义网关和 sidecar 的私钥配置。这可以在网格范围内或每个工作负载的基础上进行配置。
代理配置
ProxyConfig 定义各个 Envoy 实例的变量。这可以在每个工作负载的基础上以及通过网格范围的默认值进行配置。要设置网格范围的默认值,请配置 meshConfig
的 defaultConfig
部分。例如
meshConfig:
defaultConfig:
discoveryAddress: istiod:15012
这也可以通过配置 pod 上的 proxy.istio.io/config
注解在每个工作负载的基础上进行配置。例如
annotations:
proxy.istio.io/config: |
discoveryAddress: istiod:15012
如果两者都已配置,则这两个配置将按字段语义合并;注解中设置的字段将完全替换来自网格配置默认值的字段。这与 protobuf 提供的深度合并不同。例如,"tracing": { "sampling": 5 }
将完全覆盖配置跟踪提供程序的设置,例如 "tracing": { "zipkin": { "address": "..." } }
。
注意:ProxyConfig 中的字段不会动态配置;更改需要重新启动工作负载才能生效。
远程服务
Tracing.Zipkin
Zipkin 定义了 Zipkin 跟踪器的配置。
Tracing.Datadog
Datadog 定义了 Datadog 追踪器的配置。
Tracing.Stackdriver
Stackdriver 定义了 Stackdriver 追踪器的配置。有关详细信息,请参阅 Envoy 的 OpenCensus 追踪配置 和 OpenCensus 追踪配置。
Tracing.OpenCensusAgent
OpenCensusAgent 定义了 OpenCensus 追踪器的配置,该追踪器写入 OpenCensus agent 后端。有关详细信息,请参阅 Envoy 的 OpenCensus 追踪配置 和 OpenCensus 追踪配置。
Topology.ProxyProtocolConfiguration
PROXY 协议配置。
PrivateKeyProvider.CryptoMb
CryptoMb 私钥提供程序配置
PrivateKeyProvider.QAT
QAT(QuickAssist 技术)私钥提供程序配置
ProxyConfig.ProxyStatsMatcher
用于统计信息创建的代理统计信息名称匹配器。请注意,这除了 Istio 默认生成的最小 Envoy 统计信息之外。
ProxyConfig.ProxyHeaders
ProxyConfig.ProxyHeaders.Server
ProxyConfig.ProxyHeaders.RequestId
ProxyConfig.ProxyHeaders.AttemptCount
ProxyConfig.ProxyHeaders.EnvoyDebugHeaders
ProxyConfig.ProxyHeaders.MetadataExchangeHeaders
网络
网络提供有关可路由 L3 网络中端点的信息。单个可路由 L3 网络可以拥有一个或多个服务注册表。请注意,网络与端点的本地性无关。端点本地性将从服务注册表中获取。
网格网络
MeshNetworks(配置映射)提供有关网格内网络集以及如何路由到每个网络中的端点的信息。例如
MeshNetworks(文件/配置映射)
networks:
network1:
endpoints:
- fromRegistry: registry1 #must match kubeconfig name in Kubernetes secret
- fromCidr: 192.168.100.0/22 #a VM network for example
gateways:
- registryServiceName: istio-ingressgateway.istio-system.svc.cluster.local
port: 15443
locality: us-east-1a
- address: 192.168.100.1
port: 15443
locality: us-east-1a
Network.NetworkEndpoints
NetworkEndpoints 描述了如何推断与端点关联的网络。将根据以下规则将端点分配给网络
隐式:如果注册表明确提供了有关端点所属网络的信息。在某些情况下,可以通过将
ISTIO_META_NETWORK
环境变量添加到 sidecar 来指示与端点关联的网络。显式
a. 通过将注册表名称与网格配置中的“fromRegistry”之一进行匹配。“from_registry”只能分配给单个网络。
b. 通过将 IP 与网格配置网络中的一个 CIDR 范围进行匹配。CIDR 范围不得重叠,并且必须分配给单个网络。
如果两者都存在,则 (2) 将覆盖 (1)。
Network.IstioNetworkGateway
与该网络关联的网关。来自远程网络的流量将到达指定的网关:端口。所有传入流量都必须使用 mTLS。
MeshConfig.OutboundTrafficPolicy.Mode
名称 | 描述 |
---|---|
REGISTRY_ONLY | 在 注意:Istio 不提供出站流量安全策略。此选项不会充当任何一种或任何形式的出站防火墙。相反,此选项主要存在是为了为用户提供一种通过显式失败来检测缺少的 |
ALLOW_ANY | 在 |
MeshConfig.InboundTrafficPolicy.Mode
名称 | 描述 |
---|---|
PASSTHROUGH | 入站流量将通过到 Pod IP 上侦听的目标。这与未启用 Istio 的行为匹配,允许代理透明。 |
LOCALHOST | 入站流量将发送到 localhost 上侦听的目标。 |
MeshConfig.ExtensionProvider.OpenCensusAgentTracingProvider.TraceContext
TraceContext 选择用于分布式跟踪的上下文传播标头。
名称 | 描述 |
---|---|
W3C_TRACE_CONTEXT | 使用 W3C Trace Context 传播,使用 |
GRPC_BIN | 使用 gRPC 二进制上下文传播,使用 |
CLOUD_TRACE_CONTEXT | 使用 Cloud Trace 上下文传播,使用 |
B3 | 使用多标头 B3 上下文传播,使用 |
MeshConfig.ProxyPathNormalization.NormalizationType
名称 | 描述 |
---|---|
DEFAULT | 应用默认规范化。目前,这是 BASE。 |
NONE | 不进行规范化,路径按原样使用。 |
BASE | 根据 RFC 3986 进行规范化。对于 Envoy 代理,这是 |
MERGE_SLASHES | 除了 |
DECODE_AND_MERGE_SLASHES | 除了 |
MeshConfig.TLSConfig.TLSProtocol
TLS 协议版本。
名称 | 描述 |
---|---|
TLS_AUTO | 自动选择最佳 TLS 版本。 |
TLSV1_2 | TLS 版本 1.2 |
TLSV1_3 | TLS 版本 1.3 |
MeshConfig.IngressControllerMode
名称 | 描述 |
---|---|
UNSPECIFIED | 未指定的 Istio 入口控制器。 |
OFF | 禁用 Istio 入口控制器。 |
DEFAULT | Istio 入口控制器将对不包含任何注释或其注释与前面描述的 ingress_class 参数中指定的值匹配的入口资源进行操作。如果 Istio 入口控制器将成为整个 Kubernetes 集群的默认入口控制器,请使用此模式。 |
STRICT
| Istio 入口控制器仅会作用于其注释与前面描述的 ingress_class 参数中指定的值匹配的 Ingress 资源。如果 Istio 入口控制器将作为辅助入口控制器(例如,除了云提供的入口控制器之外),请使用此模式。 |
MeshConfig.AccessLogEncoding
名称 | 描述 |
---|---|
文本 | 代理访问日志的文本编码 |
JSON | 代理访问日志的 JSON 编码 |
MeshConfig.H2UpgradePolicy
将 http1.1 连接升级到 http2 的默认策略。
名称 | 描述 |
---|---|
DO_NOT_UPGRADE | 不将连接升级到 http2。 |
UPGRADE | 将连接升级到 http2。 |
资源
资源描述配置的来源
名称 | 描述 |
---|---|
SERVICE_REGISTRY | 设置为仅接收平台生成的 ServiceEntry。这些自动生成的 ServiceEntry 是由特定平台(例如 k8)生成的 Service 和 Endpoint 的组合。 |
Tracing.OpenCensusAgent.TraceContext
TraceContext 选择用于分布式跟踪的上下文传播标头。
名称 | 描述 |
---|---|
W3C_TRACE_CONTEXT | 使用 W3C Trace Context 传播,使用 |
GRPC_BIN | 使用 gRPC 二进制上下文传播,使用 |
CLOUD_TRACE_CONTEXT | 使用 Cloud Trace 上下文传播,使用 |
B3 | 使用多标头 B3 上下文传播,使用 |
ProxyConfig.ProxyHeaders.MetadataExchangeMode
名称 | 描述 |
---|---|
UNDEFINED | 元数据交换头的现有 Istio 行为保持不变。 |
IN_MESH | 仅为被视为网内服务的服务附加 Istio 元数据交换头。如果流量使用 Istio 双向 TLS 保护,则该流量被视为网内流量。这意味着 `MESH_EXTERNAL` 服务、未匹配的直通流量以及对未启用 Istio 的工作负载的请求将被视为网外流量。 |
ProxyConfig.TracingServiceName
允许为 Envoy 的 `service_cluster` 值指定各种 Istio 支持的命名方案。`service_cluster` 值主要由 Envoy 用于为跟踪跨度提供服务名称。
名称 | 描述 |
---|---|
APP_LABEL_AND_NAMESPACE | 默认方案。使用 `app` 标签和工作负载命名空间构建集群名称。如果不存在 `app` 标签,则使用 `istio-proxy`。 |
CANONICAL_NAME_ONLY | 使用工作负载的规范名称(*不包括命名空间*)。 |
CANONICAL_NAME_AND_NAMESPACE | 使用工作负载的规范名称和命名空间。 |
ProxyConfig.InboundInterceptionMode
用于将入站流量重定向到 Envoy 的模式。此设置对出站流量没有影响:对于出站连接,始终使用 iptables `REDIRECT`。
名称 | 描述 |
---|---|
REDIRECT |
|
TPROXY |
|
NONE |
|
身份验证策略
AuthenticationPolicy 定义代理连接到控制平面时如何进行身份验证。它可以针对两个不同的范围设置,即网格范围或使用 ProxyConfig 注释在每个 Pod 基础上设置。网格策略不能为 INHERIT。
名称 | 描述 |
---|---|
NONE | 不加密代理到控制平面的流量。 |
MUTUAL_TLS | 代理到控制平面的流量被封装到双向 TLS 连接中。 |
INHERIT | 使用父范围定义的策略。不应用于网格策略。 |
转发客户端证书详细信息
ForwardClientCertDetails 控制网关代理如何处理 x-forwarded-client-cert (XFCC) 标头。有关详细信息,请参阅 Envoy XFCC 标头处理。
名称 | 描述 |
---|---|
UNDEFINED | 字段未设置 |
SANITIZE | 不将 XFCC 标头发送到下一跳。这是默认值。 |
FORWARD_ONLY | 当客户端连接为 mTLS(双向 TLS)时,转发请求中的 XFCC 标头。 |
APPEND_FORWARD | 当客户端连接为 mTLS 时,将客户端证书信息附加到请求的 XFCC 标头并转发。 |
SANITIZE_SET | 当客户端连接为 mTLS 时,使用客户端证书信息重置 XFCC 标头并将其发送到下一跳。 |
ALWAYS_FORWARD_ONLY | 始终转发请求中的 XFCC 标头,无论客户端连接是否为 mTLS。 |