Files
DongHyeonkaandClaude Opus 5 024362d096 fix(setup): 실험대를 새로 세워 setup 35편을 밟고 어긋난 명령과 결과를 고친다
기반 가이드 7단계로 실험대를 철거하고 다시 세운 뒤 virtualization setup 9편과
keycloak-session-store 26편을 순서대로 밟았다. 24편은 끝까지, 11편은 되는 데까지
밟았고 밟은 범위를 편마다 적었다.

명령이 못 도는 것을 고쳤다.

- kubectl 을 `kc-lab-1` 에서 치라고 적었는데 그 기계에 kubeconfig 가 없다.
  라벨 639개와 각 편의 「어디서 치는가」를 `[lab host]` 로 옮겼다
- `-o custom-columns=…[0]…` 이 zsh 에서 글로브로 읽혀 안 돈다. 28곳에 따옴표
- busybox `sed` 가 끝 개행을 안 붙여 A-3 의 측정이 언제나 0 이었다
- `--token-file ~/node-token` 뒤에 그 파일을 지우면 k3s agent 가 재부팅을
  못 견딘다. `/etc/rancher/node-token` 으로 옮기는 처방을 재서 넣었다
- 게스트에 없는 도구를 전제로 한 명령 넷 — `conntrack`·`dig`·`strings`·`nginx -v`
- `echo` 와 JWT 헤더가 `"이름" : [ 값 ]` 으로 찍는데 문서는 공백 없이 옮겨 적어
  그 실측으로 만든 grep·sed 가 한 줄도 못 잡는다
- B-0 이 `directAccessGrantsEnabled` 와 계정 완성을 빠뜨려 B-3 이 못 돈다
- D-4·D-4a 가 `test-server` 와 `certbot-renew.*` 를 가리키는데 실제로는
  `kc-lab-edge` 의 `certbot.service` 다
- `virsh setmaxmem --config` 를 `dominfo` 로 판정하면 틀린다. `--inactive` 로
- `LIBVIRT_DEFAULT_URI` 를 rc 에만 넣으면 `ssh host '명령'` 에서 안 먹는다

결과가 조건부인 것을 갈랐다.

- readiness 는 즉시 안 뒤집힌다. A-1·A-2 의 60초 창을 적었다
- 03 의 층 ②③ `301` 은 04 이후의 값이고 그 단계에서는 `404` 다
- A-0 의 로그 필터를 요청 직후에 치면 정반대 결론이 나온다
- A-5 의 한 방향 차단은 잠깐 `1` 이었다 `2` 로 돌아온다

증거는 두 프로젝트의 `evidence/raw/` 에 99벌을 README 와 함께 남겼다. 비밀은
길이만 적었고 화면에 찍힌 토큰은 가렸다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 15:59:42 +09:00

51 lines
2.7 KiB
Plaintext

=== 06 판정 ①-① 다시 (grafana 가 Ready 가 됐나) ===
NAME READY STATUS RESTARTS AGE
grafana-845b5678cf-bblgz 1/1 Running 0 38s
node-exporter-82mmn 1/1 Running 0 38s
node-exporter-g688j 1/1 Running 0 38s
prometheus-6774f94f7c-pj8w9 1/1 Running 0 38s
=== 06 판정 ① 스크레이프 job 이름 ===
"job":"keycloak"
"job":"kubelet"
"job":"node-exporter"
"job":"prometheus"
=== 06 판정 ② health 와 lastError ===
"job":"keycloak"}
"job":"keycloak"
"lastError":""
"health":"unknown"
"job":"keycloak"}
"job":"keycloak"
"lastError":""
"health":"unknown"
"job":"kubelet"}
"job":"kubelet"
"lastError":""
"health":"up"
"job":"kubelet"}
"job":"kubelet"
"lastError":""
"health":"up"
"job":"node-exporter"}
"job":"node-exporter"
"lastError":""
"health":"up"
"job":"node-exporter"}
"job":"node-exporter"
"lastError":""
"health":"up"
"job":"prometheus"}
"job":"prometheus"}
"lastError":""
"health":"up"
"job":"keycloak"}}
"job":"keycloak"}}
=== 06 판정 ② 권한 ===
Warning: resource 'nodes' is not namespace scoped
yes
=== 06 판정 ③ vendor_cluster_size ===
{"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"vendor_cluster_size","cache_manager":"keycloak","exported_node":"keycloak-1-3159","instance":"10.42.0.9:9000","job":"keycloak","node":"kc-lab-1","pod":"keycloak-1"},"value":[1789619921.770,"2"]}]}}
=== 06 판정 ④ up ===
{"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"up","instance":"192.168.122.12:9100","job":"node-exporter","node":"kc-lab-2"},"value":[1789619921.874,"1"]},{"metric":{"__name__":"up","beta_kubernetes_io_arch":"amd64","beta_kubernetes_io_instance_type":"k3s","beta_kubernetes_io_os":"linux","instance":"kc-lab-2","job":"kubelet","kubernetes_io_arch":"amd64","kubernetes_io_hostname":"kc-lab-2","kubernetes_io_os":"linux","node_kubernetes_io_instance_type":"k3s"},"value":[1789619921.874,"1"]},{"metric":{"__name__":"up","beta_kubernetes_io_arch":"amd64","beta_kubernetes_io_instance_type":"k3s","beta_kubernetes_io_os":"linux","instance":"kc-lab-1","job":"kubelet","kubernetes_io_arch":"amd64","kubernetes_io_hostname":"kc-lab-1","kubernetes_io_os":"linux","node_kubernetes_io_instance_type":"k3s","node_role_kubernetes_io_control_plane":"true"},"value":[1789619921.874,"1"]},{"metric":{"__name__":"up","instance":"192.168.122.11:9100","job":"node-exporter","node":"kc-lab-1"},"value":[1789619921.874,"1"]},{"metric":{"__name__":"up","instance":"localhost:9090","job":"prometheus"},"value":[1789619921.874,"1"]},{"metric":{"__name__":"up","instance":"10.42.0.9:9000","job":"keycloak","node":"kc-lab-1","pod":"keycloak-1"},"value":[1789619921.874,"1"]}]}}