<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>카레제육 블로그</title>
    <link>https://cloudev.tistory.com/</link>
    <description>안녕하세요. 방문해주셔서 감사합니다.
주니어 개발자 윤서율입니다. 언젠가 지나온 날들을 되돌아봤을 때 그땐 이처럼 즐거웠구나!' 할 수 있는 블로그를 만들기 위해서 노력하고 있습니다.</description>
    <language>ko</language>
    <pubDate>Mon, 13 Apr 2026 04:50:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>kare jeyuk</managingEditor>
    <image>
      <title>카레제육 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/5291453/attach/9270549da8da479c86e6936a391394b2</url>
      <link>https://cloudev.tistory.com</link>
    </image>
    <item>
      <title>KubeCon + CloudNativeCon Europe 2026 기초연설</title>
      <link>https://cloudev.tistory.com/entry/KubeCon-CloudNativeCon-Europe-2026-%EA%B8%B0%EC%B4%88%EC%97%B0%EC%84%A4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt;최근 열린 KubeCon 2026에서는 클라우드 네이티브 생태계가 AI 시대를 맞이하여 어떻게 진화하고 있는지 엿볼 수 있었다&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt;. 특히 AI 인프라의 핵심으로 자리 잡은 쿠버네티스의 역할과, 글로벌 빅테크 기업들의 적극적인 오픈소스 기여가 눈에 띈다. 이번 행사에서는 특히 엔비디아의 CNCF 합류를 강조한것으로 보였다.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-start-index=&quot;251&quot; data-ke-size=&quot;size23&quot;&gt;AI 추론(Inference), 인프라의 패러다임을 바꾸다&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbUk63/dJMcafMTgo3/NmfkHmCtCcKCxJMw6cijok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbUk63/dJMcafMTgo3/NmfkHmCtCcKCxJMw6cijok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbUk63/dJMcafMTgo3/NmfkHmCtCcKCxJMw6cijok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbUk63%2FdJMcafMTgo3%2FNmfkHmCtCcKCxJMw6cijok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;919&quot; height=&quot;514&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot; data-start-index=&quot;283&quot;&gt;AI 모델의 중심이 학습(Training)에서 추론(Inference)으로 빠르게 이동하고 있다. 2023년까지만 해도 AI 컴퓨팅 리소스의 3분의 2가 모델 학습에 사용되었으나, 올해 말에는 이 비율이 역전되어 &lt;/span&gt;전체 AI 컴퓨팅의 3분의 2가 추론 워크로드에 할당될 전망&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot; data-start-index=&quot;435&quot;&gt;이다&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot; data-start-index=&quot;437&quot;&gt;. 2020년대 말에는 추론 전용 컴퓨팅 용량이 93.3기가와트를 넘어서며, 이는 다른 모든 컴퓨팅 부하를 합친 것보다 더 큰 규모가 될 것으로 예상된다&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt;. 단순한 챗봇을 넘어 코딩 에이전트와 같은 자율적인 AI 에이전트들이 추론 플랫폼의 '슈퍼 유저'로 활동하면서 사용량이 기하급수적으로 폭증하고 있기 때문이다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot; data-start-index=&quot;435&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot; data-start-index=&quot;437&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-start-index=&quot;611&quot; data-ke-size=&quot;size23&quot;&gt;엔비디아(NVIDIA), CNCF 플래티넘 회원으로 합류&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rXNoF/dJMcaa5Rsas/rJCqnLtpGLCdLPWldb2J01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rXNoF/dJMcaa5Rsas/rJCqnLtpGLCdLPWldb2J01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rXNoF/dJMcaa5Rsas/rJCqnLtpGLCdLPWldb2J01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrXNoF%2FdJMcaa5Rsas%2FrJCqnLtpGLCdLPWldb2J01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;919&quot; height=&quot;512&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 행사에서 가장 주목받은 소식 중 하나는 엔비디아가 CNCF의 최고 등급인 플래티넘 회원으로 합류했다는 점이라고 생각한다&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt;. 엔비디아는 AI의 미래가 쿠버네티스와 마찬가지로 커뮤니티 주도적이고 개방적인 형태(open)로 구축되어야 한다고 강조한다. 앞으로 AI가 직면할 과제들은 단순한 모델의 문제가 아니라 인프라, 확장성, 상호 운용성 등의 문제이며, 이는 단일 기업이 독자적으로 해결할 수 없기 때문이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔비디아는&amp;nbsp;생태계&amp;nbsp;발전을&amp;nbsp;위해 아래와 같은 실질적이고&amp;nbsp;대대적인&amp;nbsp;기여를&amp;nbsp;약속했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- GPU 드라이버 기증: 쿠버네티스 SIG Node에 NVIDIA GPU 드라이버를 직접 기증하여&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt; 벤더 중립적인 쿠버네티스 DRA(Dynamic Resource Allocation) API의 참조 구현체(reference implementation) 역할을 하여 AI 인프라 표준화에 크게 기여할 것으로 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt;- 컴퓨팅 자원 지원: 향후 3년간 400만 달러를 약정하여, NVIDIA GPU가 필요한 모든 CNCF 프로젝트가 관련 컴퓨팅 자원에 원활하게 접근할 수 있도록 보장한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt;- 오픈소스 프로젝트 공유: AI 클러스터 런타임인 'Acre'를 오픈소스로 공개하였으며, 스케줄러인 'Kai'를 CNCF 샌드박스 프로젝트에 기여하는 등 직접적인 기술 공유를 확대한다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #303030; text-align: start;&quot;&gt;AI&amp;nbsp;네이티브로&amp;nbsp;진화하는&amp;nbsp;쿠버네티스와&amp;nbsp;새로운&amp;nbsp;생태계&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체적인 생태계 역시 AI 워크로드를 효과적으로 지원하기 위한 다양한 변화를 맞이하고 있다. 최근 CNCF를 졸업(Graduated)한 프로젝트로는 보안 및 정책에 중점을 둔 Kyverno와 대용량 바이너리 및 AI 모델 배포에 특화된 Dragonfly가 있으며, Fluid와 Tekton은 지속적 제공 및 AI 활용 가속화를 목표로 인큐베이션(Incubation) 단계에 진입했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7e9qV/dJMcaflNqhB/IOgmAvcm2DVyfy8gEbzIa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7e9qV/dJMcaflNqhB/IOgmAvcm2DVyfy8gEbzIa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7e9qV/dJMcaflNqhB/IOgmAvcm2DVyfy8gEbzIa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7e9qV%2FdJMcaflNqhB%2FIOgmAvcm2DVyfy8gEbzIa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;922&quot; height=&quot;514&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 새롭게 CNCF 샌드박스에 합류한 llm-d는 클러스터 전체의 분산형 AI 추론을 최적화하는 프로젝트다. 단순한&amp;nbsp;라우팅을&amp;nbsp;넘어&amp;nbsp;프롬프트를&amp;nbsp;검사해&amp;nbsp;특정&amp;nbsp;데이터를&amp;nbsp;KV&amp;nbsp;캐시에&amp;nbsp;보유한&amp;nbsp;GPU로&amp;nbsp;요청을&amp;nbsp;보내는&amp;nbsp;추론&amp;nbsp;게이트웨이(Inference&amp;nbsp;Gateway)&amp;nbsp;기능과,&amp;nbsp;연산&amp;nbsp;집약적인&amp;nbsp;'프리필(prefill)'&amp;nbsp;단계와&amp;nbsp;메모리&amp;nbsp;집약적인&amp;nbsp;'디코드(decode)'&amp;nbsp;단계를&amp;nbsp;분리하여&amp;nbsp;독립적으로&amp;nbsp;스케일링하는&amp;nbsp;세분화된&amp;nbsp;추론(Disaggregated&amp;nbsp;Inference)&amp;nbsp;아키텍처를&amp;nbsp;지원한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Em2zF/dJMcac3DY4e/TtBzDiFqXO4xTgFIaFdCRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Em2zF/dJMcac3DY4e/TtBzDiFqXO4xTgFIaFdCRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Em2zF/dJMcac3DY4e/TtBzDiFqXO4xTgFIaFdCRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEm2zF%2FdJMcac3DY4e%2FTtBzDiFqXO4xTgFIaFdCRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;916&quot; height=&quot;513&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스는 이러한 기술들을 표준화하기 위해 AI 적합성(AI Conformance) 프로그램을 개편했다.&amp;nbsp;플랫폼이&amp;nbsp;쿠버네티스&amp;nbsp;Gateway&amp;nbsp;API&amp;nbsp;및&amp;nbsp;지능형&amp;nbsp;추론&amp;nbsp;라우팅(Inference&amp;nbsp;Extension)을&amp;nbsp;지원하는지,&amp;nbsp;그리고&amp;nbsp;세분화된&amp;nbsp;추론을&amp;nbsp;지원하는지를&amp;nbsp;새로운&amp;nbsp;필수&amp;nbsp;인증&amp;nbsp;요건으로&amp;nbsp;추가하여&amp;nbsp;일관된&amp;nbsp;AI&amp;nbsp;인프라&amp;nbsp;환경을&amp;nbsp;검증하고&amp;nbsp;있다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UDCxN/dJMcaiv08Fh/hxZSsJjbdY2x1y7RAqqPpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UDCxN/dJMcaiv08Fh/hxZSsJjbdY2x1y7RAqqPpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UDCxN/dJMcaiv08Fh/hxZSsJjbdY2x1y7RAqqPpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUDCxN%2FdJMcaiv08Fh%2FhxZSsJjbdY2x1y7RAqqPpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;916&quot; height=&quot;510&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Daily</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/68</guid>
      <comments>https://cloudev.tistory.com/entry/KubeCon-CloudNativeCon-Europe-2026-%EA%B8%B0%EC%B4%88%EC%97%B0%EC%84%A4#entry68comment</comments>
      <pubDate>Thu, 2 Apr 2026 11:55:33 +0900</pubDate>
    </item>
    <item>
      <title>CNCK 활동</title>
      <link>https://cloudev.tistory.com/entry/CNCK-%EC%B0%BD%EC%84%A4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;얼마&amp;nbsp;전,&amp;nbsp;&lt;a title=&quot;CNCK&quot; href=&quot;https://community.cncf.io/cloud-native-community-korea/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNCK(Cloud&amp;nbsp;Native&amp;nbsp;Community&amp;nbsp;Korea)&lt;/a&gt;라는 커뮤니티의 오거나이저로 합류하게 됐다.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;CNCK는 CNCF(Cloud Native Computing Foundation)의 벤더 중립 철학을 한국에 확산한다는 목표로 만들어진 커뮤니티로, 클라우드 네이티브, AI 네이티브, 오픈소스 키워드들에 관심 있는 사람이라면 누구든 함께할 수 있는 열린 공간을 지향하고 있다.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;글로벌 클라우드 네이티브 생태계는 빠르게 움직이는데, 한국 현장의 목소리가 그 흐름에 자연스럽게 닿을 수 있는 채널은 보이지 않았다. 그리고 반대로 글로벌에서 일어나는 논의와 변화가 국내에 전해지는 속도도 늘 한 박자 느린 느낌이었다. CNCK는 바로 그 간극을 메우려는 시도다. 국내 현장의 요구와 의견을 글로벌 업스트림에 전달하고, 동시에 글로벌&amp;nbsp;생태계의&amp;nbsp;흐름을&amp;nbsp;국내로&amp;nbsp;가져오는&amp;nbsp;연결&amp;nbsp;고리가&amp;nbsp;되는&amp;nbsp;것이&amp;nbsp;목표다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;이제 시작하는 커뮤니티 조직의 오거나이저라는 타이틀이 주는 무게감이 없다고 하면 거짓말이겠지만, 솔직히 그보다는 기대가 훨씬 크다. 아직 아무것도 정해지지 않은 단계에서부터 함께 만들어간다는 것 자체가 재밌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;세미나도 하고 싶고, 밋업도 열고 싶고, 국내 엔지니어들이 글로벌 오픈소스 프로젝트에 기여하는 경험을 더 쉽게 해볼 수 있도록 돕는 활동도 해보고 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정식 오프라인 킥오프 미팅이 기다려진다&lt;/p&gt;</description>
      <category>Daily</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/67</guid>
      <comments>https://cloudev.tistory.com/entry/CNCK-%EC%B0%BD%EC%84%A4#entry67comment</comments>
      <pubDate>Sat, 7 Feb 2026 23:38:54 +0900</pubDate>
    </item>
    <item>
      <title>AWS EKS 파드 수 제한 계산기</title>
      <link>https://cloudev.tistory.com/entry/AWS-EKS-%ED%8C%8C%EB%93%9C-%EC%88%98-%EC%A0%9C%ED%95%9C-%EA%B3%84%EC%82%B0%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;AWS&amp;nbsp;EKS를&amp;nbsp;사용하다보면,&amp;nbsp;가끔&amp;nbsp;리소스가&amp;nbsp;충분함에도&amp;nbsp;파드가&amp;nbsp;동작하지&amp;nbsp;못하는&amp;nbsp;경우를&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있는데요&amp;nbsp;이는&amp;nbsp;노드의&amp;nbsp;인스턴스&amp;nbsp;유형에&amp;nbsp;따라서&amp;nbsp;파드&amp;nbsp;수&amp;nbsp;제한&amp;nbsp;(네트워크&amp;nbsp;인터페이스에&amp;nbsp;따른&amp;nbsp;갯수&amp;nbsp;제한)이&amp;nbsp;존재하기&amp;nbsp;때문입니다.&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;제한은&amp;nbsp;노드의&amp;nbsp;네트워크&amp;nbsp;인터페이스(ENI)와&amp;nbsp;IP&amp;nbsp;주소&amp;nbsp;할당&amp;nbsp;가능&amp;nbsp;수에&amp;nbsp;따라&amp;nbsp;결정되며,&amp;nbsp;각&amp;nbsp;인스턴스&amp;nbsp;유형마다&amp;nbsp;최대&amp;nbsp;파드&amp;nbsp;수가&amp;nbsp;다릅니다.&amp;nbsp;이를&amp;nbsp;이해하면&amp;nbsp;클러스터&amp;nbsp;리소스&amp;nbsp;계획&amp;nbsp;및&amp;nbsp;파드&amp;nbsp;스케줄링&amp;nbsp;문제를&amp;nbsp;해결하는&amp;nbsp;데&amp;nbsp;도움이&amp;nbsp;됩니다.&lt;br /&gt;&lt;br /&gt;공식에&amp;nbsp;따라&amp;nbsp;직접&amp;nbsp;계산할&amp;nbsp;수&amp;nbsp;있고,&amp;nbsp;AWS&amp;nbsp;공식&amp;nbsp;Github&amp;nbsp;에서&amp;nbsp;해당&amp;nbsp;내용을&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있지만&amp;nbsp;간단히&amp;nbsp;검색할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;홈페이지를&amp;nbsp;공유드립니다!!&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://aws-eks-max-pods.devops.ai.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://aws-eks-max-pods.devops.ai.kr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;982&quot; data-origin-height=&quot;1238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YGsC5/btsOWiLiGa3/ndHJuop17bXB8yuHM3t7K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YGsC5/btsOWiLiGa3/ndHJuop17bXB8yuHM3t7K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YGsC5/btsOWiLiGa3/ndHJuop17bXB8yuHM3t7K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYGsC5%2FbtsOWiLiGa3%2FndHJuop17bXB8yuHM3t7K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;362&quot; height=&quot;456&quot; data-origin-width=&quot;982&quot; data-origin-height=&quot;1238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Cloud</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/66</guid>
      <comments>https://cloudev.tistory.com/entry/AWS-EKS-%ED%8C%8C%EB%93%9C-%EC%88%98-%EC%A0%9C%ED%95%9C-%EA%B3%84%EC%82%B0%EA%B8%B0#entry66comment</comments>
      <pubDate>Mon, 30 Jun 2025 13:07:43 +0900</pubDate>
    </item>
    <item>
      <title>gateway api docs l10n 진행 2주가 흘렀다.</title>
      <link>https://cloudev.tistory.com/entry/gateway-api-docs-l10n-%EC%A7%84%ED%96%89-2%EC%A3%BC%EA%B0%80-%ED%9D%98%EB%A0%80%EB%8B%A4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzPJrR/btsN2qP1eE5/8CJaomgHr0RPDjvOSCKNeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzPJrR/btsN2qP1eE5/8CJaomgHr0RPDjvOSCKNeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzPJrR/btsN2qP1eE5/8CJaomgHr0RPDjvOSCKNeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzPJrR%2FbtsN2qP1eE5%2F8CJaomgHr0RPDjvOSCKNeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;321&quot; height=&quot;54&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;54&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 주소부터 공유드린다. &lt;a href=&quot;https://korean-mirror-gateway-api.netlify.app/&quot;&gt;https://korean-mirror-gateway-api.netlify.app/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1747474374392&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Introduction - Kubernetes Gateway API&quot; data-og-description=&quot;Introduction Gateway API is an official Kubernetes project focused on L4 and L7 routing in Kubernetes. This project represents the next generation of Kubernetes Ingress, Load Balancing, and Service Mesh APIs. From the outset, it has been designed to be gen&quot; data-og-host=&quot;korean-mirror-gateway-api.netlify.app&quot; data-og-source-url=&quot;https://korean-mirror-gateway-api.netlify.app/&quot; data-og-url=&quot;https://korean-mirror-gateway-api.netlify.app/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bn7VFg/hyYTgiQkgD/y9RaIKEmhyiuGQo0U6KtC0/img.png?width=800&amp;amp;height=700&amp;amp;face=37_173_189_497,https://scrap.kakaocdn.net/dn/lIyif/hyYTldnSQf/MCHrQ9xX7MPgWZEIeDvvl1/img.png?width=900&amp;amp;height=250&amp;amp;face=0_0_900_250&quot;&gt;&lt;a href=&quot;https://korean-mirror-gateway-api.netlify.app/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://korean-mirror-gateway-api.netlify.app/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bn7VFg/hyYTgiQkgD/y9RaIKEmhyiuGQo0U6KtC0/img.png?width=800&amp;amp;height=700&amp;amp;face=37_173_189_497,https://scrap.kakaocdn.net/dn/lIyif/hyYTldnSQf/MCHrQ9xX7MPgWZEIeDvvl1/img.png?width=900&amp;amp;height=250&amp;amp;face=0_0_900_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Introduction - Kubernetes Gateway API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Introduction Gateway API is an official Kubernetes project focused on L4 and L7 routing in Kubernetes. This project represents the next generation of Kubernetes Ingress, Load Balancing, and Service Mesh APIs. From the outset, it has been designed to be gen&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;korean-mirror-gateway-api.netlify.app&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 시작했다는 글을 작성한 지 2주가 지났지만, 이제서야 용어집과 대문인 소개 페이지의 한글화를 진행하였다. 현재 진행률은 PR 기준 약 12%로, 생각보다 매우 느린 진척도를 보이고 있다. 큰일이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;323&quot; data-start=&quot;240&quot; data-ke-size=&quot;size16&quot;&gt;한 페이지 작업에 많은 시간이 소요되는 이유도 한몫한다. 해당 용어가 공식 용어인지, 표현은 적절한지 등 확인해야 할 부분이 생각보다 많기 때문이다. PR을 올리게 된다면, 이후에는 Contributing을 진행하고, Guides, Reference, 그리고 Enhancements 순으로 진행할 예정이다.&lt;/p&gt;
&lt;p data-end=&quot;415&quot; data-start=&quot;328&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;653&quot; data-start=&quot;420&quot; data-ke-size=&quot;size16&quot;&gt;그런데, 정말 많은 공부가 되고 있다. 용어집을 제외하면 개요만 진행하였는데도, 벌써 왜 Gateway API가 생겨났는지 그 사상에 대해 이해할 수 있었다. 이 점은 기술 자체를 이해하는 데 생각보다 많은 도움이 되었다. (사실 쿠버네티스의 경우, 처음에는 그냥 사용하다가 왜 이 기술이 등장했는지를 나중에 찾아보며 익혔기 때문에, 공부에 공감과 이해가 필요했던 나로서는 처음 시작에 많은 어려움이 있었다.)&lt;/p&gt;
&lt;p data-end=&quot;666&quot; data-start=&quot;658&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;666&quot; data-start=&quot;658&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;666&quot; data-start=&quot;658&quot; data-ke-size=&quot;size16&quot;&gt;더 힘내 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gateway-api.sigs.k8s.io/concepts/glossary/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 페이지&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2404&quot; data-origin-height=&quot;1434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m7ATb/btsN01K1mRG/lDQE8juYuDAWIajcRSHjS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m7ATb/btsN01K1mRG/lDQE8juYuDAWIajcRSHjS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m7ATb/btsN01K1mRG/lDQE8juYuDAWIajcRSHjS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm7ATb%2FbtsN01K1mRG%2FlDQE8juYuDAWIajcRSHjS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2404&quot; height=&quot;1434&quot; data-origin-width=&quot;2404&quot; data-origin-height=&quot;1434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://korean-mirror-gateway-api.netlify.app/ko/concepts/glossary/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;한글화 미러 페이지&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2460&quot; data-origin-height=&quot;1468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXKQls/btsN1jYTgQh/Khye0hFdxuEamO0bCMPBu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXKQls/btsN1jYTgQh/Khye0hFdxuEamO0bCMPBu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXKQls/btsN1jYTgQh/Khye0hFdxuEamO0bCMPBu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXKQls%2FbtsN1jYTgQh%2FKhye0hFdxuEamO0bCMPBu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2460&quot; height=&quot;1468&quot; data-origin-width=&quot;2460&quot; data-origin-height=&quot;1468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Daily</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/65</guid>
      <comments>https://cloudev.tistory.com/entry/gateway-api-docs-l10n-%EC%A7%84%ED%96%89-2%EC%A3%BC%EA%B0%80-%ED%9D%98%EB%A0%80%EB%8B%A4#entry65comment</comments>
      <pubDate>Sun, 1 Jun 2025 17:12:57 +0900</pubDate>
    </item>
    <item>
      <title>gateway api docs l10n 시작</title>
      <link>https://cloudev.tistory.com/entry/gateway-api-docs-l10n-%EC%8B%9C%EC%9E%91</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzPJrR/btsN2qP1eE5/8CJaomgHr0RPDjvOSCKNeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzPJrR/btsN2qP1eE5/8CJaomgHr0RPDjvOSCKNeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzPJrR/btsN2qP1eE5/8CJaomgHr0RPDjvOSCKNeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzPJrR%2FbtsN2qP1eE5%2F8CJaomgHr0RPDjvOSCKNeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;321&quot; height=&quot;54&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;54&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 주소부터 공유드린다. &lt;a href=&quot;https://korean-mirror-gateway-api.netlify.app/&quot;&gt;https://korean-mirror-gateway-api.netlify.app/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1747474374392&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Introduction - Kubernetes Gateway API&quot; data-og-description=&quot;Introduction Gateway API is an official Kubernetes project focused on L4 and L7 routing in Kubernetes. This project represents the next generation of Kubernetes Ingress, Load Balancing, and Service Mesh APIs. From the outset, it has been designed to be gen&quot; data-og-host=&quot;korean-mirror-gateway-api.netlify.app&quot; data-og-source-url=&quot;https://korean-mirror-gateway-api.netlify.app/&quot; data-og-url=&quot;https://korean-mirror-gateway-api.netlify.app/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bn7VFg/hyYTgiQkgD/y9RaIKEmhyiuGQo0U6KtC0/img.png?width=800&amp;amp;height=700&amp;amp;face=37_173_189_497,https://scrap.kakaocdn.net/dn/lIyif/hyYTldnSQf/MCHrQ9xX7MPgWZEIeDvvl1/img.png?width=900&amp;amp;height=250&amp;amp;face=0_0_900_250&quot;&gt;&lt;a href=&quot;https://korean-mirror-gateway-api.netlify.app/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://korean-mirror-gateway-api.netlify.app/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bn7VFg/hyYTgiQkgD/y9RaIKEmhyiuGQo0U6KtC0/img.png?width=800&amp;amp;height=700&amp;amp;face=37_173_189_497,https://scrap.kakaocdn.net/dn/lIyif/hyYTldnSQf/MCHrQ9xX7MPgWZEIeDvvl1/img.png?width=900&amp;amp;height=250&amp;amp;face=0_0_900_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Introduction - Kubernetes Gateway API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Introduction Gateway API is an official Kubernetes project focused on L4 and L7 routing in Kubernetes. This project represents the next generation of Kubernetes Ingress, Load Balancing, and Service Mesh APIs. From the outset, it has been designed to be gen&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;korean-mirror-gateway-api.netlify.app&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전부터 관심을 가지고 있던 &lt;a title=&quot;gateway api&quot; href=&quot;https://gateway-api.sigs.k8s.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gateway api&lt;/a&gt;에 운 좋게도 업무와의 접점이 생기기 시작했다.&lt;br /&gt;문서를 읽을 때마다 DeepL에 의존하며 많은 리소스를 소모하고 있었는데, 종종 다른 분들도 같은 노력을 하고 있다는 걸 알게 되면서 바로 한글화를 시작하기로 마음먹었다. &lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;i&gt;(AI의 발전이 언어 장벽부터 없애줄거라 생각했는데... ㅠㅠ)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;380&quot; data-start=&quot;240&quot; data-ke-size=&quot;size16&quot;&gt;첫 시작은 자연스럽게 용어집부터였다.&lt;br /&gt;(여담으로, 예전에 Kubernetes 문서를 한글화했던 경험이 있어 그때 배운 노하우를 그대로 적용하고 있다. 그 과정에서 느꼈던 즐거움과 열정이 떠올랐고, 지금의 내 모습과 비교되면서 반성도 하게 되었다.)&lt;/p&gt;
&lt;p data-end=&quot;380&quot; data-start=&quot;240&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;380&quot; data-start=&quot;240&quot; data-ke-size=&quot;size16&quot;&gt;미러 홈페이지를 처음 구성할 때, 생각보다 난관이 있었다. kubernetes docs는 Hugo 라이브러리를 사용하여 UI 생성과 l10n을 위한 구성이 되어있었는데, gateway api의 경우 Mkdocs로 만들어져 있었고 l10n를 고려하지 않았던 것인지 디렉터리 구조와 동적 변경을 위한 javascipt를 따로 추가해야했다. 이 내용은 나중에 회고에 작성할 예정이다.&lt;/p&gt;
&lt;p data-end=&quot;380&quot; data-start=&quot;240&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;439&quot; data-start=&quot;382&quot; data-ke-size=&quot;size16&quot;&gt;개인적인 목표로 Overvice 페이지 한글화 진행이 완료 되는날, 공식 리포지터리에 이슈를 생성을 하고자한다.&lt;/p&gt;
&lt;p data-end=&quot;446&quot; data-start=&quot;441&quot; data-ke-size=&quot;size16&quot;&gt;힘내보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gateway-api.sigs.k8s.io/concepts/glossary/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 페이지&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2404&quot; data-origin-height=&quot;1434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m7ATb/btsN01K1mRG/lDQE8juYuDAWIajcRSHjS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m7ATb/btsN01K1mRG/lDQE8juYuDAWIajcRSHjS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m7ATb/btsN01K1mRG/lDQE8juYuDAWIajcRSHjS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm7ATb%2FbtsN01K1mRG%2FlDQE8juYuDAWIajcRSHjS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2404&quot; height=&quot;1434&quot; data-origin-width=&quot;2404&quot; data-origin-height=&quot;1434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://korean-mirror-gateway-api.netlify.app/ko/concepts/glossary/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;한글화 미러 페이지&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2460&quot; data-origin-height=&quot;1468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXKQls/btsN1jYTgQh/Khye0hFdxuEamO0bCMPBu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXKQls/btsN1jYTgQh/Khye0hFdxuEamO0bCMPBu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXKQls/btsN1jYTgQh/Khye0hFdxuEamO0bCMPBu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXKQls%2FbtsN1jYTgQh%2FKhye0hFdxuEamO0bCMPBu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2460&quot; height=&quot;1468&quot; data-origin-width=&quot;2460&quot; data-origin-height=&quot;1468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Daily</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/64</guid>
      <comments>https://cloudev.tistory.com/entry/gateway-api-docs-l10n-%EC%8B%9C%EC%9E%91#entry64comment</comments>
      <pubDate>Sat, 17 May 2025 18:42:58 +0900</pubDate>
    </item>
    <item>
      <title>Kubernetes CSR (CertificateSigningRequest) 리소스</title>
      <link>https://cloudev.tistory.com/entry/Kubernetes-CSR-CertificateSigningRequest-%EB%A6%AC%EC%86%8C%EC%8A%A4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;주변에서 생각보다 &lt;a href=&quot;https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Kubernetes CSR&lt;/a&gt;의 존재를 잘 모르거나, 단순히 cert-manager에서 사용하는 리소스 정도로 알고있는 경우가 있어 이번 기회에 정리하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kubernetes CSR은 v1.19에서 GA된 기능으로 admission controller가 한창 이목을 끌며 떠오를때 함께 알게되었던 개념이었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSR 리소스의 개념&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CertificateSigningRequest는 Kubernetes API 리소스 중 하나로, 사용자가 클러스터 내에서 인증서 서명 요청을 제출하고, 클러스터 내 CA가 이를 승인하여 X.509 인증서를 발급해주는 과정을 위한 리소스이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;CSR&amp;nbsp;리소스를&amp;nbsp;사용하면&amp;nbsp;외부에서&amp;nbsp;수작업&amp;nbsp;없이,&amp;nbsp;자동화된&amp;nbsp;방식으로&amp;nbsp;인증서를&amp;nbsp;생성하고&amp;nbsp;관리할&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경험을 바탕으로 설명하자면, multi cluster를 관리하는 플랫폼 혹은 제품들에서 service account를 생성하고, cluster admin 권한을 할당하여 auto generate 되는 secret token을 kubeconfig에 주입해 사용하는 일반적인 방법과 달리 kubelet, 사용자 kubeconfig, 서비스메쉬 등 관리 측면의 역할(Role) 인증에서 주로 사용되는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 사용되는 방법이 두 가지가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 쿠버네티스 CA와 조합하여 CRT 인증을 만들어 사용하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. CertificateSigningRequest를 사용하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSR 리소스의 구조부터 사용 방법을 차례로 알아보자&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSR&amp;nbsp;리소스의&amp;nbsp;구조&lt;/h3&gt;
&lt;pre id=&quot;code_1747470045968&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  name: my-csr
spec:
  request: &amp;lt;Base64-encoded CSR&amp;gt;
  signerName: kubernetes.io/kube-apiserver-client
  usages:
    - client auth
  username: alice
  groups:
    - system:authenticated
status:
  conditions:
    - type: Approved
      reason: ...
      message: ...
  certificate: &amp;lt;Base64-encoded X.509 certificate&amp;gt; # 서명된 인증서&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1081&quot; data-start=&quot;1020&quot;&gt;spec.request: openssl 등으로 생성한 &lt;b&gt;CSR 파일을 base64 인코딩&lt;/b&gt;한 값&lt;/li&gt;
&lt;li data-end=&quot;1165&quot; data-start=&quot;1082&quot;&gt;spec.signerName: 어떤 인증서 발급자가 서명할 것인지 (예: kubernetes.io/kube-apiserver-client)&lt;/li&gt;
&lt;li data-end=&quot;1224&quot; data-start=&quot;1166&quot;&gt;spec.usages: 인증서의 용도 (예: client auth, server auth)&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;digital signature&lt;/td&gt;
&lt;td&gt;서명용 (TLS 핸드셰이크, 인증서 증명)&lt;/td&gt;
&lt;td&gt;KeyUsage: digitalSignature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;key encipherment&lt;/td&gt;
&lt;td&gt;키 암호화 (TLS 키 교환)&lt;/td&gt;
&lt;td&gt;KeyUsage: keyEncipherment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;server auth&lt;/td&gt;
&lt;td&gt;서버 인증용 인증서&lt;/td&gt;
&lt;td&gt;ExtendedKeyUsage: serverAuth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;client auth&lt;/td&gt;
&lt;td&gt;클라이언트 인증용 인증서&lt;/td&gt;
&lt;td&gt;ExtendedKeyUsage: clientAuth&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1288&quot; data-start=&quot;1225&quot;&gt;status.certificate: 인증기관(CA)이 서명한 &lt;b&gt;최종 X.509 인증서&lt;/b&gt;가 여기에 포함됨&lt;/li&gt;
&lt;li data-end=&quot;1345&quot; data-start=&quot;1289&quot;&gt;status.conditions: 승인(Approved) 혹은 거절(Denied) 여부&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로, CSR을 생성하고 사용하는 방법을 살펴보자.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSR&amp;nbsp;발급&amp;nbsp;워크플로우&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1498&quot; data-start=&quot;1380&quot;&gt;&lt;b&gt;CSR 생성&lt;/b&gt;&lt;br /&gt;사용자 또는 노드가 CSR (X.509 Certificate Signing Request)을 생성&lt;br /&gt;&amp;rarr; 일반적으로 OpenSSL 또는 Go 코드로 .csr 파일 생성&lt;/li&gt;
&lt;li data-end=&quot;1593&quot; data-start=&quot;1500&quot;&gt;&lt;b&gt;CSR 리소스 제출&lt;/b&gt;&lt;br /&gt;Base64 인코딩된 CSR을 포함하여 Kubernetes에 CertificateSigningRequest 리소스로 제출&lt;/li&gt;
&lt;li data-end=&quot;1725&quot; data-start=&quot;1595&quot;&gt;&lt;b&gt;CSR 승인 or 거부&lt;/b&gt;&lt;br /&gt;클러스터 관리자 또는 승인 컨트롤러가 CSR을 Approved 또는 Denied로 설정&lt;br /&gt;(수동 승인: kubectl certificate approve, 자동화 가능)&lt;/li&gt;
&lt;li data-end=&quot;1816&quot; data-start=&quot;1727&quot;&gt;&lt;b&gt;CA 서명 및 인증서 발급&lt;/b&gt;&lt;br /&gt;Kubernetes의 CA가 서명을 진행하고 .status.certificate 필드에 서명된 인증서를 넣고&lt;/li&gt;
&lt;li data-end=&quot;1895&quot; data-start=&quot;1818&quot;&gt;&lt;b&gt;인증서 수령 및 사용&lt;/b&gt;&lt;br /&gt;CSR 리소스를 조회하여 발급된 인증서를 추출하고, 클라이언트는 이를 자신의 신원 증명에 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용 예시&lt;/h3&gt;
&lt;pre id=&quot;code_1747470471245&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# key 파일을 만든다. (개인키)
openssl genrsa -out 00103.key 2048

# Certificate Signing Request
# 아래 명령어로 csr 파일을 만든다. key를 기반으로 만듦
# csr 파일은 인증서를 요청할 때 인증 기관에 제출하는 인증서 서명 요청 파일 (.csr 또는 .pem)
openssl req -new -key 00103.key -out 00103.csr

# 위 명령 진행시 각종 정보를 입력함 이때, Common Name에 입력하는 내용이 user named가 된다.
openssl req -new -key 00103.key -out 00103.csr&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 과정까지 진행한 후 CSR 리소스를 사용하느냐, 수동 생성하느냐의 선택지로 나뉘어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k8s CA로 인증하여 crt를 만드는게 아닌 CertificateSigningRequest를 사용한 방법은 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1747470589792&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 위에서 이어서, 아래 명령어로 token을 인코딩된 출력에서 줄바꿈 없이 한 줄로 출력 후 복사
cat 00103.csr | base64 -w 0 

```yaml
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  name: 00103@internal.users # ADD
spec:
  groups:
  - system:authenticated
  request: LS0tLS1CRUdJTiABCDEFGHIJK0JIHGFEDCBA... # ADD
  signerName: kubernetes.io/kube-apiserver-client
  usages:
  - client auth
```

kubectl get csr # 하면 pending을 확인할 수 있음. 허가해줘야함
kubectl certificate approve 00103@internal.users

# 그리고 서명된 crt 파일을 받음
kubectl get csr 00103@internal.users -ojsonpath=&quot;{.status.certificate}&quot; | base64 -d &amp;gt; 00103.crt`

kubectl config set-credentials 00103@internal.users --client-key=00103.key --client-certificate=00103.crt
kubectl config set-context 00103@internal.users --cluster=kubernetes --user=00103@internal.users
kubectl config get-contexts
kubectl config use-context 00103@internal.users&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SignerName 종류&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kubernetes에서 제공하는 기본 signer는 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Signer Name&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes.io/kube-apiserver-client&lt;/td&gt;
&lt;td&gt;kube-apiserver 클라이언트 인증서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes.io/kubelet-serving&lt;/td&gt;
&lt;td&gt;kubelet의 서버 인증서 (TLS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes.io/kube-apiserver-client-kubelet&lt;/td&gt;
&lt;td&gt;kubelet의 클라이언트 인증서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes.io/legacy-unknown&lt;/td&gt;
&lt;td&gt;이전 버전 호환용, 되도록 사용 지양&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cert-manager의 signer와 같이 커스텀 signer를 설치하여 사용할 수도 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Admission Controller와 CSR&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSR 리소스를 처리하기 위해 사용하는 Admission Controller는 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Controller&amp;nbsp;이름&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CertificateApproval&lt;/td&gt;
&lt;td&gt;사용자의 kubectl certificate approve 요청을 감지하고 상태를 업데이트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CertificateSigning&lt;/td&gt;
&lt;td&gt;승인된 CSR을 감지하고, cluster CA로 서명된 인증서를 발급&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CertificateSubjectRestriction&lt;/td&gt;
&lt;td&gt;(옵션) 사용자 또는 그룹이 CSR에서 특정 주체(subject)를 요청하지 못하게 막음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;더 알아보기: ServiceAccount token vs CSR-based 인증서&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 190px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;ServiceAccount&amp;nbsp;Token&amp;nbsp;(automount)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;CSR 기반 X.509 인증서&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;인증 방식&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;JWT (JSON Web Token)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;X.509 인증서 (TLS 인증)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;주체&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Pod 내부의 ServiceAccount&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;노드, 사용자, 외부 서비스 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;자동 발급 여부&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;✅ Pod 생성 시 자동 마운트&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;❌ CSR 제출 및 승인 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;저장 위치&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Pod 내부 /var/run/secrets/kubernetes.io/serviceaccount/token&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;별도 파일로 저장 (.crt, .key)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;사용 목적&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;주로 Pod &amp;rarr; API Server 호출&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;노드 인증, 사용자 인증, mTLS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;인증 대상&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Kubernetes API Server&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;주로 API Server or peer component&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;유효기간&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;짧음 (default 1hr~3hrs), 자동 회전 가능&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;일반적으로 더 길고 수동 회전 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;보안 특성&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;서명된 JWT &amp;rarr; API Server에서 검증&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;표준 TLS 핸드셰이크 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;주요 사용처&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;일반 Pod 인증&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;kubelet, 사용자 kubeconfig, 서비스메쉬 등&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;더 알아보기: ServiceAccount Signing Key vs Kubernetes CA&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;b&gt;ServiceAccount Signing Key (--service-account-signing-key-file)&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 19.5349%;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Kubernetes CA (ca.crt/ca.key)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;키 종류&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;JWT 서명용&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;RSA 키 쌍 (PEM 포맷)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 19.5349%;&quot;&gt;X.509 인증서용 &lt;b&gt;RSA/EC 키 쌍&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;파일 예&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;/etc/kubernetes/pki/sa.pub, sa.key&lt;/td&gt;
&lt;td style=&quot;width: 19.5349%;&quot;&gt;/etc/kubernetes/pki/ca.crt, ca.key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;사용 목적&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;ServiceAccount JWT 토큰 서명 및 검증&lt;/td&gt;
&lt;td style=&quot;width: 19.5349%;&quot;&gt;인증서(CSR) 서명, TLS 통신 검증&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;사용 위치&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;kube-apiserver의 JWT 검증 및 발급 (--service-account-...)&lt;/td&gt;
&lt;td style=&quot;width: 19.5349%;&quot;&gt;kube-apiserver, kubelet 등 X.509 인증서 관련 구성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;교차 사용 가능?&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;❌ 서로 호환되지 않음&lt;/td&gt;
&lt;td style=&quot;width: 19.5349%;&quot;&gt;❌ 전혀 다름&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/63</guid>
      <comments>https://cloudev.tistory.com/entry/Kubernetes-CSR-CertificateSigningRequest-%EB%A6%AC%EC%86%8C%EC%8A%A4#entry63comment</comments>
      <pubDate>Sat, 17 May 2025 17:43:18 +0900</pubDate>
    </item>
    <item>
      <title>killercoda CKS Scenario Issue] Falco Change Rule</title>
      <link>https://cloudev.tistory.com/entry/killercoda-CKS-%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4-%EB%B2%84%EA%B7%B8-Falco-Change-Rule</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;CKS 시나리오 중 Falco Change Rule 에서 버그가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;service falco-modern-bpf restart 명령을 통해 falco 재기동시, 편집한 falco_rules.yaml 가 초기화된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마도 시나리오 세팅을 위한 작업이 어디선가 동작하는거 같은데 다음으로 넘어가기 위해서는 restart 없이 check로 진행할 수 있었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/msF1H/btsNRfW4syJ/gS7o5txTxvKKqQ6Ov3NnGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/msF1H/btsNRfW4syJ/gS7o5txTxvKKqQ6Ov3NnGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/msF1H/btsNRfW4syJ/gS7o5txTxvKKqQ6Ov3NnGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmsF1H%2FbtsNRfW4syJ%2FgS7o5txTxvKKqQ6Ov3NnGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;624&quot; height=&quot;524&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;524&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;티켓 등록해놨는데 답변 오면 업데이트 하겠다!&lt;/p&gt;</description>
      <category>Daily</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/62</guid>
      <comments>https://cloudev.tistory.com/entry/killercoda-CKS-%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4-%EB%B2%84%EA%B7%B8-Falco-Change-Rule#entry62comment</comments>
      <pubDate>Sun, 11 May 2025 23:18:56 +0900</pubDate>
    </item>
    <item>
      <title>Kubestronaut 취득 도전기..</title>
      <link>https://cloudev.tistory.com/entry/Kubestronaut-%EC%B7%A8%EB%93%9D-%EB%8F%84%EC%A0%84%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Kubestronaut Program이라는 Kubernetes 관련 인증 제도가 있다. 아래의 CNCF 인증을 모두 취득한 개인에게 부여되는 칭호인 &lt;a href=&quot;https://www.cncf.io/training/kubestronaut/?_sft_lf-country=kr&quot; target=&quot;_blank&quot; title=&quot;Kubestronaut&quot;&gt;&lt;span&gt;Kubestronaut&lt;/span&gt;&lt;/a&gt;에 대한 설명은 검색하면 아주 많은 정보를 알 수 있으니 생략하고, 이 글에서는 나에게 애증의 존재가 된 이야기를 기록하고자 한다&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;KCNA (Kubernetes and Cloud Native Associate)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;KCSA (Kubernetes and Cloud Security Associate)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;CKA (Certified Kubernetes Administrator)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;CKAD (Certified Kubernetes Application Developer)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;CKS (Certified Kubernetes Security Specialist)&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;사실 이 프로그램이 등장한 지 꽤 오래된 점이 있어서 지금에서야 많은 사람이 관련 내용을 알고 있으며 취득하였지만, 등장 당시에 나는 CNCF LF 멤버십 구독을 통해 소식을 바로 알았던 점과, 주변 몇몇 지인과 LinkedIn 1촌인 분들이 초기에 취득하고 관련 내용을 공유해주신 덕분에 다른 분들보다 정보를 더 많이 알고 었다고 생각한다.&lt;br&gt;이런 좋은 환경과 더불어 뭔가 멋지게 보이는 저 칭호를 얻고 싶다는 생각을 하는 건 당연했고, 당시 CKA와 CKAD를 가지고 있던 나는 빠르게 다음 과정인 CKS에 도전했었다.&lt;br&gt;&amp;nbsp;&lt;br&gt;그러나 처참하게, CKS에서 절망했다. 두 번의 시험에도 불구하고 낙제점을 받아 도전에 실패했고, 'S'가 붙은 시험은 두려움의 대상이 되었다. 그렇게&amp;nbsp;언젠가&amp;nbsp;다시&amp;nbsp;도전해야지라는&amp;nbsp;막연한&amp;nbsp;생각만&amp;nbsp;가지고&amp;nbsp;마음의&amp;nbsp;짐으로&amp;nbsp;남겨두었다가,&amp;nbsp;최근에&amp;nbsp;'그&amp;nbsp;언젠가가&amp;nbsp;바로&amp;nbsp;지금이구나'라는&amp;nbsp;생각이&amp;nbsp;들어&amp;nbsp;준비하게&amp;nbsp;되었다.&lt;br&gt;&lt;br&gt;그리고&amp;nbsp;KCNA와&amp;nbsp;더불어&amp;nbsp;며칠&amp;nbsp;전 두려움의 대상인 'S'가 들어있는&amp;nbsp;KCSA까지&amp;nbsp;취득하여,&amp;nbsp;이제&amp;nbsp;드디어&amp;nbsp;CKS&amp;nbsp;한&amp;nbsp;개만&amp;nbsp;남아&amp;nbsp;있는&amp;nbsp;상황이&amp;nbsp;되었다.&amp;nbsp;사실&amp;nbsp;뜬금없이&amp;nbsp;이&amp;nbsp;글을&amp;nbsp;작성하는&amp;nbsp;이유도&amp;nbsp;여기에&amp;nbsp;있다.&amp;nbsp;업무가&amp;nbsp;끝난&amp;nbsp;평일&amp;nbsp;저녁을 투자하고&amp;nbsp;주말까지&amp;nbsp;CKS를&amp;nbsp;공부하다&amp;nbsp;보니&amp;nbsp;뭔지&amp;nbsp;모를&amp;nbsp;현자&amp;nbsp;타임이&amp;nbsp;와서,&amp;nbsp;각오를&amp;nbsp;다지고자&amp;nbsp;하는&amp;nbsp;마음의&amp;nbsp;기록이다.&lt;br&gt;&lt;br&gt;클라우드&amp;nbsp;애플리케이션&amp;nbsp;엔지니어로&amp;nbsp;5년째&amp;nbsp;근무&amp;nbsp;중인&amp;nbsp;입장에서,&amp;nbsp;개인적인&amp;nbsp;경험을&amp;nbsp;바탕으로&amp;nbsp;시험&amp;nbsp;난이도를&amp;nbsp;평가하자면&amp;nbsp;다음과&amp;nbsp;같다.&lt;br&gt;&lt;br&gt;&lt;b&gt;KCNA&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;CKAD&amp;nbsp;&amp;lt;&amp;nbsp;CKA&amp;nbsp;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp;KCSA&amp;nbsp;&amp;lt;&amp;nbsp;고난의&amp;nbsp;행군&amp;nbsp;&amp;lt;&amp;nbsp;CKS&lt;/b&gt;&lt;br&gt;&lt;br&gt;이유는&amp;nbsp;다음과&amp;nbsp;같다.&lt;br&gt;&lt;br&gt;&lt;b&gt;KCNA&lt;/b&gt;: 실무와 관계없이 쿠버네티스와 클라우드 네이티브에 관심이 있다면 쉽게 합격할 수 있는 수준&lt;br&gt;&lt;b&gt;CKAD&lt;/b&gt;: 쿠버네티스를 공부하는 취준생이라면 합격할 수 있는 수준&lt;br&gt;&lt;b&gt;CKA&lt;/b&gt;: 쿠버네티스 실무를 2년 이상 했다면 킬러셸(&lt;a href=&quot;https://killer.sh/&quot; target=&quot;_blank&quot; title=&quot;killershell&quot;&gt;&lt;span&gt;killershell&lt;/span&gt;&lt;/a&gt;) 한번 연습 후 바로 합격할 수 있는 수준&lt;br&gt;&lt;b&gt;KCSA&lt;/b&gt;: 클라우드 네이티브 환경을 잘 알고, 관련 내용을 적절한 영어로 표현할 수 있다면 합격할 수 있는 수준 (개인적으로 매우 어려움)&lt;br&gt;&lt;b&gt;CKS&lt;/b&gt;:&amp;nbsp;쿠버네티스에&amp;nbsp;대해&amp;nbsp;심도&amp;nbsp;있게&amp;nbsp;공부해&amp;nbsp;본&amp;nbsp;사람이&amp;nbsp;보안과&amp;nbsp;관련한&amp;nbsp;컨트롤&amp;nbsp;플레인&amp;nbsp;유지보수에&amp;nbsp;관한&amp;nbsp;기본&amp;nbsp;지식을&amp;nbsp;갖춘다면&amp;nbsp;합격할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;수준 (진정한 공포의 대상)&lt;br&gt;&amp;nbsp;&lt;br&gt;개인&amp;nbsp;경험이&amp;nbsp;들어가&amp;nbsp;있어서&lt;b&gt;&amp;nbsp;매우&amp;nbsp;매우&amp;nbsp;&lt;/b&gt;주관적인&amp;nbsp;평가라고&amp;nbsp;생각한다.&amp;nbsp;하지만&amp;nbsp;현업과&amp;nbsp;시험을&amp;nbsp;모두&amp;nbsp;경험해&amp;nbsp;본&amp;nbsp;사람이라면&amp;nbsp;공감할&amp;nbsp;수&amp;nbsp;있을&amp;nbsp;것이다.&amp;nbsp;CKS&amp;nbsp;시험은&amp;nbsp;쿠버네티스&amp;nbsp;시험의&amp;nbsp;온몸&amp;nbsp;비틀기였다.&amp;nbsp;(&lt;s&gt;그래서&amp;nbsp;두&amp;nbsp;번이나&amp;nbsp;떨어졌나&amp;nbsp;보다.&lt;/s&gt;)&lt;br&gt;&amp;nbsp;&lt;br&gt;시험 정보를 얻고자 들어온 독자분들에게 정보를 주지는 못했지만, 응원은 드리고 싶다. 그리고 나도 다시 한 번 각오를 다진다.&lt;br&gt;우리 함께 힘내 보자.&lt;br&gt;언젠가 Kubestronaut 페이지에서 얼굴을 마주하고, 그곳이 한국인으로 가득 찰 그날까지...&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;1134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nS1zT/btsNBIqins7/DamS9pvotPQuWKz3I75C6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nS1zT/btsNBIqins7/DamS9pvotPQuWKz3I75C6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nS1zT/btsNBIqins7/DamS9pvotPQuWKz3I75C6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnS1zT%2FbtsNBIqins7%2FDamS9pvotPQuWKz3I75C6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1214&quot; height=&quot;1134&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;1134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;</description>
      <category>Daily</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/61</guid>
      <comments>https://cloudev.tistory.com/entry/Kubestronaut-%EC%B7%A8%EB%93%9D-%EB%8F%84%EC%A0%84%EA%B8%B0#entry61comment</comments>
      <pubDate>Sat, 26 Apr 2025 19:59:44 +0900</pubDate>
    </item>
    <item>
      <title>Kubernetes v1.33 스포일러</title>
      <link>https://cloudev.tistory.com/entry/Kubernetes-v133-%EC%8A%A4%ED%8F%AC%EC%9D%BC%EB%9F%AC</link>
      <description>&lt;h1 data-end=&quot;100&quot; data-start=&quot;74&quot;&gt;Kubernetes v1.33 미리 보기&lt;/h1&gt;
&lt;p data-end=&quot;203&quot; data-start=&quot;101&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;작성자: Agustina Barbetta, Aakanksha Bhende, Udi Hofesh, Ryota Sawada, Sneha Yadav | 2025년 3월 26일 수요일&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;435&quot; data-start=&quot;205&quot; data-ke-size=&quot;size16&quot;&gt;Kubernetes v1.33 릴리스가 다가오면서, Kubernetes 프로젝트는 계속해서 진화하고 있습니다. 전체 프로젝트의 건강한 발전을 위해 기능이 폐지되거나 제거되거나 교체될 수 있습니다. 이 블로그 포스트에서는 v1.33 릴리스 팀이 사용자가 알아야 한다고 판단한 주요 변경 사항을 정리했습니다. 아래 정보는 현재 시점의 v1.33 릴리스 계획을 기반으로 하며, 최종 릴리스 이전에 변경될 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-end=&quot;472&quot; data-start=&quot;442&quot; data-ke-size=&quot;size26&quot;&gt;Kubernetes API 제거 및 폐지 프로세스&lt;/h2&gt;
&lt;p data-end=&quot;533&quot; data-start=&quot;474&quot; data-ke-size=&quot;size16&quot;&gt;Kubernetes 프로젝트는 기능 폐지에 대한 명확한 정책을 문서화해 두고 있습니다. 이 정책에 따르면,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;707&quot; data-start=&quot;535&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;610&quot; data-start=&quot;535&quot;&gt;&lt;b&gt;Generally available(GA) API&lt;/b&gt;는 새로운 안정 버전이 존재할 때만 폐지될 수 있으며, 폐지된 이후 &lt;b&gt;최소 1년&lt;/b&gt; 동안 유지됩니다.&lt;/li&gt;
&lt;li data-end=&quot;658&quot; data-start=&quot;611&quot;&gt;&lt;b&gt;Beta&lt;/b&gt; 또는&amp;nbsp;&lt;b&gt;pre-release API&lt;/b&gt;는 폐지 이후 &lt;b&gt;3개의 릴리스&lt;/b&gt; 동안 지원되어야 합니다.&lt;/li&gt;
&lt;li data-end=&quot;707&quot; data-start=&quot;659&quot;&gt;&lt;b&gt;Alpha&lt;/b&gt; 또는 &lt;b&gt;experimental API&lt;/b&gt;는 별도의 사전 경고 없이 어느 릴리스에서든 제거될 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;800&quot; data-start=&quot;709&quot; data-ke-size=&quot;size16&quot;&gt;API가 베타에서 안정 버전으로 승격되거나, 실패하여 제거되는 경우 모두 이 정책을 따릅니다. API가 제거될 때는 마이그레이션 경로가 명시된 가이드가 제공됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-end=&quot;833&quot; data-start=&quot;807&quot; data-ke-size=&quot;size26&quot;&gt;v1.33에서의 주요 API 폐지 및 제거&lt;/h2&gt;
&lt;h3 data-end=&quot;862&quot; data-start=&quot;835&quot; data-ke-size=&quot;size23&quot;&gt;Endpoints API의 안정 버전 폐지&lt;/h3&gt;
&lt;p data-end=&quot;1066&quot; data-start=&quot;863&quot; data-ke-size=&quot;size16&quot;&gt;EndpointSlices API는 v1.21부터 stable 버전으로 제공되며, 기존 Endpoints API를 효과적으로 대체합니다. 기존 API는 단순했지만, 대규모 네트워크 엔드포인트에서는 확장성 문제가 있었습니다. EndpointSlices는 듀얼 스택 네트워킹 등의 기능을 제공하며, 이제 기존 Endpoints API는 폐지 수순에 들어갑니다.&lt;/p&gt;
&lt;p data-end=&quot;1176&quot; data-start=&quot;1068&quot; data-ke-size=&quot;size16&quot;&gt;이 변경은 Endpoints API를 직접 사용하는 사용자(스크립트, 워크로드 등)에만 영향을 미치며, EndpointSlices로 마이그레이션해야 합니다. KEP-4974를 참고하세요.&lt;/p&gt;
&lt;h3 data-end=&quot;1208&quot; data-start=&quot;1178&quot; data-ke-size=&quot;size23&quot;&gt;노드 상태의 kube-proxy 버전 정보 제거&lt;/h3&gt;
&lt;p data-end=&quot;1367&quot; data-start=&quot;1209&quot; data-ke-size=&quot;size16&quot;&gt;v1.31에서 폐지된 후, status.nodeInfo.kubeProxyVersion 필드는 v1.33에서 완전히 제거됩니다. 이 필드는 kubelet에 의해 설정되었으나 정확하지 않았으며, v1.31 이후 기본적으로 비활성화되었습니다. 관련 정보는 KEP-4004를 참고하세요.&lt;/p&gt;
&lt;h3 data-end=&quot;1403&quot; data-start=&quot;1369&quot; data-ke-size=&quot;size23&quot;&gt;Windows Pod의 hostNetwork 지원 제거&lt;/h3&gt;
&lt;p data-end=&quot;1580&quot; data-start=&quot;1404&quot; data-ke-size=&quot;size16&quot;&gt;Windows Pod 네트워킹은 Linux와의 기능 동등성을 목표로 했으며, host 네트워크 네임스페이스 사용을 통해 클러스터 밀도를 높이고자 했습니다. 그러나 containerd의 예기치 않은 동작과 대체 솔루션의 존재로 인해 해당 기능(Kep-3503)은 철회되며, v1.33에서 완전히 제거될 예정입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-end=&quot;1605&quot; data-start=&quot;1587&quot; data-ke-size=&quot;size26&quot;&gt;v1.33의 주요 개선 사항&lt;/h2&gt;
&lt;h3 data-end=&quot;1636&quot; data-start=&quot;1607&quot; data-ke-size=&quot;size23&quot;&gt;Linux Pod 내 사용자 네임스페이스 지원&lt;/h3&gt;
&lt;p data-end=&quot;1834&quot; data-start=&quot;1637&quot; data-ke-size=&quot;size16&quot;&gt;가장 오래된 KEP 중 하나인 &lt;a href=&quot;https://github.com/kubernetes/enhancements/issues/127&quot; data-end=&quot;1718&quot; data-start=&quot;1654&quot;&gt;KEP-127&lt;/a&gt;은 Pod 보안을 강화하기 위해 &lt;b&gt;Linux 사용자 네임스페이스&lt;/b&gt;를 도입합니다. 이 기능은 v1.25에 알파, v1.30에 베타(기본 비활성화)로 출시되었고, 이제 v1.33에서 &lt;b&gt;기본 활성화&lt;/b&gt;됩니다.&lt;/p&gt;
&lt;p data-end=&quot;1936&quot; data-start=&quot;1836&quot; data-ke-size=&quot;size16&quot;&gt;이 기능은 기존 Pod에는 영향을 주지 않으며, pod.spec.hostUsers를 명시하여 수동으로 활성화해야 합니다. 이는 보안 취약점을 완화하기 위한 중요한 이정표입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-end=&quot;1962&quot; data-start=&quot;1943&quot; data-ke-size=&quot;size26&quot;&gt;v1.33의 기타 주요 기능들&lt;/h2&gt;
&lt;h3 data-end=&quot;1993&quot; data-start=&quot;1964&quot; data-ke-size=&quot;size23&quot;&gt;Pod 리소스의 인플레이스(무중단) 수직 확장&lt;/h3&gt;
&lt;p data-end=&quot;2102&quot; data-start=&quot;1994&quot; data-ke-size=&quot;size16&quot;&gt;Pod의 리소스를 수정하려면 이전에는 Pod를 재시작해야 했습니다. 그러나 KEP-1287을 통해 Pod를 재생성하지 않고도 CPU/메모리 등의 리소스를 &lt;b&gt;동적으로 수정&lt;/b&gt;할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2216&quot; data-start=&quot;2103&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2158&quot; data-start=&quot;2103&quot;&gt;이 기능은 v1.27에 알파로 도입되었으며, v1.33에서 &lt;b&gt;베타&lt;/b&gt;로 예정되어 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2216&quot; data-start=&quot;2159&quot;&gt;초기 부팅 시 많은 리소스를 할당하고 이후 줄이거나, 상태 저장 서비스의 무중단 확장에 유용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2267&quot; data-start=&quot;2218&quot; data-ke-size=&quot;size23&quot;&gt;DRA의 ResourceClaim 장치 상태(Device Status) 베타 전환&lt;/h3&gt;
&lt;p data-end=&quot;2345&quot; data-start=&quot;2268&quot; data-ke-size=&quot;size16&quot;&gt;v1.32에서 도입된 devices 필드는 ResourceClaim의 상태에 장치 상태 정보를 포함할 수 있도록 해줍니다. 이 필드는:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2428&quot; data-start=&quot;2346&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2405&quot; data-start=&quot;2346&quot;&gt;네트워크 인터페이스의 이름, MAC 주소, IP 주소 등을 보고하여 관측성과 디버깅을 향상시킵니다.&lt;/li&gt;
&lt;li data-end=&quot;2428&quot; data-start=&quot;2406&quot;&gt;관련 KEP는 KEP-4817입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2449&quot; data-start=&quot;2430&quot; data-ke-size=&quot;size23&quot;&gt;네임스페이스 삭제 순서 지정&lt;/h3&gt;
&lt;p data-end=&quot;2514&quot; data-start=&quot;2450&quot; data-ke-size=&quot;size16&quot;&gt;현재 네임스페이스 삭제는 순서가 랜덤하여, 관련 리소스가 잘못된 순서로 제거될 수 있는 보안 문제가 있었습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2604&quot; data-start=&quot;2515&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2604&quot; data-start=&quot;2515&quot;&gt;KEP-5080은 &lt;b&gt;논리적&amp;middot;보안적 종속성을 고려한 삭제 순서&lt;/b&gt;를 도입하여, Pod가 먼저 삭제된 후 NetworkPolicy 등이 제거되도록 보장합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2635&quot; data-start=&quot;2606&quot; data-ke-size=&quot;size23&quot;&gt;인덱스 잡(Indexed Jobs) 처리 향상&lt;/h3&gt;
&lt;p data-end=&quot;2685&quot; data-start=&quot;2636&quot; data-ke-size=&quot;size16&quot;&gt;KEP-3850과 KEP-3998은 인덱스 잡에 대한 신뢰성과 제어력을 향상시킵니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2789&quot; data-start=&quot;2686&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2741&quot; data-start=&quot;2686&quot;&gt;&lt;b&gt;인덱스별 백오프 한계&lt;/b&gt;를 정의할 수 있어, 실패한 인덱스만 재시도하게 할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2789&quot; data-start=&quot;2742&quot;&gt;일부 인덱스가 실패해도 잡을 &lt;b&gt;성공적으로 완료된 상태로 처리&lt;/b&gt;할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-end=&quot;2805&quot; data-start=&quot;2796&quot; data-ke-size=&quot;size26&quot;&gt;더 알아보기&lt;/h2&gt;
&lt;p data-end=&quot;2924&quot; data-start=&quot;2807&quot; data-ke-size=&quot;size16&quot;&gt;Kubernetes v1.33 릴리스는 &lt;b&gt;2025년 4월 23일 수요일&lt;/b&gt;에 예정되어 있으며, 릴리스 노트와 CHANGELOG에서 모든 변경 사항이 공식 발표될 예정입니다.&lt;/p&gt;</description>
      <category>기계번역</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/58</guid>
      <comments>https://cloudev.tistory.com/entry/Kubernetes-v133-%EC%8A%A4%ED%8F%AC%EC%9D%BC%EB%9F%AC#entry58comment</comments>
      <pubDate>Sat, 19 Apr 2025 15:33:55 +0900</pubDate>
    </item>
    <item>
      <title>Ingress-nginx v1.12.1 및 v1.11.5 취약점 패치</title>
      <link>https://cloudev.tistory.com/entry/Ingress-nginx-%EC%B7%A8%EC%95%BD%EC%A0%90-%ED%8C%A8%EC%B9%98</link>
      <description>&lt;h3 data-end=&quot;86&quot; data-start=&quot;39&quot; data-ke-size=&quot;size23&quot;&gt;Ingress-nginx CVE-2025-1974: 반드시 알아야 할 사항&lt;/h3&gt;
&lt;p data-end=&quot;148&quot; data-start=&quot;87&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Tabitha Sable (Kubernetes 보안 대응 위원회)&lt;/b&gt; | 2025년 3월 24일 월요일&lt;/p&gt;
&lt;p data-end=&quot;328&quot; data-start=&quot;150&quot; data-ke-size=&quot;size16&quot;&gt;오늘 ingress-nginx 유지관리자들은 Kubernetes 클러스터를 공격자가 장악할 수 있게 만들 수 있는 치명적인 취약점 다수를 수정한 패치를 배포했습니다. 전체 Kubernetes 관리자의 40% 이상이 ingress-nginx를 사용하고 있다면, 사용자와 데이터를 보호하기 위해 즉시 조치를 취해야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-end=&quot;343&quot; data-start=&quot;335&quot; data-ke-size=&quot;size23&quot;&gt;배경&lt;/h3&gt;
&lt;p data-end=&quot;558&quot; data-start=&quot;344&quot; data-ke-size=&quot;size16&quot;&gt;Ingress는 워크로드 Pod를 외부에 노출하여 실제로 사용할 수 있도록 해주는 Kubernetes의 전통적인 기능입니다. Kubernetes 사용자는 애플리케이션이 네트워크상에서 어떻게 노출되어야 하는지를 구현에 독립적인 방식으로 정의할 수 있습니다. 그런 다음 Ingress 컨트롤러는 해당 정의를 기반으로, 사용자의 상황과 요구에 맞는 로컬 또는 클라우드 리소스를 설정합니다.&lt;/p&gt;
&lt;p data-end=&quot;558&quot; data-start=&quot;344&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;558&quot; data-start=&quot;344&quot; data-ke-size=&quot;size16&quot;&gt;다양한 클라우드 공급자나 로드 밸런서 브랜드에 맞게 여러 종류의 Ingress 컨트롤러가 존재합니다. &lt;b&gt;ingress-nginx&lt;/b&gt;는 Kubernetes 프로젝트에서 제공하는 소프트웨어 전용 Ingress 컨트롤러입니다. 그 다양성과 사용 편의성 덕분에 ingress-nginx는 매우 인기 있으며, Kubernetes 클러스터의 40% 이상에 배포되어 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;764&quot; data-start=&quot;560&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1017&quot; data-start=&quot;766&quot; data-ke-size=&quot;size16&quot;&gt;ingress-nginx는 Ingress 객체의 요구사항을 강력한 오픈소스 웹 서버인 &lt;b&gt;nginx&lt;/b&gt; 설정으로 변환합니다. nginx는 이 설정을 바탕으로 Kubernetes 클러스터 내 다양한 애플리케이션으로 요청을 수락하고 라우팅합니다. 이 nginx 설정을 올바르게 처리하는 것은 매우 중요합니다. ingress-nginx는 사용자에게 상당한 유연성을 제공해야 하며, 동시에 nginx가 의도치 않게 오용되지 않도록 방지해야 하기 때문입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-end=&quot;1041&quot; data-start=&quot;1024&quot; data-ke-size=&quot;size23&quot;&gt;오늘 패치된 취약점들&lt;/h3&gt;
&lt;p data-end=&quot;1360&quot; data-start=&quot;1042&quot; data-ke-size=&quot;size16&quot;&gt;오늘 공개된 ingress-nginx 취약점 중 네 가지는 nginx 설정을 처리하는 ingress-nginx의 방식 개선에 해당합니다. 이러한 취약점이 존재할 경우, 특수하게 조작된 Ingress 객체로 인해 nginx가 잘못 동작하게 만들 수 있습니다. 이로 인해 ingress-nginx가 접근 가능한 &lt;b&gt;Secret&lt;/b&gt; 값을 노출시키는 결과를 초래할 수 있습니다. ingress-nginx는 기본적으로 클러스터 전체의 Secret에 접근할 수 있으므로, Ingress 객체를 생성할 수 있는 권한이 있는 사용자 또는 엔티티는 클러스터 전체를 장악할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1360&quot; data-start=&quot;1042&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1730&quot; data-start=&quot;1362&quot; data-ke-size=&quot;size16&quot;&gt;가장 심각한 취약점인 &lt;b&gt;CVE-2025-1974&lt;/b&gt;는 &lt;b&gt;CVSS 9.8점&lt;/b&gt;으로 평가되며, ingress-nginx의 &lt;b&gt;Validating Admission Controller 기능&lt;/b&gt;을 통해 &lt;b&gt;Pod 네트워크에 존재하는 어떤 것이라도&lt;/b&gt; 설정 인젝션 취약점을 악용할 수 있게 만듭니다. 보통 Ingress 객체를 생성하려면 높은 권한이 필요하지만, 이 취약점과 오늘 발표된 다른 취약점들을 결합하면 &lt;b&gt;클러스터 관리자 권한 없이도&lt;/b&gt; Kubernetes 클러스터를 장악할 수 있습니다. 일반적인 클라우드 환경에서는 Pod 네트워크가 모든 워크로드에 개방되어 있거나, 심지어 사내망에 연결된 사용자라면 누구나 접근 가능한 경우도 많아 매우 위험합니다.&lt;/p&gt;
&lt;p data-end=&quot;1730&quot; data-start=&quot;1362&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1810&quot; data-start=&quot;1732&quot; data-ke-size=&quot;size16&quot;&gt;오늘 릴리스된 &lt;b&gt;ingress-nginx v1.12.1 및 v1.11.5&lt;/b&gt;는 이 다섯 가지 취약점 모두에 대한 패치를 포함하고 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-end=&quot;1828&quot; data-start=&quot;1817&quot; data-ke-size=&quot;size23&quot;&gt;다음 단계&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2691&quot; data-start=&quot;1829&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2017&quot; data-start=&quot;1829&quot;&gt;&lt;b&gt;클러스터에서 ingress-nginx를 사용하는지 확인하세요.&lt;/b&gt;&lt;br /&gt;다음 명령어로 확인할 수 있습니다 (클러스터 관리자 권한 필요)&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1745042602975&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2691&quot; data-start=&quot;1829&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2142&quot; data-start=&quot;2019&quot;&gt;&lt;b&gt;ingress-nginx를 사용 중이라면 즉시 조치 계획을 수립하세요.&lt;/b&gt;&lt;br /&gt;가장 쉽고 효과적인 방법은 &lt;b&gt;오늘 배포된 패치 버전으로 업그레이드하는 것&lt;/b&gt;입니다. 모든 취약점이 이 버전에서 해결되었습니다.&lt;/li&gt;
&lt;li data-end=&quot;2691&quot; data-start=&quot;2144&quot;&gt;&lt;b&gt;즉시 업그레이드가 어렵다면&lt;/b&gt;, 위험을 줄이기 위해 ingress-nginx의 &lt;b&gt;Validating Admission Controller 기능을 비활성화&lt;/b&gt;하세요.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Helm으로 설치한 경우:&lt;/p&gt;
&lt;pre id=&quot;code_1745042646024&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;helm upgrade --reuse-values my-ingress-nginx ingress-nginx/ingress-nginx \ --set controller.admissionWebhooks.enabled=false&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수동 설치한 경우:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2605&quot; data-start=&quot;2447&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2515&quot; data-start=&quot;2447&quot;&gt;ingress-nginx-admission이라는 ValidatingWebhookConfiguration을 삭제&lt;/li&gt;
&lt;li data-end=&quot;2605&quot; data-start=&quot;2521&quot;&gt;ingress-nginx-controller의 Deployment 또는 DaemonSet에서 --validating-webhook 인자를 제거&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단, 이 기능은 사용자의 Ingress 설정 오류를 사전에 알려주는 유용한 기능이므로 &lt;b&gt;업그레이드 후 반드시 다시 활성화&lt;/b&gt;하는 것이 좋습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-end=&quot;2714&quot; data-start=&quot;2698&quot; data-ke-size=&quot;size23&quot;&gt;결론 및 참고 자료&lt;/h3&gt;
&lt;p data-end=&quot;2847&quot; data-start=&quot;2715&quot; data-ke-size=&quot;size16&quot;&gt;CVE-2025-1974를 포함한 ingress-nginx 취약점은 많은 Kubernetes 사용자와 그들의 데이터를 위협하는 매우 심각한 문제입니다. ingress-nginx를 사용 중이라면 &lt;b&gt;지체 없이 조치&lt;/b&gt;를 취하시기 바랍니다.&lt;/p&gt;
&lt;p data-end=&quot;2847&quot; data-start=&quot;2715&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;3030&quot; data-start=&quot;2849&quot; data-ke-size=&quot;size16&quot;&gt;이번 취약점을 책임감 있게 공개하고 해결에 협력해준 &lt;b&gt;Wiz의 Nir Ohfeld, Sagi Tzadik, Ronen Shustin, Hillai Ben-Sasson&lt;/b&gt;과 ingress-nginx 유지관리자 &lt;b&gt;Marco Ebert, James Strong&lt;/b&gt;, 그리고 Kubernetes 보안 대응 위원회에 감사드립니다.&lt;/p&gt;
&lt;p data-end=&quot;3052&quot; data-start=&quot;3032&quot; data-ke-size=&quot;size16&quot;&gt;더 자세한 내용은 다음을 참고하세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3310&quot; data-start=&quot;3053&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3146&quot; data-start=&quot;3053&quot;&gt;[GitHub 이슈 목록]: CVE-2025-24513, CVE-2025-24514, CVE-2025-1097, CVE-2025-1098, CVE-2025-1974&lt;/li&gt;
&lt;li data-end=&quot;3310&quot; data-start=&quot;3147&quot;&gt;ingress-nginx의 유지보수와 향후 계획에 대한 정보는 &lt;a href=&quot;https://github.com/kubernetes/ingress-nginx/issues&quot; data-end=&quot;3249&quot; data-start=&quot;3184&quot;&gt;이 GitHub 이슈&lt;/a&gt; 또는 KubeCon/CloudNativeCon EU 2025에서 James와 Marco의 발표를 참고하세요.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>기계번역</category>
      <author>kare jeyuk</author>
      <guid isPermaLink="true">https://cloudev.tistory.com/57</guid>
      <comments>https://cloudev.tistory.com/entry/Ingress-nginx-%EC%B7%A8%EC%95%BD%EC%A0%90-%ED%8C%A8%EC%B9%98#entry57comment</comments>
      <pubDate>Sat, 19 Apr 2025 15:01:58 +0900</pubDate>
    </item>
  </channel>
</rss>