地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

ingress-nginxでOpenTracingを試す

kubernetes.github.io

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があるのでそちらを今回はデプロイして使います。

github.com

$ 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の設定を書く

kubernetes.github.io

上記を参考に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"