개발관련/삽질

hashicorp사의 Vault(볼트) - Tutorial-Docker - 4

동팡 2021. 7. 6. 00:03

목차

  • 들어가며
  • Vault Docker 환경 구성
  • 참고문헌

 

들어가며

본 게시물은 Vault 공식 문서의 내용과 필자의 생각을 정리하였다. Vault는 무엇인지, 어디에 사용하는지, 왜 사용하는지, 어떻게 사용하는지 서술한다. Vault를 처음 접하는 인원은 Vault의 흐름과 골격을 이해할 수 있는 시간을 갖는다. 또한 Vault를 실질적으로 사용해보는 시간을 갖는다. Vault는 Dev 서버 모드를 지원한다. Dev 서버 모드는 사전 설정이 되어있는 데모 서버라고 생각하면 좋다. 사용자는 해당 데모 서버에서 Vault를 학습할 수 있다. 시간이 괜찮으면 Vault HA를 구성한다(시간이 있으면...). 

 

본 게시물의 시리즈는 다음과 같다.

 

Vault Docker 환경 구성

[개요]

yum 패키지 설치 기능을 사용하여 Vault 환경을 구성할 수 있다. 이번에는 Docker를 활용하여 Vault 환경을 구성한다. 해당 환경을 구성하기 위해 Docker는 당연히 사용하며, Docker-Compose까지 사용한다. 디렉토리의 구조는 아래와 같다. 환경 구성 후 가동 및 테스트 API만 호출한다.

vault
 |
 -- data  
 |
 -- config
 |    | 
 |    -- config.hcl
 |
 -- docker-compose.yml

 

[Docker 설치 및 기본 설정]

Docker는 별도의 설정을 하지 않을 경우 root 권한으로만 가동할 수 있다. 아래와 같이 설정하면 user 권한에서 Docker를 제어할 수 있다. 

$yum install docker
$yum install docker-compose

$groupadd docker
$usermod -aG docker $username
$sudo systemctl start docker
$sudo chmod 666 /var/run/docker.sock

Docker 명령어 확인 및 Vault 최신 이미지를 갖고온다. 

$docker ps -a

$docker pull vault

 

[Vault - Config]

 

#config.hcl

storage "raft" {
  path = "/vault/file"#vault dir in docker
  node_id = "node1"
}

listener "tcp" {
  address = "0.0.0.0:8200"
  tls_disable = "true"
}

api_addr="http://127.0.0.1:8200"
cluster_addr="https://127.0.0.1:8201"
ui = true

참고로 Listen address를 0.0.0.0을 설정해야 정상 가동할 수 있다.

 

[Vault - docker-comopse.yml]

#docker_compose.yml

version: "2"

services:
  vault:
	image: vault:latest
	container_name: vault
	volumes:
	  - ./vault/config:/vault/config
	  - ./vault/data:/vault/data
	ports:
	  - 8200:8200
	cap_add:
	  - IPC_LOCK
	command: vault server -config=/vault/config/config.hcl

 

[Vault - Docker 구동 및 테스트]

$docker-compose up -d

$curl http://127.0.0.1:8200/v1/sys/init | jq

//응답
{"initialized":false}

위의 응답은 정상적인 반환문이다. 

Vault 서버의 초기화 작업($vault operator init)을 하지 않았기 때문에 반환문의 값은 false이다. 

 

참고문헌

https://blog.exxeta.com/en/2019/12/20/setup-hashicorp-vault-on-docker/
https://stackoverflow.com/questions/50031086/why-does-vault-by-hashicorp-require-the-ipc-lock-capability-to-be-enabled
https://stackoverflow.com/questions/45171564/using-vault-with-docker-compose-file
https://hub.docker.com/_/vault
https://github.com/hashicorp/vault/issues/441