
OpenTracing
이 문서에서는 Ingress Controller와 함께 OpenTracing을 사용하는 방법을 설명합니다.
Ingress Controller는 타사 모듈 opentracing-contrib/nginx-opentracing으로 OpenTracing을 지원합니다.
Note: 아래 예시는 기본적으로 비활성화된 Snippets Annotations을 사용합니다. Snippets을 사용하려면 enable-snippets
Command-Line Argument 설정합니다.
목차
1. 전제 조건
2. 글로벌로 OpenTracing 활성화
3. Ingress 리소스당 OpenTracing 활성화/비활성화
4. OpenTracing 사용자 정의
1. 전제 조건
1. OpenTracing이 포함된 Ingress Controller Image를 사용합니다.
- 기술 사양 문서에 나열된 OpenTracing이 포함된 Image를 찾을 수 있습니다.
- 또는 NGINX용
debian-image
(또는alpine-image
) 또는 NGINX Plus용debian-image-plus
(또는alpine-image-plus
)를 사용하여 자체 Image를 Build할 수 있습니다. Jaeger, Zipkin 및 Datadog Tracer 프로그램은 기본적으로 설치됩니다.
2. OpenTracing 모듈을 Load합니다. 다음 ConfigMap Key를 사용하여 선택한 Tracer 프로그램에 대한 구성으로 모듈을 Load해야 합니다.
opentracing-tracer
: 업체 Tracer 프로그램 Binary 플러그인의 경로를 설정합니다. 이것은 위 단계 ii의 COPY 행에서 사용한 경로입니다.opentracing-tracer-config
: Tracer 프로그램 구성을 JSON 형식으로 설정합니다.
다음은 이러한 Key를 사용하여 Jaeger Tracer 프로그램으로 모듈을 Load하는 방법에 대한 예입니다.
opentracing-tracer: "/usr/local/lib/libjaegertracing_plugin.so"
opentracing-tracer-config: |
{
"service_name": "nginx-ingress",
"propagation_format": "w3c",
"sampler": {
"type": "const",
"param": 1
},
"reporter": {
"localAgentHostPort": "jaeger-agent.default.svc.cluster.local:6831"
}
}
2. 글로벌로 OpenTracing 활성화
OpenTracing을 글로벌로 활성화하려면(모든 Ingress, VirtualServer 및 VirtualServerRoute 리소스에 대해) opentracing
ConfigMap Key를 True
로 설정합니다.
opentracing: True
3. Ingress 리소스당 OpenTracing 활성화/비활성화
Annotations을 사용하여 특정 Ingress 리소스에 대한 OpenTracing을 활성화 또는 비활성화할 수 있습니다. 전제 조건 섹션에서 언급한 대로 opentracing-tracer
및 opentracing-tracer-config
를 모두 구성해야 합니다.
다음 두 가지 경우를 고려하십시오.
1. OpenTracing이 전체적으로 비활성화됩니다.
특정 Ingress 리소스에 대해 OpenTracing을 활성화하려면 서버 Snippet Annotation을 사용합니다.
nginx.org/server-snippets: |
opentracing on;
특정 경로에 대해 OpenTracing을 활성화하려면 (1) Mergeable Ingress 리소스를 사용해야 하고 (2) location Snippet Annotation을 사용하여 특정 Minion Ingress 리소스의 경로에 대해 OpenTracing을 활성화해야 합니다.
nginx.org/location-snippets: |
opentracing on;
2. OpenTracing은 글로벌로 활성화됩니다.
특정 Ingress 리소스에 대해 OpenTracing을 비활성화하려면 서버 Snippet Annotation을 사용합니다.
nginx.org/server-snippets: |
opentracing off;
특정 경로에 대해 OpenTracing을 비활성화하려면 (1) Mergeable Ingress 리소스를 사용해야 하고 (2) location Snippet Annotation을 사용하여 특정 Minion Ingress 리소스의 경로에 대해 OpenTracing을 비활성화해야 합니다.
nginx.org/location-snippets: |
opentracing off;
4. OpenTracing 사용자 정의
지원되는 OpenTracing 모듈 지시문을 통해 OpenTracing을 사용자 정의할 수 있습니다. Snippet ConfigMap Key 또는 Annotation을 사용하여 이러한 지시문을 생성된 NGINX 구성의 http, server 또는 location 지시문에 삽입합니다.
예를 들어 Upstream 요청에 대한 활성 span 지시문을 전파하려면 opentracing_propagate_context
지시문을 설정해야 하며 위치 Snippet Annotation을 사용하여 Ingress 리소스에 추가할 수 있습니다.
nginx.org/location-snippets: |
opentracing_propagate_context;
opentracing_propagate_context
및 opentracing_grpc_propagate_context
지시문은 모듈 설명서에 따라 http, server 또는 location 지시문에서 사용할 수 있습니다. 그러나 모듈이 작동하는 방식과 Ingress Controller가 NGINX 구성을 생성하는 방식으로 인해 location 지시문에서만 지시문을 사용할 수 있습니다.