잡 스펙의 `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 구성이 결정하는 모드로 기본 설정돼요. 다음 모드로 구성할 수 있어요:
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
}