Configmap, Secret 이 변하면 연관된 애플리케이션을 자동으로 배포해주는 솔루션 - Reloader

Hoonkii·2023년 12월 17일
0

개요

쿠버네티스에서 애플리케이션을 운영하다보면, 자주있는 일은 아니지만 Configmap, Secret 값을 변경하는 경우가 있다. 근데 쿠버네티스에서는 Configmap, Secret 값을 변경한다고 그와 연결된 Deployment가 자동으로 배포되지는 않는다. 만약 하나의 Configmap에 연결된 여러 Deployment가 있다면 이를 모두 수동으로 재배포 하는 것은 매우 귀찮고 실수할 여지가 많아질 것이다.

이를 해결하기 위한 좋은 오픈 소스 솔루션을 찾아서 기록하고자 한다.

Reloader

Reloader는 앞서 언급한 문제를 해결해주는 오픈소스 프로젝트이다. Deployment, Configmap, Secret 등 오브젝트에 annotation을 붙이면 배포된 Reloader 가 그것을 감지하고 연관된 오브젝트의 Rollout을 트리거해준다.

예를 들어,

kind: Deployment
metadata:
  name: hoonki-deploy
  annotations:
    reloader.stakater.com/auto: "true"
spec:
  template:
    metadata:
...

Deployment에 reloader.stakater.com/auth: “true” 라는 annotation을 붙이면 해당 Deployment에 연관된 Configmap, Secret 값이 변경될 경우 알아서 deployment의 rolling update를 트리거 시킨다.

혹은 특정 Configmap에 대해서만 Reload를 트리거 할 수 있게 설정할 수 있다.

kind: Deployment
metadata:
  annotations:
    configmap.reloader.stakater.com/reload: "foo-configmap"
spec:
  template:
    metadata:

그러면 해당 deployment에 연관된 foo-configmap이 변할 때만 Reloader가 deployment의 rollout 을 트리거한다.

Installation

Helm chart 를 통해 설치할 수 있다. 다른 방법은 github 를 참고하자

helm repo add stakater https://stakater.github.io/stakater-charts

helm repo update

helm install stakater/reloader

위 커멘드를 통해 설치하면 reloader가 전체 namespace를 watch한다. values.yaml을 수정하여 전체 namespace가 아닌 특정 namespace만 watch 하도록 설정할 수 있다.

Outro

실제로 업무에 도입해보니, 설치 및 설정이 엄청 간편하다고 느꼈고, 자동 재배포가 되니 실수할 여지도 줄어들고 내가 다 관리하지 않아도 되어 매우 편리하였다. 특히 ArgoCD랑 같이 활용하니 Config 바꾸기도 쉽고 배포 상태도 바로 확인할 수 있어서 좋았다.

profile
개발 공부 내용 정리

0개의 댓글