java - Kubernetes 上的 Spring Boot 应用程序如何使用外部 message.properties 文件来支持 i18n 和 l10n?
问题描述
我们有一个部署到 Kubernetes 的 Spring Boot 应用程序。我们正在向此应用程序添加 i18n 功能,并希望将 messages.properties 文件放在应用程序 jar/war 之外。我已经能够在春季启动时做到这一点。当我在 Kubernetes 上部署它时,它将如何工作?我需要使用配置映射吗?以下是代码片段
@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;
}
}
解决方案
是的,您可以使用 configmap 执行此操作。这与访问外部 application.properties 文件非常相似。首先,您可以直接从文件创建 ConfigMap或创建代表文件的 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: treasurehunt-config
namespace: default
data:
application.properties: |
treasurehunt.max.attempts=5
然后在您的 kubernetes 部署中,您为 ConfigMap 创建一个 Volume并将其挂载到您用于外部配置的目录下的 Pod 中:
volumeMounts:
- name: application-config
mountPath: "/config"
readOnly: true
volumes:
- name: application-config
configMap:
name: treasurehunt-config
items:
- key: application.properties
path: application.properties
这些片段来自从 ConfigMap为 application.properties 文件安装卷的示例,因此它们使用 spring boot默认外部属性文件路径. /config
您可以在 yaml 中为挂载设置它,以便您可以挂载文件以使用在 kubernetes 外部运行时已经使用的相同相对路径。
推荐阅读
- php - 如何制作基于请求查找属性的查询构建器
- typescript - NativeScript + Angular 项目 - 如何通过页面加载事件更改标签文本
- nginx - 当与其他服务一起部署到本地 K8s 集群时,如何使 IS4 工作?
- jquery - 如何禁用 Fancybox 中的背景覆盖?
- php - 如何在没有操作表单的情况下将输入类型传递给同一站点上的 php 函数?
- ajax - ajax 成功状态码“200”与“200 OK”
- javascript - 在 jQuery 中比较自定义日期格式和 'dd/MM/yyyy' 格式日期
- python - 在 Python 中最后一次出现给定字符后查找字符串字符的最简单方法是什么?
- django - 如何获取已发送到 celery 的任务列表?
- typo3-9.x - TYPO3 9 从页面获取资源和类别,queryBuilder 连接问题