프로젝트 소개
Kubebuilder는 CRD(사용자 정의 리소스 정의)를 사용하여 Kubernetes API를 구축하기 위한 프레임워크입니다. Ruby on Rails 및 SpringBoot와 같은 웹 개발 프레임워크와 유사하게, Go로 Kubernetes API를 신속하게 구축하고 게시하는 개발자가 관리하는 복잡성을 줄이고 속도를 높입니다. 핵심 Kubernetes API를 구축하는 데 사용되는 표준 기술을 기반으로 하여, 반복 작업과 수고를 줄이는 간단한 추상화를 제공합니다.
Kubebuilder는 복사하여 붙여넣기용 예제로 존재하는 것이 아니라, Kubernetes API를 처음부터 구축하고 게시하는 것을 단순화하는 강력한 라이브러리와 도구를 제공합니다. 선택적 헬퍼와 기능을 활용할 수 있는 플러그인 아키텍처를 제공합니다.
Kubebuilder는 controller-runtime 및 controller-tools 라이브러리를 기반으로 개발되었습니다. 또한 확장 가능하며 다른 프로젝트에서 라이브러리로 사용할 수 있습니다. Operator-SDK는 Kubebuilder를 라이브러리로 사용하는 좋은 예로, Ansible 및 Helm 기반 언어 Operator와 같은 비-Go Operator를 포함하기 위해 플러그인 기능을 활용합니다.
이 프레임워크는 API 구축을 위한 개발자 워크플로우를 용이하게 합니다: 새 프로젝트 디렉토리 생성, CRD로 하나 이상의 리소스 API 생성, 컨트롤러에서 리concile 루프 구현, 클러스터에 대해 실행하여 테스트, 부트스트랩된 통합 테스트 업데이트, 제공된 Dockerfile에서 컨테이너 빌드 및 게시.
Kubebuilder의 범위는 CRD, 컨트롤러 및 Admission Webhook를 사용한 API 구축을 포함합니다. 그 철학은 명확하고 예제가 잘 갖춰진 Go 문서와 함께 깨끗한 라이브러리 추상화를 제공하고, 코드 생성보다 인터페이스와 라이브러리를 선호하며, 일회성 초기화된 스텁보다 코드 생성을, 포크 및 수정된 보일러플레이트보다 일회성 초기화를 강조합니다.
Kubebuilder는 저수준 클라이언트 라이브러리 위에 고수준 라이브러리를 제공하여 개발자를 호환성이 깨지는 변경으로부터 보호하고, 최소한으로 시작하여 기능의 점진적 발견을 제공하며, 존재할 때 사용자가 재정의할 수 있는 합리적인 기본값을 제공합니다. 또한 // + 주석을 기반으로 한 코드 생성기를 제공하여 공통 보일러플레이트를 유지하고, 새 패키지를 초기화하는 부트스트랩 명령을 제공합니다.
Kubebuilder로 생성된 프로젝트는 프로젝트 생성 중에 정의된 버전의 도구를 설치하는 Makefile을 포함하며, 여기에는 kustomize, controller-gen 및 setup-envtest가 포함됩니다. 필요한 최소 Go 버전은 해당 의존성에 필요한 최소 Go 버전 중 가장 높은 버전에 따라 결정됩니다.
Kubebuilder는 공식적으로 macOS 및 Linux 플랫폼을 지원합니다. Kubernetes SIGs 커뮤니티에서 개발되었으며, 일반적인 GitHub 풀 리퀘스트 모델을 따라 기여가 이루어집니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.