首页 > 编程知识 正文

微服务12要素中的config配置(轻量云服务器怎么用)

时间:2023-05-03 11:55:03 阅读:84866 作者:1963

回复“资源”接收自己整理的学习资料!

所有成功者的背后,一定都有勇敢孤独的决定。

放弃并不难,但是坚持下来很帅~

k8s:v1.13.5版

一、背景

中,需要镜像才能将spring boot项目部署到k8s,并且必须取消配置文件与镜像的合并才能使配置文件可配置。

以前,作为spring boot项目的配置中心,使用的是k8s部署的spring云配置服务器组件。 在项目中导入spring-cloud-starter-config依存关系,配置配置服务器的内部域名即可。

但是,一个痛点是,由于config服务器不稳定,其他的pod APP有时会重新启动,所以想使用其他的方案。 那是k8s的配置图。

二、K8s ConfigMap

配置图顾名思义,是用于保存配置数据的键-值对,可以保存各个属性,也可以保存配置文件。

如以下代码所示,metadata.name是configMap的名称,namespace是一个范围,必须与要使用的pod范围匹配。 如果不匹配,pod将不会发生,因为找不到配置图。

以下是configMap的内容。 data有两个项目: TENANTID和应用程序- test.yml。 然后,将其放置在deploy中,并在运行pod时生效。

kind :配置图

API版本: v1

元数据:

name : spring-boot -演示配置图

美国航空:公共

标签:

app :弹簧-引导-演示-应用程序

data:

TENANTID: '0000 '

APP-test.yml :|-

spring:

APP 3:

name :弹簧-引导-示范

谈谈关于k8s配置图的指令:

创建配置图。 yaml文件的内容如标题2所示。

kubectlapply-f spring-boot -演示-配置图. YAML

# #获取指定范围下的configmap列表

kube CTL获取配置图- n公共

编辑配置图

ubectleditconfigmap-npublicspring-boot -演示配置图

删除配置图

bectldeleteconfigmap-npublicspring-boot -演示配置图

我想让

三、将 ConfigMap 的某些数据挂载为文件

pod容器的spring boot项目读取上面的configmap的application-test.yml的内容,这个怎么办?

综上所述,在创建configMap后,我们选择将application-test.yml的内容装载到pod上,使spring boot项目可读取,从而达到了目的。

通常,使用configmap挂载文件时,先复盖挂载目录,然后将congfigmap的内容作为文件挂载进行。 如果不想复盖原始文件夹下的文件,只需要将configmap中的每个密钥像文件一样挂载在目录下,就可以使用mountPath subpath参数。

以下是部署代码的一部分。

spec:

模板:

spec:

卷3:

-名称:连接

配置图:

name : spring-boot -演示配置图#指定要使用的配置图名称

容器:

-名称: spring-boot -演示-应用程序

卷装:

- name: conf #与上面的volumes.name一致

装载路径:/spring-boot -演示/连接/应用程序-测试. yml

subpath :应用程序-测试. yml

只读3:真

如果子路径与装载路径一起使用,则为、

application-test.yml 为文件名,即 pod 容器中只生成了 /spring-boot-demo/conf/ 目录,目录之下为文件,会挂载出一个名为 application-test.yml 的文件(subPath 筛选只挂载 application-test.yml 文件),设置 readOnly 为 true ,表示只读。

四、将 ConfigMap 的某些数据配置成环境变量

针对多租户等场景,我们可能就需要用到环境变量了。那么如何将 ConfigMap 的某些数据配置成环境变量呢?

以下是 deployment 里面的部分代码:

spec: template: spec: volumes: - name: conf configMap: name: spring-boot-demo-configmap # 指定要使用的configmap名称 containers: - name: spring-boot-demo-app env: - name: TENANT # 传入pod中的变量名 valueFrom: configMapKeyRef: name: data-center-management-configmap key: TENANTID # configmap中的key

通过 valueFrom.configMapKeyRef 可以指定使用哪个 configmap 的 哪个 key 来当做环境变量传入 pod 容器中,这样,spring boot 项目可以直接通过 ${TENANT} 使用。

五、小结

本文介绍了两种使用 configMap 的方法:

将 configMap 作为一种环境变量

将 configMap 挂载为文件

按照这样总结下来,configMap 还挺好用。相对来说,k8s 的 configMap 要比 k8s 部署的 spring cloud configserver 稳定得多。configMap 可以直接将配置内容挂载成文件到你的 pod 容器中,供 spring boot 项目加载使用。

但也有不方便的地方,那就是没有实现热加载。即:如果修改 configMap 后,需要重启服务才会使新配置生效。不过在生产环境上也没事,我们可以将服务调整为双副本嘛。

如果各位小伙伴们,也正在挑选容器云服务的配置中心的话,不妨试试 k8s 的 configmap,或者有更好的方案,也可以在评论中和我们分享一下。

有什么想法你就说

(内部资料)Ambari 自定义服务第八讲:添加自定义告警

天呐,你生产环境中的密码还在裸奔吗?

入群指南(大数据实战演练群分布情况)

如何优雅地使用 java 连接 HBase 客户端

扫一扫,我们的故事就开始了。

另外公众号改变了推送规则,大家看文章不要忘记点击最下方的在看,点赞按钮,这样微信自动识别为常看公众号,否则很可能推送的文章可能淹没在别的文章找不到,谢谢大家

让我知道你在看

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。