사이드카 프록시 서비스 등록 참조

사이드카 프록시 서비스 등록 참조 (Sidecar Proxy Service Registration)

sidecar_service 블록은 대부분의 일반 서비스 정의 필드를 포함할 수 있는 서비스 정의예요. 이 문서에서 사이드카 프록시의 기본값, 예제와 제한 사항을 설명할게요.

출처: 문서

본문

sidecar_service 블록은 대부분의 일반 서비스 정의 필드를 포함할 수 있는 서비스 정의입니다. 사이드카 프록시에 지원되지 않는 서비스 정의 필드에 대한 정보는 제한 사항을 참조하세요.

Consul은 사이드카 프록시 서비스 정의를 루트 수준 서비스 정의로 취급합니다. 중첩 정의의 모든 필드는 선택 사항이며, 사이드카 프록시 설정 부담을 줄이는 의견(opinionated) 설정을 기본값으로 합니다.

사이드카 서비스 기본값 (Sidecar service defaults)

다음 필드는 사이드카 서비스 등록 시 기본으로 설정됩니다. 명시된 예외를 제외하고 프록시 등록을 사용자 지정하기 위해 connect.sidecar_service 정의에서 어떤 필드든 명시적으로 재정의할 수 있습니다. "parent" 서비스는 사이드카 프록시를 포함하는 서비스 정의를 말합니다.

  • id - ID는 기본적으로 <parent-service-id>-sidecar-proxy입니다. 이 값은 등록의 수명 주기를 관리하는 데 사용되므로 재정의할 수 없습니다.
  • name - 기본적으로 <parent-service-name>-sidecar-proxy입니다.
  • tags - 기본적으로 parent 서비스의 태그입니다.
  • meta - 기본적으로 parent 서비스의 서비스 메타데이터입니다.
  • port - 기본적으로 sidecar_min_port와 sidecar_max_port가 지정하는 구성 가능한 범위에서 자동 할당됩니다.
  • kind - 기본적으로 connect-proxy입니다. 이 값은 재정의할 수 없습니다.
  • check, checks - 기본적으로 프록시의 로컬 주소와 포트에 TCP 체크를, parent 서비스에 서비스 별칭 체크를 추가합니다. check 또는 checks 필드가 설정되면 제공된 체크만 등록됩니다.
  • proxy.destination_service_name - 기본적으로 parent 서비스 이름입니다.
  • proxy.destination_service_id - 기본적으로 parent 서비스 ID입니다.
  • proxy.local_service_address - 기본적으로 127.0.0.1입니다.
  • proxy.local_service_port - 기본적으로 parent 서비스 포트입니다.
  • proxy.local_service_ports - parent가 멀티포트 서비스일 때 기본적으로 parent 서비스의 명명된 포트입니다. proxy.local_service_port는 프록시가 단일 로컬 서비스 포트가 필요할 때 사용되는 기본 포트로 유지됩니다.

재정의된 구성이 있는 예제 (Example with overwritten configurations)

다음 예제에서 sidecar_service 매크로는 프록시의 기준 구성을 설정하지만, 프록시 업스트림과 내장 프록시 구성 필드는 사용자 지정 값을 포함합니다:

{
  "name": "web",
  "port": 8080,
  "connect": {
    "sidecar_service": {
      "proxy": {
        "local_service_ports": [
          {
            "name": "http",
            "port": 8080,
            "default": true
          },
          {
            "name": "metrics",
            "port": 9102
          }
        ],
        "upstreams": [
          {
            "destination_name": "db",
            "destination_port": "metrics",
            "local_bind_port": 9191
          }
        ],
        "config": {
          "handshake_timeout_ms": 1000
        }
      }
    }
  }
}

멀티포트 구성이 있는 예제 (Example with multiport configuration)

다음 예제는 api라는 멀티포트 업스트림 서비스로 web 서비스를 구성합니다. 멀티포트 서비스에 대한 자세한 내용은 멀티포트 문서를 참조하세요.

{
  "name": "web",
  "port": 8080,
  "connect": {
    "sidecar_service": {
      "proxy": {
        "upstreams": [
          {
            "destination_name": "api",
            "destination_port": "http",
            "local_bind_port": 9191
          },
          {
            "destination_name": "api",
            "destination_port": "grpc",
            "local_bind_port": 9192
          }
        ],
        "config": {
          "handshake_timeout_ms": 1000
        }
      }
    }
  }
}

제한 사항 (Limitations)

다음 필드는 connect.sidecar_service 블록에서 지원되지 않습니다:

  • id - 사이드카 서비스는 할당된 ID를 가지며 이 값을 재정의하면 오류입니다. 이 ID는 parent 서비스가 제거될 때 에이전트가 나중에 사이드카 서비스를 올바르게 등록 해제할 수 있도록 필요합니다.
  • kind - Kind는 기본적으로 connect-proxy이며 이 동작을 해제할 방법이 없습니다.
  • connect.sidecar_service - 서비스 정의는 재귀적으로 중첩될 수 없습니다.
  • connect.native - kind는 connect-proxy로 고정되며 서비스 메시 네이티브이기도 한 connect-proxy를 등록하는 것은 오류입니다.

더 알아보기 (Learn more)