11.5. PropertySource 재로드 사용
일부 애플리케이션에서는 외부 속성 소스의 변경 사항을 감지하고 새 구성을 반영하도록 내부 상태를 업데이트해야 할 수 있습니다. Spring Cloud Kubernetes의 다시 로드 기능은 관련 ConfigMap 또는 시크릿이 변경될 때 애플리케이션 다시 로드를 트리거할 수 있습니다.
11.5.1. PropertySource Reload 활성화 링크 복사링크가 클립보드에 복사되었습니다!
Spring Cloud Kubernetes의 PropertySource 재로드
기능은 기본적으로 비활성화되어 있습니다.
절차
-
빠른 시작 프로젝트의
gRPC/main/resources
디렉터리로 이동하여bootstrap.yml
파일을 엽니다. -
구성 속성
spring.cloud.kubernetes.reload.enabled=true
를 변경합니다.
11.5.2. PropertySource 재로드 수준 링크 복사링크가 클립보드에 복사되었습니다!
spring.cloud.kubernetes.reload.strategy
속성에 대해 다음 수준의 재로드가 지원됩니다.
- 새로고침
(기본값)
@ConfigurationProperties
또는@RefreshScope
로 주석이 달린 구성 빈만 다시 로드됩니다. 이 재로드 수준은 Spring Cloud Context의 새로 고침 기능을 활용합니다.참고PropertySource 재로드 기능은 다시 로드 전략이
새로 고침
하도록 설정된 경우 간단한 속성(즉, 컬렉션 아님)에만 사용할 수 있습니다. 컬렉션에서 지원하는 속성은 런타임에 변경할 수 없습니다.- restart_context
- Spring ApplicationContext 전체를 정상적으로 다시 시작합니다. 빈은 새 구성을 사용하여 다시 생성됩니다.
- shutdown
- 컨테이너 재시작을 활성화하기 위해 Spring ApplicationContext 가 종료되었습니다. 이 수준을 사용하는 경우 모든daemon 스레드의 라이프사이클이 ApplicationContext에 바인딩되고 복제 컨트롤러 또는 복제본 세트가 Pod를 다시 시작하도록 구성되어 있는지 확인합니다.
11.5.3. PropertySource Reload의 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 다시 로드 기능이 활성화될 때 어떤 일이 발생하는지 설명합니다.
절차
다시 로드 기능이 기본 설정으로 활성화되어 있다고 가정합니다(다시 모드). 구성 맵이 변경되면 다음 빈이 새로 고쳐집니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 변경 사항이 발생하는 것을 보려면 아래와 같이 메시지를 주기적으로 출력하는 다른 빈을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 아래와 같이 ConfigMap을 사용하여 애플리케이션에서 출력한 메시지를 변경할 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod와 연결된 구성 맵의 balloon
.message
라는 속성에 대한 모든 변경 사항이 프로그램의 출력에 반영됩니다.
11.5.4. PropertySource 재로드 운영 모드 링크 복사링크가 클립보드에 복사되었습니다!
재로드 기능은 다음 두 가지 작동 모드를 지원합니다.
- event
-
(기본값) Kubernetes API(웹 소켓)를 사용하여 ConfigMap 또는 시크릿의 변경 사항을 감시합니다. 모든 이벤트는 구성에 재확인되고 변경 시 다시 로드됩니다. 구성 맵 변경 사항을 수신 대기하려면 서비스 계정의
보기
역할이 필요합니다. 상위 수준 역할(예:)Edit
)는 시크릿에 필요합니다(기본적으로 시크릿을 모니터링하지 않음). - 폴링
-
구성 맵과 시크릿에서 주기적으로 구성을 다시 생성하여 변경되었는지 확인합니다. 폴링 기간은
spring.cloud.kubernetes.reload.period
속성을 사용하여 구성할 수 있으며 기본값은 15초입니다. 모니터링된 속성 소스와 동일한 역할이 필요합니다. 예를 들어, 파일 마운트된 시크릿 소스에 폴링을 사용하는 경우 특정 권한이 필요하지 않습니다.
11.5.5. PropertySource 재로드 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
다음 속성을 사용하여 다시 로드 기능을 구성할 수 있습니다.
- spring.cloud.kubernetes.reload.enabled
-
속성 소스 및 구성 다시 로드를 모니터링할 수 있습니다. type은
Boolean
이고 기본값은false
입니다. - spring.cloud.kubernetes.reload.monitoring-config-maps
-
구성 맵의 변경 사항을 모니터링할 수 있습니다. type은
Boolean
이고 기본값은true
입니다. - spring.cloud.kubernetes.reload.monitoring-secrets
-
시크릿의 변경 사항을 모니터링할 수 있습니다. type은
Boolean
이고 기본값은false
입니다. - spring.cloud.kubernetes.reload.strategy
-
다시 로드를 실행할 때 사용할 전략(
새로 고침
,restart_context
,shutdown
). type은Enum
이고 기본값은refresh
입니다. - spring.cloud.kubernetes.reload.mode
-
속성 소스(
Event
,polling
)의 변경 사항을 청취하는 방법을 지정합니다. type은Enum
이고 기본값은event
입니다. - spring.cloud.kubernetes.reload.period
-
폴링
전략을 사용할 때 변경 사항을 확인하기 위한 시간(밀리초)입니다. type은롱
이며 기본값은15000
입니다.
다음 사항에 유의하십시오.
-
spring.cloud.kubernetes.reload.*
속성은 ConfigMaps 또는 Secrets에서 사용해서는 안 됩니다. 런타임에 이러한 속성을 변경하면 예기치 않은 결과가 발생할 수 있습니다. -
새로 고침
수준을 사용할 때 속성 또는 전체 구성 맵을 삭제하면 빈의 원래 상태가 복원되지 않습니다.