一,configmap简介:

ConfigMap是一种API对象,用来将非加密数据保存到键值对中,如etcd中。

可以用作环境变量、命令行参数或者存储卷中的配置文件。

ConfigMap可以将 环境变量 配置信息和容器镜像解耦,便于应用配置的修改。

如果需要存储加密信息时可以使用Secret对象。

1,configmap的创建:

[root@k8s-master configmap]# kubectl create configmap --help
查看帮助如何创建 configmap常用两种创建方式:

(1.1)第一种:基于文件的方式进行创建,–from-file:指明文件名称,名称为键,文件内容为值。也可以指明多个文件。

语法: kubectl create configmap my-config --from-file=path/to/bar

示例:基于向nginx注入配置文件。

[root@k8s-master configmap]# cat www.conf    创建一个nginx配置文件。
server {server_name myapp.shuo.com;listen 80;root /data/web/html/;
}
[root@k8s-master configmap]# kubectl create configmap nginx-www --from-file=www.conf 创建一个configmap名称为nginx-www,键为www.conf,值为文件内容。
configmap/nginx-www created[root@k8s-master configmap]# kubectl get cm    查看configmap
NAME               DATA   AGE
kube-root-ca.crt   1      43d
nginx-www          1      10s
[root@k8s-master configmap]#
[root@k8s-master configmap]# kubectl describe cm nginx-www       查看创建的configmap详细信息。
Name:         nginx-www
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
www.conf:        键
----
server {server_name myapp.shuo.com;listen 80;                       root /data/web/html/;
}Events:  <none>创建一个pod,使用configmap类型挂载卷
[root@k8s-master configmap]# vim pod-configmap-3.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-cm-3namespace: defaultlabels:app: myapptier: frontendannotations:mingyuanyun/create: "yanss"
spec:containers:- name: myappimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80volumeMounts:- name: nginxconfmountPath: /etc/nginx/conf.d/ 挂载到这个nginx资源路径下,为nginx提供资源。readOnly: true      不允许pod容器对配置文件修改volumes: - name: nginxconfconfigMap:name: nginx-www[root@k8s-master configmap]# kubectl apply -f pod-configmap-3.yaml
pod/pod-cm-3 created
[root@k8s-master configmap]# kubectl get pods -o wide
NAME          READY   STATUS    RESTARTS   AGE     IP            NODE        NOMINATED NODE   READINESS GATES
pod-cm-3      1/1     Running   0          9m47s   10.244.1.11   k8s-node1   <none>           <none>[root@k8s-master configmap]# kubectl exec -it pod-cm-3 -- /bin/sh
/ # cd /etc/nginx/conf.d/
/etc/nginx/conf.d # ls           可以看到我们创建的confimap,nginx-www中的键。
www.conf
/etc/nginx/conf.d # cat www.conf
server {server_name myapp.shuo.com;listen 80;root /data/web/html/;
}/etc/nginx/conf.d #
/etc/nginx/conf.d # nginx -T              查看nginx加载的配置文件。
# configuration file /etc/nginx/conf.d/www.conf:
server {server_name myapp.shuo.com;listen 80;root /data/web/html/;
}/etc/nginx/conf.d # mkdir -p /data/web/html                   构建nginx资源访问路径。
/etc/nginx/conf.d # vi /data/web/html/index.html
/etc/nginx/conf.d #
/etc/nginx/conf.d # cat /data/web/html/index.html
weclome nginx验证测试: node1上访问,如果想要通过域名访问,那么需要修改node1上hosts文件
[root@k8s-node1 ~]# curl 10.244.1.11
weclome nginx修改configmap  nginx-www中监听的端口号,看看nginx配置文件会不会生效
因为我们通过存储卷挂载的方式进行同步,时间有点慢。
[root@k8s-master configmap]# kubectl edit cm nginx-www      修改configmap文件中监听端口为8080
configmap/nginx-www edited
[root@k8s-master configmap]# kubectl exec -it pod-cm-3 -- /bin/sh
/data/web/html # cd /etc/nginx/conf.d/
/etc/nginx/conf.d # ls
www.conf
/etc/nginx/conf.d # cat www.conf
server {server_name myapp.shuo.com;listen 8080;root /data/web/html/;
}

(1.2)基于键值对进行创建configmap

语法:kubectl create configmap my-config --from-literal=key1=config1
–from-literal=key2=config2

示例:向pod中注入环境变量

[root@k8s-master ~]# kubectl create configmap nginx-config --from-literal=nginx_port=80 --from-literal=server_name=Yan.com.cn
configmap/nginx-config created
[root@k8s-master ~]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      43d
nginx-config       2      6s[root@k8s-master ~]# kubectl describe cm nginx-config
Name:         nginx-config
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
nginx_port:              定义的键
----
80                             键的值
server_name:
----
Yan.com.cn
Events:  <none>[root@k8s-master configmap]# cat pod-configmap.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-demonamespace: defaultlabels:app: myapptier: frontendannotations: mingyuanyun/create: "yanss"
spec:containers:- name: myappimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80- name: httpscontainerPort: 443env:- name: NGINX_SERVER_PORT              定义变量名称valueFrom:                值的来源configMapKeyRef:             name: nginx-config      configmap的名称key: nginx_port             configmap中的键- name: NGINX_SERVER_NAMEvalueFrom:configMapKeyRef:name: nginx-configkey: server_name[root@k8s-master configmap]# kubectl apply -f pod-configmap.yaml
pod/pod-cm-1 created
[root@k8s-master configmap]# kubectl get pods
NAME          READY   STATUS    RESTARTS   AGE
pod-cm-1      1/1     Running   0          9s
[root@k8s-master configmap]# kubectl exec -it pod-cm-1 -- /bin/sh     进入pod查看变量。
NGINX_SERVER_PORT=80
NGINX_SERVER_NAME=Yan.com.cn2,通过存储卷的方式加载,这是键为文件名,内容为值。
[root@k8s-master configmap]# kubectl exec -it pod-cm-1 -- /bin/sh     进入pod查看变量。
NGINX_SERVER_PORT=80
NGINX_SERVER_NAME=Yan.com.cn[root@k8s-master configmap]# vim pod-configmap-2.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-cm-2namespace: defaultlabels:app: myapptier: frontendannotations:mingyuanyun/create: "yanss"
spec:containers:- name: myappimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80volumeMounts:- name: nginxconfmountPath: /etc/nginx/config.d/readOnly: true              不允许pod容器对配置文件修改volumes:- name: nginxconfconfigMap:name: nginx-config[root@k8s-master configmap]# kubectl apply -f pod-configmap-2.yaml
pod/pod-cm-2 created
[root@k8s-master configmap]# kubectl get pods
NAME          READY   STATUS    RESTARTS   AGE
pod-cm-2      1/1     Running   0          7s
[root@k8s-master configmap]# kubectl exec -it pod-cm-2 -- /bin/sh
/ # ls
bin    etc    lib    mnt    root   sbin   sys    usr
dev    home   media  proc   run    srv    tmp    var
/ # cd /etc/nginx/conf
conf.d/    config.d/
/ # cd /etc/nginx/config.d/
/etc/nginx/config.d # ls
nginx_port   server_name
/etc/nginx/config.d # cat nginx_port
/etc/nginx/config.d # cat nginx_port
/etc/nginx/config.d # cat server_name
Yan.com.cn/etc/nginx/config.d #

secrets:不同于confimap在于加密存储数据,不是明文存储。

三中类型:
docker-registry 创建一个给 Docker registry 使用的 secret       这个类型是存储登录私有仓库需要认证的账号密码
generic         从本地 file, directory 或者 literal value 创建一个 secret,例如存储Mysql账号和密码。
tls             创建一个 TLS secret          这个类型是存储相关认证秘钥的secret。保存的是私钥和证书[root@k8s-master configmap]# kubectl create secret generic mysql-root-password --from-literal=password=Myp@ss123   创建一个通用类型的secret,键为password,值为密码。
secret/mysql-root-password created
[root@k8s-master configmap]# kubectl get secret
NAME                  TYPE                                  DATA   AGE
default-token-2rtnx   kubernetes.io/service-account-token   3      48d
mysql-root-password   Opaque                                1      14s[root@k8s-master configmap]# kubectl describe secret mysql-root-password    查看值是加密的。
Name:         mysql-root-password
Namespace:    default
Labels:       <none>
Annotations:  <none>Type:  OpaqueData
====
password:  9 bytes
[root@k8s-master configmap]# [root@k8s-master configmap]# kubectl get secret mysql-root-password -o yaml
apiVersion: v1
data:password: TXlwQHNzMTIz
kind: Secret
metadata:creationTimestamp: "2022-07-26T08:57:25Z"name: mysql-root-passwordnamespace: defaultresourceVersion: "5523531"uid: 24b481cc-55e5-423e-9026-7fd30fefd8fc
type: Opaque
[root@k8s-master configmap]# echo TXlwQHNzMTIz | base64 -d               通过base64解码可以查看密码
Myp@ss123[root@k8s-master configmap]#

总结:configmap和secret基本操作完成,区别在于一个明文存储一个加密存储数据。

configmapsecrets基本操作相关推荐

  1. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)

    我们先来看一个关于查找的例子.查找,就是从复杂的数据结构中,找到满足某个条件的元素.通常可从以下两个方面来对数据进行查找操作:​ 根据元素的位置或索引来查找: 根据元素的数值特征来查找. 针对上述两种 ...

  2. pytorch方法,Tensor及其基本操作_重点

    由于之前的草稿都没了,现在只有重写-. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...

  3. Gradle安装使用以及基本操作

    转自:https://www.cnblogs.com/linkstar/p/7899191.html Gradle安装使用以及基本操作 阅读目录 简单介绍 安装 使用idea创建一个web的Gradl ...

  4. c++文件读取空格_程序员术与道:术—C语言对文件进行处理,文件处理的基本操作...

    各种编程语言都实现了文件的基本操作,提供了对应的接口,本篇文章先为你介绍C语言对文件进行处理和文件处理的基本操作.主要从以下几个方面进行介绍: 读取文件 写入文件 重命名文件 读取目录 读取目录下的文 ...

  5. 【Pandas库】(3) DataFrame的创建方法及基本操作

    各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...

  6. 【MySQL】缩略语PK NN UQ BIN UN ZF AI G、基本操作语句

    一.缩略语 PK:primary key 主键 NN:not null 非空 UQ:unique 唯一索引 BIN:binary 二进制数据 UN:unsigned 无符号整数(非负数) ZF:zer ...

  7. MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...

    ### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...

  8. OpenCV-Java版学习(3.对视频的基本操作)

    前言 上一节我们学习了使用OpenCV对图像进行一些基础操作,现在我们学习对视频进行一些基础的操作. 对视频的基本操作 从相机中读取视频 我们从电脑自带的摄像头捕捉一段视频并在屏幕上显示出来,代码如下 ...

  9. JDBC编程:2(数据库的基本操作)

    数据库的基本操作 查询数据 在开始前先简单地介绍一下什么是静态SQL和动态SQL: 静态SQL,在编译阶段就可以确定数据库要做什么事情.在某种高级语言中,如果嵌入了SQL语句,而这个SQL语句的主体结 ...

  10. c语言栈的实现以及操作_数据结构之链栈基本操作的实现详解(C语言描述)

    迎新过后,来带领你好好学习的小软准时归来,快带着上次学习链表操作的记忆和我开启新的旅程吧: 链栈:就是栈的链式存储结构,简称链栈. 首先我们要考虑的就是链栈的存储结构,由于栈只是在栈顶进行插入和删除操 ...

最新文章

  1. VRRP和单臂路由的综合运用
  2. NSTimer 增加引用计数, 导致内存泄露,
  3. mysql的api框架_API接口幂等性框架设计
  4. Spring Cloud 2020.0.5 发布
  5. 网络抓包工具wireshark and tcpdump 及其实现基于的libpcap
  6. list可以存放python中任意类型的数据_Python中常见的数据类型小结
  7. vue --- [全家桶] Vuex
  8. oracle 审计变换表空间_Oracle 审计表AUD$迁移表空间及创建清理job
  9. fw300r虚拟服务器设置,迅捷(FAST)FW300R无线路由器怎么设置
  10. linux发行版_看一看2020年最漂亮的Linux发行版
  11. 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
  12. (每日一练c++)CC114 有效的数独
  13. python 拆分excel单元格_Python Excel 单元格 拆分并填充内容,功能和的wps类似
  14. java与es8实战之四:SpringBoot应用中操作es8(无安全检查)
  15. mysql 充值表设计_如何设计充值消费的数据表
  16. shell接受键盘输入参数
  17. 浙江科技学院计算机专业录取分数线,浙江科技学院2015年艺术类专业录取分数线...
  18. 阿里最全面试100题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案
  19. apt update和apt upgrade命令 - 有什么区别?
  20. React 入门实例 参考阮一峰博客

热门文章

  1. 游戏排行榜实现mysql_游戏中百万用户排行设计与实现
  2. Arduino与Proteus仿真实例-MAX7219驱动8位7段数码管仿真
  3. aip pytesseract识别图片中的文字
  4. AR与VR的区别在哪?
  5. java面向对象题目_经典面向对象题,用Java做,要详细点的。
  6. 关于苹果ID用哪些邮箱注册比较好安全?
  7. java excel 密码_用java实现对EXCEL加打开密码的方法?
  8. Linux之奇怪的知识---supervisor超级守护进程的意义和使用方法
  9. spotlight搜索失效_如何在iPhone和iPad上自定义Spotlight搜索
  10. Winedit 10的使用方法,网上修改注册表的已经不管用了。