我们有一个Spring Boot应用程序,已部署到Kubernetes。我们正在向该应用程序添加i18n功能,并希望将messages.properties文件放置在应用程序jar / war之外。我已经能够在春季启动时做到这一点。当我在Kubernetes上部署它时,它将如何工作?我需要使用configmaps吗?以下是代码段
@Configuration
public class AppConfig {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
//Path to the messages.properties files
messageSource.setBasenames("file:/messages/messages", "classpath:messages");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(60);
return messageSource;
}
}
答案 0 :(得分:1)
是的,您可以使用configmap做到这一点。它与访问外部application.properties文件几乎相同。首先,您可以create a ConfigMap directly from the file或创建一个ConfigMap representing the file:
apiVersion: v1
kind: ConfigMap
metadata:
name: treasurehunt-config
namespace: default
data:
application.properties: |
treasurehunt.max.attempts=5
然后在kubernetes部署中创建一个Volume for the ConfigMap和mount that into the Pod under the directory you use for the external configuration:
volumeMounts:
- name: application-config
mountPath: "/config"
readOnly: true
volumes:
- name: application-config
configMap:
name: treasurehunt-config
items:
- key: application.properties
path: application.properties
这些摘录来自一个application.properties文件的example of mounting a Volume from ConfigMap,因此它们使用/config
的spring boot default external properties file path。您可以set that in the yaml for the mount,以便可以挂载文件以使用在kubernetes外部运行时已经使用的相对路径。