NGINX Ingress Controller Documentation

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-traceropentracing-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_contextopentracing_grpc_propagate_context 지시문은 모듈 설명서에 따라 http, server 또는 location 지시문에서 사용할 수 있습니다. 그러나 모듈이 작동하는 방식과 Ingress Controller가 NGINX 구성을 생성하는 방식으로 인해 location 지시문에서만 지시문을 사용할 수 있습니다.