Kubernetes上的Spring Boot应用程序如何使用外部message.properties文件来支持i18n和l10n?

时间:2018-10-26 04:37:16

标签: java spring-boot kubernetes internationalization

我们有一个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;
}
}

1 个答案:

答案 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 ConfigMapmount 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外部运行时已经使用的相对路径。