Commit Graph

205 Commits

Author SHA1 Message Date
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
3914d71c6b docs: BunnyCDN Shield Zone API 정리 — 구 Pull Zone 필드 대신 /shield/shield-zone 엔드포인트 사용, shieldZoneId 매핑 추가 2026-04-13 09:22:06 +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
27363622de add skuld planner agent to ops-agents overview
HP2 ops 프로젝트, IP 10.100.2.45, MCP: OpenMemory + Outline.
에이전트 목록, 통신 경로, 태그, systemd, 배포 관리 섹션 추가.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 21:01:59 +09:00
kappa
6fe811a9a1 netbis: CF Global API Key 경로를 Vault로 업데이트 2026-04-10 17:09:40 +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
d16090a33d edge: iron-kr IgnoreQueryStrings true→false (iron-jp 와 통일)
- 실측 cache hit rate 0.23% 로 변경 영향 무시 수준
- privilege 교차 / 배포 cache-bust 버그 방지
2026-04-10 11:24:06 +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
fa174b75ab ops-agents: workspace bootstrap 자동화 + 시크릿 env 패턴 문서화 2026-04-09 17:32:01 +09:00
kappa
66fa3ec2ae ops-agents: heimdall 워크스페이스 레벨 정렬 반영 + 공통 레이아웃 문서화 2026-04-09 17:20:04 +09:00
kappa
974aa33124 ops-agents: SSH identity 섹션 추가 (공유 ops-agents 키) 2026-04-09 16:57:37 +09:00
kappa
749f8ed8eb ops-agents: heimdall tofu 재생성 반영 (kr1 ops/kaffa/10.100.3.108) 2026-04-09 15:49:09 +09:00
kappa
49ea3a5f80 ops-agents: Vault 게이트웨이 프로토콜 섹션 추가 (Syn/Heimdall 양쪽 e2e 검증 완료) 2026-04-09 15:25:20 +09:00
kappa
4bd868e219 ops-agents: Heimdall/Syn 내부 운영 에이전트 체계 문서화, Syn hp2 이주 기록 2026-04-09 14:51:31 +09:00
kappa
b391b947ce crowdsec: Turnstile sitekey 교체 기록 (inouter.com managed widget) 2026-04-09 12:40:29 +09:00
kappa
24e04d6029 crowdsec: cs-cf-worker-bouncer YAML + cfb-ssh-key 시크릿 복구 인시던트 기록 2026-04-09 12:03:56 +09:00
kappa
4aeea65c8c crowdsec: bunny 엣지 스크립트 64811 verify POST dead-end 버그 수정 기록 2026-04-09 12:00:17 +09:00
kappa
cf076b944a crowdsec: apisix-high-rate-per-ip 완화 (200→1000, 300ms→100ms), 2026-04-09 오탐 인시던트 기록 2026-04-09 11:51:15 +09:00
heimdall
192a677285 infra-hosts: 2026-04-09 정합성 점검 — Incus 3호스트 전수 갱신
- Helm 릴리스 9개 → 18개로 확장 (apisix-ingress, metallb, n8n, nfs-provisioner, sftpgo, sshpiper, synology-iscsi, traefik, vector, vlogs, vm-stack 추가). nfs-provisioner status=failed 명시
- ArgoCD Applications 10개 → 5개로 정정 (anvil/ironclad/n8n/nocodb/pgcat/cloud-api-emulator 제거, smtp-relay 추가). 정확한 ns/repo 반영
- Vault 위치 정정: K3s vault ns → jp1 incus default 컨테이너 vault (10.253.101.58)
- Incus 컨테이너 전수 갱신:
  * jp1 default: etcd/socks5-proxy/netbis-cf-bouncer/vault 신규 추가, baserow/iac-route STOPPED, vaultwarden 제거 확인
  * kr1 default: etcd 제거, postgres-2 추가
  * kr2 default: etcd 제거, cloudflared가 inbest로 이동, postgres-3 추가
  * hp2 default: etcd 제거, anomaly-detect 추가
  * hp2 inbest: 빈 프로젝트로 잔존 명시
- 호스트 자원/스토리지 풀 표 추가 (jp1 btrfs, kr1/kr2 dir, hp2 btrfs+pve-root)
- PgCat ns: tools → db
- BunnyCDN MCP ns: tools → mcp, namecheap-api/vultr-api ns: tools → api, smtp-relay ns: mail
- 주요 네임스페이스 라이브 기준 갱신 (anvil/ironclad/system-upgrade 삭제, 신규 ns 다수 추가)
2026-04-09 02:18:26 +00:00
Heimdall
bcd7b80bfb outline: Discord 통지 파이프라인 (n8n outline-to-discord) 추가
agent-qna 컬렉션의 documents.create 이벤트가 n8n webhook을 거쳐
heimdall Discord 채널에 embed 알림으로 전달되도록 구축.

- Outline webhook subscription: ede9327f-b09e-4f7e-ab56-c507d3d1b3a6
- n8n workflow id: 8P714i5oBs9HkZPK
- 컬렉션 필터 + Discord embed 빌드는 n8n Code 노드 안에 하드코딩
- secret/apps/discord 신설 (bot_token, channel/guild id)
- secret/apps/n8n 의 email/api_key 갱신 (kappa@inouter.com)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 23:22:01 +00:00
Heimdall
c36dfceadd docs: tailnet audit — add workstations, fix drift (openwrt-gw, sandbox-tokyo, zlambda 등) 2026-04-08 22:18:59 +00:00
Heimdall
f595889e9e outline: fix DATABASE_URL pointing at Patroni replica, document MCP setup
- Patch DATABASE_URL to OpenWrt HAProxy (192.168.9.1:5432) so Outline
  follows Patroni leader automatically
- Record 2026-04-08 incident: postgres-1 demoted to replica caused all
  write queries (incl. apiKeys.lastActiveAt) to fail with 500
- Document heimdall outline MCP setup and new agent-qna collection
2026-04-08 21:48:18 +00:00
381aa161e0 anomaly-detect: 비용 로깅 추가 (48eb489) 및 집계 명령 문서화
- cycle usage 로그 형식과 집계 명령어
- OpenRouter /activity API 지연 caveat
- management key Vault 위치
- 월 비용 예상 추가
2026-04-09 06:12:29 +09:00
7856791eae smtp-relay: K3s 내부 SMTP 릴레이 (postfix → Mailgun) 신규 문서
- 아키텍처, ConfigMap/Secret 구성, 사용법, 검증 절차
- 2026-04-08 초기 배포 검증 기록 (queue 6895722DB89, 250 Great success)
2026-04-09 00:50:21 +09:00
97ac0c44bc anomaly-detect: 스케일 업 반영 (2000 IP/cycle, chunk POST) 2026-04-09 00:38:46 +09:00