Files
document-haness/docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a6-05-observe-prep.txt
T
DongHyeonkaandClaude Opus 5 32e39e20aa fix(setup): 실험대에서 35편을 끝까지 밟고 어긋난 명령·결과 31건을 고친다
test-server 를 비우고 다시 세운 뒤 Setup 기록 35편(virtualization 9 ·
keycloak-session-store 26)을 문서에 적힌 명령 그대로 쳤다. 어긋난 자리를
기록과 SSOT 양쪽에 실측과 함께 넣었다.

막히던 것
- 04 의 인증서 경로가 live/hyeonworks.com 이라 nginx 가 [emerg] 로 안 떴다.
  실제 계보는 live/auth.hyeonworks.com 이고 「문제가 생기면」은 진단이 거꾸로였다
- 인증서가 와일드카드가 아니다. SAN 이 auth·app1·app2 셋뿐이라 그 밖의 이름은
  TLS 에서 끊기고 curl 이 exit 60 · %{http_code} 000 을 낸다. SSOT 안에서
  두 문단이 서로 어긋나 있었다
- A-7 14번 ①이 kc-lab-1 에서 여섯 줄 다 실패하는데 마지막 date 만 「차단」을 찍는다

검사가 실패할 수 없던 자리
- B-1 의 세션 키 고르기는 앞 단계가 $KEY 를 채워 둬서 루프가 한 건도 못 맞혀도
  통과한다. KEY= 로 비우고 키마다 1/0 을 찍게 바꿨다
- k3s-agent 유닛의 sed -i 는 패턴에 $HOME 이 들어 있어 아무 줄도 안 바꾼 채 성공한다

certbot
- renew --dry-run 의 종료 코드는 성공도 0, 실패도 0, 다른 사유의 실패는 1 이다.
  본문의 renew failure(s) 로만 판정할 수 있다
- --dry-run 은 staging 서버를 쓰는데 renewal/*.conf 의 account= 는 운영 계정을
  가리킨다. 실패한 dry-run 이 staging 계정을 하나 더 만들어 다음 실행이 계속 멎는다
- 훅을 755 로 놓고 시뮬레이션이 성공해도 Running deploy-hook command 는 안 나온다.
  certbot 2.1.0 에는 --run-deploy-hooks 도 없다
- 강제 갱신은 실제로 쳤고 서빙까지 닿았다. serial 06F3E0EF…1373 → 065547…3DF1,
  notAfter Dec 3 → Dec 16, nginx worker 2629 4712 → 4745 4754

독자가 칠 수 있는 형태로
- 안 되는 형태가 번호 붙은 단계에 앉아 있던 8곳을 뒤집고, 되는 형태를 ①로 올렸다
- 랩 안에서 공개 이름을 치는 curl 65줄에 --resolve 를 붙였다. 붙인 형태를 실제로
  쳐서 문서가 적은 값과 같은지 확인했다
- 힙독·sed -i·echo >>·&&·|| 를 편집기 + 파일 리스팅 + 분할 형태로 바꿨다
- 닫는 코드펜스가 빠져 뒤 200여 줄의 블록 종류가 뒤집혀 있던 곳을 포함해 3곳을 고쳤다

관문: check_body PASS · check_prose error 0 · check_evidence 두 프로젝트 문제 없음 ·
verify-tech-log-tree error 0 · verify-project-layout error 0 · 코드펜스 전수 0건

남은 것: B-0 주입은 keycloak-pattern 저장소의 소스를 고치고 이미지를 다시 구워야
해서 안 했다(unknown).

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

89 lines
3.2 KiB
Plaintext

=== a6 준비 1 ① 배치와 IP ===
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
bff-5d97897676-nmlqs 1/1 Running 0 150m 10.42.0.22 kc-lab-1 <none> <none>
bff-5d97897676-zvfhp 1/1 Running 0 150m 10.42.1.51 kc-lab-2 <none> <none>
keycloak-0 1/1 Running 0 121m 10.42.1.64 kc-lab-2 <none> <none>
keycloak-1 1/1 Running 0 121m 10.42.0.29 kc-lab-1 <none> <none>
oauth2-proxy-d9b587458-7x9jt 1/1 Running 0 55m 10.42.1.78 kc-lab-2 <none> <none>
oauth2-proxy-d9b587458-njxdw 1/1 Running 0 55m 10.42.1.79 kc-lab-2 <none> <none>
postgres-7b474b88c8-48lrr 1/1 Running 0 160m 10.42.1.46 kc-lab-2 <none> <none>
redis-f94bc6dbf-s674z 1/1 Running 0 123m 10.42.1.63 kc-lab-2 <none> <none>
=== a6 준비 1 ② 세 값을 셸 변수에 ===
K0=10.42.1.64 K1=10.42.0.29 PG=10.42.1.46
=== a6 준비 2 ① 탐침 파드를 띄운다 ===
pod/a6-probe created
exit=0
=== a6 준비 2 ② 뜰 때까지 기다린다 ===
pod/a6-probe condition met
exit=0
=== a6 준비 2 ③ 값이 아니라 길이만 확인한다 ===
K0=10.42.1.64 K1=10.42.0.29 PW=19자
=== a6 준비 3 ① 구간별 시간을 함께 찍는다 ===
connect 0.000344 ttfb 0.110990 total 0.111040
=== a6 준비 4 ① keycloak-1 에 20회 ===
=== a6 준비 4 ② 원본을 먼저 본다 (k1) ===
0.044959
0.046268
0.046746
0.041681
0.040931
0.048671
0.040027
0.052310
0.040426
0.039144
0.042341
0.044985
0.042190
0.044052
0.043110
0.044736
0.039418
0.058032
0.040404
0.038562
=== a6 준비 4 ③ 그다음 줄여서 본다 (k1) ===
20회 평균 44 ms
=== a6 준비 4 대조군 — $K1 을 $K0 로, 파일 이름도 /tmp/base-k0 으로 ===
=== 원본 (k0) ===
0.046606
0.069418
0.044654
0.039537
0.037198
0.038300
0.037252
0.039732
0.036486
0.037554
0.036501
0.035420
0.036633
0.036898
0.052301
0.035256
0.036421
0.034673
0.035721
0.040525
=== 평균 (k0) ===
20회 평균 40 ms
=== a6 준비 5 ① 지표 이름 목록 ===
agroal_invalid_count_total{datasource="default"} 0.0
agroal_flush_count_total{datasource="default"} 0.0
agroal_leak_detection_count_total{datasource="default"} 0.0
agroal_reap_count_total{datasource="default"} 3.0
agroal_blocking_time_max_milliseconds{datasource="default"} 112.0
agroal_max_used_count{datasource="default"} 3.0
agroal_acquire_count_total{datasource="default"} 1908.0
agroal_active_count{datasource="default"} 0.0
agroal_awaiting_count{datasource="default"} 0.0
agroal_blocking_time_average_milliseconds{datasource="default"} 0.0
agroal_creation_time_total_milliseconds{datasource="default"} 160.0
agroal_creation_time_average_milliseconds{datasource="default"} 32.0
agroal_destroy_count_total{datasource="default"} 3.0
agroal_available_count{datasource="default"} 2.0
agroal_creation_count_total{datasource="default"} 5.0
agroal_creation_time_max_milliseconds{datasource="default"} 105.0
agroal_blocking_time_total_milliseconds{datasource="default"} 285.0