잡 스펙의 `sidecar_task` 블록
잡 스펙의 sidecar_task 블록
sidecar_task 블록은 Consul 서비스 메시 통합을 위해 Nomad가 관리하는 프록시 사이드카 또는 Connect 게이트웨이의 다양한 옵션을 구성할 수 있게 해요. 예를 들어 리소스 요구 사항, kill 타임아웃 등이 아래에 정의되어 있어요. connect 블록 안에서만 유효해요.
출처: 문서
본문
| 배치 | job -> group -> service -> connect -> **sidecar_task** |
|---|
job "countdash" {
datacenters = ["dc1"]
group "api" {
network {
mode = "bridge"
}
service {
name = "count-api"
port = "9001"
connect {
sidecar_service {}
sidecar_task {
resources {
cpu = 500
memory = 1024
}
}
}
}
task "web" {
driver = "docker"
config {
image = "hashicorpdev/counter-api:v3"
}
}
}
}
기본 Envoy 구성 (Default Envoy configuration)
Nomad는 sidecar_service 또는 gateway가 구성되면 프록시 사이드카 또는 connect 게이트웨이로 사용할 Envoy 태스크를 자동으로 시작하고 관리해요.
기본 Envoy 태스크는 다음과 같아요:
sidecar_task {
name = "connect-proxy-<service>"
# "connect-gateway-<service>" when used as a gateway
lifecycle { # absent when used as a gateway
hook = "prestart"
sidecar = true
}
driver = "docker"
config {
image = "${meta.connect.sidecar_image}"
# "${meta.connect.gateway_image}" when used as a gateway
args = [
"-c",
"${NOMAD_SECRETS_DIR}/envoy_bootstrap.json",
"-l",
"${meta.connect.log_level}",
"--concurrency",
"${meta.connect.proxy_concurrency}",
"--disable-hot-restart"
]
}
logs {
max_files = 2
max_file_size = 2 # MB
}
resources {
cpu = 250 # MHz
memory = 128 # MB
}
shutdown_delay = "5s"
}
meta.connect.sidecar_image, meta.connect.gateway_image, meta.connect.log_level, meta.connect.proxy_concurrency 변수는 다음 기본값을 가진 클라이언트 구성 가능 변수예요:
sidecar_image-(string: "docker.io/envoyproxy/envoy:v${NOMAD_envoy_version}")- 공식 상류 Envoy Docker 이미지.${NOMAD_envoy_version}은 Consul에 대한 쿼리로 자동 해석돼요.gateway_image-(string: "docker.io/envoyproxy/envoy:v${NOMAD_envoy_version}")- 공식 상류 Envoy Docker 이미지.${NOMAD_envoy_version}은 Consul에 대한 쿼리로 자동 해석돼요.log_level-(string: "info")- Envoy 사이드카 로그 레벨. "debug"는 Connect 관련 문제를 디버깅하는 데 유용해요.proxy_concurrency-(string: "1")- Envoy 사이드카가 실행할 worker 스레드 수.
커스텀 이미지는 Nomad의 버전 보간을 사용해 Consul이 선호하는 Envoy 버전을 활용할 수 있어요. 예:
meta.connect.sidecar_image = custom/envoy-${NOMAD_envoy_version}:latest
매개변수 (Parameters)
-
name(string: "connect-[proxy|gateway]-<service>")- 태스크 이름. 기본값은 프록시 또는 게이트웨이가 제공하는 서비스 이름을 포함해요. -
driver(string: "docker")- 사이드카 태스크에 사용되는 드라이버. -
user(string: nil)- 태스크를 실행하는 데 사용할 사용자를 결정. 기본값은 Nomad 클라이언트가 실행 중인 것과 같은 사용자. -
config(map: nil)- 초기화를 위해 드라이버에 제공되는 구성. 키와 값은 런타임 변수 보간을 지원해요. -
env(map: nil)- 드라이버가 사용하는 환경 변수 맵. -
resources([Resources])- 사이드카 태스크가 필요로 하는 리소스. -
meta(map: nil)- 이 태스크와 연관된 Nomad에 불투명한 임의의 메타데이터. -
logs([Logs]: nil)- 태스크의stdout과stderr에 대한 로깅 구성을 지정. -
kill_timeout(string: "5s")- 종료될 태스크에 신호를 보내고 그것을 종료하는 사이의 시간. -
shutdown_delay(string: "5s")- 태스크를 Consul에서 등록 해제하고 종료 신호를 보내는 사이의 지연. -
kill_signal(string:SIGINT)- 태스크에 사용할 kill 신호. 기본값은 SIGINT. -
volume_mount([VolumeMount]: nil)- 그룹 볼륨을 어디에 마운트할지 지정. -
identity([Identity]: nil)- 태스크에 추가 Workload Identity를 노출. Nomad는 Consul과 통신하는 데 필요한 아이덴티티로 Consul Service Mesh 사이드카를 자동으로 구성해요. 이 블록을 지정하면 서드파티 서비스가 사용할 수 있는 추가 아이덴티티를 더할 수 있어요.
예시 (Examples)
다음 예시는 사이드카 태스크의 리소스와 다른 구성을 구성해요.
sidecar_task {
resources {
cpu = 500
memory = 1024
}
env {
FOO = "abc"
}
shutdown_delay = "5s"
}