Nomad 버전별 업그레이드 가이드
Nomad 버전별 업그레이드 가이드 (Nomad version-specific upgrade guides)
업그레이드 페이지는 표준 업그레이드 수행에 대한 세부 정보를 다뤄요. 그러나 특정 Nomad 버전은 새 기능이나 변경된 동작으로 인해 업그레이드에 대한 더 자세한 내용이 제공될 수 있어요. 이 페이지는 표준 업그레이드 흐름과 별도로 그 내용을 문서화하는 데 사용돼요.
출처: 문서
본문
Nomad 2.0.4
인증 없는 서버 조인은 더 이상 사용되지 않음 (Unauthenticated server join is deprecated)
인증 없이 server join 명령이나 Join Agent API를 사용하는 것은 더 이상 사용되지 않아요(deprecated). Nomad 2.1.0은 agent:write 권한이 있는 토큰을 사용하도록 요구할 거예요. 이는 새 노드를 클러스터에 조인할 때 리전의 리더에 대해 server join 명령을 사용하거나, 리전을 페더레이션할 때 권위(authoritative) 리전에 대해 사용해야 함을 의미해요. 새 클러스터를 만들 때는 가십(gossip) 암호화와 mTLS를 활성화한 server_join 에이전트 구성을 사용해야 해요.
더 이상 사용되지 않는 서버 구성이 제거될 예정 (Deprecated server configurations will be removed)
더 이상 사용되지 않는 서버 구성 파라미터server.retry_join, server.retry_interval, server.retry_max, server.start_join은 Nomad 2.1.0에서 제거될 거예요. 대신 server.server_join을 사용해요.
Nomad 2.0.0
서버 구성 raft_boltdb 파라미터 더 이상 사용되지 않음 (Server configuration's raft_boltdb parameter deprecation)
서버 구성의 raft_boltdb 파라미터를 raft_logstore 파라미터로 대체하면서 더 이상 사용하지 않아요.
IBM Passport Advantage Online (PAO) 사용을 위한 라이선스 및 구성 변경 (License and configuration changes to enable use of IBM Passport Advantage Online (PAO))
Nomad 2.0에서 라이선싱 로그와 오류 출력을 변경했어요. 스크립트가 오류 출력 텍스트에 의존한다면 스크립트화된 업그레이드에 영향을 줄 수 있어요.
| 유형 | 이전 출력 | 새 출력 |
|---|---|---|
| 오류 | "invalid license config: %w" |
"invalid license data: %w" |
| 오류 | "error initializing licensing validator: %w" |
(제거됨 — 함수 삭제) |
| 오류 | "failed to initialize nomad license: %w" |
"failed to set nomad license: %w" |
| 오류 | (없음 — 오류가 꾸밈없이 반환됨) | "failed to set nomad license: %w" |
| 오류 | "error validating license: %w" |
(제거됨) |
| 로그 (오류) | "failed to persist license" |
(제거됨) |
| 오류 | "failed to retrieve license: %w" |
(제거됨) |
| 오류 | "failed to convert license: %w" |
(제거됨) |
| 로그 (오류) | "license expired, please update license" (from ErrorCh) |
"license is inactive, please update license" (from ErrorCh) |
| 로그 (오류) | (없음) | "license expired, please update license" (이제 WarningCh에서) |
| 로그 (경고) | "license expiring" with time.Until(warnLicense.ExpirationTime).Truncate(time.Second) |
"license expiring" with status.TimeToExpire.String() (이제 StatusCh에서) |
| 오류 | "could not create reporting bundle: no snapshots" |
"no snapshots" |
Nomad 1.11.2
QEMU 드라이버 (QEMU driver)
QEMU 드라이버는 이제 /alloc과 /local 같은 상대 컨테이너 경로 대신 파일시스템 환경 변수에 호스트 파일 경로를 사용해요. 이러한 변수를 사용하는 작업 명세를 새 값에 맞게 업데이트해야 할 수도 있어요.
Nomad 1.11.1
스토리지 지문 인식 계산 변경 (Storage fingerprinting calculation changed)
Nomad는 이제 스케줄링에 사용할 수 있는 스토리지를 totalBytes - client.reserved.disk만으로 계산해요. 실행 중인 할당이 있는 클라이언트가 다시 시작될 때 이전의 여유 디스크 공간을 사용하는 전략은 잘못된 값을 초래할 수 있었어요. unique.storage.bytesfree 속성도 제거됐어요. 호스트 OS가 사용하는 디스크만큼 최소한 예약할 것을 권장해요.
QEMU 드라이버 (QEMU driver)
Nomad 1.11.1에서 emulator와 machine_type이 작업 구성에 추가됐어요. 이들은 이전에 사용된 값인 qemu-system-x86_64와 pc로 기본 설정돼요. 이전에는 kvm 가속기를 사용할 때 host 머신 유형이 강제됐어요. 이제는 그렇지 않으며 machine_type 값이 사용돼요. 또한 kvm 가속기로 resources.cores를 사용하면 -smp가 해당 코어 수로 하드코딩됐어요. 이제는 사용자가 커스텀 -smp 플래그를 지정하지 않은 경우에만 그렇게 돼요.
Nomad 1.11.0
Sysbatch 작업은 더 이상 reschedule 블록을 수락하지 않음 (Sysbatch jobs will no longer accept reschedule blocks)
Nomad 1.11.0에서 reschedule 블록이 있는 sysbatch 작업을 제출하면 이전 버전처럼 조용히 무시되는 대신 오류가 반환돼요. 시스템 작업에도 동일한 동작이 적용돼요.
디스패치 및 주기적 작업용 Eval 브로커 메트릭 (Eval broker metrics for dispatch and periodic jobs)
리더는 eval 브로커에 대한 메트릭을 기록해요. Nomad 1.11.0에서 nomad.nomad.broker.wait_time, nomad.nomad.broker.process_time, nomad.nomad.broker.response_time, nomad.nomad.broker.eval_waiting 메트릭의 job 라벨은 디스패치 및 주기적 작업의 상위 작업 ID를 참조해요. nomad.nomad.broker.eval_waiting에는 더 이상 eval_id 라벨이 없어요. 대량 디스패치 워크로드를 실행하는 클러스터의 경우 이 변경은 리더의 메트릭 카디널리티와 메모리 사용을 크게 줄여줘요.
ACL 정책은 더 이상 중복되거나 유효하지 않은 키를 조용히 무시하지 않음 (ACL policies no longer silently ignore duplicate or invalid keys)
Nomad 1.11.0은 ACL 정책에 대한 더 엄격한 검증을 도입해요. 중복되거나 유효하지 않은 키가 포함된 정책 쓰기는 조용히 무시되는 대신 오류로 거부돼요. 중복되거나 유효하지 않은 키가 있는 기존 정책은 계속 작동하지만, Nomad에 다시 쓸 수 있으려면 소스 정책 문서를 유효하게 업데이트해야 해요.
작업당 최대 할당 수는 기본적으로 제한됨 (Maximum number of allocations per job is limited by default)
Nomad 1.11.0은 작업의 최대 할당 수를 기본값 50000인 새 job_max_count 서버 구성 옵션 값으로 제한해요. 할당 수는 작업의 작업 그룹 count 필드 합계에서 결정돼요. 이 제한은 작업이 제출되거나 확장될 때 적용되며, 값을 업데이트해도 기존 작업에는 영향을 주지 않아요.
Node API의 더 이상 사용되지 않는 리소스 필드 (Deprecated resource fields on Node API)
Go API의 Node 구조체에 있는 Resources와 Reserved 필드, 그리고 Read Node API의 동등한 필드는 더 이상 사용되지 않아요. 이 필드는 절대 채워지지 않아요. 대신 NodeResources와 ReservedResources 필드를 사용해요.
Enterprise 제품 사용량 보고 (Enterprise product usage reporting) Enterprise
Nomad Enterprise 1.11.0은 자동 라이선스 활용 보고에 상세한 제품 사용량 정보를 추가해요.
Nomad 1.10.6
ACL 정책은 더 이상 중복되거나 유효하지 않은 키를 조용히 무시하지 않음 (ACL policies no longer silently ignore duplicate or invalid keys)
Nomad 1.10.6은 ACL 정책에 대한 더 엄격한 검증을 도입해요. 중복되거나 유효하지 않은 키가 포함된 정책 쓰기는 조용히 무시되는 대신 오류로 거부돼요. 중복되거나 유효하지 않은 키가 있는 기존 정책은 계속 작동하지만, Nomad에 다시 쓸 수 있으려면 소스 정책 문서를 유효하게 업데이트해야 해요.
Enterprise 제품 사용량 보고 (Enterprise product usage reporting) Enterprise
Nomad Enterprise 1.10.6은 자동 라이선스 활용 보고에 상세한 제품 사용량 정보를 추가해요.
Nomad 1.10.2
클라이언트는 telemetry.publish_allocation_metrics를 존중함 (Clients respect telemetry.publish_allocation_metrics)
Nomad 1.10.2은 telemetry.publish_allocation_metrics 구성 필드가 설정되지 않았거나 false로 설정된 경우에도 할당 메트릭이 수집되고 게시되던 버그를 수정했어요. 할당 메트릭을 모니터링한다면 Nomad 클라이언트가 이 필드를 true로 설정했는지 확인해야 해요.
Nomad 1.10.1
주소로 Raft 피어 제거 기능 제거됨 (Remove Raft peer by address removed)
Nomad 1.4.0은 Raft Protocol v2 지원을 제거했고, 이로 인해 피어 ID 대신 주소로 Raft 피어를 제거하는 기능이 제거됐어요. Nomad 1.10.1은 operator raft peer-remove 명령의 비기능적 -peer-address 옵션과 DELETE /v1/operator/raft/peer API의 address 파라미터를 제거해요.
구성 재로드 오류 시 에이전트 종료 (Agent exit on reloading configuration errors)
에이전트 구성 재로드 시 발생하는 오류가 이제 에이전트가 종료하도록 해요. 이전 버전에서 Nomad는 재로드 중 구성 오류만 기록했어요. 이는 에이전트가 실행 중이지만 통신할 수 없는 상태로 이어질 수 있었어요. 새 구성을 파싱할 때의 다른 오류는 기록되고 재로드가 중단되는 것은 현재 동작과 일치해요.
서버 start_timeout 구성 옵션 추가 (Added Server start_timeout Configuration Option)
Nomad 1.10.1은 기본값 30s인 start_timeout이라는 새 서버 구성 옵션을 도입해요. 이 기간은 키링 복호화 같은, 정상으로 간주되기 전에 완료되어야 하는 서버 설정 및 시작 프로세스를 모니터링하는 데 사용돼요. 이러한 프로세스가 시간 초과에 도달하기 전에 완료되지 않으면 서버 프로세스가 종료되고 오류가 콘솔에 기록돼요.
/v1/acl/token/self 응답 코드 수정 (Corrected /v1/acl/token/self response codes)
Nomad 1.10.1은 /v1/acl/token/self에 보내진 API 호출에 다른 HTTP 응답 코드로 응답해요. ACL이 활성화되지 않은 사용자에게 엔드포인트는 200 코드와 ACL이 비활성화됐음을 나타내는 응답 본문으로 응답해요. 이전에는 이러한 시나리오에서 응답 코드가 404였어요.
ACL이 활성화되고 유효한 ACL 토큰이 없는 사용자의 경우 엔드포인트는 403 코드로 응답해요. 이전에는 이러한 시나리오에서 응답 코드가 404였어요.
Nomad 1.10.0
쿼터 명세 variable_limits 더 이상 사용되지 않음 (Quota specification variable_limits deprecated) Enterprise
쿼터 명세의 variable_limits 필드는 더 이상 사용되지 않아요. 이를 region_limit 블록 아래의 variables 필드가 있는 새 storage 블록으로 교체했어요. 기존 쿼터는 서버 업그레이드 중에 자동으로 마이그레이션돼요. Nomad 1.12.0에서 쿼터 명세에서 variables_limit 필드를 제거할 거예요.
Nomad 1.8의 더 이상 사용되지 않는 disconnect 필드 제거됨 (Nomad 1.8 deprecated disconnect fields removed)
Nomad 1.8에서 max_client_disconnect, stop_after_client_disconnect, prevent_reschedule_on_list 필드를 대체하는 disconnect 블록을 도입했어요. Nomad 1.10에서 이 필드들을 제거했으며, 지정해도 Nomad가 무시해요. 작업은 업그레이드 전에 disconnect 블록을 사용하도록 마이그레이션해야 해요.
쿼터 제한용 Go SDK API 변경 (Go SDK API change for quota limits)
Nomad 1.10.0에서 쿼터용 Go API에 파괴적인 변경이 있어요. QuotaSpec.RegionLimit 필드는 이제 Resources 대신 QuotaResources 유형이에요. QuotaSpec.VariablesLimit 필드는 QuotaSpec.RegionLimit.Storage.Variables를 대신하면서 더 이상 사용되지 않으며 Nomad 1.12.0에서 제거될 거예요.
원격 작업 드라이버 지원 제거됨 (Remote task driver support removed)
Nomad 1.10.0에서 원격 작업 드라이버(remote task driver) 기능에 대한 모든 지원을 제거했어요. Nomad는 더 이상 할당이 손실될 때 RemoteTasks 기능으로 드라이버를 분리하지 않아요. 또한 노드가 드레인될 때 원격 작업을 분리하지 않아요. 원격 작업으로 실행되는 워크로드는 업그레이드 전에 마이그레이션해야 해요.
구성 없이 plugin_dir에서 바이너리 로드 (Loading binaries from plugin_dir without configuration)
plugin_dir에 저장된 플러그인은 이제 에이전트 구성 파일에 해당 plugin 블록이 있을 때만 로드돼요. Nomad는 이제 해당 구성 블록이 없는 것으로 발견된 모든 플러그인을 건너뛰어요.
Sentinel apply 명령은 scope를 요구함 (Sentinel apply command requires scope) Enterprise
작업 범위에 불필요하게 볼륨용 정책을 추가하는 것을 방지하기 위해 nomad sentinel apply 명령은 이제 -scope 옵션을 요구해요. 자세한 내용은 GitHub 풀 리퀘스트를 참조해요.
Affinity 및 spread 업데이트는 비파괴적임 (Affinity and spread updates are non-destructive)
affinity와 spread 블록에 대한 업데이트가 더 이상 파괴적이지 않도록 스케줄러 버그를 수정했어요. 이 블록만 변경하는 작업 업데이트 후에는 기존 할당이 작업 버전이 증가된 채 계속 실행돼요. 이전 동작에 의존해 워크로드를 재분배했다면 meta 블록처럼 파괴적 업데이트가 필요한 필드를 변경해 강제할 수 있어요.
Vault 및 Consul 통합 변경 (Vault and Consul integration changes)
Nomad 1.10.0은 Vault와 Consul에 대한 이전에 더 이상 사용되지 않던 토큰 기반 인증 워크플로를 제거해요. Nomad 클라이언트는 이제 작업의 워크로드 아이덴티티를 사용해 Vault와 Consul에 인증하고 작업별 토큰을 얻어야 해요.
이 표는 제거된 Vault 필드와 새 워크플로를 나열해요.
| 필드 | 구성 | 새 워크플로 |
|---|---|---|
vault.allow_unauthenticated |
에이전트 | 작업은 워크로드 아이덴티티를 사용해야 해요. Vault 토큰을 사용하지 마세요. |
vault.task_token_ttl |
에이전트 | 워크로드 아이덴티티를 사용하면 작업은 TTL 구성을 Vault 역할에서 받아요. |
vault.token |
에이전트 | Nomad 에이전트는 인증된 엔드포인트에 요청할 때 워크로드 아이덴티티를 사용해요. |
vault.policies |
작업 명세서 | Vault 역할을 구성하고 사용해요. |
Nomad 1.10으로 업그레이드하기 전에 다음 작업을 수행해요:
- 워크로드 아이덴티티로 작동하도록 Vault와 Consul을 구성해요.
- 모든 워크로드를 워크로드 아이덴티티를 사용하도록 마이그레이션해요.
자세한 내용은 다음 가이드를 참조해요:
Nomad 1.9.9
서버 start_timeout 구성 옵션 추가 (Added Server start_timeout Configuration Option)
Nomad 1.9.9은 기본값 30s인 start_timeout이라는 새 서버 구성 옵션을 도입해요. 이 기간은 키링 복호화 같은, 정상으로 간주되기 전에 완료되어야 하는 서버 설정 및 시작 프로세스를 모니터링하는 데 사용돼요. 이러한 프로세스가 시간 초과에 도달하기 전에 완료되지 않으면 서버 프로세스가 종료되고 오류가 콘솔에 기록돼요.
Nomad 1.9.5
CNI 플러그인 (CNI plugins)
Nomad 1.9.5은 클라이언트 호스트 재부팅 후 할당 네트워킹을 복원하는 버그 수정을 포함해요. 이 수정은 최신 버전의 CNI 참조 플러그인(최소 1.2.0)이 필요하며, CNI 참조 플러그인이 수정을 지원할 수 없다면 기존 동작으로 대체돼요.
CNI 참조 플러그인은 Linux 배포판의 패키지 매니저 대신 CNI 프로젝트 릴리스 페이지에서 설치할 것을 권장해요.
Nomad 1.9.4
기본 거부 목록의 보안 업데이트 (Security updates to default deny lists)
Nomad 1.9.4에서 기본 function_denylist는 우발적이거나 악의적인 무한 재귀 실행을 방지하기 위한 조치로 executeTemplate를 포함해요. executeTemplate가 필요한 사용자는 구성을 업데이트해야 해요.
또한 기본 클라이언트 env 거부 목록에는 더 많은 환경 변수가 포함돼요. 이러한 보안 환경 변수 중 일부가 작업에 전달되어야 하는 사용자는 목록을 확인하고 구성에서 덮어써야 해요.
Nomad 1.9.3
Nomad 1.9.3에서 객체가 가비지 컬렉션 대상이 되는 시점을 계산하는 메커니즘이 시계 기반으로 변경돼요. 이에는 두 가지 결과가 있어요. 첫째, 임의로 긴 GC 간격을 설정할 수 있어요. 둘째, GC가 팔로워에서 발생할 수 있으므로 Nomad 서버가 시간적으로 대략 동기화되도록 유지해야 해요.
Nomad 1.9.2는 업그레이드 시 모든 클러스터 상태가 유실될 수 있는 버그를 포함하고 있어 다운로드에서 제거됐어요.
Nomad 1.9.0
이전 클라이언트 지원 중단 (Dropped support for older clients)
Nomad 1.9.0은 1.6.0보다 오래된 Nomad 클라이언트 에이전트 지원을 제거해요. 오래된 노드는 하트비트에 실패해요. Nomad 서버는 해당 노드의 워크로드를 lost로 표시하고 작업의 [reschedule][] 블록에 따라 정상적으로 재스케줄링해요.
Raft의 키링 (Keyring In Raft)
Nomad 1.9.0은 워크로드 아이덴티티 서명과 Variables 암호화에 사용되는 키를 외부 키스토어에 저장하는 대신 Raft에 저장해요. keyring 공급자에 외부 KMS 또는 Vault transit 암호화를 사용할 때 키 암호화 키(KEK)는 Nomad 외부에 저장되고 디스크에 평문 키 자료가 존재하지 않아요. 기본 AEAD 공급자를 사용할 때 키 암호화 키(KEK)는 암호화된 데이터 암호화 키(DEK)와 함께 Raft에 저장돼요.
Nomad는 모든 서버가 1.9.0으로 업그레이드된 후 첫 번째 root_key_gc_interval에서 모든 키 자료의 키 저장을 자동으로 마이그레이션해요. 기존 온디스크 키스토어는 이전 스냅샷에서 서버를 복원하는 데 필요하므로, 더 이상 이전 스냅샷이 필요하지 않을 때까지 온디스크 키스토어를 계속 백업해야 해요.
HCLv1 지원 제거됨 (Support for HCLv1 removed)
Nomad 1.9.0은 작업 명세서에 HCLv1 형식을 더 이상 지원하지 않아요. job run, job plan, job validate 명령에 -hcl1 옵션을 사용하는 것은 더 이상 작동하지 않아요.
-hcl1의 일반적인 사용 중 하나는 DataDog 자동 검색처럼 키에 점이 있는 Docker 라벨을 지정할 때였어요:
"com.datadoghq.ad.check_names" = "[\"openmetrics\"]"
"com.datadoghq.ad.init_configs" = "[{}]"
# ...
}
따옴표가 있는 키는 HCLv2 블록에서 유효하지 않으며 목록-of-맵 구문으로 지정해야 해요:
{
"com.datadoghq.ad.check_names" = "[\"openmetrics\"]"
"com.datadoghq.ad.init_configs" = "[{}]"
# ...
}
]
Nomad 1.8.18
ACL 정책은 더 이상 중복되거나 유효하지 않은 키를 조용히 무시하지 않음 (ACL policies no longer silently ignore duplicate or invalid keys)
Nomad 1.8.18은 ACL 정책에 대한 더 엄격한 검증을 도입해요. 중복되거나 유효하지 않은 키가 포함된 정책 쓰기는 조용히 무시되는 대신 오류로 거부돼요. 중복되거나 유효하지 않은 키가 있는 기존 정책은 계속 작동하지만, Nomad에 다시 쓸 수 있으려면 소스 정책 문서를 유효하게 업데이트해야 해요.
Enterprise 제품 사용량 보고 (Enterprise product usage reporting) Enterprise
Nomad Enterprise 1.8.18은 자동 라이선스 활용 보고에 상세한 제품 사용량 정보를 추가해요.
Nomad 1.8.4
기본 Docker infra_image 변경됨 (Default Docker infra_image changed)
서드파티 gcr.io 레지스트리의 폐지로 인해 기본 Docker infra_image는 이제 registry.k8s.io/pause-<arch>:3.3이에요. 기본값을 덮어쓰지 않으면 docker 드라이버를 사용하는 클라이언트는 새 레지스트리로 나가는 요청을 하게 돼요.
Nomad 1.8.3
Nomad 키링 회전 (Nomad keyring rotation)
Nomad 1.8.3에서 Nomad 루트 키링은 root_key_rotation_threshold의 절반에 키를 미리 게시(prepublish)하고, root_key_rotation_threshold가 지나면 활성으로 승격해요. nomad operator root keyring rotate 명령은 이제 두 인수 중 하나를 요구해요: 키를 미리 게시하는 -prepublish <duration> 또는 즉시 회전하는 -now. Vault나 Consul 같은 외부 서비스에 로그인하는 데 사용되는 워크로드 아이덴티티로 인한 중단을 피하기 위해 -prepublish 사용을 권장해요.
Nomad 1.8.2
Docker 드라이버용 새 windows_allow_insecure_container_admin 구성 옵션 (New windows_allow_insecure_container_admin configuration option for Docker driver)
1.8.2에서 Nomad는 Process Isolation으로 Windows에서 Docker 드라이버를 사용하고 ContainerAdmin으로 실행되는 작업의 실행을 거부해요. 이는 이러한 작업에 더 안전한 환경을 제공하기 위한 것이며, 이 동작은 새 windows_allow_insecure_container_admin Docker 플러그인 구성 옵션을 true로 설정하거나 privileged=true를 설정해 재정의할 수 있어요. 우리는 HCSEC-2024-03에 대한 완화책으로 도입된 회귀로 인해 이 변경을 만들었어요.
Windows에서 Docker의 새 기본 격리 모드 (New default isolation mode for Docker on Windows)
Nomad 1.8.2는 Windows에서 Docker 작업의 기본 격리 모드를 process에서 hyperv로 변경해요. hyperv가 훨씬 더 안전한 실행 환경을 제공하기 때문이에요. HCSEC-2024-03에 대한 완화책으로 도입된 회귀로 인해 이 변경을 만들었어요.
Nomad 1.8.1 Enterprise
Nomad Enterprise 1.8.1은 업데이트된 버전의 Sentinel 라이브러리를 포함해요. 커스텀 Sentinel 플러그인을 구축한 사용자는 Sentinel Plugin Protocol Version 3을 지원하는 SDK로 다시 컴파일해야 해요. 적절한 Sentinel SDK 버전은 Sentinel SDK 호환성 매트릭스를 참조해요.
Nomad 1.8.0
더 이상 사용되지 않는 Disconnect 필드 (Deprecated Disconnect Fields)
Nomad 1.8.0은 연결이 끊긴 클라이언트와 서버의 동작과 관련된 모든 구성 옵션을 그룹화하는 disconnect 블록을 도입해, stop_after_client_disconnect, max_client_disconnect, prevent_reschedule_on_lost 필드를 더 이상 사용하지 않게 해요. 이 블록은 또한 클라이언트가 연결을 되찾으면 할당 재조정을 위한 새 옵션을 도입해요.
CNI 제약 (CNI Constraints)
Nomad 1.8.0에서 bridge 네트워킹이 있는 작업은 작업 제출 시 CNI 플러그인이 노드에 있어야 한다는 제약이 추가돼요. 노드는 Nomad 1.5.0부터 사용 가능한 CNI 플러그인 지문을 인식해 왔어요.
Nomad 1.5.0 이상에서 1.8.0 이상으로 업그레이드한다면 추가로 할 일이 없어요. Nomad 2개 이상의 버전을 건너뛰는 것은 권장되지 않아요. 그러나 1.5.0보다 이전 버전에서 1.8.0 이상으로 업그레이드한다면 bridge 네트워킹을 사용하는 작업을 제출하기 전에 클라이언트가 업그레이드되었는지 확인해야 해요.
raw_exec 옵션 no_cgroups 제거됨 (Removal of raw_exec option no_cgroups)
Nomad 1.7.0에서 raw_exec 플러그인 옵션 no_cgroups는 효과가 없어졌어요. Nomad 1.8.0부터 raw_exec 플러그인 구성에서 no_cgroups를 설정하려고 하면 에이전트 시작 시 오류가 발생해요.
Nomad 1.7.11 Enterprise
Nomad 키링 회전 (Nomad keyring rotation)
Nomad 1.7.11에서 Nomad 루트 키링은 root_key_rotation_threshold의 절반에 키를 미리 게시하고, root_key_rotation_threshold가 지나면 활성으로 승격해요. nomad operator root keyring rotate 명령은 이제 두 인수 중 하나를 요구해요: 키를 미리 게시하는 -prepublish <duration> 또는 즉시 회전하는 -now. Vault나 Consul 같은 외부 서비스에 로그인하는 데 사용되는 워크로드 아이덴티티로 인한 중단을 피하기 위해 -prepublish 사용을 권장해요.
Nomad 1.7.10 Enterprise
Docker 드라이버용 새 windows_allow_insecure_container_admin 구성 옵션 (New windows_allow_insecure_container_admin configuration option for Docker driver)
1.7.10에서 Nomad는 Process Isolation으로 Windows에서 Docker 드라이버를 사용하고 ContainerAdmin으로 실행되는 작업의 실행을 거부해요. 이는 이러한 작업에 더 안전한 환경을 제공하기 위한 것이며, 이 동작은 새 windows_allow_insecure_container_admin Docker 플러그인 구성 옵션을 true로 설정하거나 privileged=true를 설정해 재정의할 수 있어요.
Windows에서 Docker의 새 기본 격리 모드 (New default isolation mode for Docker on Windows)
Nomad 1.7.10은 Windows에서 Docker 작업의 기본 격리 모드를 process에서 hyperv로 변경해요. hyperv가 훨씬 더 안전한 실행 환경을 제공하기 때문이에요.
Nomad 1.7.2
Nomad 1.7.2는 Nomad 1.7.0과 1.7.1의 CPU 지문 인식의 치명적인 버그를 수정해요. Nomad 1.7.0이나 1.7.1을 설치하지 말고 최신 Nomad 1.7.x 버전을 설치해야 해요.
Nomad 1.7.0
경고
Nomad 1.7.0에는 키링 복제의 치명적인 버그가 있어요. Nomad 1.7.0을 설치하지 말고 최신 Nomad 1.7.x 버전을 설치해야 해요.
리더 선출 후 키링 복제 실패 (Keyring Replication Failure After Leader Election)
Nomad 1.7.0은 워크로드 아이덴티티 서명에 사용하기 위해 키링에 새 RSA 키를 도입했어요. 이 키는 리더에서 팔로워로 올바르게 복제되지 않았어요. 이로 인해 리더 선출 후 모든 워크로드 아이덴티티 검증이 실패해요.
이 버그는 Nomad 1.7.1에서 수정됐어요.
Vault 통합 변경 (Vault Integration Changes)
Nomad 1.7부터 Nomad 클라이언트는 작업의 [워크로드 아이덴티티][]를 사용해 Vault에 인증하고 작업별 Vault 토큰을 얻어요.
에이전트 구성이나 작업 제출 시 제공된 Vault 토큰을 사용하는 기존 워크플로는 더 이상 사용되지 않으며 Nomad 1.10에서 제거될 거예요. vault.policies 필드도 더 이상 사용되지 않으며 기존 워크플로에서만 작동해요. 대신 적절한 Vault 역할을 구성해 사용해야 해요.
다음 에이전트 구성 필드는 더 이상 사용되지 않아요:
vault.allow_unauthenticated은 Nomad 1.10에서 제거될 거예요. 작업은 사용자가 Vault 토큰을 제공하지 않고 워크로드 아이덴티티를 사용해요.vault.task_token_ttl은 Nomad 1.10에서 제거될 거예요. 워크로드 아이덴티티를 사용하면 작업은 TTL 구성을 Vault 역할에서 받아요.vault.token은 Nomad 1.10에서 제거될 거예요. Nomad 에이전트는 작업의 워크로드 아이덴티티로만 인증된 엔드포인트에 요청할 거예요.
Nomad 1.10으로 업그레이드하기 전에 워크로드 아이덴티티로 작동하도록 Vault로 인증을 구성했어야 해요. 자세한 내용은 Vault와 함께 워크로드 아이덴티티 사용으로 마이그레이션을 참조해요.
Consul 통합 변경 (Consul Integration Changes)
Nomad 1.7부터 Nomad 클라이언트는 서비스 또는 작업의 워크로드 아이덴티티를 사용해 Consul에 인증하고 워크로드별 Consul 토큰을 얻어요.
에이전트 구성이나 작업 제출 시 제공된 Consul 토큰을 사용하는 기존 워크플로는 더 이상 사용되지 않으며 Nomad 1.10에서 제거될 거예요. consul.allow_unauthenticated 에이전트 구성 필드는 Nomad 1.10에서 제거될 거예요. 작업은 사용자가 Consul 토큰을 제공하지 않고 워크로드 아이덴티티를 사용해요.
Nomad 1.10으로 업그레이드하기 전에 워크로드 아이덴티티로 작동하도록 Consul로 인증을 구성했어야 해요. 자세한 내용은 Consul과 함께 워크로드 아이덴티티 사용으로 마이그레이션을 참조해요.
RS256 JWT 서명 알고리즘 지원 (RS256 JWT Signing Algorithm Support)
Nomad 1.7 이전에는 워크로드 아이덴티티 JWT가 EdDSA 알고리즘으로 서명됐어요. EdDSA는 서명 알고리즘으로서 많은 장점이 있지만, JWT를 수락하는 대부분의 제3자는 RS256 서명 알고리즘 사용을 기대해요.
따라서 Nomad 1.7부터 새 서명 키는 RSA 키를 생성하고 워크로드 아이덴티티를 RS256 서명 알고리즘으로 서명해요.
제3자 인증 방법을 설정해 워크로드 아이덴티티를 사용하기 전에 nomad operator root keyring rotate를 실행해 새 RSA 키를 생성하는 것을 권장해요.
RSA 키가 있는지 확인하려면 모든 Nomad 에이전트에서 /.well-known/jwks.json 엔드포인트를 확인할 수 있어요. "kty": "RSA"가 보이면 RSA 키가 존재하는 것이므로 키를 회전할 필요가 없어요.
새 Nomad 클러스터는 기본적으로 RSA를 사용하며 영향을 받지 않아요.
CPU 지문 인식 변경 (CPU Fingerprinting Changes)
Nomad 1.7부터 Nomad 클라이언트는 감지된 CPU 성능 메트릭의 정확도를 향상시켜요. 지문 인식기는 이제 해당 프로세서에서 이기종 코어 유형을 고려해요. 또한 Nomad는 총 사용 가능한 CPU 대역폭을 계산할 때 터보 주파수 대신 프로세서의 기본 주파수를 감지해 사용하려고 시도해요. 이러한 동작의 결과로 Nomad 1.7로 업그레이드할 때 노드에서 계산된 총 사용 가능한 CPU 대역폭이 변경될 수 있어요. 운영자는 업그레이드 전에 계획된 용량이 기대에 부합하는지 확인하는 것이 좋아요. [cpu 개념][cpu] 문서는 Nomad가 CPU 메트릭을 감지하는 방법을 이해하는 데 도움이 되는 안내를 포함해요.
CPU EC2 감지 변경 (CPU EC2 Detection Changes)
Nomad 1.7 이전에는 Nomad 클라이언트가 모든 EC2 인스턴스 유형에 대한 CPU 성능 데이터의 큰 조회 테이블을 포함했어요. 1.7 이상에서 Nomad는 대신 dmidecode 명령을 실행해 이 데이터를 수집해요. dmidecode 패키지는 Nomad 에이전트가 시작되기 전에 일부 Linux 배포판에서 수동으로 설치해야 해요.
CPU 코어 격리 (CPU Core Isolation)
Nomad 1.7부터 cores 속성을 사용해 CPU 리소스를 지정하는 Nomad 작업은 할당된 CPU 코어만 사용하도록 제한돼요. 이전 버전의 Nomad에서 이러한 작업은 다른 비예약 CPU 코어도 사용할 수 있었어요. 그러나 이 기능은 작업 수가 증가함에 따라 Linux 커널에 심각한 성능 문제를 일으킬 수 있었어요. 운영자는 업그레이드 전에 cores 속성을 사용하는 작업에 충분한 CPU 리소스가 주어지는지 확인하는 것이 좋아요.
distinct_hosts 제약은 이제 네임스페이스를 존중함 (The distinct_hosts Constraint Now Honors Namespaces)
Nomad 1.7.0은 distinct_hosts 제약의 동작을 변경해, 할당 배치를 위한 적합한 클라이언트를 선택할 때 네임스페이스를 고려하게 해요. 이전의 덜 예상되는 동작은 클라이언트에서 같은 이름의 어떤 작업이라도 실행 중이면 해당 노드를 부적합으로 간주하게 했어요.
이 변경은 이전에 함께 배치되지 않던 워크로드가 서로 다른 네임스페이스에 있을 때 같은 클라이언트에 스케줄링될 수 있게 해요. 이를 방지하려면 [node pools]을 사용하고 ${node.pool}에 대한 distinct_property 제약으로 작업을 제한하는 것을 고려해요.
구성 없이 plugin_dir에서 바이너리 로드 (Loading Binaries from plugin_dir Without Configuration)
Nomad 1.7.0부터 에이전트 구성 파일에서 참조되지 않는 플러그인을 로드하는 것은 더 이상 사용되지 않아요. 향후 Nomad 버전은 에이전트 구성 파일에 해당 plugin 블록이 있는 플러그인만 로드할 거예요.
raw_exec 변경 (Changes to raw_exec)
raw_exec 작업 드라이버는 이제 Linux 플랫폼에서 exec 및 docker 작업 드라이버와 유사하게 cgroups를 통해 메모리 제한을 적용해요. 드라이버는 메모리 과잉 구독(oversubscription)을 지원하며, 이전의 무제한 동작을 거의 재현하도록 구성할 수 있어요.
no_cgroups 구성 옵션은 더 이상 효과가 없어요. 이전에는 no_cgroups를 설정하면 각 프로세스에 kill 신호를 보내기 전에 Nomad가 freezer cgroup을 사용해 Task의 프로세스 그룹을 중지하는 메커니즘이 비활성화됐어요. Nomad 1.7.0부터 이 동작은 항상 활성화되어 있어요(cgroups v2 시스템에서는 유사한 메커니즘이 항상 활성화되어 있었어요).
Nomad 1.6.14 Enterprise
Nomad 키링 회전 (Nomad keyring rotation)
Nomad 1.6.14에서 Nomad 루트 키링은 root_key_rotation_threshold의 절반에 키를 미리 게시하고, root_key_rotation_threshold가 지나면 활성으로 승격해요. nomad operator root keyring rotate 명령은 이제 두 인수 중 하나를 요구해요: 키를 미리 게시하는 -prepublish <duration> 또는 즉시 회전하는 -now. Vault나 Consul 같은 외부 서비스에 로그인하는 데 사용되는 워크로드 아이덴티티로 인한 중단을 피하기 위해 -prepublish 사용을 권장해요.
Nomad 1.6.13 Enterprise
Docker 드라이버용 새 windows_allow_insecure_container_admin 구성 옵션 (New windows_allow_insecure_container_admin configuration option for Docker driver)
1.6.13에서 Nomad는 Process Isolation으로 Windows에서 Docker 드라이버를 사용하고 ContainerAdmin으로 실행되는 작업의 실행을 거부해요. 이는 이러한 작업에 더 안전한 환경을 제공하기 위한 것이며, 이 동작은 새 windows_allow_insecure_container_admin Docker 플러그인 구성 옵션을 true로 설정하거나 privileged=true를 설정해 재정의할 수 있어요.
Windows에서 Docker의 새 기본 격리 모드 (New default isolation mode for Docker on Windows)
Nomad 1.6.13은 Windows에서 Docker 작업의 기본 격리 모드를 process에서 hyperv로 변경해요. hyperv가 훨씬 더 안전한 실행 환경을 제공하기 때문이에요.
Nomad 1.6.0
BuildDate를 사용한 Enterprise 라이선스 검증 (Enterprise License Validation with BuildDate)
Nomad Enterprise 1.6.0은 이제 라이선스 ExpirationTime을 때때로 더 관대한 라이선스 TerminationTime을 time.Now()와 비교하는 대신 Nomad 바이너리의 BuildDate와 비교해요. 자세한 내용은 라이선싱 FAQ를 참조하지만, 가장 관련 있는 것은 Enterprise 서버를 v1.6.0 이상으로 업그레이드하기 전에 새 nomad license inspect 명령을 실행해야 한다는 점이에요.
Job Evaluate API 엔드포인트는 read-job 대신 submit-job을 요구함 (Job Evaluate API Endpoint Requires submit-job Instead of read-job)
Nomad 1.6.0은 작업 평가 엔드포인트의 ACL 기능 요구 사항을 이 작업이 Nomad에 상태를 기록한다는 것을 더 잘 반영하기 위해 read-job에서 submit-job으로 업데이트했어요. 이 엔드포인트는 nomad job eval CLI 명령이 사용하므로 명령의 ACL 요구 사항도 변경됐어요. 이 엔드포인트를 호출하거나 이 명령을 read-job 기능이나 read 정책만 있는 토큰으로 사용한 사용자는 submit-job 기능이나 write 정책을 사용하도록 토큰을 업데이트해야 해요.
Exec 드라이버는 mlock에 새 기능 필요 (Exec Driver Requires New Capability for mlock)
Nomad 1.6.0은 exec 작업 드라이버가 호스트 시스템이 설정한 최대 잠금 메모리 제한을 유지하도록 업데이트했어요. Nomad의 이전 버전에서는 이 제한이 의도치 않게 설정되지 않았어요.
실질적으로 이는 mlock 시스템 호출을 사용하는 Vault 같은 exec 작업이 이제 ipc_lock 기능을 명시적으로 추가해야 한다는 것을 의미해요.
먼저 클라이언트 구성에서 ipc_lock 기능을 허용해요:
config {
allow_caps = ["audit_write", "chown", "dac_override", "fowner", "fsetid",
"kill", "mknod", "net_bind_service", "setfcap", "setgid", "setpcap",
"setuid", "sys_chroot", "ipc_lock"]
}
}
그런 다음 mlock을 사용하는 exec 작업에 ipc_lock 기능을 추가해요:
driver = "exec"
config {
cap_add = ["ipc_lock"]
# ... other task configuration
}
# ... rest of jobspec
이 추가는 Nomad v1.5와 하위 호환되므로, Nomad v1.6으로 업그레이드하기 전에 Client와 Jobs를 업데이트해야 해요.
자세한 내용은 #17780을 참조해요.
네임스페이스 ACL 정책은 라벨을 요구함 (Namespace ACL policies require a label)
Nomad 1.6.0은 라벨이 없는 네임스페이스에 대한 ACL 정책을 허용하지 않아요. 이 버전 이전에는 라벨 없이 네임스페이스에 대한 ACL 정책을 정의할 수 있었고, 이 경우 문서화된 동작은 정책이 default 네임스페이스에 적용된다는 것이었어요.
이 논리의 버그로 인해 정책이 다른 네임스페이스에 잘못 적용됐어요. 예를 들어 아래 정책은 default 대신 policy라는 네임스페이스에 적용됐어요.
policy = "read"
}
추가적인 혼란과 잠재적 보안 사고를 피하기 위해 이 기능이 제거됐으며 이제 모든 네임스페이스 정책은 라벨이 있어야 해요.
현재 유효하지 않은 정책에 연결된 토큰은 업그레이드 후 작동을 멈추므로, Nomad를 업그레이드하기 전에 유효하지 않은 정책을 명시적 네임스페이스 라벨을 갖도록 수정해야 해요.
정책이 수정된 후 해당 정책이 있는 기존 토큰은 계속 작동하며 다시 생성할 필요가 없어요.
nomad tls cert create 명령의 -cluster-region 플래그 더 이상 사용되지 않음 (Command nomad tls cert create flag -cluster-region deprecated)
Nomad 1.6.0은 nomad tls cert create 명령의 -cluster-region 플래그를 표준 플래그 -region을 사용하는 것으로 더 이상 사용하지 않을 거예요. -cluster-region 플래그는 Nomad 1.7.0에서 제거될 거예요.
32비트 Intel 빌드 더 이상 사용되지 않음 (32-bit Intel Builds Deprecated)
Nomad 1.6.0부터 HashiCorp는 더 이상 Nomad 및 Nomad Enterprise의 32비트 Intel 빌드(windows_386 및 linux_386이라는 이름의 빌드)를 릴리스하지 않을 거예요. 버그 수정은 해당 메이저 버전이 여전히 지원되는 한 1.5.x 및 1.4.x 버전에 계속 백포트될 거예요.
32비트 ARM 빌드(armhf 아키텍처용 linux_arm)는 더 이상 사용되지 않으며 향후 메이저 버전의 Nomad에서 제거될 수 있어요. 32비트 ARM 빌드는 테스트되지 않으며 플랫폼별 정수 크기에 대한 버그가 포함될 수 있어요. RaspberryPi 같은 소형 폼 팩터 호스트에는 64비트 빌드를 사용하는 것을 적극 권장해요.
Nomad 1.5.7, 1.4.11
네임스페이스 ACL 정책은 라벨을 요구함 (Namespace ACL policies require a label)
Nomad 1.5.7 및 1.4.11은 라벨이 없는 네임스페이스에 대한 ACL 정책을 허용하지 않아요. 이 버전 이전에는 라벨 없이 네임스페이스에 대한 ACL 정책을 정의할 수 있었고, 이 경우 문서화된 동작은 정책이 default 네임스페이스에 적용된다는 것이었어요.
이 논리의 버그로 인해 정책이 다른 네임스페이스에 잘못 적용됐어요. 예를 들어 아래 정책은 default 대신 policy라는 네임스페이스에 적용됐어요.
policy = "read"
}
추가적인 혼란과 잠재적 보안 사고를 피하기 위해 이 기능이 제거됐으며 이제 모든 네임스페이스 정책은 라벨이 있어야 해요.
현재 유효하지 않은 정책에 연결된 토큰은 업그레이드 후 작동을 멈추므로, Nomad를 업그레이드하기 전에 유효하지 않은 정책을 명시적 네임스페이스 라벨을 갖도록 수정해야 해요.
정책이 수정된 후 해당 정책이 있는 기존 토큰은 계속 작동하며 다시 생성할 필요가 없어요.
Nomad 1.5.5
Nomad 1.5.5은 업그레이드 전에 등록된 작업에 대해 재스케줄링되는 할당이 더 이상 할당 로그를 수집하지 않던 버그를 수정했어요. 1.5.4에서 도입된 logs.enabled 필드는 이제 더 이상 사용되지 않으며, 기본값이 false인 logs.disabled 필드로 교체됐어요. logs.enabled 필드 값은 1.5.5에서 무시되며 Nomad 1.6.0에서 제거될 거예요.
Nomad 1.5.4
Nomad 1.5.4에는 업그레이드 전에 등록된 작업에 대해 재스케줄링되는 할당이 더 이상 할당 로그를 수집하지 않던 버그가 포함됐어요. 클라이언트는 다음과 같은 디버그 수준 로그를 발행해요:
이 버전의 Nomad를 피하고 최신 버전의 Nomad 1.5을 설치해야 해요. 이미 Nomad 1.5.4로 업그레이드했다면, 업그레이드 과정의 일부로 클라이언트가 다시 시작될 때 Nomad 1.5.5로 업그레이드하면 로그 수집이 복원돼요.
Nomad 1.5.1
Artifact 다운로드 회귀 수정 (Artifact Download Regression Fix)
Nomad 1.5.1은 호환 Linux 시스템에서 artifact 다운로드가 nobody 사용자로 실행되던 1.5.0의 동작을 되돌려요. 이는 손상된 artifact 엔드포인트가 Nomad 클라이언트나 git이나 mercurial 같은 다운로드에 사용하는 도구를 악용하려는 시도에 대한 방어로 낙관적으로 수행됐어요. 불행히도 루트 외의 사용자로 자식 프로세스를 실행하는 것은 Nomad의 보안 강화 가이드에 나와 있는 조언과 호환되지 않으며, 이는 그러한 작업을 불가능하게 만드는 특정 디렉터리 트리 구조를 요구해요.
Artifact 다운로드에 대한 다른 변경은 유지됩니다 — 이들은 Nomad 에이전트의 자식 프로세스로 실행되며, 최신 Linux 시스템에서는 커널 landlock 기능을 사용해 해당 프로세스의 파일시스템 접근을 제한해요.
Nomad 1.5.0
Pause 컨테이너 재조정 회귀 (Pause Container Reconciliation Regression)
Nomad 1.5.0은 Docker 드라이버가 방치된(dangling) 컨테이너를 재조정하는 방식에 회귀를 도입했어요. 이는 할당이 여전히 실행 중이어도 pause 컨테이너가 잘못 제거되는 것을 의미했어요. 이는 실행 중인 할당에는 영향을 주지 않지만, 재시작해야 한다면 실패하게 해요. 즉각적인 해결 방법은 방치된 컨테이너 재조정을 비활성화하는 것이에요.
Artifact 다운로드 샌드박싱 (Artifact Download Sandboxing)
Nomad 1.5.0은 작업 구성에 artifact를 지정할 때 [artifact]가 다운로드되는 방식을 변경해요. 이전에는 Nomad 클라이언트가 프로세스 내에서 artifact를 다운로드했어요. 다운로드를 촉진하는 데 사용되는 외부 명령(예: git, hg)은 root로 실행되고, 결과 페이로드는 할당의 작업 디렉터리에서 root 소유였어요.
Nomad 클라이언트의 탄력성과 보안 모델을 개선하기 위해 1.5.0에서는 artifact 다운로드가 하위 프로세스에서 발생해요. 가능한 경우 해당 하위 프로세스는 nobody 사용자로 실행되며, 최신 Linux 시스템에서는 커널의 landlock 기능을 통해 파일시스템에서 격리돼요.
운영자는 artifact를 사용하는 작업이 계속 예상대로 작동하는지 확인하는 것이 좋아요. 특히 git-ssh 사용자는 시스템 전체 /etc/ssh/ssh_known_hosts 파일에 필요한 모든 원격 호스트가 채워져 있는지 확인해야 해요. 이전에 Nomad의 문서는 root 사용자에게만 적용되는 /root/.ssh/known_hosts를 구성할 것을 제안했어요.
Artifact 다운로더는 더 이상 Nomad 클라이언트에서 사용할 수 있는 모든 환경 변수를 상속하지 않아요. 다운로더 하위 프로세스 환경은 Linux/macOS에서 다음과 같이 설정돼요:
TMPDIR=<path to task dir>/tmp
Windows에서 다음과 같이 설정돼요:
TEMP=<path to task dir>\tmp
PATH=<inherit $PATH>
HOMEPATH=<inherit $HOMEPATH>
HOMEDRIVE=<inherit $HOMEDRIVE>
USERPROFILE=<inherit $USERPROFILE>
Artifact 다운로더의 구성은 artifact 블록의 options 및 headers 필드를 통해 이루어져야 해요. 하위 호환성을 위해 set_environment_variables`를 설정하면 샌드박스가 Nomad 클라이언트의 지정된 환경 변수를 상속하도록 구성할 수 있어요.
파일시스템 격리 사용은 클라이언트 구성에서 disable_filesystem_isolation을 설정해 비활성화할 수 있어요.
Artifact 압축 해제 제한 (Artifact Decompression Limits)
Nomad 1.5.0은 이제 artifact 압축 해제에 대한 기본 제한을 설정해요. 단일 artifact 페이로드는 압축 해제 시 100GB와 4096개 파일로 제한돼요. 압축 해제 중 이러한 제한을 초과하는 artifact는 artifact 다운로더가 실패하게 해요. 이러한 제한은 클라이언트 artifact 구성에서 decompression_size_limit과 decompression_file_count_limit을 설정해 조정하거나 비활성화할 수 있어요.
데이터 센터 와일드카드 (Datacenter Wildcards)
Nomad 1.5.0에서 작업의 datacenters 필드는 다중 문자 매칭을 위한 와일드카드를 허용해요. 예를 들어 datacenters = ["dc*"]는 "dc"로 시작하는 모든 데이터 센터와 일치해요. datacenters의 기본값은 이제 ["*"]이므로 이 필드를 생략할 수 있어요.
* 문자는 더 이상 에이전트 구성의 datacenter 필드에서 유효한 문자가 아니에요. Nomad 1.5.0으로 업그레이드하기 전에 먼저 데이터센터 이름에 *가 있는 모든 작업을 업데이트했는지 확인한 다음 어떤 에이전트도 datacenter 필드 이름에 이 문자가 없는지 확인해야 해요.
서버 rejoin_after_leave(기본값: false) 이제 적용됨 (Server rejoin_after_leave (default: false) now enforced)
v1.5.0 이전의 모든 Nomad 버전은 서버 rejoin_after_leave 구성 옵션을 잘못 무시했어요. 이 버그는 Nomad 버전 v1.5.0에서 수정됐어요.
v1.5.0 이전에는 Nomad 서버 구성과 관계없이 rejoin_after_leave의 동작이 항상 true였지만, 문서는 기본값이 false라고 잘못 표시했어요.
클러스터 운영자는 명시적 leave 이벤트(예: nomad server force-leave)가 이제 이 구성과 일치하는 동작을 초래한다는 점을 알아야 하며, 버그 동작에 의도치 않게 의존하고 있지는 않은지 검토해야 해요.
Eval 브로커 메트릭 변경 (Changes to eval broker metrics)
메트릭 nomad.nomad.broker.total_blocked가 nomad.nomad.broker.total_pending으로 변경됐어요. 이 상태는 리더 브로커의 내부 상태를 참조하며, Nomad API의 관련 없는 평가 상태 "blocked"와 쉽게 혼동돼요.
더 이상 사용되지 않는 가십 키링 명령 제거됨 (Deprecated gossip keyring commands removed)
가십 키링 관리를 위해 사용되던 nomad operator keyring, nomad keyring, nomad operator keygen, nomad keygen 명령은 Nomad 1.4.0에서 더 이상 사용되지 않음을 표시했어요. Nomad 1.5.0에서 이 명령들이 제거됐어요. 가십 키링 관리는 nomad operator gossip keyring 명령을 사용해요.
일괄 작업의 평가 및 할당 가비지 컬렉션 (Garbage collection of evaluations and allocations for batch job)
1.5.0 이전 버전은 명시적으로 중지된 일괄 작업의 평가와 할당만 삭제하며, 이는 일괄 작업이 여러 번 실행될 때 Nomad의 메모리가 무한히 증가할 수 있어요.
Nomad 1.5.0은 일괄 작업의 할당과 평가가 수집되는 방식을 제어하는 새 서버 구성 batch_eval_gc_threshold을 도입해요.
기본 임계값은 24h이에요. 24시간보다 오래된 일괄 작업의 완료된 할당에 접근해야 한다면 Nomad를 업그레이드할 때 이 값을 높여야 해요.