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

Kubernetes那点事儿——配置存储:ConfigMap、Secret

配置存储:ConfigMap、Secret

  • 前言
  • ConfigMap
  • Secret


前言

前面介绍过的各种存储主要都是做数据的持久化,本节介绍的ConfigMap和Secret主要用于配置文件存储,或者环境变量的配置。

ConfigMap

创建ConfigMap后,数据实际会存储在K8s中(Etcd)Etcd,然后通过创建Pod时引用该数据。

应用场景:应用程序配置

Pod使用configmap数据有两种方式:

  • 变量注入
  • 数据卷挂载
# cat configmap.yamlapiVersion: v1
kind: ConfigMap
metadata:name: configmap-demo
data:# 类属性键;每一个键都映射到一个简单的值abcd: "1234"cdef: "5678"# 类文件键redis.properties: |port: 6379host: 192.168.31.10#configmap pod引用#
apiVersion: v1
kind: Pod
metadata:name: configmap-demo-pod
spec:containers:- name: configmap-podimage: nginxenv:- name: ABCD # pod中环境变量 - echo $ABCDvalueFrom:configMapKeyRef:name: configmap-demo # 与configmap.name一致key: abcd # 取值的key- name: CDEF # pod中环境变量 - echo $CDEFvalueFrom:configMapKeyRef:name: configmap-demo # 与configmap.name一致key: cdef # 取值的keyvolumeMounts:- name: configmountPath: "/config"readOnly: truevolumes:- name: configconfigMap:name: configmap-demo # 与configmap.name一致# 来自 ConfigMap 的一组键,将被创建为文件items:- key: "redis.properties" # 对用configmap的key名称path: "redis.properties" # 文件名字,/config/redis.properties
# kubectl apply -f configmap.yaml
configmap/configmap-demo created# kubectl get configmap
NAME             DATA   AGE
configmap-demo   3      5s# kubectl apply -f configmap-pod.yaml 
pod/configmap-demo-pod configured# kubectl exec -it configmap-demo-pod -- bash 
root@configmap-demo-pod:/# ls /config
redis.properties
root@configmap-demo-pod:/# echo $ABCD
1234
root@configmap-demo-pod:/# echo $CDEF
5678
root@configmap-demo-pod:/# cat /config/redis.properties 
port: 6379
host: 192.168.31.10

这里使用了两种挂载方式,环境变量和配置文件。

被挂载的 ConfigMap 内容会被自动更新当卷中使用的 ConfigMap 被更新时,所投射的键最终也会被更新。
Kubelet 组件会在每次周期性同步时检查所挂载的 ConfigMap 是否为最新。Kubelet 使用的是其本地的高速缓存来获得 ConfigMap 的当前值。高速缓存的类型可以通过 KubeletConfiguration 结构,ConfigMapAndSecretChangeDetectionStrategy 字段来配置。

Secret

与ConfigMap类似,区别在于Secret主要存储敏感数据,所有的数据要经过base64编码。
应用场景:凭据

kubectl create secret 支持三种数据类型:

  • docker-registry:存储镜像仓库认证信息
  • generic:从文件、目录或者字符串创建,例如存储用户名密码
  • tls:存储证书,例如HTTPS证书
# echo -n 'admin' | base64
YWRtaW4=# echo -n '1f2d1e2e67df' | base64
MWYyZDFlMmU2N2Rm
# cat secret.yamlapiVersion: v1
kind: Secret
metadata:name: db-user-pass
type: Opaque
data:username: YWRtaW4=password: MWYyZDFlMmU2N2Rm# cat secret-pod.yamlapiVersion: v1
kind: Pod
metadata:name: secret-demo-pod
spec:containers:- name: secret-demoimage: nginxenv:- name: USERvalueFrom:secretKeyRef:name: db-user-passkey: username- name: PASSvalueFrom:secretKeyRef:name: db-user-passkey: passwordvolumeMounts:- name: configmountPath: "/config"readOnly: truevolumes:- name: configsecret:secretName: db-user-passitems:- key: usernamepath: my-dbusername
# kubectl exec -it secret-demo-pod  -- bashroot@secret-demo-pod:/# echo $USER $PASS
admin 1f2d1e2e67df
root@secret-demo-pod:/# cat /config/my-dbusername
admin

这里也是使用了两种挂载方式,一种是环境变量,一种是作为文件挂载

http://www.lryc.cn/news/276999.html

相关文章:

  • 小白向:搭建企业培训APP的完整技术指南
  • CVE-2023-36025 Windows SmartScreen 安全功能绕过漏洞
  • 分析一个项目(微信小程序篇)二
  • 每日论文推送(有中文摘或源码地址或项目地址)
  • 【漏洞复现】锐捷EG易网关login.php命令注入漏洞
  • Nginx安装http2和ssl模块
  • Android 8.1 隐藏设置中定位功能
  • 无线网卡怎么连接台式电脑?正确操作步骤分享!
  • 聚道云软件连接器助力某贸易公司实现付款流程自动化
  • 第六讲_css盒子模式
  • 【WSL】Win10 使用 WSL2 进行 Linux GPU 开发
  • 什么是博若莱新酒节?
  • Centos7下升级gcc/g++版本(简单 + 避坑)
  • PyTorch项目源码学习(1)
  • adb 使用的出现 adb server is out of date. killing
  • 数据结构之二叉搜索树(Binary Search Tree)
  • Spring Boot自定义启动Banner在线生成工具
  • Android Studio导入项目 下载gradle很慢或连接超时,提示:Read timed out---解决方法建议收藏!
  • 汽车标定技术(十五)--FETK如何帮助Aurix实现快速原型、标定测量功能(1)
  • linux项目部署(jdk,tomcat,mysql,nginx,redis)
  • Unity | 渡鸦避难所-6 | 有限状态机控制角色行为逻辑
  • 数据库参数 PGA_AGGREGATE_LIMIT 限制进程大小
  • 208.【2023年华为OD机试真题(C卷)】停车场车辆统计(贪心算法实现-JavaPythonC++JS实现)
  • JS 作用域和预解析
  • 各种锁的概述
  • 【docker笔记】Docker容器数据卷
  • 大前端nestjs入门教程系列(四):如何nestjs整合mysql数据库
  • Android studio环境配置
  • 017、使用包、单元包及模块来管理日渐复杂的项目
  • Git提交规范详解