Consul 키/값(KV) 저장소 개요
Consul 키/값(KV) 저장소 개요
Consul KV는 Consul의 핵심 기능으로 Consul 에이전트와 함께 설치되며, 설치 즉시 합리적인 기본값을 갖고 있어요. 구성 매개변수와 메타데이터를 저장하는 데 주로 쓰이는 기본적인 KV 저장소예요.
출처: 문서
본문
Consul KV는 Consul의 핵심 기능이며 Consul 에이전트와 함께 설치됩니다. 에이전트와 함께 설치되면 Consul KV는 합리적인 기본값을 갖습니다. Consul KV를 사용하면 인덱싱된 객체를 저장할 수 있지만, 주요 용도는 구성 매개변수와 메타데이터를 저장하는 것입니다. 기본적인 KV 저장소이며 DynamoDB와 같은 완전한 기능을 갖춘 데이터스토어로 설계된 것은 아닙니다.
Consul KV 데이터스토어는 서버에 위치하지만 모든 클라이언트 또는 서버 에이전트가 액세스할 수 있습니다. 기본적으로 통합된 RPC 기능을 사용하면 클라이언트가 키/값 읽기 및 쓰기를 포함한 요청을 서버로 전달할 수 있습니다. Consul의 핵심 설계의 일부로 모든 서버에 걸쳐 자동 데이터 복제가 허용됩니다. 서버 쿼럼이 있으면 중단이 발생할 때 데이터 손실 위험이 줄어듭니다.
Consul KV를 사용해 본 적이 없다면 HashiCorp의 이 Getting Started 튜토리얼을 완료하세요.
참고 (Note)
Consul KV API, CLI, UI는 이제 기능이 완성된 것으로 간주됩니다. 향후 릴리스에서 새로운 기능 개발은 계획되어 있지 않습니다.
KV 저장소 액세스 (Accessing the KV store)
consul kv CLI 하위 명령, HTTP API, Consul UI로 KV 저장소에 액세스합니다. 액세스를 제한하려면 ACL을 활성화하고 구성하세요. ACL 시스템이 부트스트랩되면 사용자와 서비스는 데이터 저장소에 액세스하기 위해 KV 권한이 있는 유효한 토큰이 필요합니다. 여기에는 읽기 전용 액세스도 포함됩니다. 제한된 권한으로 토큰을 만들 것을 권장합니다. 예를 들어, 개발자가 자신의 애플리케이션과 관련된 값을 업데이트할 수 있도록 특정 키에 대한 쓰기 권한이 있는 토큰을 만들 수 있습니다.
데이터스토어 자체는 데이터 디렉터리의 Consul 서버에 위치합니다. 완전한 중단의 경우 데이터가 손실되지 않도록 consul snapshot 기능을 사용하여 데이터를 백업하세요.
Consul KV 사용 (Using Consul KV)
객체는 Consul에 불투명하므로 키/값 항목에 저장되는 객체의 유형에 대한 제한이 없습니다. 객체에 대한 주요 제한은 최대 크기 512 KB입니다. 최대 객체 크기와 주요 사용 사례로 인해 추가 저장소가 필요하지 않아야 합니다. 일반적인 크기 조정 권장 사항이 보통 충분합니다.
키는 객체와 마찬가지로 유형에 의해 제한되지 않으며 모든 문자를 포함할 수 있습니다. 그러나 [a-zA-Z0-9-._~]와 같은 URL 안전 문자를 사용할 것을 권장하며, 데이터를 구성하는 데 도움이 되는 /는 예외입니다. 참고로 /는 다른 문자처럼 취급되며 파일 시스템에 고정되지 않습니다. 즉, 키에 /를 포함해도 디렉터리 구조에 고정되지 않습니다. 이 모델은 Amazon S3 버킷과 유사합니다. 그러나 /는 데이터를 구성하고 데이터 저장소 내에서 재귀적으로 검색할 때 여전히 유용합니다. 또한 API와 셸 스크립트에서 문제를 일으킬 수 있으므로 *, ?, ', % 사용을 피하는 것을 권장합니다.
Consul KV에 정책을 적용하기 위해 Sentinel 사용 (Using Sentinel to apply policies for Consul KV)
Enterprise
이 기능은 HashiCorp Cloud Platform (HCP) 또는 자체 관리형 Consul Enterprise가 필요합니다.
또한 Sentinel을 코드로서의 정책(Policy-as-code) 프레임워크로 사용하여 고급 키-값 저장소 액세스 제어 정책을 정의할 수 있습니다. Sentinel 정책은 Consul의 ACL 시스템을 정적인 "read", "write", "deny" 정책 너머로 확장하여 완전한 조건부 로직과 외부 시스템 통합을 지원합니다. 높은 수준의 Sentinel 개념은 Sentinel 문서를 참조하세요.
Consul에서 Sentinel을 시작하려면 Sentinel 문서 또는 Consul 문서를 참조하세요.
Consul KV 확장 (Extending Consul KV)
Consul Template
구성 관리 프로세스의 일부로 Consul KV를 사용할 계획이라면, KV의 값 업데이트를 기반으로 구성을 업데이트하는 방법에 대한 Consul Template 튜토리얼을 검토하세요. Consul Template은 Go Template을 기반으로 하며 Consul 키의 값 변경 시 일련의 스크립트화된 작업을 시작할 수 있습니다.
Watches
Consul watches를 사용하여 Consul KV를 확장하세요. Watches는 업데이트를 위해 데이터를 모니터링하는 방법입니다. 업데이트가 감지되면 외부 핸들러가 호출됩니다. KV 저장소와 함께 watches를 사용하려면 key watch 유형을 사용하세요.
자세한 내용은 Consul watches 문서를 참조하세요.
Consul Sessions
Consul sessions를 사용하여 Consul KV로 분산 잠금을 구축하세요. Sessions는 노드, 상태 검사, 키/값 데이터 사이의 바인딩 레이어 역할을 합니다. KV API는 acquire 및 release 작업을 지원합니다. acquire 작업은 Check-And-Set 작업처럼 작동합니다. 성공 시 Consul은 키를 업데이트하고 LockIndex를 증가시킨 다음 세션 값을 업데이트하여 잠금을 보유한 세션을 반영합니다. 자세한 내용은 K/V 통합 문서를 참조하세요.
Consul sessions를 사용하는 방법을 배우려면 다음 튜토리얼을 참조하세요:
- Application leader election - Consul의 세션 메커니즘과 Consul 키/값 저장소를 사용하여 서비스 인스턴스에 대한 클라이언트 측 리더 선거를 구축하는 프로세스를 배웁니다.
- Sessions and distributed locks overview - 분산 세마포어를 구축합니다.
Vault
Consul KV를 Vault의 백엔드로 사용할 계획이라면 Configure Vault cluster with Integrated Storage 튜토리얼을 참조하세요.