I ignored Kubernetes for 12 years
Quick Summary
Kubernetes를 12년 미룬 결론은, 직접 클러스터 운영은 학습에는 유용하지만 대부분의 실전 출발점은 관리형 Kubernetes와 GitOps라는 것이다.
영상 보기
클릭 전까지는 가벼운 미리보기만 먼저 불러옵니다.
🖼️ 인포그래픽
🖼️ 4컷 인포그래픽
💡 한 줄 결론
Kubernetes를 12년 미룬 결론은, 직접 클러스터 운영은 학습에는 유용하지만 대부분의 실전 출발점은 관리형 Kubernetes와 GitOps라는 것이다.
📌 핵심 요점
- 발표자는 Kubernetes를 오랫동안 복잡하고 과한 기술로 봤지만, 업계 표준화와 SRE·플랫폼 엔지니어 역할의 요구 때문에 더 이상 피하기 어렵다고 판단했다.
- Learning Kubernetes the Hard Way는 제어 플레인과 노드 구성 같은 저수준 구조를 드러내는 데는 도움이 됐지만, 빠르게 실전 결과를 얻기에는 수동 설정 부담이 컸다.
- kubeadm, CloudFormation, Pulumi를 거치며 클러스터를 자동화했지만, 실제 문제는 설치보다 pod crash, taint/toleration, AWS Cloud Controller Manager와 Argo CD의 부트스트랩 순서 같은 운영 이해에 있었다.
- GitOps와 Argo CD가 안정적으로 작동하자 repo 변경이 클러스터 상태로 반영되는 흐름은 유용했지만, 모든 개발자에게 Helm, YAML, Kubernetes 리소스 이해를 요구하는 방식은 인지 부담이 크다고 봤다.
- 발표자의 최종 판단은 대부분의 경우 EKS, GKE, AKS 같은 관리형 Kubernetes와 GitOps 조합이 현실적이며, 직접 운영은 벤더 종속 회피, 멀티클라우드, 자체 관리형 서비스 제공 같은 특수한 경우에 더 적합하다는 것이다.
🧩 배경과 문제 정의
- 발표자는 12년 동안 Kubernetes를 의도적으로 미뤄왔지만, 업계에서 Kubernetes가 배포와 운영의 사실상 표준 역량처럼 자리 잡으면서 더 이상 외면하기 어려운 상황에 놓였다.
- 초기에는 Docker와 컨테이너 자체도 낯설었고, Kubernetes는 개인이나 소규모 서비스가 감당하기에는 복잡성 대비 효용이 낮아 보이는 기술로 인식됐다.
- Kubernetes를 도입하려는 팀이나 SRE의 시도가 때로는 “이력서 중심 개발”처럼 보였고, 저수준 운영 문제는 다른 팀이나 관리형 서비스가 해결해준 클러스터를 쓰면 된다는 거리두기도 있었다.
- 하지만 SRE·플랫폼 엔지니어 역할에서는 Kubernetes 생태계, 배포 방식, 운영 도구를 이해하는 것이 점점 기본 역량에 가까워졌고, 발표자는 이를 따라잡기 위해 공개 라이브 학습을 시작했다.
- 8~9회의 긴 라이브 스트림은 Kubernetes를 처음부터 수동으로 구성해보며 복잡성을 체감하고, 동시에 Pulumi, Helm, GitOps, 관리형 Kubernetes, KubeVela 같은 현대적 추상화와 운영 도구의 큰 그림을 파악하는 과정이었다.
- 검증 필요: 관리형 Kubernetes가 “약 90%의 경우 적합하다”는 비율, Kustomize의 위치, Open Application Model과 KubeVela의 관계 등은 영상 속 설명 기준의 정리이며, 실제 도입 판단에는 공식 문서와 조직 환경에 대한 별도 검증이 필요하다.
🕒 시간순 섹션별 상세정리
1. Kubernetes를 미뤄온 이유와 학습 목표
- 발표자는 12년 동안 Kubernetes를 외면해왔지만, 여러 차례의 라이브 스트림을 통해 생태계 전체와 작동 방식을 빠르게 익히고 실제 클러스터를 띄우는 목표를 세웠다 [00:32]
- 이 학습 과정은 Kubernetes를 아직 모르는 중급·시니어 개발자에게 같은 시행착오를 줄여줄 수 있는 실행 가능한 정리로 바뀐다 [00:47]
2. 복잡성 인식에서 업계 표준화 압박으로 전환
- Kubernetes 도입을 시도한 팀과 회사들의 고통스러운 경험은 발표자에게 복잡성 대비 제공 가치가 과하다는 인상을 남겼고, 개인 블로그를 Kubernetes에 올리는 밈도 그런 회의감을 강화했다 [01:31]
- Kubernetes를 환경에 도입하려는 SRE나 팀은 한때 이력서 중심 개발처럼 보였고, 저수준 문제는 다른 팀이 해결한 뒤 완성된 클러스터만 쓰면 된다는 거리두기가 생겼다 [01:53]
3. 라이브 학습의 시작과 ‘Hard Way’ 접근의 충돌
- 3월 해고 이후 Kubernetes 학습의 필요성이 커졌고, 5월에 영상이 바이럴되면서 라이브로 배우고 함께 따라올 수 있는 공개 학습 흐름이 더 설득력을 얻었다 [03:41]
- 8~9회의 라이브 스트림은 각각 2~3시간 이상 이어졌고, 그 안에서 Kubernetes 역사와 현대적인 배포·관리 도구의 윤곽을 충분히 잡는 목표가 세워졌다 [04:13]
4. 수동 구성의 마찰과 kubeadm 기반 자동화
- EC2에 직접 접속해 호스트명 설정, OpenSSL 기반 PKI, 긴 셸 스크립트 실행까지 진행하자 Kubernetes 자체를 배우기보다 서버 SSH와 수동 구성에 시간을 쓰는 문제가 커졌다 [05:33]
- 구성 관리가 이미 오래된 영역이고 Kubernetes도 공개된 지 오래된 상황인데도, 클러스터 설치의 기본 마찰이 여전히 남아 있다는 점이 발표자에게 가장 큰 불만으로 다가왔다 [06:18]
5. 클러스터는 올라갔지만 운영 지식 부족이 드러남
- 클러스터 생성 이후 Helm 명령과 차트 설치를 재현 가능하게 만들고 Valheim 게임 서버를 띄우려 했지만, pod crash가 발생했을 때 원인을 추적하는 도구 사용법을 아직 몰랐다 [07:49]
- 스트림 참여자들이 로그 확인 명령을 도와줬고, taint와 toleration 같은 Kubernetes 개념이 문제 해결 과정에서 처음으로 현실적인 장애물로 나타났다 [08:15]
6. Pulumi 전환과 AWS CCM 순서 문제 해결
- CloudFormation에서 Pulumi로 전환하면서 인프라를 타입 체크되는 프로그램처럼 작성할 수 있게 됐고, Go SDK에서는 인프라 코드가 잘못되면 컴파일 단계에서 실패하는 장점이 생겼다 [09:31]
- pod 로그를 LLM에 넣어 분석한 결과, AWS Cloud Controller Manager가 Argo CD 등 다른 pod보다 먼저 준비돼야 하는 순서 문제가 핵심 원인으로 드러났다 [10:08]
7. 플랫폼화된 배포와 Kubernetes 추상화의 가능성
- Open Application Model은 KubeVela에서 구현되며, Kubernetes 리소스를 컴포넌트로 바꿔 웹 서비스나 워커 서비스처럼 표준화된 배포 유형을 만들 수 있다고 드러난다 [12:15]
- 이런 추상화를 쓰면 개발자는 pods, deployments, stateful sets, services 같은 세부 리소스를 직접 이해하지 않아도 되고, 최소한의 YAML만 제공하면 Kubernetes 설정으로 확장되는 구조가 가능해진다 [12:39]
8. 관리형 Kubernetes가 기본 경로가 되는 이유
- 발표자는 Kubernetes 도입 경로를 크게 두 가지로 나누며, 약 90%의 경우 EKS, GKE, Azure Kubernetes Service 같은 관리형 Kubernetes와 GitOps를 조합하는 방식이 적합하다고 본다 [13:31]
- 나머지 약 10%는 벤더 종속을 피해야 하거나, 멀티클라우드가 필요하거나, 직접 관리형 Kubernetes 서비스를 제공해야 하는 경우에 해당한다고 정리한다 [13:56]
9. 직접 운영 경험이 남긴 결론과 핵심 모델 학습 과제
- 직접 클러스터를 운영한 경험은 호기심을 충족시키지만, 클라우드에서 이미 운영 중이고 강한 제약 조건이 없다면 관리형 Kubernetes가 더 현실적인 선택이라는 결론으로 계속된다 [14:57]
- 숙련된 Kubernetes 운영자가 되려면 core model 이해가 먼저 필요하며, 발표자는 pods와 services에는 어느 정도 익숙해졌지만 config map은 아직 파일을 pod에 제공하는 수단 정도로 이해한 상태라고 드러낸다 [15:46]
10. 운영 역량 확장과 실전 환경의 필요성
- Helm과 같은 계층의 도구인 Kustomize는 kubectl에 내장된 것으로 보이며, Kubernetes 설정 관리 선택지를 넓히기 위해 별도로 이해할 필요가 있는 대상으로 나온다 [17:14]
- 운영 영역에서는 cluster autoscaler와 Karpenter 같은 도구가 중요하며, pod capacity 등에 따라 worker node를 확장하는 방식은 비용과 가용성에 직접 영향을 준다 [17:30]
🧾 결론
- Kubernetes 학습의 핵심은 “클러스터를 띄우는 것”보다 core model과 운영 흐름을 이해하는 데 있다.
- 직접 클러스터를 구성해보는 경험은 내부 구조를 이해하는 데 도움이 되지만, 일반적인 클라우드 환경에서는 관리형 Kubernetes를 쓰는 쪽이 더 실용적이라는 결론에 도달한다.
- 운영 역량을 키우려면 pods, services, config maps, secrets, namespaces, service accounts, deployments, stateful sets, ingresses 같은 기본 리소스를 표면적으로가 아니라 관계와 역할 중심으로 이해해야 한다.
- GitOps, CRDs, Argo CD reconciliation, Helm chart best practice는 배포 자동화와 클러스터 상태 관리의 핵심 학습 과제로 남는다.
- 초보자나 Kubernetes를 늦게 시작한 개발자에게는 처음부터 모든 저수준 구성을 직접 파고들기보다, 빠르게 생산성을 얻고 필요한 지점에서 깊이를 더하는 경로가 더 적합하다는 메시지가 강하다.
📈 투자·시사 포인트
- 기업의 인프라 투자 관점에서는 특별한 제약이 없다면 자체 Kubernetes 운영 역량을 처음부터 크게 쌓기보다, 관리형 Kubernetes와 GitOps 기반 운영 체계를 우선 검토하는 것이 비용·복잡성 측면에서 합리적일 수 있다.
- 플랫폼 엔지니어링 관점에서는 개발자가 Helm, YAML, Kubernetes 리소스를 모두 직접 다루게 하는 방식보다, KubeVela나 Open Application Model처럼 배포 단위를 추상화하는 접근이 조직의 생산성에 영향을 줄 수 있다.
- 개인 커리어 관점에서는 Kubernetes가 SRE·플랫폼 엔지니어 역할에서 기본 역량에 가까워졌기 때문에, 최소한의 클러스터 운영 모델과 GitOps 흐름을 이해하는 학습 투자가 필요하다.
- 운영 안정성 관점에서는 cluster autoscaler, Karpenter, Cilium, 로깅, observability, Prometheus, Grafana 같은 주변 도구까지 학습 범위가 확장되며, 단순 배포 기술을 넘어 비용·가용성·문제 추적 역량과 연결된다.
- 검증 필요: 발표자가 말한 “약 90%는 관리형 Kubernetes가 적합하다”는 수치는 영상 내 판단으로 제시된 것이며, 실제 조직의 규제, 비용 구조, 멀티클라우드 요구, 내부 플랫폼 역량에 따라 달라질 수 있다.
⚠️ 불확실하거나 확인이 필요한 부분
- “약 90%는 관리형 Kubernetes와 GitOps 조합이 적합하다”는 주장은 영상 속 발화자의 경험적 판단으로 제시된 것이며, 조직 규모·규제·클라우드 전략·운영 인력 수준에 따라 별도 검증이 필요하다.
- AWS Cloud Controller Manager가 Argo CD보다 먼저 준비돼야 했다는 결론은 pod 로그와 LLM 분석을 통해 도출된 것으로 설명되지만, 구체적인 로그·매니페스트·클러스터 상태가 제공되지 않아 동일한 원인이 일반화되는지는 확인이 필요하다.
- Kustomize가 kubectl에 내장된 것으로 보인다는 언급은 발화자도 탐색 단계에서 말한 내용에 가깝기 때문에, 실제 사용하려는 Kubernetes/kubectl 버전 기준으로 기능 범위와 사용 방식을 확인해야 한다.
- 자막 기반 정리: 타임스탬프가 있는 자막을 기준으로 정리했으며, 고유명사·수치·인용은 원문 확인 필요 시 별도 검증한다.
- 영상 속 주장: 발표자의 해석·전망·비교는 확인된 외부 사실이 아니라 영상 속 주장으로 분리해 읽는다.
- 검증 필요: 수치, 기업 실적, 정책·시장 전망은 발행 전 최신 자료로 별도 검증이 필요하다.
✅ 액션 아이템
- Kubernetes core model을 우선 학습한다: pods, services, deployments, stateful sets, config maps, secrets, namespaces, service accounts, ingresses, node ports의 역할과 차이를 정리한다.
- 관리형 Kubernetes 경로를 기준선으로 삼아 EKS, GKE, AKS 중 하나와 GitOps 조합을 작은 실험 환경에서 먼저 검증한다.
- Argo CD를 도입할 경우, Cloud Controller Manager 같은 선행 의존성이 먼저 준비되는 부트스트랩 순서를 문서화한다.
- Helm chart 설치·업그레이드·rollback 흐름과 Kustomize 기반 설정 관리 방식을 비교해 실제 운영에서 어떤 도구를 쓸지 판단한다.
❓ 열린 질문
- 직접 Kubernetes 클러스터를 운영해야 할 만큼 강한 제약 조건이 있는가, 아니면 관리형 Kubernetes로 충분한가?
- 개발자에게 Helm, YAML, Git repo 조작까지 요구하는 방식이 실제 팀의 생산성을 떨어뜨리지는 않는가?
- KubeVela 같은 플랫폼 추상화 도구가 필요한 조직적 복잡도가 있는가, 아니면 기본 GitOps와 Helm/Kustomize만으로 충분한가?