client-go
-
client-go 와 controller-runtime의 관계Kubernetes 2025. 3. 25. 09:22
client-go는 무엇인가? • client-go는 Kubernetes 프로젝트 하위에 있는 공식 Go 클라이언트 라이브러리 • 위치: https://github.com/kubernetes/client-go • 원래는 Kubernetes의 k8s.io/kubernetes 코드베이스 내부에 있던 것을 분리해서 라이브러리화한 것 • kubectl도 내부적으로 client-go를 사용해요만든 주체Kubernetes 프로젝트 (CNCF 산하, Go로 작성)관리 위치https://github.com/kubernetes/client-go소유권Kubernetes SIG API Machinery 팀라이선스Apache 2.0 • kubebuilder는 Kubernetes Operator를 Go로 쉽게 개발할 수 있게..
-
client-go under the hoodKubernetes 2025. 3. 2. 11:48
아래 내용에 대한 한글 버전:https://github.com/kubernetes/sample-controller/blob/master/docs/controller-client-go.md client-go 라이브러리는 커스텀 컨트롤러(Custom Controller)를 개발할 때 사용할 수 있는 다양한 메커니즘을 제공합니다.이러한 메커니즘은 client-go 라이브러리의 tools/cache 패키지 내에서 정의되어 있습니다.아래 그림은 client-go 라이브러리의 다양한 구성 요소들이 어떻게 동작하는지, 그리고 우리가 작성하는 커스텀 컨트롤러 코드와 어떻게 상호 작용하는지를 나타냅니다. 🔹 client-go 주요 구성 요소1️⃣ Reflectorcache 패키지 내의 Reflector 타입으로 정..
-
client-go의 Reflector와 Watcher의 차이?Kubernetes 2025. 3. 2. 11:41
Kubernetes client-go 라이브러리에서 Reflector와 Watcher는 둘 다 Kubernetes API 서버에서 데이터를 감시(watch)하는 역할을 하지만, 동작 방식과 목적이 다릅니다. Watcher는 저수준 API, Reflector는 캐싱을 지원하는 고수준 API! 1️⃣ Watcher: API 서버의 watch 스트림을 직접 관리🔹 개념Watcher는 API 서버의 watch 엔드포인트를 직접 호출하여 리소스 변경 사항을 실시간으로 감지하는 저수준(LOW-level) 인터페이스입니다.client-go에서 ListerWatcher 인터페이스를 사용하여 직접 구현할 수 있습니다.🔹 동작 방식Kubernetes API 서버의 watch 엔드포인트를 호출하여 변경 사항을 실시간으로..