잡 스펙의 `upstreams` 블록

잡 스펙의 upstreams 블록

upstreams 블록은 Consul 서비스 메시 프록시가 라우팅하는 업스트림 서비스를 관리하기 위한 다양한 옵션을 구성할 수 있게 해요. proxy 블록 안에서만 유효해요.

출처: 문서

본문

배치 job -> group -> service -> connect -> sidecar_service -> proxy -> **upstreams**

Consul 특유의 세부 사항은 Consul service mesh Guide를 참고하세요. 프록시를 transparent_proxy 블록으로 구성했다면 upstream을 사용할 필요가 없을 수 있다는 점에 유의하세요.

job "countdash" {
  datacenters = ["dc1"]

  group "dashboard" {
    network {
      mode = "bridge"

      port "http" {
        static = 9002
        to     = 9002
      }
    }

    service {
      name = "count-dashboard"
      port = "9002"

      connect {
        sidecar_service {
          proxy {
            upstreams {
              destination_name = "count-api"
              local_bind_port  = 8080
              datacenter = "dc2"
              local_bind_address = "127.0.0.1"
              mesh_gateway {
                mode = "local"
              }
            }
          }
        }
      }
    }

    task "dashboard" {
      driver = "docker"

      env {
        COUNTING_SERVICE_URL = "http://${NOMAD_UPSTREAM_ADDR_count_api}"
      }

      config {
        image = "hashicorpdev/counter-dashboard:v3"
      }
    }
  }
}

매개변수 (Parameters)

  • config (map: nil) - Nomad에 불투명하고 Consul에 직접 전달되는 업스트림 구성. 자세한 내용은 Consul service mesh 문서를 참고하세요. 키와 값은 런타임 변수 보간을 지원해요.

  • destination_name (string: <required>) - 업스트림 서비스 이름.

  • destination_namespace (string: <required>) - 업스트림 Consul 네임스페이스 이름.

  • destination_partition (string: "") - 업스트림 서비스를 포함하는 클러스터 관리자 파티션 이름.

  • destination_peer (string: "") - 업스트림 서비스를 포함하는 피어 클러스터 이름.

  • destination_type - (string: "service") - 프록시가 서비스 메시 인스턴스를 찾기 위해 사용하는 디스커버리 쿼리 타입.

  • local_bind_port - (int: <required>) - 프록시가 업스트림에 대한 연결을 받는 포트.

  • datacenter (string: "") - 디스커버리 쿼리를 발행할 Consul 데이터센터. 기본값은 빈 문자열이며 Consul은 이를 로컬 Consul 데이터센터로 해석해요.

  • local_bind_address - (string: "") - 프록시가 업스트림에 대한 연결을 받는 주소.

  • local_bind_socket_mode - (string: "") - 소켓의 파일 권한을 구성하는 Unix 8진수 값.

  • local_bind_socket_path - (string: "") - Unix 도메인 소켓 리스너를 바인딩할 경로.

  • mesh_gateway ([mesh_gateway]: nil) - 이 업스트림에 연결하기 위한 메시 게이트웨이 동작을 구성.

mesh_gateway 매개변수 (mesh_gateway Parameters)

  • mode (string: "") - Connect Mesh Gateways를 사용할 동작 모드. 설정하지 않으면 모드는 서비스에 대한 Consul service-defaults 구성이 결정하는 모드로 기본 설정돼요. 다음 모드로 구성할 수 있어요:
    • local - 이 모드에서 Connect 프록시는 같은 데이터센터에서 실행되는 게이트웨이에 아웃바운드 연결을 만들어요. 그 게이트웨이는 데이터가 대상 데이터센터의 게이트웨이들로 전달되도록 보장할 책임이 있어요.
    • remote - 이 모드에서 Connect 프록시는 대상 데이터센터에서 실행되는 게이트웨이에 아웃바운드 연결을 만들어요. 그 게이트웨이는 데이터를 최종 대상 서비스로 전달해요.
    • none - 이 모드에서는 게이트웨이가 사용되지 않고 Connect 프록시가 아웃바운드 연결을 대상 서비스에 직접 만들어요.

NOMAD_UPSTREAM_ADDR_<destination_name> 환경 변수를 사용해 업스트림의 host:port 주소를 보간할 수 있어요.

애플리케이션은 기본적으로 127.0.0.1과 잘 정의된 포트(예: Redis의 6379)에 연결할 것이 권장돼요. 그러면 Consul 서비스 메시를 사용할 때 애플리케이션을 Redis 업스트림의 local_bind_port = 6379로 배포하고 명시적 구성 없이 실행할 수 있어요.

예시 (Examples)

다음 예시는 대상 서비스 이름과 로컬 바인드 포트가 있는 업스트림 구성이에요.

    upstreams {
      destination_name = "count-api"
      local_bind_port = 8080
    }

더 알아보기 (Learn more)