2026-09-17 에 test-server 를 문서대로 철거하고 다시 세운 기록.

문서가 맞는지 실물로 확인하는 것이 목적이라, 명령을 고쳐 치지 않고 **문서에 적힌
그대로** 쳤다. 그래서 실패한 출력도 그대로 들어 있다 — 06 이 그것이다.

| 파일 | 무엇 |
|---|---|
| 01 | 철거 전 호스트 상태 전부 |
| 02 | 철거 문서의 「지우기 전에 먼저 본다」 |
| 03 | 철거 1단계 — 게스트 셋 |
| 04 | 철거 2단계 — DHCP 예약 셋 |
| 05 | 철거 확인표 다섯 줄 |
| 06 | **구축 5번을 문서 그대로 쳤다 → 실패.** meta 파일 이름에 `.yaml` 이 빠져 있다 |
| 07 | 이름을 고치고 세 장을 구웠다. 문서에는 한 장 굽는 절만 있다 |
| 08 | 시드 볼륨 셋 업로드 |
| 09 | DHCP 예약 셋 |
| 10~11 | `virt-install` 세 대 |
| 12 | 부팅 뒤 리스 — 셋 다 예약 주소를 받았다 |
| 13 | 게스트 SSH 와 `vdb` 가 `iso9660 CIDATA` 인 것 |
| 14 | `cloud-init schema` 는 `sudo:` 리스트형을 거부하는데 런타임은 받는다 |
| 15 | **k3s 사전 확인이 실패.** `REMOTE HOST IDENTIFICATION HAS CHANGED!` |
| 16 | 별칭은 되고 IP 직접 지정은 막힌다 — `Host kc-lab-*` 가 IP 에 안 걸린다 |
| 17 | 옛 키를 지우고 다시 |
| 18~19 | k3s server 설치와 확인 |
| 20 | kubeconfig 를 lab host 로 |
| 21~22 | 토큰 전달과 agent 설치 |
| 23 | 2노드 클러스터 확인 |

비밀은 옮기지 않았다. 14 에 평문 비밀번호와 공개키가 찍혀 나와 `<REDACTED>` 로
가렸고, 가린 자리에 길이만 남겼다.
25-edge-nginx-config.txt        03 1-④·2·3 — sites-enabled/default 를 지우고 keycloak-lab 을 써서 링크·nginx -t·reload 까지
26-edge-nginx-verify.txt        03 3-②③④ 와 층 ①② — nginx -t 가 두 줄이다([warn] 없음), nginx -v 가 command not found, 층 ② 가 404
27-edge-doc-mismatch.txt        which nginx 가 깔린 상태에서도 빈손인 것 · PATH · sudo nginx -v · nginx -t 3회 warn 0
28-host-state-before-dnat.txt   03 4번 치기 전 호스트 — tailscale0 있음, DNAT 파일과 유닛이 2026-09-11 자로 이미 있음, 호스트 sudo 는 비밀번호를 묻는다
29-host-dnat-files.txt          호스트에 깔려 있는 .nft 와 유닛 원문 — forward 체인이 남아 있고 ExecStartPost 가 없다 (문서·저장소 원본과 다르다)
30-layer3-from-workstation.txt  03 층 ③ 을 밖에서 — curl: (7) Failed to connect. 29 의 ExecStartPost 누락이 그대로 드러난 자리
31-cert-doc-precheck.txt        04 확인 ①② 와 1번 — dig 이 게스트에 없다, nginx -v 가 sudo 없이는 안 된다, certbot plugins 세 줄은 문서대로
32-cert-doc-dig-remedy.txt      처방 검증 — getent hosts 와 dnsutils 설치 뒤의 dig 이 같은 주소를 낸다
33-keycloak-precheck.txt        05 확인 ①② — 매니페스트 목록, 000 tls=0 (연결이 안 돼도 tls=0 이 찍힌다), 2노드 Ready
34-keycloak-apply.txt           05 1-②·2-① — apply 출력 9줄과 rollout status. Waiting for … 줄이 먼저 나온다
35-keycloak-verify-1-3.txt      05 판정 ①~③ — get all·get secret,configmap,pvc,ingress·사슬·Secret 길이 19/22/19 (값은 안 찍었다)
36-keycloak-verify-4-6.txt      05 판정 ④~⑥ — Endpoints 둘, PVC 가 postgres-data 하나, ISPN000094 에 (v=16.0.12), jgroups_ping 2행
37-keycloak-cluster-size.txt    05 판정 ⑥ 지표 — 임시 파드가 읽은 vendor_cluster_size 2.0, Keycloak 안에 curl 이 없다(exit 127)
38-keycloak-verify-7-8.txt      05 판정 ⑦⑧ — 밖에서는 000(04 미실시), Host 헤더를 실은 80 은 엣지·Traefik 둘 다 200, 세션 표 0행
39-observability-apply.txt      06 1·2 — apply 출력, rollout, 파드 네 줄(38초에 grafana 가 0/1)
40-observability-verify.txt     06 판정 ①~④ — job 네 개, health 가 unknown 인 keycloak 둘, can-i 의 경고 줄, 원소 하나뿐인 cluster_size
41-observability-cluster-size-retry.txt  90초 뒤 다시 — health 가 up 이 되고 원소 둘 다 2. node/pod/exported_node 세 라벨이 다른 것을 말한다
42-power-cycle-memory.txt        07 1번 — setmaxmem/setmem --config 뒤 dominfo 가 안 바뀐다. 게스트 free -m 도 옛 값
43-dominfo-vs-config.txt         같은 순간의 dominfo(5242880) 와 dumpxml --inactive(4194304). 바꾼 것이 들어갔는지는 --inactive 가 답한다
44-host-prep-checks.txt          00 의 확인 명령 전부 — vmx, kvm 모듈 셋, 저장소, virsh 12.7.0, libvirtd.socket, libvirt 그룹, default 네트워크, sudo 없는 virsh list
45-libvirt-uri-mechanism.txt     rc 파일은 비대화형 ssh 에서 안 읽힌다. 그런데도 되는 까닭은 ~/.config/libvirt/libvirt.conf 의 uri_default
48  cloud-init 의 packages 에 certbot 이 없다는 것 (게스트 user-data + 저장소 템플릿)
49  01 의 확인 ①②③ 을 다시 친 결과
50  08 의 철거 전 네 값과, 인증서가 어느 기계에 있는지
51  (철거는 실행하지 않았다 — 파일 없음)
52  09 의 lsmod·코어 수·libvirtd.socket, 01 의 vol-info·net-dumpxml·cloud-init status
53  sudo 가 열린 뒤 doc 03 의 미검증 셋 — 배포 파일 상태·guest_input 중복·masquerade 찾기
54  출발지를 덮는 것이 Tailscale 이라는 근거 (ts-forward MARK → ts-postrouting MASQUERADE)
55  doc 02 의 API 서버 SAN 과 두 journalctl
