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