在春季使用k8s configmap
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在春季使用k8s configmap相关的知识,希望对你有一定的参考价值。
我有一个spring引导服务,目前使用.properties
文件使用spring @Value批注来使用变量。最近,我们已将Spring Boot服务迁移到K8集群。这意味着,我们需要创建一个configmap.yml
文件,其中包含与.properties
文件相同的所有属性。每当更改属性时,都必须在两个位置(用于本地开发人员的configmap和.properties
文件)都进行更改。因此,我们必须为每个spring配置文件管理2个文件(configmap和.properties)。有一个更好的方法吗?我们使用gitlab ci / cd工具进行部署。
是否有一种方法可以使用configmap而不是属性来在我们的机器中进行本地开发,以便我们可以完全放弃.properties文件而仅维护configmap?
管理Spring Boot应用程序属性的理想方法是什么?
样本service-config-map.yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: myservice-config
data:
server.port: "10300"
spring.application.name: myserviceGateway
myservice.application.name: helloworld
myservice.server.apiContext: /api
myservice.server.versionContext: /v
myservice.current.version=2.0
属性文件application.properties
server.port=10300
spring.application.name=myserviceGateway
myservice.application.name=helloworld
myservice.server.apiContext=/api
myservice.server.versionContext=/v
myservice.current.version=2.0
Spring Cloud Kubernetes project使Kubernetes ConfigMap
在应用程序引导期间可用,并在观察到的ConfigMap
上检测到更改时触发Bean或Spring上下文的热重装。
示例here
具有配置映射名称的bootstrap yaml看起来像
spring:
application:
name: reload-example
cloud:
kubernetes:
reload:
enabled: true
mode: polling
period: 5000
config:
sources:
- name: other
- name: $spring.application.name
是的,这是可行的。
首先,您将需要一个bean来放置yaml,例如:
@Bean
public static PropertySourcesPlaceholderConfigurer properties()
PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource(CONF_FILE));
propertySourcesPlaceholderConfigurer.setProperties(yaml.getObject());
return propertySourcesPlaceholderConfigurer;
然后您可以将任何标准服务注释为:
@Service
@EnableConfigurationProperties
@ConfigurationProperties(prefix="service-config-map")
public class ConfigMapConfigService
...
取决于您对集群的访问类型,您可以使用K8s API通过HTTP检索资源。例如,您可以使用某种脚本从群集中提取配置映射,并将其解析为yaml(默认情况下为json,不确定是否支持yaml输出,但是尚未进行实际测试)。
以上是关于在春季使用k8s configmap的主要内容,如果未能解决你的问题,请参考以下文章