<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>makgol's note – 버전 변경</title><link>https://docs.makgol.com/platform/istio/releases/</link><description>Recent content in 버전 변경 on makgol's note</description><generator>Hugo -- gohugo.io</generator><language>ko-KR</language><copyright>© 2026 Mont</copyright><lastBuildDate>Sun, 04 Oct 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://docs.makgol.com/platform/istio/releases/index.xml" rel="self" type="application/rss+xml"/><item><title>1.20 → 1.24 — ambient가 실험에서 나온 구간</title><link>https://docs.makgol.com/istio/16-changelog-1.20-1.24/</link><pubDate>Sat, 01 Aug 2026 00:00:00 +0900</pubDate><guid>https://docs.makgol.com/istio/16-changelog-1.20-1.24/</guid><description>
&lt;h1&gt;10 · 1.20 → 1.24 — ambient가 실험에서 나오고, 설치 경로가 바뀐다&lt;/h1&gt;&lt;div class="hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200"&gt;
&lt;div class="hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2"&gt;&lt;svg height=1.2em class="hx:inline-block hx:align-middle" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;div class="hx:w-full hx:min-w-0 hx:leading-7"&gt;
&lt;div class="hx:mt-6 hx:leading-7 hx:first:mt-0"&gt;&lt;ul&gt;
&lt;li&gt;이 구간에서 벌어진 일은 ambient가 alpha → Beta(1.22.0) → GA(1.24.0)로 올라간 것, 그리고 설치·관리 경로가 강제로 바뀐 것(in-cluster operator 폐기 1.23.0 → 제거 1.24.0, &lt;a href="https://github.com/istio/istio/pull/52090"target="_blank" rel="noopener"&gt;#52090&lt;/a&gt;)입니다. 앞의 것은 선택이지만 뒤의 것은 선택이 아닙니다 — sidecar를 유지하는 클러스터도 1.24 이상으로 가려면 그대로 맞습니다.&lt;/li&gt;
&lt;li&gt;ambient GA는 sidecar의 폐기 신호가 아닙니다. 1.20~1.24 어느 upgrade-notes·change-notes에도 sidecar injection을 deprecated로 표시한 문구가 없고 최신 스냅샷 문서도 sidecar를 &amp;ldquo;thoroughly battle-tested&amp;quot;라며 두 개의 main data plane mode 중 하나로 나란히 둡니다. 우리 방침(ambient 금지)은 유효하고 이 구간 사실만으로는 재검토 트리거도 발생하지 않았습니다(§2.4).&lt;/li&gt;
&lt;li&gt;제거된 것은 in-cluster 컨트롤러와 &lt;code&gt;istio-operator&lt;/code&gt; 차트이고 &lt;code&gt;IstioOperator&lt;/code&gt; API 타입은 1.30.0에도 살아 있습니다(&lt;code&gt;operator/pkg/apis/types.go&lt;/code&gt;, &lt;code&gt;install.istio.io/v1alpha1&lt;/code&gt;). &lt;code&gt;istioctl install -f istio.yaml&lt;/code&gt;도 그대로 동작합니다 — &amp;ldquo;IstioOperator가 죽었다&amp;quot;는 요약은 틀렸습니다.&lt;/li&gt;
&lt;li&gt;1.24.0에서 CRD가 Helm 템플릿으로 이동하고 &lt;code&gt;base.enableCRDTemplates&lt;/code&gt;가 기본 &lt;code&gt;true&lt;/code&gt;가 됩니다(&lt;a href="https://github.com/istio/istio/issues/43204"target="_blank" rel="noopener"&gt;#43204&lt;/a&gt;). CRD를 &lt;code&gt;kubectl apply&lt;/code&gt;나 이전 &lt;code&gt;helm install&lt;/code&gt;로 넣었다면 1.24 전에 1회 &lt;code&gt;kubectl label/annotate&lt;/code&gt;로 Helm 소유권 이관을 해야 하고 ArgoCD가 만든 실제 Helm 릴리스명을 모르면 이 명령을 실행하면 안 됩니다.&lt;/li&gt;
&lt;li&gt;sidecar 트래픽 동작을 바꾸는 플래그 7개가 1.24.0에 한꺼번에 들어오고 전부 기본 &lt;code&gt;true&lt;/code&gt;입니다(§5.6) — &lt;code&gt;ENABLE_INBOUND_RETRY_POLICY&lt;/code&gt;·&lt;code&gt;EXCLUDE_UNSAFE_503_FROM_DEFAULT_RETRY&lt;/code&gt;·&lt;code&gt;PILOT_UNIFIED_SIDECAR_SCOPE&lt;/code&gt;·&lt;code&gt;ENABLE_ENHANCED_DESTINATIONRULE_MERGE&lt;/code&gt;·&lt;code&gt;PREFER_DESTINATIONRULE_TLS_FOR_EXTERNAL_SERVICES&lt;/code&gt;·&lt;code&gt;ENABLE_DEFERRED_STATS_CREATION&lt;/code&gt;·&lt;code&gt;BYPASS_OVERLOAD_MANAGER_FOR_STATIC_LISTENERS&lt;/code&gt;. 이 7개가 &lt;code&gt;compatibilityVersion=1.23&lt;/code&gt; 프로파일의 내용입니다.&lt;/li&gt;
&lt;li&gt;1.21.0의 TLS 기본값 두 개가 egress를 끊을 수 있습니다. &lt;code&gt;ENABLE_AUTO_SNI&lt;/code&gt;와 &lt;code&gt;VERIFY_CERTIFICATE_AT_CLIENT&lt;/code&gt;가 함께 &lt;code&gt;true&lt;/code&gt;가 되면서 &lt;code&gt;caCertificates&lt;/code&gt; 없는 &lt;code&gt;DestinationRule&lt;/code&gt; TLS 오리지네이션이 OS CA로 검증을 시작합니다. 사설 CA 대상은 그 순간 실패합니다.&lt;/li&gt;
&lt;li&gt;istio.io 문서의 플래그명이 실제 env var와 다른 곳이 두 군데입니다. 1.21 upgrade-notes는 &lt;code&gt;VERIFY_CERT_AT_CLIENT&lt;/code&gt;라 쓰지만 등록명은 &lt;code&gt;VERIFY_CERTIFICATE_AT_CLIENT&lt;/code&gt;(&lt;code&gt;pilot/pkg/features/pilot.go:239&lt;/code&gt;)고 1.22 upgrade-notes는 &lt;code&gt;ENHANCED_RESOURCE_SCOPING&lt;/code&gt;이라 쓰지만 실제는 &lt;code&gt;ENABLE_ENHANCED_RESOURCE_SCOPING&lt;/code&gt;(&lt;code&gt;experimental.go:182&lt;/code&gt;)입니다. 문서를 복사해 env를 걸면 아무 일도 일어나지 않습니다.&lt;/li&gt;
&lt;li&gt;1.23.0에 공개 upgrade-notes 페이지에 실리지 않은 메트릭 파괴 변경이 있습니다. &lt;code&gt;ENABLE_DELIMITED_STATS_TAG_REGEX&lt;/code&gt;(기본 &lt;code&gt;true&lt;/code&gt;, &lt;a href="https://github.com/istio/istio/pull/52271"target="_blank" rel="noopener"&gt;#52271&lt;/a&gt;)가 Envoy cluster 메트릭의 &lt;code&gt;cluster_name&lt;/code&gt;·&lt;code&gt;http_conn_manager_prefix&lt;/code&gt; 라벨 파싱을 바꿉니다. 근거는 릴리스노트 원본 &lt;code&gt;releasenotes/notes/51761.yaml&lt;/code&gt;의 &lt;code&gt;upgradeNote&lt;/code&gt;뿐입니다 — 대시보드가 경고 없이 깨지는 종류입니다.&lt;/li&gt;
&lt;li&gt;1.22.0의 &lt;code&gt;v1&lt;/code&gt; 승격은 &amp;ldquo;추가&amp;quot;이지 &amp;ldquo;이동&amp;quot;이 아닙니다. CRD가 &lt;code&gt;v1&lt;/code&gt;·&lt;code&gt;v1alpha3&lt;/code&gt;·&lt;code&gt;v1beta1&lt;/code&gt; 셋을 모두 served로 제공하고 storage 버전은 1.22.0에 &lt;code&gt;v1alpha3&lt;/code&gt;에서 &lt;code&gt;v1beta1&lt;/code&gt;로 올라가 1.26.0까지 남습니다(1.27.0에서 &lt;code&gt;v1&lt;/code&gt;로 이동). &lt;code&gt;v1alpha3&lt;/code&gt;로 쓴 옛 매니페스트는 1.30.0 기준으로도 그대로 apply됩니다.&lt;/li&gt;
&lt;li&gt;1.24 계열은 k8s ≤1.31까지입니다. 하한 가정(chart tip 1.24.1)이 k8s 1.33 위에서는 지원 대상 밖이라는 뜻이고 1.24는 2025-06-24에 EOL이라 compat profile로 버티는 선택지 자체가 이미 없습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;1.24를 하한으로 가정하고 1.30.3까지 올리는 계획에서 1.20~1.24는 &amp;ldquo;이미 지나온 구간&amp;quot;으로 취급되기 쉽습니다. 그런데 이 구간에는 지나왔는지 아닌지를 클러스터를 봐야 알 수 있는 항목이 셋 있습니다 — in-cluster operator를 쓰고 있는지, CRD의 Helm 소유권 이관을 했는지, 1.21의 TLS 기본값 전환에 egress가 걸렸는지. &amp;ldquo;1.24가 이미 떠 있다&amp;quot;는 사실만으로는 확인되지 않고 안 했으면 다음 홉에서 터집니다. 이 문서는 5개 마이너를 나열하는 대신 그 종류의 항목에만 지면을 줍니다.&lt;/p&gt;</description></item><item><title>1.25 → 1.30 — sidecar 운영자가 맞는 청구서</title><link>https://docs.makgol.com/istio/17-changelog-1.25-1.30/</link><pubDate>Sat, 01 Aug 2026 00:00:00 +0900</pubDate><guid>https://docs.makgol.com/istio/17-changelog-1.25-1.30/</guid><description>
&lt;h1&gt;11 · 1.25 → 1.30 — ambient를 안 써도 피할 수 없는 변경들&lt;/h1&gt;&lt;div class="hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200"&gt;
&lt;div class="hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2"&gt;&lt;svg height=1.2em class="hx:inline-block hx:align-middle" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;div class="hx:w-full hx:min-w-0 hx:leading-7"&gt;
&lt;div class="hx:mt-6 hx:leading-7 hx:first:mt-0"&gt;&lt;ul&gt;
&lt;li&gt;이 구간의 최대 사건은 native sidecar 기본화(1.27.0)입니다. ambient가 아닙니다. &lt;code&gt;istio-proxy&lt;/code&gt;가 일반 컨테이너를 떠나 init 컨테이너(&lt;code&gt;restartPolicy: Always&lt;/code&gt;)가 되면서 파드 스펙·기동 순서·종료 순서·Job 완료 판정이 한꺼번에 달라집니다.&lt;/li&gt;
&lt;li&gt;1.27 change-notes의 &amp;ldquo;default to &lt;code&gt;true&lt;/code&gt;&amp;ldquo;는 틀렸습니다. 코드가 등록하는 기본값은 문자열 &lt;code&gt;&amp;quot;auto&amp;quot;&lt;/code&gt;입니다(1.27.0 &lt;code&gt;pilot/pkg/features/pilot.go:307&lt;/code&gt;, 직전 1.26.0은 &lt;code&gt;experimental.go:179&lt;/code&gt;의 bool &lt;code&gt;false&lt;/code&gt;). &lt;code&gt;true&lt;/code&gt;면 무조건 활성이지만 &lt;code&gt;&amp;quot;auto&amp;quot;&lt;/code&gt;는 노드 kubelet 버전 조건부라 판단이 완전히 달라집니다.&lt;/li&gt;
&lt;li&gt;전환 시점은 노드 kubelet 버전이 정합니다. &lt;code&gt;DetectNativeSidecar&lt;/code&gt;가 모든 Node를 훑어 kubelet 마이너가 하나라도 33 미만이면 끕니다(&lt;code&gt;pkg/kube/inject/webhook.go:1235-1286&lt;/code&gt;, &lt;code&gt;minVersion := 33&lt;/code&gt;). 1.30 + k8s 1.32 조합에서는 안 켜집니다. 목표인 k8s 1.35에서는 켜지고 green(k8s 1.31)에서는 끝까지 안 켜집니다.&lt;/li&gt;
&lt;li&gt;green(k8s 1.31)에는 1.30을 설치할 수 없습니다 — 1.30의 k8s 하한이 1.32입니다. green에서 닿는 상한이 1.29(EOL ~2026-08)이니 목표 1.30.3은 k8s 1.35 신규 클러스터에서만 성립합니다(§1·§8).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;holdApplicationUntilProxyStarts&lt;/code&gt;는 native가 켜지면 경고 한 줄 없이 무효가 됩니다. 템플릿이 &lt;code&gt;$holdProxy := and (…hold…) (not $nativeSidecar)&lt;/code&gt;로 계산해 &lt;code&gt;postStart: pilot-agent wait&lt;/code&gt; 훅을 렌더에서 빼고 그 자리에 &lt;code&gt;preStop&lt;/code&gt; drain 훅을 놓습니다(1.30.3 &lt;code&gt;injection-template.yaml:71-77,215-235&lt;/code&gt;). 값을 지우는 것은 조치가 아닙니다 — 남겨둬도 아무 일도 일어나지 않습니다.&lt;/li&gt;
&lt;li&gt;사용자 init 컨테이너가 메시 안으로 들어옵니다. &lt;code&gt;reorderPod&lt;/code&gt;는 classic에서 &lt;code&gt;istio-init&lt;/code&gt;을 initContainers 마지막에(&amp;ldquo;iptables setup last so we do not blackhole init containers&amp;rdquo;), native에서 맨 앞에(&amp;ldquo;istio first, so init containers are part of the mesh&amp;rdquo;) 둡니다(&lt;code&gt;webhook.go:805-825&lt;/code&gt;). init의 egress가 iptables·mTLS·&lt;code&gt;AuthorizationPolicy&lt;/code&gt; 대상이 됩니다. 릴리스노트에 이 항목이 없습니다.&lt;/li&gt;
&lt;li&gt;1.29 차트 통합의 이름 변경은 우리에게 해당 없을 가능성이 큽니다. upgrade-notes는 &lt;code&gt;ClusterRole istiod&lt;/code&gt; → &lt;code&gt;istiod-clusterrole&lt;/code&gt; 매핑표를 싣지만 로컬 클론의 istiod 차트는 1.22.0부터 이미 신 이름이고 base 차트 템플릿은 1.28.0↔1.30.3이 동일합니다. 체크리스트를 &amp;ldquo;rename 대응&amp;quot;에서 &amp;ldquo;구 이름 orphan 탐색&amp;quot;으로 바꿔야 합니다.&lt;/li&gt;
&lt;li&gt;알람이 소리 없이 죽는 곳이 셋, 라우팅이 예고 없이 바뀌는 곳이 둘입니다 — 앞의 셋은 1.29의 서킷브레이커 remaining 메트릭 기본 비활성·stats 압축 기본 활성·디버그 엔드포인트 인증(15014→1.30의 15010), 뒤의 둘은 1.30의 동일 hostname 서비스 선택 로직 변경(&lt;code&gt;PILOT_SIDECAR_PICK_BEST_SERVICE_NAMESPACE&lt;/code&gt;, 기본 &lt;code&gt;true&lt;/code&gt;)과 &lt;code&gt;retryBudget&lt;/code&gt; 기본 &lt;code&gt;percent&lt;/code&gt; 0.2%→20% 수정(&lt;a href="https://github.com/istio/istio/issues/59504"target="_blank" rel="noopener"&gt;#59504&lt;/a&gt;, 100배 차이)입니다. 다섯 다 에러가 없습니다.&lt;/li&gt;
&lt;li&gt;sidecar deprecate 신호는 이 구간에 없습니다. 1.30까지 어떤 공지·문서도 sidecar mode를 deprecated로 표시하지 않았고 native sidecar 기본화와 sidecar용 nftables 지원(1.27)은 sidecar 경로에 들인 투자입니다. 재검토 트리거는 §5에 다섯 개로 적어 뒀습니다. 판정은 native sidecar 검증·플래그/메트릭 grep·Gateway API CRD 확인·CVE 패치가 지금, stats 압축·디버그 엔드포인트 정리·&lt;code&gt;seccompProfile&lt;/code&gt;이 다음 분기, nftables·&lt;code&gt;TrafficExtension&lt;/code&gt;·agentgateway·ambient가 보류입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;왜 이 문서인가. 목표로 잡은 1.30.3이 이 구간의 끝입니다. 그러니 남의 릴리스노트를 요약하지 않고 우리 업그레이드가 반드시 통과할 변경만 적습니다. 헤드라인은 전부 ambient(멀티클러스터 beta, DNS 캡처 기본화, 마이그레이션 가이드 신설)이고 우리는 ambient를 안 쓰는데 그래도 못 넘어갈 것이 세 종류 남습니다 — ① 파드 스펙 자체를 바꾸는 것(native sidecar), ② 리소스 이름·차트 구조를 바꾸는 것(1.29 통합), ③ 플래그·메트릭 기본값을 바꿔 알람을 무효화하는 것. CI는 셋 중 어느 것도 못 잡습니다. ①의 렌더 결과는 유효한 yaml이고 ②에서 Helm은 에러를 안 냅니다. ③은 쿼리가 0을 리턴할 뿐입니다.&lt;/p&gt;</description></item></channel></rss>