jaeger-kubernetes 는 현재 deprecated 되었고 jaeger-operator 를 권고하고 있다. 이 글은 jaeger-kubernetes 기준으로 진행하면서 직접 사용하기까지의 기록을 담은 글이다.

이 글 대신 jaeger-operator 을 사용하는 내용을 보고 싶으면 여기로 가면 된다.

1. YML 설정 구성 다운로드

https://github.com/diazjf/meow-micro/blob/main/jaeger/jaeger-all-in-one.yaml (https://github.com/jaegertracing/jaeger-kubernetes 에서 제공하는 apiVersion 을 일부 수정) 을 적용한다.

$ kubectl apply -f jaeger-all-in-one.yaml
deployment.apps/jaeger created
service/jaeger-query created
service/jaeger-collector created
service/jaeger-agent created
service/zipkin created

2. Pod 생성 확인

$ kubectl get pods
NAME                          READY   STATUS              RESTARTS   AGE
jaeger-f49f98765-l92v8        0/1     ContainerCreating   0          5s
svclb-jaeger-query-7q8lm      1/1     Running             0          5s

3. nginx-ingress controller 에 tracing 설정 적용을 위한 configmap 수정

# configmap 작성
$ vi jaeger-agency-configmap.yml
# jaeger-agency-configmap.yml
apiVersion: v1
kind: ConfigMap
data:
  enable-opentracing: "true"
  jaeger-collector-host: jaeger-agent.default.svc.cluster.local
metadata:
  name: ingress-nginx-controller
  namespace: ingress-nginx
# configmap 적용
$ kubectl apply -f jaeger-agency-configmap.yml
configmap/ingress-nginx-controller configured

4. 활성화 확인

# ingress-nginx-controller pod 이름 조회
$ kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
svclb-ingress-nginx-controller-xswmx        2/2     Running     0          121m
ingress-nginx-admission-create-rm4fk        0/1     Completed   0          121m
ingress-nginx-admission-patch-j72np         0/1     Completed   1          121m
ingress-nginx-controller-5b6f946f99-wj5vx   1/1     Running     0          121m
 
# tracing 관련 설정이 로드되었는지 확인
$ kubectl exec -it ingress-nginx-controller-5b6f946f99-wj5vx -n ingress-nginx -- bash -c "cat nginx.conf | grep ngx_http_opentracing_module.so"
load_module /etc/nginx/modules/ngx_http_opentracing_module.so;
$ kubectl exec -it ingress-nginx-controller-5b6f946f99-wj5vx -n ingress-nginx -- bash -c "cat nginx.conf | grep jaeger"
    opentracing_load_tracer /usr/local/lib/libjaegertracing_plugin.so /etc/nginx/opentracing.json;
$ kubectl exec -it ingress-nginx-controller-5b6f946f99-wj5vx -n ingress-nginx -- bash -c "cat /etc/nginx/opentracing.json"
{
  "service_name": "nginx",
  "propagation_format": "jaeger",
  "sampler": {
    "type": "const",
    "param": 1,
    "samplingServerURL": "http://127.0.0.1:5778/sampling"
  },
  "reporter": {
    "endpoint": "",
    "localAgentHostPort": "jaeger-agent.default.svc.cluster.local:6831"
  },
  "headers": {
    "TraceContextHeaderName": "",
    "jaegerDebugHeader": "",
    "jaegerBaggageHeader": "",
    "traceBaggageHeaderPrefix": ""
  }
}

5. Jaeger UI 확인

http://localhost:8081 로 접속하여 페이지 확인

페이지가 제대로 나오는지 확인
테스트로 nginx demo 접속 (혹은 다른 애플리케이션)
trace 생성 확인