У меня есть приложение, использующее Springboot, я пытаюсь разрешить обновления конфигурации «на лету», используя следующее.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.3.1-RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-config</artifactId>
<version>1.1.4.RELEASE</version>
</dependency>
Я пытался следовать этой статье https://medium.com/swlh/kubernetes-configmap-configuration-and-reload-strategy-9f8a286f3a44, и мне удалось заставить Spring извлекать конфигурацию из ConfigMap, однако, если я обновлю ConfigMap во время работы приложения, spring не забрать его. Это мой bootstrap.yml
spring:
cloud:
kubernetes:
config:
enabled: true
sources:
- namespace: default
name: hello-world
reload:
enabled: true
mode: event
strategy: refresh
Я также пытался использовать mode: polling
, но все равно без изменений. И я добавил роль view
.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ include "hello-world.fullname" . }}-view
roleRef:
kind: ClusterRole
name: view
apiGroup: rbac.authorization.k8s.io
subjects:
# Authorize specific service accounts:
- kind: ServiceAccount
name: {{ include "hello-world.serviceAccountName" . }}
namespace: default
Я думаю, может быть, это то, как я загружаю свою конфигурацию в Java?
@ConfigurationProperties(prefix = "spring.app")
@Bean
public Properties appProperties() {
return new Properties();
}
@Autowired
@Qualifier("appProperties")
private Properties props;
Моя карта конфигурации:
apiVersion: v1
kind: ConfigMap
metadata:
name: hello-world
data:
application.yml: |-
spring:
app:
message: Hello
Затем я получаю доступ к таким значениям, как props.getProperty("message")
ОБНОВЛЕНИЕ:
Итак, мне удалось получить изменения, включив конечную точку обновления актуатора:
management:
endpoint:
restart:
enabled: true
Но теперь у меня новый вопрос, нужно ли это? Есть ли способ заставить это работать без включения привода?
@Scheduler
- person Kavithakaran Kanapathippillai   schedule 25.07.2020