springboot2.X使用k8s的configmap

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot2.X使用k8s的configmap相关的知识,希望对你有一定的参考价值。

参考技术A 处于项目需要使用kubernetes 的configmap作为配置中心。

这里的 app-config 是configmap 的名称可根据不同项目不同环境来自定义如: test-app-main-config 或者 test-redis-config 等等。
创建完成后 使用如下命令查看k8s中的configmap 我这里查看的默认 namespace 下的cm 。

使用下列命令查看 configmap中的 内容

会把指定文件夹下的 文件都存入configmap中,这里不展开赘述

这里的 --from-literal 可以指定多个 key-value 键值对

创建的配置到此创建完毕。接下来说重点

配置完成后 reimport 一下

在springboot项目 --> resources 文件下创建 bootstrap.yml 文件 如果有其他配置文件建议都移动到 自己新建一个文件下面
文件内容如下

这里的 @ConfigurationProperties(prefix = "common.redis") 需要注意 common.redis 这个东西是配置文件中读取的前缀。需要更具自己的项目所用的配置来定义
如propertes 文件

创建RedisConfigProperties.java

自行写个controller 来测试,当然我这边也提供一个 方便大家复制粘贴

至此springboot 中获取 configmap主要配置结束。本地如果有k8s环境则可以直接启动访 上面controller的连接来验证是否加载了配置。
注意 如果使用 @Vaule 注解来获取配置 时不会在configmap有变化的时候 获取到变化的值

这个配置到算简单。重点是在你的springboot项目部署到 pod 中时 会提示无法访问 configmap 。是因为在k8s集群环境中 创建的 pod 默认使用的是 RBAC 模式授权 ,使用的是default的权限,然而 default 权限无法在pod内访问到 APIservice 开放的 restful 接口。

思路:创建 RBAC 模式的 角色 和权限
创建 config-reader-role.yml 文件 。
文件内容如下:

创建文件完成后直接执行如下命令:

创建完成后需要在我们创建部署的 deployment.yml 文件中指定 使用 config-reader 的权限 。在下面节点
spec--> template--> spec 添加 serviceAccountName: config-reader
下面贴出 deployment.yml 文件内容:

如此依赖 启动的 pod 内 springboot项目就能获取到configmap 的配置文件了。

以上是关于springboot2.X使用k8s的configmap的主要内容,如果未能解决你的问题,请参考以下文章

springboot2.x集成dubbo (支持不同group不同注册中心)

SpringBoot2.x 给Controller的RequestMapping添加统一前缀

springboot2.x+dubbo2.x+seata1.x AT+nacos+zk实现分布式事务

springboot2.x+dubbo2.x+seata1.x AT+nacos+zk实现分布式事务

SpringBoot2.X最佳实践《一》 之 SpringBoot2.x初体验

springboot2.x版本整合redis(单机/集群)(使用lettuce)