Commit Graph

180 Commits

Author SHA1 Message Date
kaffa
afd2935ea4 infra/network: add multus.md (Multus CNI + storage-205 NAD)
Document Multus CNI + Whereabouts IPAM deployment on k3s, including:
- k3s path peculiarities (symlink-based multicall binary vs thick daemonset chroot)
- /opt/cni/bin real-directory workaround with all plugin binaries
- multus-shim/passthru symlinks to k3s CNI dir
- storage-205 NAD for Longhorn 2.5G storage network (ens2, MTU 9000, whereabouts .240-.254)
2026-04-19 13:39:34 +09:00
kappa
c1a9e84127 crowdsec: Vector _msg 표준 nginx combined 통일, 커스텀 파서 제거
- Vector transform에서 Traefik JSON → 표준 nginx combined _msg 변환
- APISIX 서울도 _msg 재구성 (비표준 → 표준 nginx combined)
- custom/apisix-logs 파서 제거, nginx-logs 하나로 통일
- CrowdSec VictoriaLogs Traefik acquisition type: nginx로 변경
2026-04-17 07:30:22 +09:00
kappa
e9ca6c7917 crowdsec: Discord 알림 설정 추가 (2026-04-17) 2026-04-17 07:12:17 +09:00
kappa
ba8b4b160e crowdsec: 화이트리스트/파서 설정 변경사항 반영 (2026-04-17)
- crowdsecurity/whitelists 파서 설치 (192.168.9.1 false positive 해결)
- custom/tailscale-whitelist 추가 (100.64.0.0/10)
- custom/apisix-logs 파서 추가 (서울 APISIX 비표준 nginx 포맷)
- crowdsecurity/traefik collection 설치
- 버전 v1.7.7 확인
2026-04-17 00:51:45 +09:00
heimdall
7395446478 docs: add _index.md MOC to all directories 2026-04-16 13:46:06 +09:00
heimdall
f0e51daafd refactor: organize infra/ into compute/network/security/data/platform 2026-04-16 13:43:36 +09:00
heimdall
66d2f51743 refactor: normalize infra wikilinks to bare names 2026-04-16 13:43:18 +09:00
heimdall
226b377387 kine pgx multi-host 직결: HAProxy 의존 제거, API 다운타임 <1s 2026-04-16 12:34:53 +09:00
heimdall
33ce94a75a pgpool 전면 전환 + pgcat 퇴역: postgresql-ha.md 전면 갱신 2026-04-16 12:24:39 +09:00
kaffa
5f9a153d96 add incus-hp1 to infra docs (K3s worker, 192.168.9.227)
Incus 6.0.4 + K3s v1.34.5+k3s1 agent joined 2026-04-16.
btrfs on nvme0n1 954G, incusbr0 10.100.4.1/24, 1GbE only.
2026-04-16 10:51:54 +09:00
heimdall
0d59adb95f pgpool-II PoC (n8n 전용 전환) + postgresql-ha.md 섹션 추가 2026-04-16 08:25:02 +09:00
heimdall
125413d083 pgcat+Patroni TCP keepalive 적용: 좀비 소켓 방지 (Step 1 옵션 B) 2026-04-16 07:26:37 +09:00
heimdall
a7ecd4b982 pgcat HA 승격 (Step 0): replicas=2 + podAntiAffinity + PDB 2026-04-15 17:21:13 +09:00
syn
ad230522be infra/crowdsec-safeline: remove APISIX → CrowdSec (:8085) legacy section
Verified removed across all 3 sites:
- K3s APISIX: no http-logger plugin in global_rules/routes/services/plugin_configs
- CrowdSec: no apisix-logs HTTP acquisition file, :8085 not listening
- Osaka APISIX: http-logger exists but targets VictoriaLogs (vector.inouter.com), not legacy

Runtime verification via cs_parser_hits metrics: only source is
https://vl.inouter.com/ (victorialogs type).

Split detailed findings to history/2026-04-15-apisix-http-logger-removal.md.
2026-04-15 16:31:18 +09:00
kappa
b24d10d156 vault-mcp-server 실 아키텍처 정정 (중복 아님, jp1 단일 인스턴스)
- infra/vault.md MCP 서버 섹션 전체 재작성: K3s Deployment 아니라 Pod 없는 리버스 프록시 파사드, 세 접근 경로 모두 jp1 Incus vault 컨테이너(10.253.101.58)로 수렴
- 과거 오류 정정 callout 추가: vault-active.vault.svc.cluster.local 경로 실존 안 함, hcv/mcp URL은 Vault UI로 307 (올바른 MCP 경로는 vault-mcp.inouter.com/mcp)
- history/2026-04-15-vault-mcp-duplicate-investigation.md 인시던트 기록

근거: Heimdall 조사 (Outline 5b6ddffa) + kappa 로컬 확인 (jp1 systemd active + 활성 트래픽)
2026-04-15 13:29:18 +09:00
heimdall
a9d37aa37a Longhorn standard RecurringJob cron KST 새벽으로 보정
standard-snapshot 0 3 * * * → 0 18 * * * (UTC, = KST 03:00)
standard-backup  0 4 * * * → 0 19 * * * (UTC, = KST 04:00)
critical 6h 간격에 KST 03시 포함되어 변경 없음.
2026-04-15 12:25:57 +09:00
kappa
b206348dd7 k3s-backup.md: history 파일명 참조 수정 2026-04-15 11:27:04 +09:00
heimdall
f55e1cffb4 Longhorn recurring job 라벨 오타 수정 + history 기록
critical/standard 18 볼륨이 recurringjob-group (대시 누락) 으로 라벨
붙어 3주간 백업 전무. recurring-job-group 으로 재라벨 + backup.md 에
라벨 키 규약 명시.
2026-04-15 10:52:06 +09:00
heimdall
5bf9f5f563 auto: vault secret tree sync (2026-04-15, 104 paths) 2026-04-15 10:43:07 +09:00
heimdall
0b8d9435d9 auto: vault secret tree sync (2026-04-14, 103 paths) 2026-04-15 10:43:07 +09:00
kappa
703d5609ec Longhorn recurring-job 라벨 키 오타 정정 + 인시던트 기록
- infra/k3s-backup.md: recurringjob-group → recurring-job-group (대시 포함). silent failure 주의 callout 추가
- history/2026-04-15-longhorn-label-typo.md: 18볼륨 백업 미동작 인시던트 기록
2026-04-15 08:32:13 +09:00
kappa
cfe4cbafae infra/infra-hosts: hp1-ilo .213 → .140 renew 반영 2026-04-14 17:00:54 +09:00
kappa
6364d71ec9 infra/infra-hosts: hp1/hp2 iLO 정적 DHCP 리스 등록
- hp1-ilo: 192.168.9.140 (MAC 6c:3b:e5:b7:0e:4e, 시리얼 JPT3169F2E)
- hp2-ilo: 192.168.9.141 (MAC 6c:3b:e5:b4:57:3e, 시리얼 JPT3169F6C)
- OpenWrt uci dhcp.@host 등록, 자동 renew로 6~12h 내 이전
- 로컬 DNS hp1-ilo.lan / hp2-ilo.lan 자동 생성
2026-04-14 16:20:49 +09:00
kappa
b45a3e05b1 infra/infra-hosts: OpenWrt DHCP 범위 .150-.249로 이전, .100-.149 해방
- DHCP 시작점 100 → 150
- 장래 MetalLB 풀 확장 대비
- 기존 리스 6개(.110/.128/.149/.159/.176/.213) 최대 12h 내 renew 시 자연 이전
2026-04-14 16:15:24 +09:00
kappa
544f2026e8 infra/infra-hosts: MetalLB pool 섹션 추가 및 .50-.99로 확장 반영
- 기존: 192.168.9.50-59 (10개, 6/10 할당)
- 확장: 192.168.9.50-99 (50개, .56-.99 여유)
- DHCP 범위(.100-249) 충돌 없음, .50-.99 ARP 스캔 clean
- 확장 절차 및 현재 할당 테이블 문서화
2026-04-14 16:01:00 +09:00
kappa
175a7236df infra/infra-hosts: hp2 DMI(HP ProLiant DL360p Gen8) + 커널 버전 명시
- 베어메탈 HW 식별자 추가 (이전 RCA의 'Incus 컨테이너 오해' 재발 방지)
- 2026-04-14 커널 업데이트 반영 (6.12.73 → 6.12.74)
2026-04-14 14:06:19 +09:00
kappa
4e57bb1015 infra/k3s-backup: R2 lifecycle rule 7일 만료 등록 완료 2026-04-14 13:42:54 +09:00
kappa
a16873e871 infra/k3s-backup: Longhorn 보존 정책 7일 기준 통일
- critical-backup retain 30 → 28 (7일치)
- standard-backup retain 14 → 7 (7일치)
- snapshot은 현 유지 (critical 24/1일, standard 7/7일)
- R2 lifecycle rule도 7일로 정렬 (TODO)
2026-04-14 13:36:10 +09:00
kappa
3dc684ef78 infra/k3s-backup: Longhorn 볼륨 백업 레이어 추가
- Cloudflare R2 BackupTarget 등록 (longhorn-backup 버킷)
- RecurringJob 4개 (critical/standard × snapshot/backup)
- 볼륨 분류: critical 13개, standard 5개
- 복원 절차 명시 (PVC annotation 방식 실패 → Volume CR 경유)
- 2026-04-14 end-to-end 검증 (MD5 일치)
- TODO: R2 lifecycle rule, 분기별 복원 드릴
2026-04-14 13:31:21 +09:00
kappa
cd044f6c0c infra/nas-storage: hp2 MTU 9000 확인, end-to-end JF 검증 표 추가
- hp2 ens2 MTU 9000 실측 반영
- 2026-04-14 ping -M do -s 8972 전 6경로 통과 기록
2026-04-14 12:38:07 +09:00
kappa
b6c68186fe infra/nas-storage: 2026-04-14 정확성 보정
- hp2 NAS 연결 상태 갱신 (미연결 → 192.168.205.134로 정상 참여)
- nfs-provisioner nodeAffinity 실제값 반영 (제약 없음)
- iSCSI ScsiTarget on-demand 동작 설명 추가
- 2026-04-14 iSCSI smoke test 결과 기록
- eth2 USB NIC watchdog 섹션 신설 (LPM exit latency 이슈 대응)
2026-04-14 12:35:20 +09:00
kappa
da4a674719 feat(obsidian): Bases 쿼리용 frontmatter 스키마 + 호스트 파일럿 3개
- dev/obsidian-schema.md: type별 frontmatter 규약 문서화
- infra/hosts/{incus-hp2,incus-kr1,zlambda}.md: 구조화된 필드로 파일럿 3개
- infra/hosts.base: Bases 쿼리 (전체/서울/K3s/유료/Critical 뷰)

기존 infra-hosts.md 본문은 그대로 유지. 파일럿 검증 후 나머지 호스트 확장 예정.
2026-04-14 09:07:22 +09:00
kappa
427ed307e1 Add Helm charts management and ESO documentation
- infra/helm-charts.md: 전체 Helm 관리 체계, 차트 구조, ArgoCD 앱 목록, 배포 워크플로우
- infra/external-secrets.md: ESO 구성, ExternalSecret 목록, Vault 경로 정리, 운영 가이드
2026-04-13 16:15:51 +09:00
heimdall
ad680e9d78 auto: vault secret tree sync (2026-04-13, 100 paths) 2026-04-13 09:58:13 +09:00
kappa
8e6c35324c docs: Vault 시크릿 구조 2026-04-13 전수 업데이트 — 신규 경로 추가, 자주 사용 시크릿 빠른 참조, KV v1 주의사항 2026-04-13 09:36:23 +09:00
kappa
3da39ca0d5 docs: CF API 토큰 권한 범위 실측 기록 — Rulesets/Firewall/RateLimit 접근 불가 2026-04-13 09:27:11 +09:00
kappa
8c5af74bb4 docs: K3s 인그레스 아키텍처 문서 추가 (Traefik+APISIX+SafeLine 이중 구조) 2026-04-13 08:39:50 +09:00
kappa
e73c7fd100 Add Kaniko (K8s native image build) document 2026-04-12 13:56:00 +09:00
kappa
66e0160759 obsidian: VictoriaLogs 중앙 로그 허브 통합 — 오사카 Vector + CrowdSec acquisition
- 오사카 APISIX에 Vector(Docker) 추가, VictoriaLogs ES bulk API로 로그 전송
- CrowdSec에 victorialogs acquisition (tail 모드) 추가, 서울+오사카 통합 수신
- anomaly-detect 설명에 오사카 포함 반영
- 기존 http-logger 직접 push는 레거시로 병행 유지 (추후 제거)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 14:21:16 +09:00
kappa
2356b86d36 obsidian: 정본 문서에서 히스토리/인시던트 분리 완료
15개 정본 문서에서 날짜별 변경이력, 인시던트 기록, 폐기된 구현 상세를
history/ 디렉토리로 분리. 정본은 현재 상태만 기술하는 백서 형태로 정리.
각 정본에 history 위키링크 추가.

분리된 history 파일 12건:
- apisix git push 500, k3s postgresql migration, apisix→traefik 전환
- netbis DDoS 공격, gitea 이전/분리, usb 2.5g hang + NFS hard mount
- supabase→patroni, apisix etcd 통합/분리, anomaly-detect 재설계
- patroni failover incident, zlambda nixos migration, ops-agents setup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:09:21 +09:00
kappa
72750cfc9d obsidian: 정본에서 변경 이력 분리, history/ 도입
- history/README.md: 변경 이력/인시던트 기록 규약
- history/2026-04-10-edge-cleanup.md: 오늘의 엣지 정리·인시던트·복구 전체 연대기
- infra/cloudflare.md: 연대기 주석/strikethrough/인시던트 서사 제거, 현재 사실만
- infra/crowdsec-safeline.md: 인시던트 bullet 제거, 과거 이력은 history/ 참조
- services/bunnycdn-security.md: sitekey 이력표 제거, 현재 위젯 정보만
- infra/nas-storage.md: reverse proxy 섹션의 날짜 주석 제거
2026-04-10 11:38:36 +09:00
kappa
8fc6a34cc8 edge: cf-zone-sync cron 영구 제거 (cleanup-2 인시던트 근본 원인)
- /etc/cron.d/cf-zone-sync 파일 삭제
- /usr/local/bin/auto-add-cf-zones.sh → .disabled.20260410-incident archive (chmod 600)
- 신규 zone 추가는 cfb-manager POST /domains 또는 수동 yaml edit
- bouncer 정상 running 확인 (PID 371770 uptime 1h28min)
2026-04-10 11:21:00 +09:00
kappa
7a8230dbf6 edge: cf-audit-cleanup-2 3차 인시던트 (cron-induced crashloop) + kappa 직접 복구 반영 2026-04-10 10:24:21 +09:00
Syn
218c323f3f edge: cf-audit-cleanup-2 + recovery 정본 반영
- infra/cloudflare.md: Worker 라우트 / Turnstile 위젯 표를 cleanup-2 후 상태로 갱신. inouter/anvil 라우트 + 6개 옛 bouncer-managed widget sitekey 폐기 표시. 신규 inouter-bunny-middleware (0x4AAAAAAC3otPWhldI96Aks) 추가, freeze 보장 근거 명시. Turnstile 토큰 권한 사실 (Vault api_token read-only vs bouncer 토큰 read+write). 인시던트 이력 섹션 추가 + 인시던트 doc 8f5c43f8 링크.
- infra/crowdsec-safeline.md: cs-cf-worker-bouncer 보호 zone 4개로 갱신, 제거된 zone 와 freeze widget 명시.
- services/bunnycdn-security.md: 미들웨어 64811 Turnstile sitekey 변경 이력표 (옛/삭제/신규 3행). sitekey gap 항목을 신규 위젯 기준으로 갱신, nas.inouter.com 정리 완료 표시.

cf-audit-cleanup-2 인시던트 + 복구 상세는 Outline doc 8f5c43f8 의 "## 복구 완료" 섹션 참조.
2026-04-10 09:44:20 +09:00
heimdall
9d71167772 infra: nas.inouter.com Traefik 리버스 프록시 (LAN-only) 복원
- lan-proxies ns 신설, selector-less Service + EndpointSlice → 192.168.9.100:5000
- IngressRoute web→websecure redirect + websecure tls (wildcard-inouter-tls)
- 2026-04-10 cf-audit-cleanup-1 의 nas.inouter.com 삭제 후 LAN-only 복원
- ExternalName 은 IP 미지원이라 동등 K8s-native 패턴(EndpointSlice) 사용

검증: curl --resolve nas.inouter.com:443:192.168.9.53 → 200 DSM 로그인
2026-04-10 09:11:22 +09:00
Syn
f5264bb4ae edge: CF inouter.com zone 정리 1차 (cf-audit-cleanup-1)
3건 DNS 레코드 삭제 (CF API 200, kappa 승인):
- nas.inouter.com CNAME actions.b-cdn.net (dead 풀존 참조, Synology LAN 전용)
- ironclad.jp.inouter.com A 10.19.228.193 (사설 IP 공개 노출)
- k8s.jp.inouter.com A 10.253.103.124 (사설 IP 공개 노출)

infra/cloudflare.md 의 inouter.com DNS 표에서 해당 행 제거.
특이사항 섹션의 dead reference / 사설 IP 노출 항목을 정리 이력으로 변경.
servidor.it.com zone 은 'death 도메인 아님' 판정으로 유지.
2026-04-10 08:17:24 +09:00
Syn
639c9b5a0d edge: 2026-04-10 BunnyCDN+CF 전수 감사 결과 정본 반영
- infra/cloudflare.md 전면 재작성: zone 6개(actions/anvil/inouter/ironclad/keepanker/servidor) 전수, DNS 레코드 zone별 핵심, Workers 9개 + 라우트, Turnstile 위젯 8개. dead reference (nas.inouter.com / *.actions.it.com → actions.b-cdn.net), servidor.it.com orphan zone, 사설 IP 노출, CF proxy on/off 함의 등 특이사항 정리. 옛 jarvis/n8n/vault → actions.b-cdn.net 기록 폐기.
- services/bunnycdn-security.md: 5개 풀존 전수표, 17개 호스트네임 인벤토리, 미들웨어 64811 attach 매트릭스, bouncer.py 동기화 흐름. cfb-manager 가 BunnyCDN 미들웨어를 갱신한다는 옛 오기록 정정 (cfb-manager 는 CF Worker bouncer 전용).
- 두 문서 모두 Outline 감사 doc 51b963c3 링크.
2026-04-10 08:10:06 +09:00
kappa
fb5a34ebcc edge gateway: "APISIX = SafeLine WAF 전용" 표현 정정
kappa 피드백 + kubectl 실측 기반 정정. 이전 기록의 "SafeLine WAF 전용 리버스
프록시" 또는 "SafeLine WAF 전용" 표현은 오해의 소지가 있음.

실측 사실 (2026-04-10 kubectl get svc + ApisixRoute + HTTPRoute):
- APISIX (svc apisix-gateway): MetalLB VIP 192.168.9.50, gateway 80/443 +
  admin 9180. 독립 LoadBalancer. Deployment replica 2.
  ApisixRoute 1건: juiceshop/juiceshop → juiceshop.keepanker.cv → juiceshop
  svc (chaitin-waf plugin 으로 SafeLine 통합 테스트)
- Traefik (svc traefik): MetalLB VIP 192.168.9.53, 80/443.
  HTTPRoute 14건 (argocd/gitea/grafana/n8n/nocodb/sftpgo/openmemory/searxng/
  kroki/safeline-mgt/vault-ui + api/namecheap + api/vultr + bunnycdn-mcp)
  + 5 legacy IngressRoute (vlogs/outline/vault-mcp/vault-mcp-http/bunnycdn-mcp)

→ **두 gateway 는 동등한 병렬 독립 LoadBalancer**. APISIX 는 Traefik 뒤의
리버스 프록시가 아니라 자체 MetalLB VIP 를 가진 별개 외부 인입 채널.
"SafeLine WAF 전용" 이 아니라, 2026-03-25 메인 라우팅이 Traefik 으로 이전된
이후 현재 APISIX route 가 SafeLine 테스트용 1건만 남은 상태일 뿐 — 범용
gateway 로 언제든 새 route 추가 가능.

정정 대상:
- infra/apisix.md — 서울 섹션 헤더/용도/축소 문구
- infra/infra-hosts.md — 게이트웨이 한 줄 요약
- infra/k3s-migration.md — 게이트웨이 열 + Phase 0 + Namespace 표
- infra/gateway-api.md — 전환 이력 2026-03-25 줄
- infra/crowdsec-safeline.md — waf-kr BunnyCDN Pull Zone 섹션 머리말

부수적으로 2026-04-10 에 발견된 heimdall kubectl 부재 문제 해결
(kubectl + helm + kubeconfig 복원) + tofu cloud-init 자동화 추가 —
commit bd5e4cb (ops-agents-tofu).
2026-04-10 00:36:29 +09:00
Syn
ae696f3e33 edge: 풀존 매핑 정합성 (2026-04-09 API 실측 반영)
- iron-kr 호스트 7개 (사용자 6 + 시스템 1) 명시. gitea.inouter.com 제거 (iron-git 분리됨), outline.inouter.com 추가
- iron-jp 호스트 5개 정정 (anvil.it.com 계열, 옛 inouter.com 표기 제거)
- 옛 풀존 ID 5316471/5330178/5554681 → iron-kr/iron-jp/iron-kr-waf 통합 메모
- Edge Script 64811 attach: iron-kr + iron-jp 두 풀존 모두 (단일 아님)
- iron-kr-waf 섹션을 waf-kr 에서 재명명, 새 경로 표기
2026-04-09 21:05:34 +09:00
kappa
749f8ed8eb ops-agents: heimdall tofu 재생성 반영 (kr1 ops/kaffa/10.100.3.108) 2026-04-09 15:49:09 +09:00