Nomad의 IPv6 지원
Nomad의 IPv6 지원 (IPv6 Support in Nomad)
Nomad가 지원하는 IPv6 설정 방법과 다양한 연결 맥락에 필요한 구성 값을 알아봐요.
출처: 문서
본문
Nomad는 기반 네트워크, 호스트 머신, 실행 중인 운영 체제가 IPv6를 지원하는 한 IPv6를 지원해요.
이 가이드는 다양한 연결 맥락에 필요한 서로 다른 구성 설정을 보여줘요.
Advertise
Advertise Nomad 서버와 클라이언트 주소는 다른 서버, 클라이언트, 외부 시스템이 에이전트로 다시 연결할 때 사용해야 할 주소를 지정해요.
go-sockaddr 템플릿팅을 사용해 공용 IPv6 주소를 동적으로 선택할 수 있어요. 이 예시에서는 각 프로토콜에 대해 공용 인터페이스에서 IPv6 주소 하나를 가져와 프로토콜의 주소로 할당해요.
advertise {
http = "{{ GetPublicInterfaces | include `type` `IPv6` | limit 1 | attr `address` }}"
rpc = "{{ GetPublicInterfaces | include `type` `IPv6` | limit 1 | attr `address` }}"
serf = "{{ GetPublicInterfaces | include `type` `IPv6` | limit 1 | attr `address` }}"
}
Nomad에서 Nomad로
Nomad 에이전트 프로세스는 클러스터 작업을 위한 RPC 호출을 하기 위해 서로 연결해요.
클라우드 자동 조인을 사용하거나 IPv6로 해석되는 DNS와 함께 Nomad에서 IPv6를 사용하는 것을 권장해요. 다음 서버-서버 및 클라이언트-서버 예시는 IPv6 주소를 명시적으로 사용해요.
서버에서 서버로
server_join 블록을 사용해 서버를 연결해요.
server {
enabled = true
server_join {
retry_join = ["[2001:db8::1]", "[2001:db8::2]"]
}
}
클라이언트에서 서버로
servers 파라미터 또는 server_join 파라미터를 사용해 클라이언트를 연결해요.
client {
enabled = true
servers = ["[2001:db8::1]", "[2001:db8::2]", "[2001:db8::3]"]
}
client {
enabled = true
server_join {
retry_join = ["[2001:db8::1]", "[2001:db8::2]", "[2001:db8::3]"]
}
}
Nomad에서 외부 시스템으로
Nomad와 다른 외부 시스템 사이의 대부분의 연결은 HTTP를 통해 발생해요.
예를 들어 이렇게 NOMAD_ADDR 환경 변수를 설정하면:
export NOMAD_ADDR='http://[2001:db8::1]:4646'
다음을 할 수 있어요.
- Nomad API 호출을 수행하는 Nomad CLI 사용하기
nomad ui명령으로 브라우저에서 Nomad 웹 UI 열기- Workload identity 사용하기
Nomad는 수신 대기 중이면 IPv6 주소의 Consul과 Vault에 도달해 서비스를 등록하거나 시크릿을 가져올 수 있어요.
nomad setup consul 명령으로 Consul을 구성해요.
nomad setup consul -y -jwks-url="$NOMAD_ADDR/.well-known/jwks.json"
nomad setup vault 명령으로 Vault를 구성해요.
nomad setup vault -y -jwks-url="$NOMAD_ADDR/.well-known/jwks.json"
OIDC 연결을 지원하는 다양한 기타 타사 서비스도 타사 서비스가 IPv6를 지원하는 한 IPv6 주소에서 Nomad에 도달할 수 있어야 해요.
워크로드
Nomad는 클라이언트 노드의 태스크와 주고받는 임의의 IPv6 네트워크 호출을 지원해요.
호스트 네트워킹을 사용하면 태스크는 호스트 머신과 같은 네트워크를 사용해요.
- IPv6 주소로 서비스를 등록하려면 다음 옵션을 사용해요. preferred_address_family 클라이언트 설정을
"ipv6"로 설정해요. 평소처럼 "nomad" 또는 "consul" 제공자를 사용해 작업 명세에 service 블록을 포함해요. - bridge_network_subnet_ipv6을 사용해 IPv6를 위한 Nomad의 bridge 네트워크 모드를 구성해요.
CNI 플러그인도 IPv6와 함께 동작할 수 있어요. Nomad의 브리지 네트워크가 이를 수행해요.
일부 태스크 드라이버는 자체 IPv6 구성 옵션을 가져요. Docker 드라이버에서 IPv6 지원을 활성화했다면 작업 명세에서 IPv6를 구성할 수 있어요. 자세한 내용은 IPv6 Docker containers를 참고해요.