Consul KV 스토어에 키/값 데이터 저장하고 조회하기
Consul KV 스토어에 키/값 데이터 저장하고 조회하기
Consul에는 분산 키/값(KV) 스토어가 내장돼 있어서, 애플리케이션 설정 같은 운영 데이터를 중앙에서 동적으로 관리할 수 있어요. 서비스 간에 공유해야 하는 작은 설정값들을 Consul 한곳에 모아두면, 각 서버에 흩어진 설정 파일을 일일이 고치지 않아도 되죠. 이번에는 consul kv CLI로 KV 스토어에 데이터를 넣고, 조회하고, 지우는 과정을 하나씩 따라가 볼게요.
CLI 명령은 consul kv로 시작하고, HTTP API로는 /kv 엔드포인트를 사용해요.
본문
KV 스토어의 키는 redis/config/minconns처럼 슬래시(/)로 계층을 표현하는 것이 일반적이에요. 같은 프리픽스를 공유하는 키들을 묶어서 폴더처럼 다룰 수 있기 때문에, 설정 항목을 주제별로 정리하기 편하답니다.
KV 스토어에 데이터 추가하기
값을 새로 넣거나 기존 값을 갱신할 때는 consul kv put 명령을 사용해요. 명령 다음에 오는 첫 번째 항목이 키, 두 번째 항목이 값이에요.
$ consul kv put redis/config/minconns 1
Success! Data written to: redis/config/minconns
다음 예시에서는 키가 redis/config/maxconns이고 값이 25로 설정돼요.
$ consul kv put redis/config/maxconns 25
Success! Data written to: redis/config/maxconns
다음 예시에서는 명령에 flags 값 42가 포함돼 있어요. 키는 64비트 정수 플래그 값을 지원하는데, 이 값은 Consul 내부에서 사용되지 않고 클라이언트가 KV 쌍에 메타데이터를 붙이는 용도로 쓸 수 있어요.
$ consul kv put -flags=42 redis/config/users/admin zaphod
Success! Data written to: redis/config/users/admin
KV 스토어에서 데이터 조회하기
특정 키의 값을 조회할 때는 consul kv get 명령을 사용해요.
$ consul kv get redis/config/minconns
1
flags로 붙여둔 메타데이터까지 함께 보려면 -detailed 명령줄 플래그를 사용해요.
$ consul kv get -detailed redis/config/users/admin
CreateIndex 14
Flags 42
Key redis/config/users/admin
LockIndex 0
ModifyIndex 14
Session -
Value zaphod
스토어에 있는 모든 키를 나열하려면 recurse 옵션을 사용해요. 결과는 사전식(lexicographical) 순서로 반환돼요.
$ consul kv get -recurse
redis/config/maxconns:25
redis/config/minconns:1
redis/config/users/admin:zaphod
데이터 삭제하기
특정 키의 값을 지우려면 consul kv delete 명령을 사용해요.
$ consul kv delete redis/config/minconns
Success! Deleted key: redis/config/minconns
KV 스토어의 키는 평면(flat) 구조로 저장되지만, 같은 프리픽스를 공유하는 키들을 -recurse 플래그로 폴더나 하위 폴더처럼 묶어서 한 번에 다룰 수 있어요.
다음 예시는 -recurse 옵션으로 redis 프리픽스를 가진 모든 키를 삭제해요.
$ consul kv delete -recurse redis
Success! Deleted keys with prefix: redis
⚠️ 보안 경고: 기본적으로 Consul은 v1.22.0부터 키에 경로 이스케이프(path escapes), 디렉터리 이스케이프, 앞쪽 공백, 뒤쪽 공백을 허용하지 않아요. 이런 형식의 기존 키가 있어서 그대로 쓰고 싶다면, Consul 에이전트 구성의
disable_kv_key_validation파라미터를true로 설정하면 돼요. 레거시 호환을 위해 비활성화할 특별한 이유가 없다면, 검증되는(validated) 키를 쓰는 것을 강력히 권장해요.
더 알아보기
- Consul KV CLI 문서 —
consul kv명령의 전체 옵션 - Consul KV API 문서 —
/kvHTTP 엔드포인트 - Consul 서비스 디스커버리 개요 — KV 스토어와 함께 쓰는 서비스 카탈로그