当前位置: 首页 > article >正文

解释k8s种ConfigMap和Secret的作用,如何在Pod中挂载环境变

一、ConfigMap & Secret 核心定位

属于Kubernetes的配置管理特性,用于解耦应用与配置

1. ConfigMap

作用:存储非敏感配置数据
存储内容

  • 环境变量
  • 命令行参数
  • 配置文件(如JSON/XML/YAML)
  • 系统参数(如JVM参数)
2. Secret

作用:存储敏感信息
存储内容

  • 数据库凭证
  • API密钥
  • TLS证书
  • SSH密钥
对比特性
特性ConfigMapSecret
数据加密明文存储Base64编码
适用场景非敏感配置凭证/密钥
存储限制1MB1MB
自动更新支持(需配置)支持(需配置)

二、Pod挂载方式

1. 环境变量注入
apiVersion: v1
kind: Pod
metadata:name: myapp-pod
spec:containers:- name: appimage: myapp:v1env:- name: DB_HOSTvalueFrom:configMapKeyRef:name: db-configkey: host- name: DB_PASSWORDvalueFrom:secretKeyRef:name: db-secretkey: password
2. 文件卷挂载
apiVersion: v1
kind: Pod
metadata:name: myapp-pod
spec:containers:- name: appimage: myapp:v1volumeMounts:- name: config-volumemountPath: /etc/app/config- name: secret-volumemountPath: /etc/app/secretvolumes:- name: config-volumeconfigMap:name: app-config- name: secret-volumesecret:secretName: app-secret

三、最佳实践

  1. 敏感数据必用Secret:即使Base64不是加密,也比明文安全
  2. 热更新策略
    • 环境变量方式:修改后需重建Pod
    • 文件卷方式:kubelet定期同步更新(默认1分钟间隔)
  3. 配置分离:按环境(dev/test/prod)创建不同ConfigMap
  4. 权限控制:通过RBAC限制Secret访问权限

四、创建配置示例

创建ConfigMap:

kubectl create configmap app-config \--from-literal=DB_HOST=mysql-service \--from-literal=CACHE_ENABLED=true

创建Secret:

# 从文件创建
kubectl create secret generic db-credentials \--from-file=./ssl.cert \--from-literal=password='S!B\#d3z'# 专门类型Secret
kubectl create secret tls https-cert \--cert=path/to/cert.crt \--key=path/to/cert.key

上述配置实现了什么功能?开发时如何创建对应的ConfigMap和Secret?

apiVersion: apps/v1
kind: Deployment
spec:template:spec:containers:- name: appenvFrom:        # 环境变量注入方式- configMapRef: # 加载 ConfigMap 所有键值作为环境变量name: app-config- secretRef:    # 加载 Secret 所有键值作为环境变量name: db-credentials
http://www.lryc.cn/news/2392161.html

相关文章:

  • 阿里云国际版香港轻量云服务器:CN2 GIA加持,征服海外网络的“速度与激情”!
  • Qt6无法识别OpenCV(Windows端开发)
  • 二、网络安全常见编码及算法-(2)
  • Windows系统安装MySQL Connector 使用C++ VS2022连接MySQL
  • D2000平台上Centos使用mmap函数遇到的陷阱
  • Elasticsearch索引机制与Lucene段合并策略深度解析
  • BPE、WordPiece 与 Unigram:三种主流子词分词算法对比
  • 青少年编程与数学 02-020 C#程序设计基础 11课题、可视化编程
  • AI时代新词-AI驱动的自动化(AI - Driven Automation)
  • 整合Jdk17+Spring Boot3.2+Elasticsearch9.0+mybatis3.5.12的简单用法
  • Starrocks 物化视图的实现以及在刷新期间能否读数据
  • 前后端传输 Long 类型数据时(时间戳,雪花算法ID),精度丢失的根本原因
  • 探索容器技术:Docker与Kubernetes的实践指南
  • Ubuntu从0到1搭建监控平台:本地部署到公网访问实战教程Cpolar穿透与Docker部署全过程
  • vscode java debug terminal 中文乱码
  • 3D PDF如何制作?SOLIDWORKS MBD模板定制技巧
  • Qt DateTimeEdit(时间⽇期的微调框)
  • C# 类和继承(屏蔽基类的成员)
  • 基于qt5和stk10开发的互联调试
  • matlab雷达定位仿真
  • 基于vue框架的动物园饲养管理系统a7s60(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • MySQL 索引和事务
  • BERT分类器和朴素贝叶斯分类器比较
  • WPS自动换行
  • C#面向对象核心:类继承详解
  • maven中的grpc编译插件protobuf-maven-plugin详解
  • 服务发现Nacos
  • 社群分享:义乌|杭州电商|店群卖家,私域鱼塘运营的排单系统开源|私域鱼塘运营|返款软件开源
  • C#回调函数深度解析
  • 通义智文开源QwenLong-L1: 迈向长上下文大推理模型的强化学习