Files
obsidian/infra/vault.md

64 lines
3.4 KiB
Markdown

---
title: Vault 시크릿 관리
updated: 2026-03-12
---
## K3s 배포
HashiCorp Vault v1.21.2, K3s에 HA Raft 3노드로 배포 (Helm chart hashicorp/vault 0.32.0). namespace: vault. 스토리지: Longhorn 10Gi PVC. Unseal key 5개 (threshold 3), 키 파일: ~/vault-keys.json
## 접근
- UI/API: https://hcv.inouter.com
- 트래픽 흐름: BunnyCDN (pull zone: inouter, ID 5316471) → SafeLine WAF → [[apisix]] (라우트 hcv-inouter-com) → K3s Traefik (192.168.9.134/140/214:443) → vault-active:8200
- K3s Ingress: vault-ui (class traefik, TLS wildcard-inouter-com-tls)
- APISIX upstream: hcv-inouter-com (roundrobin, 3노드 443)
## Root Token
Vault root token은 만료 없음 (TTL: 0s)
## 접근 정책
접근 정책: infra-read(읽기 전용), infra-admin(읽기/쓰기)
## 시크릿 구조 (KV v2)
vault.inouter.com(Synology)에서 hcv.inouter.com(K3s)으로 이관 완료 (2026-03-12). 카테고리별 정리:
| 카테고리 | 경로 | 내용 |
|----------|------|------|
| infra/ | apisix, argocd, cert-manager, cf-tunnel-manager, google/eab, k8s/infra-tool, safeline, ssh, ssh/id_ed25519, tailscale | 인프라 서비스 |
| cloud/ | alibaba, aws, backblaze, backblaze/restic, bunnycdn, cloudflare, cloudflare/r2, linode, vultr, zenlayer | 클라우드 프로바이더 |
| database/ | postgres, redis, bunnydb/cs-blocklist | DB |
| apps/ | gitea, gitea/registry, myapp, n8n, nocodb, telegram-ai-support, waf-saas | 자체 앱/서비스 |
| ai/ | brave, context7, google/drive-mcp, openai, openrouter, pinecone, testsprite, vertex | AI/LLM API |
| messaging/ | discord/bot, discord/nocodb-webhook, mailgun/api-key, mailgun/smtp, telegram | 메시징/알림 |
| company/ | bank, info, ironclad, korbit, koreaexim, popbill | 회사/비즈니스 |
| product/ | irondesk/ton-wallet, irondesk/tron | 제품 관련 |
| domain/ | globalping, maxmind, namecheap, namecheap/api, namecheap/api-server, namecheap/deposit-api, namecheap/registrant | 도메인/DNS |
| auth/ | api-keys/openai, api-keys/stripe, google/ca/external-account-key, google/ca/service-account | 인증 |
## SSH CA (Signed Certificates)
Vault SSH Secrets Engine (ssh-client-signer/) 활성화. CA 키: ed25519. 역할: admin (allowed_users: root,kaffa, TTL 8h, max 24h).
CA 등록 완료 서버:
- [[infra-hosts|apisix-osaka]] (100.108.39.107) — root
- [[infra-hosts|incus-jp1]] (100.109.123.1) — kaffa
- [[infra-hosts|incus-kr1]] (100.84.111.28) — kaffa
- [[infra-hosts|incus-kr2]] (100.119.109.41) — kaffa
- [[infra-hosts|sandbox-tokyo]] (100.79.87.48) — root
미등록: jump-seoul (접속 불가), safeline-osaka (응답 없음)
자동화: ~/.ssh/vault-sign.sh가 인증서 만료 시 자동 재발급. ~/.ssh/config에 Match exec로 연동. `ssh apisix-osaka` 등 일반 SSH처럼 사용 가능.
## MCP 서버
vault-mcp-server v0.2.0 (hashicorp/vault-mcp-server:0.2.0 Docker 이미지). K3s vault namespace에 Deployment로 배포. streamable-http 모드, 엔드포인트: https://hcv.inouter.com/mcp. 내부 통신: vault-active.vault.svc.cluster.local:8200. token은 Secret vault-mcp-token에 저장. Claude Code MCP 설정: type http, url https://hcv.inouter.com/mcp. K3s Ingress vault-mcp가 /mcp 경로를 vault-mcp-server Service(8080)로 라우팅. 로컬 바이너리도 /usr/local/bin/vault-mcp-server에 설치됨.
## 관련 서비스
[[cert-manager]], [[gitea]], [[irondesk]] 등에서 Vault 시크릿을 참조