본문 바로가기
번역

[번역] reloader

by hayz 2022. 1. 27.

본 문서는 해당 github 의 readme 를 번역 및 재구성 하였습니다. https://github.com/stakater/Reloader

 

GitHub - stakater/Reloader: A Kubernetes controller to watch changes in ConfigMap and Secrets and do rolling upgrades on Pods wi

A Kubernetes controller to watch changes in ConfigMap and Secrets and do rolling upgrades on Pods with their associated Deployment, StatefulSet, DaemonSet and DeploymentConfig – [✩Star] if you'...

github.com

 

문제

쿠버네티스 자원을 관리하다 보면 deployment 내부의 정보들이 변경 될 때 자동으로 deployment 가 롤 아웃 되는 것을 확인 할 수 있다. 하지만 연결된 configmap 이나 secret 등 의 경우 내부에 변경이 있어도 deployment 가 재시작 되지 않는다.

해결방법

reloader 는 configMap 과 secret 의 변경사항을 확인하여 연결되어 있는 deployment, daemonset, statefulsets 등을 자동으로 업데이트 한다.

호환성

쿠버네티스 1.9 이상 부터 호환된다.

사용법

foo 라고 불리는 deployment 에는 foo-configmap 이라고 불리는 configmap 과 foo-secret 이라고 불리는 secret 을 가지고 있을 때, deployment 의 metadata 에 다음과 같은 어노테이션을 붙인다.

kind: Deployment
metadata:
  annotations:
    reloader.stakater.com/auto: "true"
spec:
  template: metadata:

위와 같이 설정하면, deployment 가 자동으로 configmap 과 secret 의 변경 여부를 캐치할 것이다. 그리고 업데이트 되면 자동으로 롤링 업데이트를 시작할 것이다.

만약 configmap 혹은 secret 둘 중 특정 리소스에 제한을 두고 싶다면 아래와 같이 어노테이션을 설정할 수 있다.

kind: Deployment
metadata:
  annotations:
    reloader.stakater.com/search: "true"
spec:
  template:

위와 같이 search 어노테이션을 설정하면 아래와 같이 match 가 true 로 된 리소스가 변경될 때만 업데이트 한다.

kind: ConfigMap
metadata:
  annotations:
    reloader.stakater.com/match: "true"
data:
  key: value

reloader.stakater.com/search 와 reloader.stakater.com/auto 어노테이션을 동시에 사용하면 안된다. 만약 reloader.stakater.com/auto: "true"어노테이션을 deployment 에서 가지고 있다면 이는 연결된 configmap 과 secret 의 변동이 있을 때마다 항상 업데이트를 진행할 것이다. 연결된 리소스가 reloader.stakater.com/match: "true"를 가지고 있든 말든.

댓글