apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
version: v2.6
tracing:
sampling: 100
type: Jaeger
当 Service Mesh Operator 部署ServiceMeshControlPlane
资源时,它还可以创建分布式跟踪的资源。服务网格使用 Jaeger 进行分布式跟踪。
|
您可以通过在ServiceMeshControlPlane
资源中指定跟踪类型和采样率来启用分布式跟踪。
all-in-one
Jaeger 参数apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
version: v2.6
tracing:
sampling: 100
type: Jaeger
在 Red Hat OpenShift Service Mesh 2.6 中,跟踪类型Jaeger
已弃用,默认情况下已禁用。
在 Red Hat OpenShift Service Mesh 2.5 及更早版本中,跟踪类型Jaeger
默认情况下已启用。要禁用Jaeger
跟踪,请将ServiceMeshControlPlane
资源的spec.tracing.type
参数设置为None
。
采样率决定了 Envoy 代理生成跟踪的频率。您可以使用采样率选项来控制向跟踪系统报告的请求百分比。您可以根据网格中的流量和要收集的跟踪数据量来配置此设置。您可以将sampling
配置为表示 0.01% 增量的比例整数。例如,将值设置为10
会采样 0.1% 的跟踪,将值设置为500
会采样 5% 的跟踪,而设置为10000
则会采样 100% 的跟踪。
SMCP 采样配置选项控制 Envoy 采样率。您可以在 Jaeger 自定义资源中配置 Jaeger 跟踪采样率。 |
您可以在ServiceMeshControlPlane
资源的addons
部分配置 Jaeger。但是,您可以在 SMCP 中配置的内容有一些限制。
当 SMCP 将配置信息传递给 Red Hat OpenShift 分布式跟踪平台 (Jaeger) 运算符时,它将触发三种部署策略之一:allInOne
、production
或streaming
。
分布式追踪平台 (Jaeger) 预定义了多种部署策略。您需要在 Jaeger 自定义资源 (CR) 文件中指定部署策略。当您创建分布式追踪平台 (Jaeger) 实例时,Red Hat OpenShift 分布式追踪平台 (Jaeger) 算子将使用此配置文件创建部署所需的资源。
Red Hat OpenShift 分布式追踪平台 (Jaeger) 算子目前支持以下部署策略:
allInOne (默认) - 此策略适用于开发、测试和演示目的,不适用于生产环境。主要的后台组件,Agent、Collector 和 Query 服务,都打包在一个可执行文件中,默认配置为使用内存存储。您可以在 SMCP 中配置此部署策略。
内存存储是非持久性的,这意味着如果 Jaeger 实例关闭、重启或被替换,您的追踪数据将会丢失。并且内存存储无法扩展,因为每个 Pod 都有自己的内存。对于持久性存储,您必须使用 |
production - production 策略适用于生产环境,在生产环境中,追踪数据的长期存储非常重要,并且需要更可扩展和高可用的架构。因此,每个后端组件都是单独部署的。Agent 可以作为 sidecar 注入到被监控的应用程序中。Query 和 Collector 服务配置了支持的存储类型,目前是 Elasticsearch。可以根据性能和弹性要求配置多个这些组件的实例。您可以在 SMCP 中配置此部署策略,但为了完全自定义,您必须在 Jaeger CR 中指定您的配置,并将其链接到 SMCP。
streaming - streaming 策略旨在通过提供位于 Collector 和 Elasticsearch 后端存储之间的流式处理功能来增强 production 策略。这在高负载情况下可以减轻后端存储的压力,并使其他追踪后处理功能能够直接从流式平台 (AMQ Streams/ Kafka) 获取实时跨度数据。您不能在 SMCP 中配置此部署策略;您必须配置 Jaeger CR 并将其链接到 SMCP。
streaming 策略需要额外的 Red Hat AMQ Streams 订阅。 |
如果您没有指定 Jaeger 配置选项,ServiceMeshControlPlane
资源将默认使用allInOne
Jaeger 部署策略。使用默认的allInOne
部署策略时,请将spec.addons.jaeger.install.storage.type
设置为Memory
。您可以接受默认值或在install
下指定其他配置选项。
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
version: v2.6
tracing:
sampling: 10000
type: Jaeger
addons:
jaeger:
name: jaeger
install:
storage:
type: Memory
要使用production
部署策略的默认设置,请将spec.addons.jaeger.install.storage.type
设置为Elasticsearch
,并在install
下指定其他配置选项。请注意,SMCP 只支持配置 Elasticsearch 资源和镜像名称。
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
version: v2.6
tracing:
sampling: 10000
type: Jaeger
addons:
jaeger:
name: jaeger #name of Jaeger CR
install:
storage:
type: Elasticsearch
ingress:
enabled: true
runtime:
components:
tracing.jaeger.elasticsearch: # only supports resources and image name
container:
resources: {}
SMCP 只支持最小的 Elasticsearch 参数。要完全自定义您的生产环境并访问所有 Elasticsearch 配置参数,请使用 Jaeger 自定义资源 (CR) 来配置 Jaeger。
创建并配置您的 Jaeger 实例,并将spec.addons.jaeger.name
设置为 Jaeger 实例的名称,在此示例中为:MyJaegerInstance
。
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
version: v2.6
tracing:
sampling: 1000
type: Jaeger
addons:
jaeger:
name: MyJaegerInstance #name of Jaeger CR
install:
storage:
type: Elasticsearch
ingress:
enabled: true
要使用streaming
部署策略,您需要先创建并配置您的 Jaeger 实例,然后将spec.addons.jaeger.name
设置为 Jaeger 实例的名称,在此示例中为:MyJaegerInstance
。
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
version: v2.6
tracing:
sampling: 1000
type: Jaeger
addons:
jaeger:
name: MyJaegerInstance #name of Jaeger CR
您可以通过在 Jaeger 自定义资源 (CR) 中配置 Jaeger 而不是在ServiceMeshControlPlane
(SMCP) 资源中配置 Jaeger 来完全自定义您的 Jaeger 部署。此配置有时被称为“外部 Jaeger”,因为配置是在 SMCP 之外指定的。
您必须在相同的命名空间中部署 SMCP 和 Jaeger CR。例如, |
您可以配置和部署一个独立的 Jaeger 实例,然后将 Jaeger 资源的name
指定为 SMCP 资源中spec.addons.jaeger.name
的值。如果存在与name
值匹配的 Jaeger CR,服务网格控制平面将使用现有的安装。这种方法可以让您完全自定义您的 Jaeger 配置。
Red Hat OpenShift 分布式追踪平台实例名称必须唯一。如果您想拥有多个 Red Hat OpenShift 分布式追踪平台 (Jaeger) 实例并正在使用 sidecar 注入的 Agent,那么 Red Hat OpenShift 分布式追踪平台 (Jaeger) 实例应该具有唯一名称,并且注入注释应该明确指定应将追踪数据报告到的 Red Hat OpenShift 分布式追踪平台 (Jaeger) 实例名称。
如果您有多租户实现并且租户通过命名空间分离,请将 Red Hat OpenShift 分布式追踪平台 (Jaeger) 实例部署到每个租户命名空间。
有关配置持久性存储的信息,请参阅 理解持久性存储以及您选择的存储选项的相应配置主题。
分布式追踪平台 (Jaeger) 使用 OAuth 进行默认身份验证。但是 Red Hat OpenShift Service Mesh 使用名为htpasswd
的密钥来促进依赖服务(如 Grafana、Kiali 和分布式追踪平台 (Jaeger))之间的通信。当您在ServiceMeshControlPlane
中配置分布式追踪平台 (Jaeger) 时,服务网格会自动配置安全设置以使用htpasswd
。
如果您在 Jaeger 自定义资源中指定分布式追踪平台 (Jaeger) 配置,则必须手动配置htpasswd
设置并确保htpasswd
密钥已挂载到您的 Jaeger 实例中,以便 Kiali 可以与其通信。
您可以在 Web 控制台中修改 Jaeger 资源以配置分布式追踪平台 (Jaeger) 安全性,以便与服务网格一起使用。
您可以作为具有cluster-admin
角色的用户访问集群。如果您使用 Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin
角色的帐户。
必须安装 Red Hat OpenShift Service Mesh Operator。
已将ServiceMeshControlPlane
部署到集群。
您可以访问 OpenShift Container Platform Web 控制台。
以具有cluster-admin
角色的用户身份登录 OpenShift Container Platform Web 控制台。
导航到Operators → Installed Operators。
单击Project菜单,然后从列表中选择已部署ServiceMeshControlPlane
资源的项目,例如istio-system
。
单击Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator。
在Operator Details页面上,单击Jaeger选项卡。
单击您的 Jaeger 实例的名称。
在 Jaeger 详情页面上,单击YAML选项卡以修改您的配置。
编辑Jaeger
自定义资源文件以添加htpasswd
配置,如下例所示。
spec.ingress.openshift.htpasswdFile
spec.volumes
spec.volumeMounts
htpasswd
配置的 Jaeger 资源示例apiVersion: jaegertracing.io/v1
kind: Jaeger
spec:
ingress:
enabled: true
openshift:
htpasswdFile: /etc/proxy/htpasswd/auth
sar: '{"namespace": "istio-system", "resource": "pods", "verb": "get"}'
options: {}
resources: {}
security: oauth-proxy
volumes:
- name: secret-htpasswd
secret:
secretName: htpasswd
- configMap:
defaultMode: 420
items:
- key: ca-bundle.crt
path: tls-ca-bundle.pem
name: trusted-ca-bundle
optional: true
name: trusted-ca-bundle
volumeMounts:
- mountPath: /etc/proxy/htpasswd
name: secret-htpasswd
- mountPath: /etc/pki/ca-trust/extracted/pem/
name: trusted-ca-bundle
readOnly: true
# ...
单击保存。
您可以通过运行 OpenShift CLI (oc
) 来修改 Jaeger 资源,以配置用于服务网格的分布式追踪平台 (Jaeger) 安全性。
您可以作为具有cluster-admin
角色的用户访问集群。如果您使用 Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin
角色的帐户。
必须安装 Red Hat OpenShift Service Mesh Operator。
已将ServiceMeshControlPlane
部署到集群。
您可以访问与您的 OpenShift Container Platform 版本匹配的 OpenShift CLI (oc
)。
以具有cluster-admin
角色的用户身份登录 OpenShift CLI (oc
),运行以下命令。如果您使用 Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin
角色的帐户。
$ oc login https://<HOSTNAME>:6443
通过输入以下命令,更改到您安装控制平面的项目,例如istio-system
。
$ oc project istio-system
运行以下命令以编辑 Jaeger 自定义资源文件。
$ oc edit -n openshift-distributed-tracing -f jaeger.yaml
编辑Jaeger
自定义资源文件以添加htpasswd
配置,如下例所示。
spec.ingress.openshift.htpasswdFile
spec.volumes
spec.volumeMounts
htpasswd
配置的 Jaeger 资源示例apiVersion: jaegertracing.io/v1
kind: Jaeger
spec:
ingress:
enabled: true
openshift:
htpasswdFile: /etc/proxy/htpasswd/auth
sar: '{"namespace": "istio-system", "resource": "pods", "verb": "get"}'
options: {}
resources: {}
security: oauth-proxy
volumes:
- name: secret-htpasswd
secret:
secretName: htpasswd
- configMap:
defaultMode: 420
items:
- key: ca-bundle.crt
path: tls-ca-bundle.pem
name: trusted-ca-bundle
optional: true
name: trusted-ca-bundle
volumeMounts:
- mountPath: /etc/proxy/htpasswd
name: secret-htpasswd
- mountPath: /etc/pki/ca-trust/extracted/pem/
name: trusted-ca-bundle
readOnly: true
运行以下命令以监视 pod 部署的进度。
$ oc get pods -n openshift-distributed-tracing
Jaeger 自定义资源 (CR) 定义了创建分布式追踪平台 (Jaeger) 资源时要使用的架构和设置。您可以修改这些参数以根据您的业务需求自定义您的分布式追踪平台 (Jaeger) 实现。
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: name
spec:
strategy: <deployment_strategy>
allInOne:
options: {}
resources: {}
agent:
options: {}
resources: {}
collector:
options: {}
resources: {}
sampling:
options: {}
storage:
type:
options: {}
query:
options: {}
resources: {}
ingester:
options: {}
resources: {}
options: {}
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
|
创建对象时使用的 API 版本。 |
|
|
|
定义要创建的 Kubernetes 对象的类型。 |
|
|
|
有助于唯一标识对象的数据,包括 |
OpenShift Container Platform 自动生成 |
|
|
对象的名称。 |
您的分布式追踪平台 (Jaeger) 实例的名称。 |
|
|
要创建的对象的规范。 |
包含您的分布式追踪平台 (Jaeger) 实例的所有配置参数。当需要所有 Jaeger 组件的通用定义时,它在 |
N/A |
|
Jaeger 部署策略 |
|
|
|
因为 |
||
|
定义 Agent 的配置选项。 |
||
|
定义 Jaeger Collector 的配置选项。 |
||
|
定义追踪采样策略的配置选项。 |
||
|
定义存储的配置选项。所有与存储相关的选项都必须放在 |
||
|
定义 Query 服务的配置选项。 |
||
|
定义 Ingester 服务的配置选项。 |
以下 YAML 示例是使用默认设置创建 Red Hat OpenShift 分布式追踪平台 (Jaeger) 部署所需的最低限度。
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: jaeger-all-in-one-inmemory
Jaeger Collector 是负责接收追踪器捕获的跨度并在使用production
策略时将其写入持久性 Elasticsearch 存储,或在使用streaming
策略时写入 AMQ Streams 的组件。
Collector 是无状态的,因此可以并行运行许多 Jaeger Collector 实例。Collector 几乎不需要配置,除了 Elasticsearch 集群的位置。
参数 | 描述 | 值 |
---|---|---|
collector: replicas: |
指定要创建的 Collector 副本数。 |
整数,例如 |
参数 | 描述 | 值 |
---|---|---|
spec: collector: options: {} |
定义 Jaeger Collector 的配置选项。 |
|
options: collector: num-workers: |
从队列中拉取的工作人员数量。 |
整数,例如 |
options: collector: queue-size: |
Collector 队列的大小。 |
整数,例如 |
options: kafka: producer: topic: jaeger-spans |
|
生产者的标签。 |
options: kafka: producer: brokers: my-cluster-kafka-brokers.kafka:9092 |
标识 Collector 用于生成消息的 Kafka 配置。如果没有指定代理,并且您安装了 AMQ Streams 1.4.0+,则 Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator 将自行预配 Kafka。 |
|
options: log-level: |
Collector 的日志级别。 |
可能的值: |
options: otlp: enabled: true grpc: host-port: 4317 max-connection-age: 0s max-connection-age-grace: 0s max-message-size: 4194304 tls: enabled: false cert: /path/to/cert.crt cipher-suites: "TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256" client-ca: /path/to/cert.ca reload-interval: 0s min-version: 1.2 max-version: 1.3 |
要接受 OTLP/gRPC,请明确启用 |
|
options: otlp: enabled: true http: cors: allowed-headers: [<header-name>[, <header-name>]*] allowed-origins: * host-port: 4318 max-connection-age: 0s max-connection-age-grace: 0s max-message-size: 4194304 read-timeout: 0s read-header-timeout: 2s idle-timeout: 0s tls: enabled: false cert: /path/to/cert.crt cipher-suites: "TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256" client-ca: /path/to/cert.ca reload-interval: 0s min-version: 1.2 max-version: 1.3 |
要接受 OTLP/HTTP,请明确启用 |
Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator 可用于定义将提供给已配置为使用远程采样器的追踪器的采样策略。
虽然会生成所有追踪,但只对少量追踪进行采样。对追踪进行采样会标记该追踪以进行进一步处理和存储。
如果追踪是由 Envoy 代理启动的,则这与之无关,因为采样决策是在那里做出的。Jaeger 采样决策仅在追踪是由使用客户端的应用程序启动时才相关。 |
当服务接收到不包含追踪上下文的请求时,客户端会启动一个新的追踪,为其分配一个随机的追踪 ID,并根据当前安装的采样策略做出采样决策。该采样决策会传播到追踪中的所有后续请求,以便其他服务不再重复进行采样决策。
分布式追踪平台 (Jaeger) 库支持以下采样器
**概率采样** - 采样器会以随机概率进行采样决策,采样概率等于sampling.param
属性的值。例如,使用sampling.param=0.1
大约会采样十分之一的追踪。
**速率限制** - 采样器使用漏桶速率限制器来确保以一定的恒定速率采样追踪。例如,使用sampling.param=2.0
以每秒2个追踪的速率采样请求。
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
spec: sampling: options: {} default_strategy: service_strategy: |
定义追踪采样策略的配置选项。 |
如果未提供配置,收集器将返回默认的概率采样策略,所有服务的概率为 0.001 (0.1%)。 |
|
default_strategy: type: service_strategy: type: |
要使用的采样策略。请参见上文描述。 |
有效值为 |
|
default_strategy: param: service_strategy: param: |
所选采样策略的参数。 |
十进制和整数值 (0, .1, 1, 10) |
1 |
此示例定义了一个默认的概率采样策略,追踪实例被采样的概率为 50%。
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: with-sampling
spec:
sampling:
options:
default_strategy:
type: probabilistic
param: 0.5
service_strategies:
- service: alpha
type: probabilistic
param: 0.8
operation_strategies:
- operation: op1
type: probabilistic
param: 0.2
- operation: op2
type: probabilistic
param: 0.4
- service: beta
type: ratelimiting
param: 5
如果没有用户提供的配置,分布式追踪平台 (Jaeger) 将使用以下设置
spec:
sampling:
options:
default_strategy:
type: probabilistic
param: 1
您可以在spec.storage
下配置收集器、摄取器和查询服务的存储。可以根据性能和弹性要求配置多个这些组件的实例。
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
spec: storage: type: |
要用于部署的存储类型。 |
|
|
storage: secretname: |
密钥的名称,例如 |
N/A |
|
storage: options: {} |
定义存储的配置选项。 |
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
storage: esIndexCleaner: enabled: |
使用 Elasticsearch 存储时,默认情况下会创建一个作业来清理索引中的旧追踪。此参数启用或禁用索引清理器作业。 |
|
|
storage: esIndexCleaner: numberOfDays: |
删除索引前要等待的天数。 |
整数值 |
|
storage: esIndexCleaner: schedule: |
定义清理 Elasticsearch 索引的频率。 |
Cron 表达式 |
"55 23 * * *" |
部署 Jaeger 自定义资源时,Red Hat OpenShift 分布式追踪平台 (Jaeger) 运算符将使用 OpenShift Elasticsearch 运算符根据自定义资源文件storage
部分中提供的配置创建 Elasticsearch 集群。如果设置以下配置,Red Hat OpenShift 分布式追踪平台 (Jaeger) 运算符将配置 Elasticsearch
spec.storage:type
设置为elasticsearch
spec.storage.elasticsearch.doNotProvision
设置为false
spec.storage.options.es.server-urls
未定义,即,没有连接到未由 OpenShift Elasticsearch 运算符配置的 Elasticsearch 实例。
配置 Elasticsearch 时,Red Hat OpenShift 分布式追踪平台 (Jaeger) 运算符会将 Elasticsearch 自定义资源的name
设置为 Jaeger 自定义资源中spec.storage.elasticsearch.name
的值。如果未指定spec.storage.elasticsearch.name
的值,则运算符将使用elasticsearch
。
每个命名空间只能有一个具有自配置 Elasticsearch 实例的分布式追踪平台 (Jaeger)。Elasticsearch 集群旨在专用于单个分布式追踪平台 (Jaeger) 实例。
每个命名空间只能有一个 Elasticsearch。
如果已将 Elasticsearch 安装为 OpenShift Logging 的一部分,则 Red Hat OpenShift 分布式追踪平台 (Jaeger) 运算符可以使用已安装的 OpenShift Elasticsearch 运算符来配置存储。 |
以下配置参数适用于自配置的 Elasticsearch 实例,即由 Red Hat OpenShift 分布式追踪平台 (Jaeger) 运算符使用 OpenShift Elasticsearch 运算符创建的实例。您可以在配置文件的spec:storage:elasticsearch
下指定自配置 Elasticsearch 的配置选项。
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
elasticsearch: properties: doNotProvision: |
用于指定是否应由 Red Hat OpenShift 分布式追踪平台 (Jaeger) 运算符配置 Elasticsearch 实例。 |
|
|
elasticsearch: properties: name: |
Elasticsearch 实例的名称。Red Hat OpenShift 分布式追踪平台 (Jaeger) 运算符使用此参数中指定的 Elasticsearch 实例来连接到 Elasticsearch。 |
字符串 |
|
elasticsearch: nodeCount: |
Elasticsearch 节点的数量。为了高可用性,至少使用 3 个节点。不要使用 2 个节点,因为可能会出现“脑裂”问题。 |
整数值。例如,概念验证 = 1,最小部署 = 3 |
3 |
elasticsearch: resources: requests: cpu: |
基于您环境的配置,请求的中央处理单元数量。 |
以核心或毫核为单位指定,例如,200m、0.5、1。例如,概念验证 = 500m,最小部署 = 1 |
1 |
elasticsearch: resources: requests: memory: |
基于您环境的配置,请求的可用内存。 |
以字节为单位指定,例如,200Ki、50Mi、5Gi。例如,概念验证 = 1Gi,最小部署 = 16Gi* |
16Gi |
elasticsearch: resources: limits: cpu: |
基于您环境的配置,中央处理单元数量的限制。 |
以核心或毫核为单位指定,例如,200m、0.5、1。例如,概念验证 = 500m,最小部署 = 1 |
|
elasticsearch: resources: limits: memory: |
基于您环境的配置,可用内存限制。 |
以字节为单位指定,例如,200Ki、50Mi、5Gi。例如,概念验证 = 1Gi,最小部署 = 16Gi* |
|
elasticsearch: redundancyPolicy: |
数据复制策略定义了 Elasticsearch 分片如何在集群中的数据节点之间复制。如果未指定,Red Hat OpenShift 分布式追踪平台 (Jaeger) 运算符将自动确定最合适的复制方式(基于节点数量)。 |
|
|
elasticsearch: useCertManagement: |
用于指定分布式追踪平台 (Jaeger) 是否应使用 OpenShift Elasticsearch 运算符的证书管理功能。此功能已添加到 OpenShift Container Platform 4.7 中的 {logging-title} 5.2,并且是新 Jaeger 部署的首选设置。 |
|
|
每个 Elasticsearch 节点可以使用较低的内存设置进行操作,但这**不推荐**用于生产部署。对于生产环境,默认情况下,您必须为每个 Pod 分配至少 16 Gi 的内存,但最好尽可能多地分配内存,每个 Pod 最多可分配 64 Gi。
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-prod
spec:
strategy: production
storage:
type: elasticsearch
elasticsearch:
nodeCount: 3
resources:
requests:
cpu: 1
memory: 16Gi
limits:
memory: 16Gi
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-prod
spec:
strategy: production
storage:
type: elasticsearch
elasticsearch:
nodeCount: 1
storage: (1)
storageClassName: gp2
size: 5Gi
resources:
requests:
cpu: 200m
memory: 4Gi
limits:
memory: 4Gi
redundancyPolicy: ZeroRedundancy
1 | 持久化存储配置。在本例中,使用大小为 5Gi 的 AWS gp2 卷。如果未指定值,分布式追踪平台 (Jaeger) 将使用 emptyDir 。OpenShift Elasticsearch Operator 会配置 PersistentVolumeClaim 和 PersistentVolume ,这些不会随着分布式追踪平台 (Jaeger) 实例的删除而被删除。如果您创建具有相同名称和命名空间的分布式追踪平台 (Jaeger) 实例,则可以挂载相同的卷。 |
您可以使用现有的 Elasticsearch 集群作为分布式追踪平台的存储。现有的 Elasticsearch 集群,也称为外部 Elasticsearch 实例,是指未由 Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator 或 OpenShift Elasticsearch Operator 安装的实例。
当您部署 Jaeger 自定义资源时,如果设置了以下配置,Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator 将不会配置 Elasticsearch
spec.storage.elasticsearch.doNotProvision
设置为 true
spec.storage.options.es.server-urls
有值
spec.storage.elasticsearch.name
有值,或者 Elasticsearch 实例名称为 elasticsearch
。
Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator 使用 spec.storage.elasticsearch.name
中指定的 Elasticsearch 实例连接到 Elasticsearch。
您不能与分布式追踪平台 (Jaeger) 共享或重用 OpenShift Container Platform 日志 Elasticsearch 实例。Elasticsearch 集群旨在专用于单个分布式追踪平台 (Jaeger) 实例。
以下配置参数适用于已存在的 Elasticsearch 实例,也称为外部 Elasticsearch 实例。在这种情况下,您在自定义资源文件中 spec:storage:options:es
下指定 Elasticsearch 的配置选项。
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
es: server-urls: |
Elasticsearch 实例的 URL。 |
Elasticsearch 服务器的完全限定域名。 |
|
es: max-doc-count: |
从 Elasticsearch 查询返回的最大文档数量。这同样适用于聚合。如果您同时设置了 |
10000 |
|
es: max-num-spans: |
[已弃用 - 将在未来版本中删除,请改用 |
10000 |
|
es: max-span-age: |
Elasticsearch 中跨度的最大回溯时间。 |
72h0m0s |
|
es: sniffer: |
Elasticsearch 的嗅探配置。客户端使用嗅探过程自动查找所有节点。默认情况下禁用。 |
|
|
es: sniffer-tls-enabled: |
嗅探 Elasticsearch 集群时启用 TLS 的选项。客户端使用嗅探过程自动查找所有节点。默认情况下禁用 |
|
|
es: timeout: |
查询使用的超时时间。设置为零时没有超时。 |
0s |
|
es: username: |
Elasticsearch 需要的用户名。基本身份验证也会加载 CA(如果已指定)。另请参见 |
||
es: password: |
Elasticsearch 需要的密码。另请参见 |
||
es: version: |
主要的 Elasticsearch 版本。如果未指定,则将从 Elasticsearch 自动检测该值。 |
0 |
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
es: num-replicas: |
Elasticsearch 中每个索引的副本数量。 |
1 |
|
es: num-shards: |
Elasticsearch 中每个索引的分片数量。 |
5 |
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
es: create-index-templates: |
设置为 |
|
|
es: index-prefix: |
分布式追踪平台 (Jaeger) 索引的可选前缀。例如,将其设置为“production”将创建名为“production-tracing-*”的索引。 |
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
es: bulk: actions: |
在批量处理器决定将更新提交到磁盘之前,可以添加到队列中的请求数。 |
1000 |
|
es: bulk: flush-interval: |
一个 |
200ms |
|
es: bulk: size: |
批量请求可以占用的字节数,在批量处理器决定将更新提交到磁盘之前。 |
5000000 |
|
es: bulk: workers: |
能够接收和提交批量请求到 Elasticsearch 的工作进程数量。 |
1 |
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
es: tls: ca: |
用于验证远程服务器的 TLS 证书颁发机构 (CA) 文件的路径。 |
默认情况下将使用系统信任库。 |
|
es: tls: cert: |
TLS 证书文件的路径,用于向远程服务器标识此进程。 |
||
es: tls: enabled: |
与远程服务器通信时启用传输层安全性 (TLS)。默认情况下禁用。 |
|
|
es: tls: key: |
TLS 私钥文件的路径,用于向远程服务器标识此进程。 |
||
es: tls: server-name: |
覆盖远程服务器证书中预期的 TLS 服务器名称。 |
||
es: token-file: |
包含承载令牌的文件的路径。如果指定,此标志还会加载证书颁发机构 (CA) 文件。 |
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
es-archive: bulk: actions: |
在批量处理器决定将更新提交到磁盘之前,可以添加到队列中的请求数。 |
0 |
|
es-archive: bulk: flush-interval: |
一个 |
0s |
|
es-archive: bulk: size: |
批量请求可以占用的字节数,在批量处理器决定将更新提交到磁盘之前。 |
0 |
|
es-archive: bulk: workers: |
能够接收和提交批量请求到 Elasticsearch 的工作进程数量。 |
0 |
|
es-archive: create-index-templates: |
设置为 |
|
|
es-archive: enabled: |
启用额外存储。 |
|
|
es-archive: index-prefix: |
分布式追踪平台 (Jaeger) 索引的可选前缀。例如,将其设置为“production”将创建名为“production-tracing-*”的索引。 |
||
es-archive: max-doc-count: |
从 Elasticsearch 查询返回的最大文档数量。这同样适用于聚合。 |
0 |
|
es-archive: max-num-spans: |
[已弃用 - 将在未来版本中删除,请改用 |
0 |
|
es-archive: max-span-age: |
Elasticsearch 中跨度的最大回溯时间。 |
0s |
|
es-archive: num-replicas: |
Elasticsearch 中每个索引的副本数量。 |
0 |
|
es-archive: num-shards: |
Elasticsearch 中每个索引的分片数量。 |
0 |
|
es-archive: password: |
Elasticsearch 需要的密码。另请参见 |
||
es-archive: server-urls: |
Elasticsearch 服务器的逗号分隔列表。必须指定为完全限定的 URL,例如 |
||
es-archive: sniffer: |
Elasticsearch 的嗅探配置。客户端使用嗅探过程自动查找所有节点。默认情况下禁用。 |
|
|
es-archive: sniffer-tls-enabled: |
嗅探 Elasticsearch 集群时启用 TLS 的选项。客户端使用嗅探过程自动查找所有节点。默认情况下禁用。 |
|
|
es-archive: timeout: |
查询使用的超时时间。设置为零时没有超时。 |
0s |
|
es-archive: tls: ca: |
用于验证远程服务器的 TLS 证书颁发机构 (CA) 文件的路径。 |
默认情况下将使用系统信任库。 |
|
es-archive: tls: cert: |
TLS 证书文件的路径,用于向远程服务器标识此进程。 |
||
es-archive: tls: enabled: |
与远程服务器通信时启用传输层安全性 (TLS)。默认情况下禁用。 |
|
|
es-archive: tls: key: |
TLS 私钥文件的路径,用于向远程服务器标识此进程。 |
||
es-archive: tls: server-name: |
覆盖远程服务器证书中预期的 TLS 服务器名称。 |
||
es-archive: token-file: |
包含承载令牌的文件的路径。如果指定,此标志还会加载证书颁发机构 (CA) 文件。 |
||
es-archive: username: |
Elasticsearch 需要的用户名。基本身份验证也会加载 CA(如果已指定)。另请参见 |
||
es-archive: version: |
主要的 Elasticsearch 版本。如果未指定,则将从 Elasticsearch 自动检测该值。 |
0 |
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-prod
spec:
strategy: production
storage:
type: elasticsearch
options:
es:
server-urls: https://quickstart-es-http.default.svc:9200
index-prefix: my-prefix
tls:
ca: /es/certificates/ca.crt
secretName: tracing-secret
volumeMounts:
- name: certificates
mountPath: /es/certificates/
readOnly: true
volumes:
- name: certificates
secret:
secretName: quickstart-es-http-certs-public
以下示例显示了一个使用外部 Elasticsearch 集群的 Jaeger CR,该集群具有从卷挂载的 TLS CA 证书以及存储在密钥中的用户名/密码。
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-prod
spec:
strategy: production
storage:
type: elasticsearch
options:
es:
server-urls: https://quickstart-es-http.default.svc:9200 (1)
index-prefix: my-prefix
tls: (2)
ca: /es/certificates/ca.crt
secretName: tracing-secret (3)
volumeMounts: (4)
- name: certificates
mountPath: /es/certificates/
readOnly: true
volumes:
- name: certificates
secret:
secretName: quickstart-es-http-certs-public
1 | 在默认命名空间中运行的 Elasticsearch 服务的 URL。 |
2 | TLS 配置。在本例中仅包含 CA 证书,但在使用双向 TLS 时,它还可以包含 es.tls.key 和 es.tls.cert。 |
3 | 定义环境变量 ES_PASSWORD 和 ES_USERNAME 的密钥。由 kubectl create secret generic tracing-secret --from-literal=ES_PASSWORD=changeme --from-literal=ES_USERNAME=elastic 创建 |
4 | 挂载到所有存储组件的卷挂载和卷。 |
您可以使用 OpenShift Elasticsearch Operator 创建和管理证书。使用 OpenShift Elasticsearch Operator 管理证书还可以让您使用单个 Elasticsearch 集群与多个 Jaeger 收集器。
使用 Elasticsearch 管理证书仅为技术预览功能。技术预览功能不受 Red Hat 生产服务等级协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您抢先体验即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参见 技术预览功能支持范围。 |
从 2.4 版本开始,Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator 通过在 Elasticsearch 自定义资源中使用以下注解来委托证书创建
logging.openshift.io/elasticsearch-cert-management: "true"
logging.openshift.io/elasticsearch-cert.jaeger-<shared-es-node-name>: "user.jaeger"
logging.openshift.io/elasticsearch-cert.curator-<shared-es-node-name>: "system.logging.curator"
其中 <shared-es-node-name>
是 Elasticsearch 节点的名称。例如,如果您创建了一个名为 custom-es
的 Elasticsearch 节点,您的自定义资源可能如下例所示。
apiVersion: logging.openshift.io/v1
kind: Elasticsearch
metadata:
annotations:
logging.openshift.io/elasticsearch-cert-management: "true"
logging.openshift.io/elasticsearch-cert.jaeger-custom-es: "user.jaeger"
logging.openshift.io/elasticsearch-cert.curator-custom-es: "system.logging.curator"
name: custom-es
spec:
managementState: Managed
nodeSpec:
resources:
limits:
memory: 16Gi
requests:
cpu: 1
memory: 16Gi
nodes:
- nodeCount: 3
proxyResources: {}
resources: {}
roles:
- master
- client
- data
storage: {}
redundancyPolicy: ZeroRedundancy
已安装 Red Hat OpenShift Service Mesh Operator。
已在您的集群中安装 {logging-title},并使用默认配置。
Elasticsearch 节点和 Jaeger 实例必须部署在相同的命名空间中。例如,tracing-system
。
您可以通过在 Jaeger 自定义资源中将 spec.storage.elasticsearch.useCertManagement
设置为 true
来启用证书管理。
useCertManagement
的示例apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: jaeger-prod
spec:
strategy: production
storage:
type: elasticsearch
elasticsearch:
name: custom-es
doNotProvision: true
useCertManagement: true
在配置 Elasticsearch 时,Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator 将 Elasticsearch 自定义资源的 name
设置为 Jaeger 自定义资源中 spec.storage.elasticsearch.name
的值。
证书由 OpenShift Elasticsearch Operator 配置,Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator 注入证书。
有关使用 OpenShift Container Platform 配置 Elasticsearch 的更多信息,请参见 xref :../../observability/logging/log_storage/logging-config-es-store.adoc#logging-config-es-store[配置 Elasticsearch 日志存储] 或 配置和部署分布式追踪。
Query 是一种从存储中检索跟踪并托管用户界面以显示它们的 service。
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
spec: query: replicas: |
指定要创建的 Query 副本数量。 |
整数,例如 |
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
spec: query: options: {} |
定义 Query 服务的配置选项。 |
||
options: log-level: |
Query 的日志级别。 |
可能的值: |
|
options: query: base-path: |
所有 jaeger-query HTTP 路由的基本路径可以设置为非根值,例如, |
/<path> |
apiVersion: jaegertracing.io/v1
kind: "Jaeger"
metadata:
name: "my-jaeger"
spec:
strategy: allInOne
allInOne:
options:
log-level: debug
query:
base-path: /jaeger
Ingester 是一种从 Kafka 主题读取并写入 Elasticsearch 存储后端的 service。如果您使用的是 allInOne
或 production
部署策略,则无需配置 Ingester service。
参数 | 描述 | 值 |
---|---|---|
spec: ingester: options: {} |
定义 Ingester 服务的配置选项。 |
|
options: deadlockInterval: |
指定 Ingester 在终止之前必须等待消息的间隔(以秒或分钟为单位)。默认情况下禁用死锁间隔(设置为 |
分钟和秒,例如 |
options: kafka: consumer: topic: |
|
消费者的标签。例如, |
options: kafka: consumer: brokers: |
标识 Ingester 用于使用消息的 Kafka 配置。 |
代理的标签,例如, |
options: log-level: |
Ingester 的日志级别。 |
可能的值: |
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-streaming
spec:
strategy: streaming
collector:
options:
kafka:
producer:
topic: jaeger-spans
brokers: my-cluster-kafka-brokers.kafka:9092
ingester:
options:
kafka:
consumer:
topic: jaeger-spans
brokers: my-cluster-kafka-brokers.kafka:9092
ingester:
deadlockInterval: 5
storage:
type: elasticsearch
options:
es:
server-urls: http://elasticsearch:9200