Kubebuilder

개요

엄밀하게 쿠버네티스 애드온은 아닌데, 아무튼 쿠버네티스 환경을 개발하는데 매우 유용한 툴이라 여기에 넣었다.
쿠버네티스에서 커스텀 컨트롤러를 쉽게 개발할 수 있도록 도움을 주는 툴이다.
기본적인 환경 세팅, kustomize, Admission Webhook 등의 자동 세팅과 기본 파일 양식을 만들어준다.
커스텀 리소스를 만드는 것도 도와주기 때문에, 오퍼레이터를 쉽게 만들어준다고 보는 것이 더 정확하겠다.

아키텍처

image.png
코드 내부의 아키텍쳐를 담은 그림이다.
사실 이 아키텍처는 비단 kubebuilder의 코드 아키텍처라기보다는 컨트롤러가 동작하는 원리와 어드미션 웹훅을 어떻게 처리하는지에 대한 구조를 담고 있다.
간단하게만 말하자면, 기본적으로 Manager는 Client를 이용해 kube-apiserver와 통신하면, Controller와 Webhook을 띄운다.
컨트롤러가 그 컨트롤러고, 웹훅은 어드미션 웹훅을 말한다.
컨트롤러는 내부에 Reconcile, 즉 재조정하는 함수를 가지고 있으며, 이벤트를 받을 때마다 해당 함수를 발동시켜 컨트롤러로서의 작업을 수행한다.
웹훅은 더 간단하게, 그냥 요청 날아오면 뮤테이팅, 검증을 수행한다.

kubebuilder를 사용해서 컨트롤러를 만들 때는 위 구조를 얼추 이해하고 진행하면 된다!

설치

# download kubebuilder and install locally.
curl -L -o kubebuilder "https://go.kubebuilder.io/dl/latest/$(go env GOOS)/$(go env GOARCH)"
chmod +x kubebuilder && sudo mv kubebuilder /usr/local/bin/

일단 cli를 설치하는 방법.
image.png
이렇게 나오면 성공이다.
기본적으로 docker, go가 설치돼있어야 한다.

mkdir -p ~/projects/guestbook
cd ~/projects/guestbook
kubebuilder init --domain my.domain --repo my.domain/guestbook

kubebuilder create api --group webapp --version v1 --kind Guestbook

https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern

관련 문서

이름 noteType created
Kubebuilder knowledge 2025-04-04
T-kubebuilder 튜토리얼 topic/temp 2025-04-04

참고

ihttps://d2.naver.com/helloworld/4142663