AI Briefing

Java로 Kubernetes Operator 개발하기

·2024.07.01 00:00

Java Operator SDK로 CRD, Reconciler, Dependent Resource를 구현해 Petclinic 오퍼레이터를 만든다.

Spring Boot 3.3.1, Java 21 기반 프로젝트에 Java Operator SDK 5.5.0fabric8 crd-generator-apt 6.13.0을 붙여 Kubernetes Operator를 Java로 구현한다.

핵심 구조는 Primary Resource, Spec, Status, Reconciler, KubernetesDependentResource로 나뉜다. PetclinicSpec에는 image, size, port를 두고, PetclinicStatusObservedGenerationAwareStatus를 상속해 변경 추적을 지원한다. Petclinic CR은 @Group("spring.my.domain"), @Version("v1")를 사용해 정의한다.

의존 리소스는 Deployment, Service, Ingress로 구성한다.

  • PetclinicDeploymentResourceDeployment를 생성하고 replicas, image, container port를 spec에서 읽어 반영한다.
  • PetclinicServiceResourceNodePort 서비스로 노출한다.
  • PetclinicIngressResourcenginx ingress class와 / 경로를 연결해 서비스로 라우팅한다.

PetclinicReconciler@ControllerConfigurationdependents에 세 리소스를 연결하고, reconcile()에서는 UpdateControl.updateResourceAndPatchStatus(petclinic)을 반환한다. 오류 시에는 updateErrorStatus()로 status를 patch하고, 삭제 시에는 DeleteControl.defaultDelete()를 사용한다.

별도 PetclinicOperatorConfig에서 PetclinicReconcilerOperator를 Bean으로 등록한 뒤, 빌드 산출물의 META-INF/fabric8에 생성된 CRD YAML을 kubectl apply로 클러스터에 적용한다. 이후 kind 기반 로컬 클러스터에 Petclinic 리소스를 배포하면, sample 이름의 Deployment, Service, Pod가 자동으로 생성되고 애플리케이션이 동작하는 흐름을 확인한다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.