ICA — 이스티오 인증 어소시에이트 · 진짜 메시에서 확인하기 · 실습
503 은 보이는데 설정은 전부 적용됐다고 한다
목표
실제 Istio 1.31 메시(VM 안의 k3s)에서, 인계받은 설정이 만든 네 가지 증상 — 헤더 규칙 무시, /api 의 503,
카나리 헤더의 503, 사이드카 없는 클라이언트의 연결 끊김 — 을 증거에서 원인으로 좁혀 고칩니다.
마지막으로 istiod 를 잠시 내려 컨트롤 플레인이 없을 때 무엇이 계속되고 무엇이 막히는지 직접 봅니다.
왜 중요한가
메시에서 503 은 원인이 하나가 아닙니다. 설정이 가리키는 클러스터가 아예 없을 수도(NC), 클러스터는 있는데 고를 파드가
없을 수도(UH), 요청이 HTTP 로 해석되지도 못했을 수도(NR) 있습니다. kubectl apply 가 성공했다는 것은 API 서버가
받았다는 뜻일 뿐, Envoy 가 그 규칙을 어떻게 쓰는지는 따로 확인해야 합니다. 그래서 문제 해결은 세 층으로 나눕니다.
- 설정:
istioctl analyze가 참조가 끊긴 곳(IST0101)과 파드를 못 고르는 subset(IST0173)을 찾아냅니다. - 데이터 플레인:
istioctl proxy-config listeners·endpoints로 Envoy 가 실제로 받은 설정을 보고, 접근 로그의 - 컨트롤 플레인:
istioctl proxy-status로 어떤 프록시가 istiod 에 붙어 있는지 보고, istiod 가 없을 때 이미 받은 설정은
응답 플래그로 요청이 어디서 멈췄는지 읽습니다.
계속 쓰이지만 새 설정 쓰기·새 파드 주입은 웹훅 때문에 거절되는 것을 확인합니다.
단계
1. 인계받은 설정을 적용하고 네 파드의 uid·사이드카 여부를 기록합니다.
2. 헤더 규칙이 무시되는 이유를 리스너에서 찾고(tcp_proxy), 서비스 포트 이름으로 프로토콜을 바로잡습니다.
3. Telemetry API 로 네임스페이스 접근 로그를 켭니다.
4. /api 의 503 을 접근 로그(NC)와 analyze 로 확인하고 없는 subset 참조를 고칩니다.
5. 카나리 헤더의 503 을 접근 로그(UH)와 빈 엔드포인트로 확인하고 subset 라벨을 고칩니다.
6. 사이드카 없는 legacy 의 끊김을 서버 로그(NR)로 확인하고 STRICT 를 유지한 채 메시에 넣습니다.
7. istiod 를 내렸다 올리며 기존 트래픽·설정 쓰기·새 파드가 각각 어떻게 되는지 기록합니다.
8. 증거 파일에서 옮긴 보고서를 씁니다.
참고
- 이 VM 은 준비에 수 분이 걸립니다.
kubectl·istioctl은 로그인 셸에서 바로 쓸 수 있습니다(istioctl 1.31.0). - 조리법이 만든
ica-policy네임스페이스는 다른 실습용이니 건드리지 않습니다. 작업 파일은/root/ica-debug/에 둡니다. - 설정을 고친 직후에는 프록시로 전파되는 데 몇 초가 걸립니다. 결과가 예상과 다르면 잠시 뒤 다시 확인하세요.
- 7단계에서 istiod 를 되돌리지 않으면 Istio 리소스 변경과 새 파드 생성이 계속 거절됩니다.
- 공식 문서:
[Debugging Envoy and Istiod](https://istio.io/latest/docs/ops/diagnostic-tools/proxy-cmd/) ·
[Protocol Selection](https://istio.io/latest/docs/ops/configuration/traffic-management/protocol-selection/) ·
[Envoy Access Logs](https://istio.io/latest/docs/tasks/observability/logs/access-log/) ·
[Configuration analysis messages](https://istio.io/latest/docs/reference/config/analysis/) ·
[Envoy access log response flags](https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage)
단계 8개
- 인계받은 메시의 파드와 프록시 목록 적기
- 헤더 규칙을 썼는데 트래픽이 그냥 반반으로 간다
- 프록시가 무슨 일이 있었는지 말하게 하기
- /api 만 503, 그런데 서버 파드는 멀쩡하다
- 카나리 헤더를 붙이면 no healthy upstream
- 사이드카 없는 옛 클라이언트만 연결이 끊긴다
- istiod 가 내려간 동안 무엇이 멈추는가
- 네 가지 503·끊김을 증거로 분류한 보고서