Testing Kubernetes Controller: Kubernetes Controller를 위한 테스트코드 작성 / if(kakao)2022
if kakao 카카오 · YouTube
AI 핵심 요약
Kubernetes 컨트롤러의 작은 버그도 클러스터 전체에 큰 영향을 줄 수 있어, 발표자는 블루-그린 배포를 수행하는 컨트롤러를 예제로 테스트 방법을 비교했습니다. Kubebuilder 기반 컨트롤러에 목 객체, Fake Client, 실제 Kubernetes API 서버를 이용한 테스트를 적용하고, 각 방식이 검증하는 범위와 비용을 살펴봤습니다. 목 테스트는 호출을 세밀하게 확인하고, Fake Client는 CRUD 결과를 검증하며, API 서버 테스트는 실제 사용 흐름을 확인하는 데 적합했습니다. 모든 상황에 맞는 단일 방법은 없으므로 테스트 목적에 따라 방식을 선택하고, 목 테스트에는 적절한 추상화를 함께 적용해야 한다는 점을 강조했습니다.
- 목 객체는 호출 횟수와 순서를 검증하기 좋지만, 클라이언트 메서드를 직접 모킹하면 테스트가 쉽게 길고 취약해집니다.
- 서비스·디플로이먼트 생성 같은 작업을 별도 인터페이스로 추상화하면 목 테스트의 복잡도를 낮추고 코드 흐름도 명확하게 만들 수 있습니다.
- Fake Client는 Kubernetes CRUD 로직의 결과를 확인하기에 적합하지만, 가비지 컬렉션 등 실제 API 서버 기능까지 구현하지는 않습니다.
- envtest처럼 실제 Kubernetes API 서버를 띄우는 테스트는 사용자 시나리오 검증에 유용하지만 실행 시간이 길고 병렬 실행 시 동시성 문제를 고려해야 합니다.
소개
카카오에서는 Kubernetes 상에서 동작하는 다양한 컨트롤러들을 개발하고 사용하고 있습니다. 이러한 컨트롤러를 통해 Loadbalancer, DNS, ACL, Vault 등 다양한 리소스들을 쿠버네티스 상에서 다룰 수 있게 되었지만, 컨트롤러에 버그가 있을 경우 같은 클러스터안에서 작동중인 모든 서비스에 치명적인 결과를 가져올 수 있어 가능하면 단순한 로직과 높은 안정성이 요구됩니다. 본 세션에서는 어떻게 이 컨트롤러를 테스트 가능하게 개발할 수 있는지에 대해서 다룹니다. #Kubernetes #Controller #Operator #Test 카카오에서 클라우드 플랫폼을 개발하고 있는 스카티입니다. Human Computer Interaction (HCI) 에 관심이 많으며, 일하면서 틈틈히 개발자를 위한 HCI 라는 주제에 대해 생각해보고 있습니다. 하지만 이번발표에서는 순수하게 개발적인 내용만 다룹니다. 발표자료 보기 👉https://speakerdeck.co...
비슷한 학습 자료
컨퍼런스 if kakao
판교 Data Center 화재 이후, 카카오의 Kubernetes 구조를 개선한 경험과 이를 구현하면서 겪었던 다양한 문제와 고민에 대해 이야기합니다. Data Center 화재 시, 실제 Kubernetes에 발생했던 여러 문제를 공유하고, 고가용성 Kubernetes 클러스터를 제공하기 위한 설계 아이디어를 공유합니다. 또한 고가용성을 위해 고민했던 etcd, CNI Plugin에 대해서도 소개합니다. #cloud #kubernetes #cni 카카오의 Kubernetes as a Service를 개발하고 있는 Gyu입니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-71 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024
데브옵스 · 인프라 클라우드
컨퍼런스 if kakao
카카오 서비스들은 어떻게 CI/CD 를 하는가? / if(kakaoAI)2024
컨퍼런스 if kakao
수 천개의 쿠버네티스 멀티 클러스터 위에서 동작하는 카카오의 서비스들이 어떻게 CI/CD를 하는 지를 설명하고, GitOps, MSA 등의 개발 철학을 지키면서 클라우드 전환 이후 생긴 문제들을 해결하기 위한 CI/CD Pipeline 플랫폼 설계에 필요했던 고민을 공유하려 합니다. 또한 외부 솔루션 사용에 대한 고민, 자체 서비스 구축을 통한 비용 절감에, 두 번의 리팩토링을 통해 얻은 교훈들 그리고 시간을 돌려 다시 만든다면 어떤 부분을 다르게 할 것인지에 대한 생각도 함께 전합니다. #cloud #CI/CD 카카오 클라우드 컴퓨팅에서 CI/CD 플랫폼을 개발 운영하고 있는 Peny입니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-70 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024
데브옵스 · 인프라
컨퍼런스 if kakao
Openstack을 쿠버네티스 네이티브하게 운영하는 방법 / if(kakao)2022
컨퍼런스 if kakao
Openstack은 기존까지 인프라 레벨에서 절차적 형태로 운영되어 왔습니다. Kakao i Cloud에서는 Openstack을 포함한 모든 IT 자원을 Kubernetes-native한 방식으로 운영하고 있습니다. 본 세션에서는 Kubernetes Operator pattern을 사용하여 Openstack의 자원을 획기적으로 자동화하는 방법을 소개합니다. #Kubernetes #OpenStack #OperatorPattern #자동화 카카오엔터프라이즈에서 퍼블릭 클라우드를 개발하고 있는 토르입니다. 클라우드 리소스를 자동으로 관리하는 커스텀 컨트롤러를 개발하고 있습니다. 발표자료 보기 👉https://speakerdeck.com/kakao/ifkakao22-57 if(kakao)2022에 대한 자세한 정보는 👉 https://if.kakao.com if(kakao)2022에 대한 문의는 👉 if@kakaocorp.com #카카오 #이프카카오 #개발자컨퍼런스 ...
데브옵스 · 인프라 클라우드
컨퍼런스 if kakao
모든 것이 kubernetes인 세상에서 안전하게 배포하기 / if(kakao)2022
컨퍼런스 if kakao
카카오엔터프라이즈의 클라우드는 모든것이 kubernetes로 이루어져있습니다. 그렇기에 kubernetes의 관리가 매우 중요합니다. kubernetes는 yaml 기반으로 어플리케이션을 관리하여 yaml을 관리할 시 그 결과를 예측하기 좋으나 yaml은 텍스트 기반의 마크업 언어이기 때문에 그대로 사람이 사용할 시 관리측면에서 생산성이 떨어지게 됩니다. 그래서 yaml관리의 생산성을 높이면서도 안정적으로 예측가능한 배포를 만들어내기 위한 시스템을 소개합니다. #Kubernetes #Helm #ArgoCD #Yaml #Predictable #Deterministic #Declarative 카카오엔터프라이즈에서 클라우드를 개발하는 알입니다. 불가능한 기술에 도전하는 것을 좋아하고 개인을 넘어 전체가 성장 할 수 있는 방법을 찾는 것을 좋아합니다. 발표자료 보기 👉https://speakerdeck.com/kakao/ifkakao22-59 if(kakao)2022에 대한 자...
데브옵스 · 인프라
컨퍼런스 if kakao
카카오에서는 쿠버네티스를 서비스하기 위해 DKOS를 사용하고 있습니다. 본 세션에서는 DKOS가 쿠버네티스를 서비스 하기 위해, 고려하였던 프로비저닝 툴들과 선택을 시작으로, 시행착오를 거쳐, 프로비저닝 툴을 걷어내기까지의 여정을 공유 드리고자 합니다. #Kubernetes #Provisioning 카카오에서 클라우드 플랫폼을 개발하고 있는 루키입니다. 발표자료 보기 👉https://speakerdeck.com/kakao/ifkakao22-52 if(kakao)2022에 대한 자세한 정보는 👉 https://if.kakao.com if(kakao)2022에 대한 문의는 👉 if@kakaocorp.com #카카오 #이프카카오 #개발자컨퍼런스 #기술 #개발 #ifkakao2022
데브옵스 · 인프라
컨퍼런스 if kakao
Preview Cloud @if(kakao)2022
컨퍼런스 if kakao
if(kakao)2022 컨퍼런스에서 Cloud 관련 기술 발표 트랙을 소개합니다. 04:17 1. Kubernetes provisioning: 프로비저닝 툴과의 만남부터 헤어짐까지... by 전민철(rookie.jeon) 카카오에서 클라우드 플랫폼을 개발하고 있는 루키입니다. 04:43 2. Testing Kubernetes Controller: Kubernetes Controller를 위한 테스트코드 작성 by 이완해(scotty.scott) 카카오에서 클라우드 플랫폼을 개발하고 있는 스카티입니다. Human Computer Interaction (HCI) 에 관심이 많으며, 일하면서 틈틈히 개발자를 위한 HCI 라는 주제에 대해 생각해보고 있습니다. 하지만 이번발표에서는 순수하게 개발적인 내용만 다룹니다. 05:01 3. 카카오가 K8s CNI Cilium의 메모리 누수 버그를 해결하는 방법 by 배규태(gyu.gyu) 카카오에서 클라우드 플랫폼을 개발하고 있는 규입니...
소프트웨어 테스트 데브옵스 · 인프라