使用 ConfigMaps 可以优化 Spring Boot应用

devtools/2025/3/16 23:43:01/

基本概念

ConfigMaps:Kubernetes 中的一种资源对象,用于存储非敏感的配置数据,如应用程序属性、环境变量等。

 主要优势

简化部署:无需在容器镜像中嵌入配置,减少镜像大小,加快部署速度。

动态更新:无需重新部署应用程序,即可实时修改配置。

增强安全性:安全存储敏感信息,如数据库凭证、API 密钥等。

提高可维护性:将配置与代码分离,使代码更清晰,便于维护和理解。

 

使用方法

1.创建 ConfigMap

    命令行方式:使用 `kubectl create configmap` 命令,通过 `--from-file`、`--from-env-file` 或 `--from-literal` 参数创建。

    YAML 文件方式:编写 YAML 文件定义 ConfigMap,使用 `kubectl apply -f` 命令创建。

 

2. 将 ConfigMaps 注入 Spring Boot 应用程序

    作为环境变量:在 Kubernetes 部署 YAML 中,通过 `env` 字段引用 ConfigMap 的键,将配置注入为环境变量。Spring Boot 会自动加载环境变量中的配置。

    作为卷挂载:将 ConfigMap 挂载为数据卷,使容器可以访问配置文件。在 Spring Boot 中,通过指定配置文件路径读取配置。

 

3. 示例

    环境变量方式

      ConfigMap YAML:

        yaml

        apiVersion: v1

        kind: ConfigMap

        metadata:

          name: app-config

        data:

          DB_URL: "jdbc:mysql://localhost:3306/mydb"

          DB_USER: "myuser"

          DB_PASSWORD: "mypassword"

        

      部署 YAML:

        yaml

        apiVersion: apps/v1

        kind: Deployment

        metadata:

          name: myapp

        spec:

          template:

            spec:

              containers:

              - name: myapp

                image: myapp-image

                env:

                - name: DB_URL

                  valueFrom:

                    configMapKeyRef:

                      name: app-config

                      key: DB_URL

                - name: DB_USER

                  valueFrom:

                    configMapKeyRef:

                      name: app-config

                      key: DB_USER

                - name: DB_PASSWORD

                  valueFrom:

                    configMapKeyRef:

                      name: app-config

                      key: DB_PASSWORD

        

    卷挂载方式

      ConfigMap YAML:

        yaml

        apiVersion: v1

        kind: ConfigMap

        metadata:

          name: app-config

        data:

          application.properties: |

            spring.datasource.url=jdbc:mysql://localhost:3306/mydb

            spring.datasource.username=myuser

            spring.datasource.password=mypassword

        

      部署 YAML:

        yaml

        apiVersion: apps/v1

        kind: Deployment

        metadata:

          name: myapp

        spec:

          template:

            spec:

              containers:

              - name: myapp

                image: myapp-image

                volumeMounts:

                - name: config-volume

                  mountPath: /app/config

              volumes:

              - name: config-volume

                configMap:

                  name: app-config

 

注意事项

命名空间:ConfigMap 属于命名空间级别,需确保在正确的命名空间下创建和使用。

热重载:修改 ConfigMap 后,应用程序可能需要重新加载配置,可通过实现热重载机制或重启容器生效。

安全性:避免在 ConfigMap 中存储敏感信息,可使用 Kubernetes Secrets 存储密码、密钥等敏感数据。

 

合理使用 ConfigMaps,可以优化 Spring Boot 应用程序在 Kubernetes 中的配置管理,提升应用的灵活性、可维护性和安全性。


http://www.ppmy.cn/devtools/167670.html

相关文章

如何在AVL树中高效插入并保持平衡:一步步掌握旋转与平衡因子 —— 平衡因子以及AVL结构篇

文章目录 AVL树的概念AVL树的结构AVL树的插入平衡因子更新终止条件插入以及平衡因子的保持AVL树的查找 AVL树的概念 AVL树(Adelson-Velsky and Landis Tree)是一种自平衡二叉查找树,它的特点是每个节点的左子树和右子树的高度差不能超过1。这…

grunt构建工具:scss转css

Grunt 是一个基于 JavaScript 的任务运行工具,通常用于自动化重复性任务,例如代码编译、文件压缩、单元测试等。它通过配置文件 Gruntfile.js 来定义任务和插件。 完整项目地址:https://github.com/ylpxzx/grunt-scss-to-css 以下是 Grunt 的…

爬虫基础之爬取豆瓣同城信息(保存为csv excel 数据库)

网站:长沙最近一周戏剧活动_豆瓣 温馨提示: 本案例仅供学习交流使用 本案例所使用的模块 requests(发送HTTP请求)pandas(数据保存模块)lxml(用于解析数据模块)csv(用于保存为csv文件)pymysql(用于操作数据库)parsel(解析数据的模块) 确定爬取的信息内容: 戏剧的名称…

贪心算法(6)(java)优势洗牌

题目: 给定两个长度相等的数组nums1和nums2,nums1相对于nums2的优势可以满足nums1【1】>nums[2]的索引的数目来描述。 返回nums1的任意排列,使其相对于nums2的透视最大化呀。 原理(贪心策略):田忌赛马 1.如果比不…

数据类设计_图片类设计之6_混合图形类设计(前端架构)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇,讨论混合图形类设计 方法论-现在能做什么 这段属于聊天内容---有句话是这么说的:不要只埋头拉车,还要抬头看路。写代码也是…

蓝桥杯_LED模块

一 前言 还有四十多天将要进行蓝桥杯的比赛,接下来一个多月我将进行我的知识点的复习,争取在蓝桥杯提交一个满意的答卷 二 锁存器M74HC753M1R 在我这一年并没有进行在csdn上发布任何文章,这一年我学了stm32、51,还有部分理论知…

css梯形tab

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Tab 示例</…

【go】函数类型的作用

Go 语言函数类型的巧妙应用 函数类型在 Go 语言中非常强大&#xff0c;允许将函数作为值进行传递和操作。下面详细介绍函数类型的各种妙用&#xff1a; 1. 回调函数 // 定义一个函数类型 type Callback func(int) int// 接受回调函数的函数 func processData(data []int, ca…