서비스로 Vault 실행

서비스로 Vault 실행 (Run Vault as a service)

명령줄에서 수동으로 시작하는 대신 서비스가 Vault를 자동으로 시작하도록 구성하는 방법을 다룹니다.

출처: 문서

본문

명령줄에서 Vault 서버를 수동으로 시작하는 대신, 서비스를 구성해 Vault를 자동으로 시작할 수 있어요.

시작하기 전에

1단계: 새 서비스 만들기

Linux shell (Ubuntu 22.04에서 테스트한 예제)

다음 서비스 정의는 Vault GitHub 레포지토리의 vault.service 예제를 더 단순화한 버전입니다: vault/.release/linux/package/usr/lib/systemd/system/vault.service

  1. VAULT_CONFIG 환경 변수를 Vault 구성 디렉터리로 설정해요. 기본 구성 디렉터리는 /etc/vault.d입니다.
$ VAULT_CONFIG=/etc/vault.d
  1. Vault 바이너리 경로를 확인해요: $ VAULT_BINARY=$(which vault)

  2. Vault 바이너리를 사용하는 vault.service라는 systemd 서비스를 만들어요.

$ sudo tee /lib/systemd/system/vault.service <<EOF
[Unit]
Description="HashiCorp Vault"
Documentation=https://developer.hashicorp.com/vault/docs
Requires=network-online.target
After=network-online.target
StartLimitIntervalSec=60
StartLimitBurst=3

[Service]
User=vault
Group=vault
ProtectSystem=full
ProtectHome=read-only
PrivateTmp=yes
PrivateDevices=yes
SecureBits=keep-caps
AmbientCapabilities=CAP_IPC_LOCK
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
NoNewPrivileges=yes
ExecStart=${VAULT_BINARY} server -config=${VAULT_CONFIG}/vault.hcl
ExecReload=/bin/kill --signal HUP $MAINPID
KillSignal=SIGINT
TimeoutStopSec=5
KillMode=mixed
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
LimitMEMLOCK=infinity
EOF
  1. /lib/systemd/system/vault.service의 권한을 644로 바꿔요.
$ sudo chmod 644 /lib/systemd/system/vault.service

PowerShell

Windows용 Vault 바이너리는 Windows Service Application API를 지원하지 않아요. Vault를 서비스로 실행하려면 Windows 서비스 래퍼를 사용해야 합니다. 환경에 맞는 래퍼를 쓸 수 있지만, 가장 쉬운 것은 nssm이에요.

  1. nssm을 수동으로 다운로드·설치하거나 Chocolatey로 패키지를 설치해요.
choco install nssm
  1. VAULT_HOME 환경 변수를 원하는 Vault 홈 디렉터리로 설정해요. 예: c:\Program Files\Vault
$env:VAULT_HOME = "${env:ProgramFiles}\Vault"
  1. nssm으로 새 Windows 서비스를 만들어요.
nssm install MS_VAULT "${env:VAULT_HOME}\vault.exe"
  1. Vault 설치의 작업 디렉터리를 설정해요.
nssm set MS_VAULT AppDirectory "${env:VAULT_HOME}" ; `
nssm set MS_VAULT AppParameters "server -config Config\vault.hcl"
  1. Vault 런타임 파라미터를 정의하는데, Vault 구성 파일의 상대 경로(예: Config\vault.hcl)를 가진 -config 플래그를 포함해요.
nssm set MS_VAULT AppDirectory "${env:VAULT_HOME}" ; `
nssm set MS_VAULT AppParameters "server -config Config\vault.hcl"
  1. "Services" 관리 콘솔의 표시 이름과 설명을 설정해요.
nssm set MS_VAULT DisplayName "Vault Service" ; `
nssm set MS_VAULT Description "Vault server running as a service"
  1. 서비스의 시작 유형을 설정해요. 서비스가 예상대로 동작하는지 확인할 때까지 시작을 "Manual"로 설정하는 것을 권장해요.
nssm set MS_VAULT Start SERVICE_DEMAND_START
  1. stdout과 stderr의 정보를 로깅 디렉터리(예: $ {env:VAULT_HOME}\Logs) 아래 파일로 보내도록 서비스를 구성해요.
nssm set MS_VAULT AppStdout "${env:VAULT_HOME}\Logs\vault-stdout.log" ; `
nssm set MS_VAULT AppStderr "${env:VAULT_HOME}\Logs\vault-error.log"
  1. 선택적으로 AppEnvironmentExtra 파라미터로 서비스 환경의 관련 변수를 설정할 수 있어요. 예를 들어 VAULT_ADDR 환경 변수를 설정하려면:
nssm set MS_VAULT AppEnvironmentExtra `$env:VAULT_ADDR=https://localhost:8200
  1. nssm으로 Vault 서비스 설정을 확인해요.
nssm dump MS_VAULT | Foreach {$_ -replace '.+nssm\.exe ','' }

2단계: 새 서비스 시작

Linux shell

  1. systemd 구성을 다시 로드해요.
$ sudo systemctl daemon-reload
  1. Vault 서비스를 시작해요.
$ sudo systemctl start vault.service
  1. 서비스 상태를 확인해요.
$ systemctl status vault.service

vault.service - "HashiCorp Vault"
   Loaded: loaded (/lib/systemd/system/vault.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2024-09-05 13:58:45 UTC; 4s ago
      Docs: https://developer.hashicorp.com/vault/docs
   Main PID: 3145 (vault)
      Tasks: 8 (limit: 2241)
   Memory: 23.6M
      CPU: 200ms
   CGroup: /system.slice/vault.service
            └─3145 /usr/bin/vault server -config=/etc/vault.d/vault.hcl

PowerShell — 서비스를 관리하려면 Powershell 명령이나 래퍼 명령을 사용해요.

서비스를 만들고 나면 표준 *-Service cmdlet 또는 관련 래퍼의 해당 명령으로 제어할 수 있어요. 예를 들어 nssm으로 서비스를 제어하려면 nssm start MS_VAULT를 사용해요.

  1. Vault 서비스를 시작해요.
Start-Service -Name MS_VAULT
  1. 서비스 상태를 확인해요.
Get-Service -Name MS_VAULT

Status   Name               DisplayName
------   ----               -----------
Running  MS_VAULT           Vault Service

3단계: 서비스가 실행 중인지 확인

서비스가 실행 중이고 Vault 서비스를 사용할 수 있는지 확인하려면 브라우저에서 기본 주소인 http://localhost:8200으로 Vault GUI를 열어봐요.

관련 튜토리얼

다음 튜토리얼은 Vault 설치와 프로덕션 클러스터 배포에 대한 추가 가이드를 제공해요.

더 알아보기 (Learn more)