[SPRING] k8s cronjob + Spring Batch
Spring batch 를 k8s cronjob 을 사용하여 배포 하면서 겪었던 이슈
목표
Spring batch 를 실행하면서 error가 발생해서 정상적으로 종료하지 않으면
k8s cronjob 에 설정해놓은 restartPolicy 를 통해서 재실행하고, slack에 알림 발송
이슈
일부러 batch 작업중에 exception 발생하도록 코드를 넣고 cronjob을 실행
-> exception이 발생하고 batch가 종료되고 나서 pod의 상태가 Completed
-> pod 가 정상적으로 종료되었으므로 restartPolicy 를 통해서 재실행 하지 않고 slack에도 알림 발송 하지 않음
원인
spring batch에서 exception이 발생했지만 exit code는 0으로 반환하고 종료 -> exit code가 0이므로 pod는 성공으로 인지
해결
spring batch에서 exception이 발생하면 exit code를 반환하고 종료하도록 수정
참조
https://spring.io/blog/2021/01/27/spring-batch-on-kubernetes-efficient-batch-processing-at-scale
Spring Batch on Kubernetes: Efficient batch processing at scale
Introduction Batch processing has been a challenging area of computer science since its inception in the early days of punch cards and magnetic tapes. Nowadays, the modern cloud computing era comes with a whole new set of challenges for how to develop and
spring.io