configmapsecrets基本操作
一,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基本操作相关推荐
- 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)
我们先来看一个关于查找的例子.查找,就是从复杂的数据结构中,找到满足某个条件的元素.通常可从以下两个方面来对数据进行查找操作: 根据元素的位置或索引来查找: 根据元素的数值特征来查找. 针对上述两种 ...
- pytorch方法,Tensor及其基本操作_重点
由于之前的草稿都没了,现在只有重写-. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...
- Gradle安装使用以及基本操作
转自:https://www.cnblogs.com/linkstar/p/7899191.html Gradle安装使用以及基本操作 阅读目录 简单介绍 安装 使用idea创建一个web的Gradl ...
- c++文件读取空格_程序员术与道:术—C语言对文件进行处理,文件处理的基本操作...
各种编程语言都实现了文件的基本操作,提供了对应的接口,本篇文章先为你介绍C语言对文件进行处理和文件处理的基本操作.主要从以下几个方面进行介绍: 读取文件 写入文件 重命名文件 读取目录 读取目录下的文 ...
- 【Pandas库】(3) DataFrame的创建方法及基本操作
各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...
- 【MySQL】缩略语PK NN UQ BIN UN ZF AI G、基本操作语句
一.缩略语 PK:primary key 主键 NN:not null 非空 UQ:unique 唯一索引 BIN:binary 二进制数据 UN:unsigned 无符号整数(非负数) ZF:zer ...
- MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...
### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...
- OpenCV-Java版学习(3.对视频的基本操作)
前言 上一节我们学习了使用OpenCV对图像进行一些基础操作,现在我们学习对视频进行一些基础的操作. 对视频的基本操作 从相机中读取视频 我们从电脑自带的摄像头捕捉一段视频并在屏幕上显示出来,代码如下 ...
- JDBC编程:2(数据库的基本操作)
数据库的基本操作 查询数据 在开始前先简单地介绍一下什么是静态SQL和动态SQL: 静态SQL,在编译阶段就可以确定数据库要做什么事情.在某种高级语言中,如果嵌入了SQL语句,而这个SQL语句的主体结 ...
- c语言栈的实现以及操作_数据结构之链栈基本操作的实现详解(C语言描述)
迎新过后,来带领你好好学习的小软准时归来,快带着上次学习链表操作的记忆和我开启新的旅程吧: 链栈:就是栈的链式存储结构,简称链栈. 首先我们要考虑的就是链栈的存储结构,由于栈只是在栈顶进行插入和删除操 ...
最新文章
- VRRP和单臂路由的综合运用
- NSTimer 增加引用计数, 导致内存泄露,
- mysql的api框架_API接口幂等性框架设计
- Spring Cloud 2020.0.5 发布
- 网络抓包工具wireshark and tcpdump 及其实现基于的libpcap
- list可以存放python中任意类型的数据_Python中常见的数据类型小结
- vue --- [全家桶] Vuex
- oracle 审计变换表空间_Oracle 审计表AUD$迁移表空间及创建清理job
- fw300r虚拟服务器设置,迅捷(FAST)FW300R无线路由器怎么设置
- linux发行版_看一看2020年最漂亮的Linux发行版
- 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
- (每日一练c++)CC114 有效的数独
- python 拆分excel单元格_Python Excel 单元格 拆分并填充内容,功能和的wps类似
- java与es8实战之四:SpringBoot应用中操作es8(无安全检查)
- mysql 充值表设计_如何设计充值消费的数据表
- shell接受键盘输入参数
- 浙江科技学院计算机专业录取分数线,浙江科技学院2015年艺术类专业录取分数线...
- 阿里最全面试100题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案
- apt update和apt upgrade命令 - 有什么区别?
- React 入门实例 参考阮一峰博客
热门文章
- 游戏排行榜实现mysql_游戏中百万用户排行设计与实现
- Arduino与Proteus仿真实例-MAX7219驱动8位7段数码管仿真
- aip pytesseract识别图片中的文字
- AR与VR的区别在哪?
- java面向对象题目_经典面向对象题,用Java做,要详细点的。
- 关于苹果ID用哪些邮箱注册比较好安全?
- java excel 密码_用java实现对EXCEL加打开密码的方法?
- Linux之奇怪的知识---supervisor超级守护进程的意义和使用方法
- spotlight搜索失效_如何在iPhone和iPad上自定义Spotlight搜索
- Winedit 10的使用方法,网上修改注册表的已经不管用了。