Vault 클러스터 자동 업그레이드하기

Vault 클러스터 자동 업그레이드하기

Enterprise

적절한 Vault Enterprise 라이선스가 필요합니다.

통합 스토리지를 사용하는 Vault Enterprise를 운영하는 운영자는 자동 업그레이드(automated upgrades)를 사용해 클러스터에서 현재 실행 중인 Vault 버전을 자동으로 업그레이드할 수 있습니다. 이 업그레이드를 수행하는 방법은 몇 가지가 있으며, 업그레이드할 버전을 제어할 수도 있습니다. 추가 구성 없이도 Vault는 클러스터의 각 노드가 실행 중인 Vault 버전을 확인합니다. 블루/그린(blue/green) 방식의 배포를 원한다면, Vault는 현재 어떤 Vault 버전이 실행 중인지와 관계없이 사용자가 선택한 버전을 사용합니다.

구성

Vault의 storage 구성 스탠자에 새 키 autopilot_upgrade_version를 추가할 수 있습니다. 이 키의 값은 선택한 SemVer 호환 버전 문자열입니다. 버전 문자열이 있으면 자동 업그레이드를 위해 현재 실행 중인 Vault 버전을 덮어씁니다.

동작 방식(Mechanics)

Vault의 내장 버전을 사용하든 직접 선택한 버전을 사용하든, 자동 업그레이드를 수행하는 방식은 동일합니다.

Vault 클러스터가 실행 중이고 갱신된 Vault 버전을 가진 새 노드가 클러스터에 합류하면, Vault 내부의 Autopilot 하위 시스템은 최신 Vault 버전을 실행하는 노드 수가 기존 노드 수보다 같거나 많아질 때 새 버전 노드를 투표자(voter)로 승격합니다. 그런 다음 Vault는 이전 버전의 노드를 비투표자(non-voter)로 강등합니다. 마지막으로 리더십이 이전 리더에서 최신 Vault 버전을 실행하는 무작위로 선택된 노드로 이전되고, 사용자가 클러스터에서 이전 노드를 제거할 때까지 기다립니다. Autopilot 죽은 서버 정리(dead server cleanup)는 활성화되면 비정상으로 간주되는 노드를 Raft 클러스터에서 자동으로 제거한다는 점을 알아 두세요.

아래는 Autopilot의 자동 업그레이드 상태 머신을 보여 주는 순서도입니다.

Automated Upgrade State Machine

자동 업그레이드의 상태는 Autopilot 상태 API 엔드포인트를 조회해 모니터링할 수 있습니다.

예시

Vault의 내장 버전 사용하기

이것은 자동 업그레이드를 수행하는 가장 쉬운 방법입니다. 구성이 필요 없고, 자동 업그레이드가 기본적으로 활성화되어 있습니다.

블루/그린 방식 배포 사용하기

기존 클러스터의 autopilot_upgrade_version 구성 키에 1.11.0-release.1 같은 값을 지정하세요. 새 노드 세트를 배포할 준비가 되면 새 노드에 1.11.0-release.2를 지정하세요. 클러스터에 갱신된 노드 세트를 배포해야 할 때마다 마지막 숫자를 증가시키면 됩니다.

Autopilot은 업그레이드 버전을 파싱할 때 엄격한 시맨틱 버저닝을 사용한다는 점을 알아 두는 것이 중요합니다. 즉, 위 예시에서 -release.1은 시맨틱 버저닝 용어로 프리릴리스 버전(pre-release version) 으로 간주됩니다. 프리릴리스 버전은 패치 버전 뒤에 오는 하이픈 -으로 표시됩니다. 이는 패치 버전 또는 프리릴리스 버전 뒤에 오는 더하기 기호 +로 표시되는 빌드 메타데이터(build metadata) 와 의미상 다릅니다. 빌드 메타데이터는 버전을 파싱할 때 무시되지만 프리릴리스 버전은 무시되지 않습니다. 몇 가지 예시가 있는 표가 이를 설명하는 데 도움이 될 것입니다.

현재 업그레이드 버전 새 노드 업그레이드 버전 같음? 업그레이드가 일어나나요? 이유
1.11.0 1.11.0 예 아니요 버전이 같음
1.11.0-release.1 1.11.0-release.2 아니요 예 새 노드 버전이 현재 버전보다 큼
1.11.0-release.1 1.11.1 아니요 예 새 노드 버전이 현재 버전보다 큼
1.11.0 1.11.0-release.1 아니요 아니요 새 노드 버전이 현재 버전보다 작음
1.11.0+release.1 1.11.0+release.2 예 아니요 release.1와 release.2는 빌드 메타데이터이며 버전 비교 시 무시됨
1.11.0-release.1+123 1.11.0-release.1+456 예 아니요 버전이 같고, 빌드 메타데이터는 무시됨

출처: 문서