-
Service는 실체가 없다 — kube-proxy가 iptables로 트래픽을 꽂는 법
A4에서 ‘ClusterIP는 IP지만 :Port 고정이라 L4’라고 했다. 그 ‘왜’의 실체는 iptables다. 지금 이 클러스터의 kube-proxy에서 실제 룰을 그대로 떠서, ClusterIP가 어떤 프로세스도 아니라 KUBE-SERVICES▸KUBE-SVC(확률 분기)▸KUBE-SEP(DNAT)라는…
-
[관측 확장 #2] 접속자를 지도 위에 올리기 — 똑같이 생긴 “No data” 를 네 갈래로 가르는 법
접속자 IP 를 좌표로 바꿔 Grafana Geomap 에 올리는 일에서 어려운 쪽은 배선이 아니라 빈 패널의 원인을 가르는 일이었습니다. 라벨 폭발로 로그가 상류에서 버려지는 것,…
-
ConfigMap·Secret — 코드와 값을 떼어놓기 (그리고 cgroup으로 수미상관)
같은 이미지를 dev·prod에서 그대로 쓰되 바뀌는 값만 밖에서 주입한다 — 그 장치가 ConfigMap(설정)과 Secret(민감값)이다. 실제 kubectl 콘솔로 주입을 확인하고, ‘Secret은 암호화가 아니라 base64’라는 함정과, limits가…
-
[관측 확장 #1] 활동 모니터를 PostgreSQL 위에 다시 그리기 — 누적 카운터와 순간 표본은 다른 물건이다
진단 화면은 베낄 수 있지만 그 화면을 떠받치는 계측은 베낄 수 없습니다. SQL Server 의 활동 모니터를 PostgreSQL 대시보드로 옮기면서, 누적 카운터와 순간 표본의 차이…
-
[측정 보고서] 홈서버의 TCP 수신 윈도우·MSS·수신 처리량 — 값이 아니라 식을 남긴다
집 서버의 TCP 수신 창과 MSS를 재고, 그 값이 어떤 식에서 나오는지 커널 파라미터까지 거슬러 확인했습니다. 소켓에서 파일 버퍼로 읽는 속도는 858 MB/s, 실제 네트워크…
-
[게임] 몬스터 능력치는 코드가 아니라 데이터다 — Type Object 패턴과 포켓몬의 두 시트
몬스터 종류가 늘 때마다 클래스를 하나씩 만들면 어디서 무너질까. ‘종족은 무엇인가’와 ‘이 개체의 지금 상태’를 나누는 Type Object 패턴을, 포켓몬의 종족값 시트와 인카운터 테이블이라는 실제…
-
[홈랩 검증기] 안전장치가 안전하지 않았습니다 — Vault로 평문 Secret 11개를 걷어낸 기록
집 서버의 평문 Secret 11개를 HashiCorp Vault로 옮겼습니다. 그런데 정작 기록에 남을 만한 것은 이행 자체가 아니라, 그 과정에서 안전을 보장한다고 믿었던 장치들이 하나씩 제…
-
Service·ClusterIP·NodePort·Ingress — 트래픽을 어떻게 꽂나
Pod IP는 수시로 바뀐다. 그 앞에 고정된 접속 창구를 세우는 것이 Service다. Service(ClusterIP·NodePort·LoadBalancer)와 Ingress를 한 줄 정의로 갈라내고, 실제 kubectl 콘솔로 ‘Pod가 바뀌어도 ClusterIP는 그대로’임을…
-
인증서와 비밀은 한 뿌리다 — 신뢰를 만드는 다섯 단어를 가르는 기준
certificate·signature·token·secret·authentication은 실무에서 뒤섞여 쓰인다. 어원으로 보면 갈리는 선이 하나 있다. 신뢰를 만드는 방법은 둘뿐이다 — 아는 쪽과 모르는 쪽을 가르거나(cernere), 보여서 증명하거나(*deik-). 놀랍게도 certificate와 secret은…
-
[홈랩 검증기] TCP는 붙는데 HTTP만 죽었다 — Cilium L7 프록시를 계층별로 배제한 기록
HTTP readiness probe를 쓰는 파드 9개만 동시에 NotReady가 됐습니다. exec·tcp probe 파드는 멀쩡했고 DNS도 서비스 VIP도 정상이었습니다. TCP는 붙는데 HTTP 응답만 오지 않는 상태를 계층별로…