리눅스

HashiCorp Vault와 Consul을 Docker 컨테이너로 구성하고 연동하는 방법

변군이글루 2025. 6. 17. 15:33
반응형

HashiCorp Vault와 Consul을 Docker 컨테이너로 구성하고 연동하는 방법

이 구성은 Vault의 스토리지 백엔드로 Consul을 사용하도록 설정합니다.

Vault의 백엔드(Storage Backend)는 Vault의 데이터를 저장하는 위치입니다.

 

구성 요약

  • Docker : 컨테이너 기반 배포
  • Vault : 비밀 관리 시스템
  • Consul : 서비스 디스커버리 및 Vault의 스토리지 백엔드

1. 디렉터리 구조 생성

mkdir -p ./vault-consul-docker/{vault/config,consul}
cd ./vault-consul-docker

2. Vault 설정파일 작성

sudo tee vault/config/vault.hcl > /dev/null <<EOF
storage "consul" {
  address = "http://consul:8500"
  path    = "vault/"
}

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

ui       = true
api_addr = "http://localhost:8200"
EOF

3. Docker Compose 파일 작성

sudo tee docker-compose.yaml > /dev/null <<EOF
services:

  consul:
    image: hashicorp/consul:latest
    container_name: consul
    command: "agent -dev -client=0.0.0.0"
    ports:
      - "8500:8500"
      - "8600:8600/udp"
    networks:
      - vault-net

  vault:
    image: hashicorp/vault:latest
    container_name: vault
    restart: unless-stopped
    cap_add:
      - IPC_LOCK
    entrypoint: ["vault", "server", "-config=/vault/config/vault.hcl"]
    volumes:
      - ./vault/config:/vault/config
    depends_on:
      - consul
    ports:
      - "8200:8200"
    networks:
      - vault-net
    healthcheck:
      test: ["CMD", "vault", "status", "-address=http://127.0.0.1:8200"]
      interval: 30s
      timeout: 10s
      retries: 5

networks:
  vault-net:
    driver: bridge
EOF

4. Vault와 Consul 컨테이너 시작

docker compose up -d

5. Vault 초기화 및 언실(unseal)

Vault CLI 진입

docker compose exec vault sh

Vault 초기화

export VAULT_ADDR=http://127.0.0.1:8200
vault operator init

Unseal 진행

vault operator unseal <Unseal Key 1>
vault operator unseal <Unseal Key 2>
vault operator unseal <Unseal Key 3>

로그인

vault login <Initial Root Token>

6. 웹 UI 확인

Vault UI 확인

http://localhost:8200

Consul UI 확인

http://localhost:8500

 

반응형