2.10.5.2. 连接至现有的 Jaeger 实例
要让 SMCP 连接到现有的 Jaeger 实例,您必须满足以下条件:
-
Jaeger 实例与 control plane 部署到同一个命名空间中,例如,部署到
istio-system命名空间中。 - 要启用服务间的安全通信,您应该启用 oauth-proxy,以保护与 Jaeger 实例的通信,并确保 secret 挂载到 Jaeger 实例,以便 Kiali 与其通信。
-
要使用自定义或已存在的 Jaeger 实例,请将
spec.istio.tracing.enabled设置为 "false" 来禁用 Jaeger 实例的部署。 -
通过将
spec.istio.global.tracer.zipkin.address设置为 jaeger-collector 服务的主机名和端口,为 Mixer 提供正确的 jaeger-collector 端点。该服务的主机名通常为<jaeger-instance-name>-collector.<namespace>.svc.cluster.local。 -
通过将
spec.istio.kiali.jaegerInClusterURL设置为您的 jaeger-query 服务的主机名(端口通常不需要,它会使用默认的 443 端口),向 Kiali 提供正确的 jaeger-query 端点来收集 trace。该服务的主机名通常为<jaeger-instance-name>-query.<namespace>.svc.cluster.local。 向 Kiali 提供 Jaeger 实例的仪表板 URL,以便通过 Kiali 控制台启用 Jaeger 访问。您可以从 Jaeger Operator 创建的 OpenShift 路由中检索 URL。如果您的 Jaeger 资源称为
external-jaeger,且位于istio-system项目中,您可以使用以下命令检索路由:$ oc get route -n istio-system external-jaeger输出示例
NAME HOST/PORT PATH SERVICES [...] external-jaeger external-jaeger-istio-system.apps.test external-jaeger-query [...]HOST/PORT下的值是 Jaeger 仪表板的外部访问 URL。
Jaeger 资源示例
apiVersion: jaegertracing.io/v1
kind: "Jaeger"
metadata:
name: "external-jaeger"
# Deploy to the Control Plane Namespace
namespace: istio-system
spec:
# Set Up Authentication
ingress:
enabled: true
security: oauth-proxy
openshift:
# This limits user access to the Jaeger instance to users who have access
# to the control plane namespace. Make sure to set the correct namespace here
sar: '{"namespace": "istio-system", "resource": "pods", "verb": "get"}'
htpasswdFile: /etc/proxy/htpasswd/auth
volumeMounts:
- name: secret-htpasswd
mountPath: /etc/proxy/htpasswd
volumes:
- name: secret-htpasswd
secret:
secretName: htpasswd
以下 ServiceMeshControlPlane 示例假定您使用 Jaeger Operator 和示例 Jaeger 资源部署了 Jaeger。
使用外部 Jaeger 的 ServiceMeshControlPlane 示例
apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
metadata:
name: external-jaeger
namespace: istio-system
spec:
version: v1.1
istio:
tracing:
# Disable Jaeger deployment by service mesh operator
enabled: false
global:
tracer:
zipkin:
# Set Endpoint for Trace Collection
address: external-jaeger-collector.istio-system.svc.cluster.local:9411
kiali:
# Set Jaeger dashboard URL
dashboard:
jaegerURL: https://external-jaeger-istio-system.apps.test
# Set Endpoint for Trace Querying
jaegerInClusterURL: external-jaeger-query.istio-system.svc.cluster.local