<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>makgol's note – 한 요청의 여행</title><link>https://docs.makgol.com/study/istio-mesh/</link><description>Recent content in 한 요청의 여행 on makgol's note</description><generator>Hugo -- gohugo.io</generator><language>ko-KR</language><copyright>© 2026 Mont</copyright><lastBuildDate>Sat, 07 Nov 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://docs.makgol.com/study/istio-mesh/index.xml" rel="self" type="application/rss+xml"/><item><title>01 한 연결에 묶인 길 — 메시 이전의 L4와 L7</title><link>https://docs.makgol.com/study/istio-mesh/01-l4-l7-before-mesh/</link><pubDate>Sat, 07 Nov 2026 00:00:00 +0900</pubDate><guid>https://docs.makgol.com/study/istio-mesh/01-l4-l7-before-mesh/</guid><description>
&lt;h1&gt;01 · 한 연결에 묶인 길 — 메시 이전의 L4와 L7&lt;/h1&gt;&lt;p&gt;입구에서 HTTP 요청을 나눠도 서비스 사이의 호출은 다시 연결 단위로 묶입니다. 먼저 사이드카가 없는 경로를 봅니다.&lt;/p&gt;
&lt;figure class="vm-flow"&gt;
&lt;figcaption class="flow-caption"&gt;입구의 L7 규칙은 외부 요청에 적용되고, 앱 A가 시작한 내부 호출은 ClusterIP의 연결 단위 선택을 따릅니다.&lt;/figcaption&gt;
&lt;script type="application/json" class="flow-spec"&gt;{
"caption": "입구의 L7 규칙은 외부 요청에 적용되고, 앱 A가 시작한 내부 호출은 ClusterIP의 연결 단위 선택을 따릅니다.",
"token": true,
"nodes": [
{
"id": "c",
"col": 0,
"row": 0,
"label": "외부 클라이언트",
"kind": "src"
},
{
"id": "g",
"col": 1,
"row": 0,
"label": "Ingress",
"kind": "proc",
"sub": "L7 · 경로별 분기"
},
{
"id": "a",
"col": 2,
"row": 0,
"label": "앱 A",
"kind": "proc"
},
{
"id": "k",
"col": 2,
"row": 1,
"label": "ClusterIP",
"kind": "query",
"sub": "L4 · 연결별 선택"
},
{
"id": "b",
"col": 1,
"row": 1,
"label": "앱 B",
"kind": "sink"
}
],
"edges": [
{
"from": "c",
"to": "g",
"label": "HTTP"
},
{
"from": "g",
"to": "a",
"label": "요청"
},
{
"from": "a",
"to": "k",
"label": "새 호출"
},
{
"from": "k",
"to": "b",
"label": "DNAT"
}
]
}
&lt;/script&gt;&lt;details class="vm-spec-text"&gt;
&lt;summary&gt;도식 텍스트&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;외부 클라이언트&lt;/li&gt;
&lt;li&gt;Ingress — L7 · 경로별 분기&lt;/li&gt;
&lt;li&gt;앱 A&lt;/li&gt;
&lt;li&gt;ClusterIP — L4 · 연결별 선택&lt;/li&gt;
&lt;li&gt;앱 B&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;요청&lt;/li&gt;
&lt;li&gt;새 호출&lt;/li&gt;
&lt;li&gt;DNAT&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;/figure&gt;
&lt;h2&gt;입구 너머의 ClusterIP&lt;span class="hx:absolute hx:-mt-20" id="입구를-지난-서비스-호출은-다시-clusterip로"&gt;&lt;/span&gt;
&lt;a href="#%ec%9e%85%ea%b5%ac%eb%a5%bc-%ec%a7%80%eb%82%9c-%ec%84%9c%eb%b9%84%ec%8a%a4-%ed%98%b8%ec%b6%9c%ec%9d%80-%eb%8b%a4%ec%8b%9c-clusterip%eb%a1%9c" class="subheading-anchor" aria-label="이 섹션에 대한 고유 링크"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;앱 A가 Service 이름으로 B를 부르면 DNS가 ClusterIP를 돌려줍니다. kube-proxy의 iptables 모드에서는 새 연결의 대상을 고르고 목적지를 파드 IP로 바꿉니다(DNAT). 이후 패킷은 conntrack이 기억한 대상을 따릅니다.&lt;/p&gt;</description></item><item><title>02 다시 길을 고르는 문 — 게이트웨이에서 사이드카까지</title><link>https://docs.makgol.com/study/istio-mesh/02-gateway-to-sidecar/</link><pubDate>Sat, 07 Nov 2026 00:00:00 +0900</pubDate><guid>https://docs.makgol.com/study/istio-mesh/02-gateway-to-sidecar/</guid><description>
&lt;h1&gt;02 · 다시 길을 고르는 문 — 게이트웨이에서 사이드카까지&lt;/h1&gt;&lt;p&gt;외부 요청은 게이트웨이에서 HTTP로 읽힌 뒤, 선택된 파드의 사이드카로 향합니다. 아래는 NLB에 &lt;strong&gt;TCP 리스너&lt;/strong&gt;를 둔 사이드카 모드의 경로입니다.&lt;/p&gt;</description></item><item><title>03 신원을 주고받는 두 프록시 — 사이드카와 사이드카 사이</title><link>https://docs.makgol.com/study/istio-mesh/03-proxy-to-proxy/</link><pubDate>Sat, 07 Nov 2026 00:00:00 +0900</pubDate><guid>https://docs.makgol.com/study/istio-mesh/03-proxy-to-proxy/</guid><description>
&lt;h1&gt;03 · 신원을 주고받는 두 프록시 — 사이드카와 사이드카 사이&lt;/h1&gt;&lt;p&gt;앱 A가 &lt;code&gt;http://svc-b:8080&lt;/code&gt;을 부르면 양쪽 사이드카가 요청을 주고받습니다. 아래는 HTTP로 인식한 내부 호출의 경로입니다.&lt;/p&gt;</description></item><item><title>04 요청을 읽는 갈림길 — L7 프록시가 여는 기능</title><link>https://docs.makgol.com/study/istio-mesh/04-l7-only-features/</link><pubDate>Sat, 07 Nov 2026 00:00:00 +0900</pubDate><guid>https://docs.makgol.com/study/istio-mesh/04-l7-only-features/</guid><description>
&lt;h1&gt;04 · 요청을 읽는 갈림길 — L7 프록시가 여는 기능&lt;/h1&gt;&lt;p&gt;HTTP를 읽는 사이드카는 연결 하나 안의 요청을 각각 다른 파드로 보낼 수 있습니다. 재시도·트래픽 분할·경로별 인가도 이 요청 경계에서 시작합니다.&lt;/p&gt;</description></item><item><title>05 요청 뒤에 남은 발자국 — 메트릭·로그·트레이스</title><link>https://docs.makgol.com/study/istio-mesh/05-logs-and-tracing/</link><pubDate>Sat, 07 Nov 2026 00:00:00 +0900</pubDate><guid>https://docs.makgol.com/study/istio-mesh/05-logs-and-tracing/</guid><description>
&lt;h1&gt;05 · 요청 뒤에 남은 발자국 — 메트릭·로그·트레이스&lt;/h1&gt;&lt;p&gt;같은 요청도 어느 프록시에서 보느냐에 따라 기록이 달라집니다. 먼저 호출 쪽과 대상 쪽을 나눠 봅니다.&lt;/p&gt;
&lt;figure class="vm-flow"&gt;
&lt;figcaption class="flow-caption"&gt;정상적인 내부 호출을 양쪽 사이드카가 각각 관측합니다. reporter를 구분하지 않고 합산하면 같은 호출을 중복해서 셉니다.&lt;/figcaption&gt;
&lt;script type="application/json" class="flow-spec"&gt;{
"caption": "정상적인 내부 호출을 양쪽 사이드카가 각각 관측합니다. reporter를 구분하지 않고 합산하면 같은 호출을 중복해서 셉니다.",
"font": 1.2,
"nodes": [
{
"id": "a",
"col": 0,
"row": 0,
"label": "호출 앱",
"kind": "src"
},
{
"id": "cs",
"col": 0,
"row": 1,
"label": "호출 사이드카",
"sub": "outbound",
"kind": "proc"
},
{
"id": "ss",
"col": 1,
"row": 1,
"label": "대상 사이드카",
"sub": "inbound",
"kind": "proc"
},
{
"id": "b",
"col": 1,
"row": 0,
"label": "대상 앱",
"kind": "sink"
},
{
"id": "cr",
"col": 0,
"row": 2,
"label": "source",
"sub": "호출 쪽 메트릭",
"kind": "store"
},
{
"id": "sr",
"col": 1,
"row": 2,
"label": "destination",
"sub": "대상 쪽 메트릭",
"kind": "store"
}
],
"edges": [
{
"from": "a",
"to": "cs",
"label": "HTTP"
},
{
"from": "cs",
"to": "ss",
"label": "mTLS"
},
{
"from": "ss",
"to": "b",
"label": "HTTP"
},
{
"from": "cs",
"to": "cr",
"label": "요청마다"
},
{
"from": "ss",
"to": "sr",
"label": "요청마다"
}
]
}
&lt;/script&gt;&lt;details class="vm-spec-text"&gt;
&lt;summary&gt;도식 텍스트&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;호출 앱&lt;/li&gt;
&lt;li&gt;호출 사이드카 — outbound&lt;/li&gt;
&lt;li&gt;대상 사이드카 — inbound&lt;/li&gt;
&lt;li&gt;대상 앱&lt;/li&gt;
&lt;li&gt;source — 호출 쪽 메트릭&lt;/li&gt;
&lt;li&gt;destination — 대상 쪽 메트릭&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;mTLS&lt;/li&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;요청마다&lt;/li&gt;
&lt;li&gt;요청마다&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;/figure&gt;
&lt;h2&gt;요청 하나, 두 관측 지점&lt;span class="hx:absolute hx:-mt-20" id="요청-하나에-기록이-두-번-남는-자리"&gt;&lt;/span&gt;
&lt;a href="#%ec%9a%94%ec%b2%ad-%ed%95%98%eb%82%98%ec%97%90-%ea%b8%b0%eb%a1%9d%ec%9d%b4-%eb%91%90-%eb%b2%88-%eb%82%a8%eb%8a%94-%ec%9e%90%eb%a6%ac" class="subheading-anchor" aria-label="이 섹션에 대한 고유 링크"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;reporter=&amp;quot;source&amp;quot;&lt;/code&gt;는 호출 쪽, &lt;code&gt;reporter=&amp;quot;destination&amp;quot;&lt;/code&gt;은 대상 쪽 프록시의 메트릭입니다. 둘을 합하면 정상적인 내부 호출도 중복 집계됩니다. 재시도나 연결 실패가 끼면 양쪽 수치가 달라질 수 있습니다.&lt;/p&gt;</description></item></channel></rss>