我在K8s上部署了一个Spring应用程序。我使用ConfigMap实例通过运行应用程序并让从文件系统读取application.properties到Pod
application.properties:
spring.application.name=spring-cloud-k8s-minion
server.port=8080
spring.cloud.kubernetes.config.paths=/etc/app-config/application.properties
management.endpoint.refresh.enabled=true
management.endpoints.web.exposure.include=*pom.xml:
<spring-boot.version>2.6.7</spring-boot.version>
<spring-cloud.version>2021.0.2</spring-cloud.version>
<spring.cloud.k8s.version>2.1.2</spring.cloud.k8s.version>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-client-config</artifactId>
</dependency>@Configuration()
@ConfigurationProperties(prefix = "minion")
public class MinionConfig {
private String type = "generic-minion";
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}我有一个rest端点,公开了这些信任信息,并且可以验证这些属性在加载时是否加载到我的应用程序中。
如果我更新配置:
kubectl edit configmap -n development spring-cloud-k8s-minion -o yaml并将exec放到我的pod/容器中,查看新配置是否重新加载,我可以看到新的值。到目前一切尚好。
现在,如果我调用/actuator/refresh,新值将不会加载到我的应用程序中。我在这里错过了什么?
发布于 2022-05-20 22:43:52
我找到解决办法了。我得把spring.cloud.kubernetes.config.paths搬到bootstrap.properties去。
至少对我来说,还不清楚该把spring.cloud.kubernetes.config.paths放在哪里。如果您检查文档,您将找不到任何关于它的位置的信息。
总的来说,我们必须在bootstrap.properties和application.proeprties之间猜测!
https://stackoverflow.com/questions/72322088
复制相似问题