hashicorp사의 Vault(볼트) - Tutorial-Docker - 4
목차
- 들어가며
- Vault Docker 환경 구성
- 참고문헌
들어가며
본 게시물은 Vault 공식 문서의 내용과 필자의 생각을 정리하였다. Vault는 무엇인지, 어디에 사용하는지, 왜 사용하는지, 어떻게 사용하는지 서술한다. Vault를 처음 접하는 인원은 Vault의 흐름과 골격을 이해할 수 있는 시간을 갖는다. 또한 Vault를 실질적으로 사용해보는 시간을 갖는다. Vault는 Dev 서버 모드를 지원한다. Dev 서버 모드는 사전 설정이 되어있는 데모 서버라고 생각하면 좋다. 사용자는 해당 데모 서버에서 Vault를 학습할 수 있다. 시간이 괜찮으면 Vault HA를 구성한다(시간이 있으면...).
본 게시물의 시리즈는 다음과 같다.
- hashicorp사의 Vault(볼트) - 개요 - 1
- hashicorp사의 Vault(볼트) - Tutorial-Dev(With-커맨드) - 2
- hashicorp사의 Vault(볼트) - Tutorial-Real(With-REST-API) - 3
- hashicorp사의 Vault(볼트) - Tutorial-Docker - 4
- hashicorp사의 Vault(볼트) - Tutorial-HA - 5
- hashicorp사의 Vault(볼트) - Java-Spring With Vault - 6
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