一味宠爱|Springboot整合K8s读取ConfigMap刷新配置
1 前言之前介绍了Spring Cloud Config的用法 , 但对于Kubernetes应用 , 可能会需要读取ConfigMap的配置 , 我们看看Springboot是如何方便地读取ConfigMap和Secret 。
2 整合Spring Cloud KubenetesSpring Cloud Kubernetes提供了Spring Cloud应用与Kubernetes服务关联 , 我们也可以自己写Java程序来获取Kubernetes的特性 , 但Spring又为我们做了 。
2.1 项目代码引入依赖:
只需要Springboot Web和Spring Cloud Kubernetes Config即可 , 很简单 。
Springboot启动类:
@SpringBootApplicationpublic class ConfigMapMain {public static void main(String[] args) {SpringApplication.run(ConfigMapMain.class, args);}}
准备一个EndPoint来展示所读到的配置信息:
@RestControllerpublic class PkslowController {@Value("${pkslow.age:0}")private Integer age;@Value("${pkslow.email:null}")private String email;@Value("${pkslow.webSite:null}")private String webSite;@Value("${pkslow.password:null}")private String password;@GetMapping("/pkslow")public Map getConfig() {Map map = new HashMap<>();map.put("age", age.toString());map.put("email", email);map.put("webSite", webSite);map.put("password", password);return map;}}
默认是为空的 , password是从Secret读取 , 其它从ConfigMap读取 。
应用的配置文件如下:
server:port: 8080spring:application:name: spring-cloud-kubernetes-configmapcloud:kubernetes:config:name: spring-cloud-kubernetes-configmap
这里的spring.cloud.kubernetes.config.name是重点 , 后续要通过它来找ConfigMap 。
加密密码:
$ echo -n "pkslow-pass" | base64 cGtzbG93LXBhc3M=
创建Kubernetes Secret:
kind: SecretapiVersion: v1metadata:name: spring-cloud-kubernetes-secretnamespace: defaultdata:pkslow.password: cGtzbG93LXBhc3M=type: Opaque
ConfigMap的内容如下:
kind: ConfigMapapiVersion: v1metadata:name: spring-cloud-kubernetes-configmapnamespace: defaultlabels:app: scdf-serverdata:application.yaml: |-pkslow:age: 19email: admin@pkslow.comwebSite: www.pkslow.com
要注意的是 , 这里的名字与前面配置的是一致的 , 都是spring-cloud-kubernetes-configmap 。
接着完成Dockerfile和K8s部署文件就可以了 。 注意要将Secret的值映射到环境变量:
env: - name: PKSLOW_PASSWORDvalueFrom:secretKeyRef:name: spring-cloud-kubernetes-secretkey: pkslow.password
2.2 启动与测试应用会在启动时就去Kubernetes找相应的ConfigMap和Secret:
._______ _ _ /\\ / ___'_ __ _ _(_)_ ____ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/___)| |_)| | | | | || (_| |) ) ) )'|____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot ::(v2.2.5.RELEASE)2020-08-25 00:13:17.374INFO 7 --- [main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='composite-configmap', propertySources=[ConfigMapPropertySource {name='configmap.spring-cloud-kubernetes-configmap.default'}]}2020-08-25 00:13:17.376INFO 7 --- [main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='composite-secrets', propertySources=[]}
推荐阅读
- 一味宠爱|最全盘点卡中国脖子的35项技术,折射中国工业水平的真实现状
- 金在中|4岁遭抛弃,被养父家8个姐姐宠爱,红遍亚洲后亲生父母上门认亲
- T恤|集万千宠爱于一身的T恤,不仅百搭还时髦,难怪这么受欢迎
- 德国天然宠粮Real Nature浩瀚母公司Fressnapf(宠爱碗)最全剖析
- 一味宠爱|上海:打造“四全”在线教育的“上海模式”
- 一味宠爱|2020开学季之手机CPU性能天梯图、拍照天梯图(0903)
- 小熊科技|从零学ELK系列(十):SpringBoot接入ELK升级版
- 一味宠爱|骗走十亿,“世联通证”究竟什么来头?,100多万人上当
- 一味宠爱|德国专家:中方顶级芯片若自研成功,美将无法对中国技术封锁
- 一味宠爱|微信撤回消息为何还要提示对方?腾讯解答真相