Java로 Kubernetes Operator 개발하기
핵심 내용
Java Operator SDK로 CRD, Reconciler, Dependent Resource를 구현해 Petclinic 오퍼레이터를 만든다.
자세히 보기
Spring Boot 3.3.1, Java 21 기반 프로젝트에 Java Operator SDK 5.5.0과 fabric8 crd-generator-apt 6.13.0을 붙여 Kubernetes Operator를 Java로 구현한다.
핵심 구조는 Primary Resource, Spec, Status, Reconciler, KubernetesDependentResource로 나뉜다. PetclinicSpec에는 image, size, port를 두고, PetclinicStatus는 ObservedGenerationAwareStatus를 상속해 변경 추적을 지원한다. Petclinic CR은 @Group("spring.my.domain"), @Version("v1")를 사용해 정의한다.
의존 리소스는 Deployment, Service, Ingress로 구성한다.
PetclinicDeploymentResource는Deployment를 생성하고 replicas, image, container port를spec에서 읽어 반영한다.PetclinicServiceResource는NodePort서비스로 노출한다.PetclinicIngressResource는nginxingress class와/경로를 연결해 서비스로 라우팅한다.
PetclinicReconciler는 @ControllerConfiguration의 dependents에 세 리소스를 연결하고, reconcile()에서는 UpdateControl.updateResourceAndPatchStatus(petclinic)을 반환한다. 오류 시에는 updateErrorStatus()로 status를 patch하고, 삭제 시에는 DeleteControl.defaultDelete()를 사용한다.
별도 PetclinicOperatorConfig에서 PetclinicReconciler와 Operator를 Bean으로 등록한 뒤, 빌드 산출물의 META-INF/fabric8에 생성된 CRD YAML을 kubectl apply로 클러스터에 적용한다. 이후 kind 기반 로컬 클러스터에 Petclinic 리소스를 배포하면, sample 이름의 Deployment, Service, Pod가 자동으로 생성되고 애플리케이션이 동작하는 흐름을 확인한다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.