ingress-nginxにはOpenTracingを入れれるオプションがあったので使ってみる
環境
- kind
ingressのデプロイ
$ kubectl apply -f https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/master/deploy/single/all-in-one-dbless.yaml
Jaegerのデプロイ
Jaegerとは分散トレーシングシステムのオープンソース実装です。分散トレーシングは、マイクロサービスアーキテクチャや分散システム内でリクエストのフローとパフォーマンスをトラッキングし、問題の特定や最適化を支援するためのツールです。Jaegerは、トレースデータを収集、可視化、分析するための機能を提供します。JaegerはOperatorがあるのでそちらを今回はデプロイして使います。
$ helm repo add jaegertracing https://jaegertracing.github.io/helm-charts $ helm repo update
以下のようにmanifestを書いてapplyします。
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger
podとserviceが以下のように作成されます。
$ k get pod,svc NAME READY STATUS RESTARTS AGE pod/jaeger-7fd6d9549f-fmmkp 1/1 Running 0 12s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/jaeger-agent ClusterIP None <none> 5775/UDP,5778/TCP,6831/UDP,6832/UDP 12s service/jaeger-collector ClusterIP 10.96.64.114 <none> 9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP 12s service/jaeger-collector-headless ClusterIP None <none> 9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP 12s service/jaeger-query ClusterIP 10.96.230.77 <none> 16686/TCP,16685/TCP 12s
ingress-nginxの設定を書く
上記を参考にConfigMapを書くと以下のようになります。あとはingressリソースを作ってそこへリクエストすることでトレースデータが送信されます。span名の設定とかの方法も書いてあります。
kind: ConfigMap apiVersion: v1 metadata: name: ingress-nginx-controller namespace: ingress-nginx data: enable-opentracing: "true" jaeger-collector-host: "simplest-agent.default.svc.cluster.local"