통합 스토리지(Raft)를 사용한 고가용성 Vault Enterprise 재해 복구 클러스터
통합 스토리지(Raft)를 사용한 고가용성 Vault Enterprise 재해 복구 클러스터
중요 참고: 이 차트는 Helm 2와 호환되지 않습니다. 이 차트에는 Helm 3.6+를 사용하세요.
다음은 Vault Helm을 사용해 재해 복구 클러스터를 만드는 예시입니다. 재해 복구에 대한 자세한 내용은 공식 문서를 참고하세요. 라이선스 구성은 Running Vault Enterprise를 참고하세요.
본문
프라이머리 클러스터 (Primary cluster)
먼저 프라이머리 클러스터를 만듭니다.
helm install vault-primary hashicorp/vault \
--set='server.image.repository=hashicorp/vault-enterprise' \
--set='server.image.tag=2.0.4-ent' \
--set='server.ha.enabled=true' \
--set='server.ha.raft.enabled=true'
다음으로 vault-primary-0 파드를 초기화·봉인 해제합니다.
kubectl exec -ti vault-primary-0 -- vault operator init
kubectl exec -ti vault-primary-0 -- vault operator unseal
마지막으로 나머지 파드를 Raft 클러스터에 조인하고 봉인 해제합니다. 파드는 Helm 차트가 제공하는 내부 서비스로 직접 통신해야 하므로 그렇게 구성합니다.
kubectl exec -ti vault-primary-1 -- vault operator raft join http://vault-primary-0.vault-primary-internal:8200
kubectl exec -ti vault-primary-1 -- vault operator unseal
kubectl exec -ti vault-primary-2 -- vault operator raft join http://vault-primary-0.vault-primary-internal:8200
kubectl exec -ti vault-primary-2 -- vault operator unseal
Raft 클러스터가 성공적으로 초기화되었는지 확인하려면 다음을 실행합니다. 먼저 vault-primary-0 파드에서 루트 토큰으로 로그인합니다.
kubectl exec -ti vault-primary-0 -- vault login
다음으로 모든 raft 피어를 나열합니다.
$ kubectl exec -ti vault-primary-0 -- vault operator raft list-peers
Node Address State Voter
---- ------- ----- -----
a1799962-8711-7f28-23f0-cea05c8a527d vault-primary-0.vault-primary-internal:8201 leader true
e6876c97-aaaa-a92e-b99a-0aafab105745 vault-primary-1.vault-primary-internal:8201 follower true
4b5d7383-ff31-44df-e008-6a606828823b vault-primary-2.vault-primary-internal:8201 follower true
세컨더리 클러스터 (Secondary cluster)
프라이머리 클러스터를 만들었으니 다음으로 세컨더리 클러스터를 만들고 재해 복구 복제를 활성화합니다.
helm install vault-secondary hashicorp/vault \
--set='server.image.repository=hashicorp/vault-enterprise' \
--set='server.image.tag=2.0.4-ent' \
--set='server.ha.enabled=true' \
--set='server.ha.raft.enabled=true'
다음으로 vault-secondary-0 파드를 초기화·봉인 해제합니다.
kubectl exec -ti vault-secondary-0 -- vault operator init
kubectl exec -ti vault-secondary-0 -- vault operator unseal
마지막으로 나머지 파드를 Raft 클러스터에 조인하고 봉인 해제합니다.
kubectl exec -ti vault-secondary-1 -- vault operator raft join http://vault-secondary-0.vault-secondary-internal:8200
kubectl exec -ti vault-secondary-1 -- vault operator unseal
kubectl exec -ti vault-secondary-2 -- vault operator raft join http://vault-secondary-0.vault-secondary-internal:8200
kubectl exec -ti vault-secondary-2 -- vault operator unseal
Raft 클러스터가 성공적으로 초기화되었는지 확인하려면 다음을 실행합니다. 먼저 vault-secondary-0 파드에서 루트 토큰으로 로그인합니다.
kubectl exec -ti vault-secondary-0 -- vault login
다음으로 모든 raft 피어를 나열합니다.
$ kubectl exec -ti vault-secondary-0 -- vault operator raft list-peers
Node Address State Voter
---- ------- ----- -----
a1799962-8711-7f28-23f0-cea05c8a527d vault-secondary-0.vault-secondary-internal:8201 leader true
e6876c97-aaaa-a92e-b99a-0aafab105745 vault-secondary-1.vault-secondary-internal:8201 follower true
4b5d7383-ff31-44df-e008-6a606828823b vault-secondary-2.vault-secondary-internal:8201 follower true
프라이머리에서 재해 복구 복제 활성화
초기 클러스터를 설정했으니 이제 재해 복구 복제를 위해 구성할 수 있습니다.
먼저 프라이머리 클러스터에서 복제를 활성화합니다.
kubectl exec -ti vault-primary-0 -- vault write -f sys/replication/dr/primary/enable primary_cluster_addr=https://vault-primary-active:8201
다음으로 세컨더리 클러스터가 복제를 구성하는 데 사용할 토큰을 만듭니다.
kubectl exec -ti vault-primary-0 -- vault write sys/replication/dr/primary/secondary-token id=secondary
출력의 토큰은 세컨더리 클러스터를 구성할 때 사용됩니다.
세컨더리에서 재해 복구 복제 활성화
마지막 단계에서 만든 토큰을 사용해 세컨더리에서 재해 복구 복제를 활성화합니다.
kubectl exec -ti vault-secondary-0 -- vault write sys/replication/dr/secondary/enable token=<TOKEN FROM PRIMARY>
마지막으로, Kubernetes가 다시 스케줄한 후 프라이머리 봉인 해제 토큰으로 나머지 세컨더리 파드를 삭제·봉인 해제합니다.
kubectl delete pod vault-secondary-1
kubectl exec -ti vault-secondary-1 -- vault operator unseal <PRIMARY UNSEAL TOKEN>
kubectl delete pod vault-secondary-2
kubectl exec -ti vault-secondary-2 -- vault operator unseal <PRIMARY UNSEAL TOKEN>
출처: 문서