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

【kubernetes】k8s配置资源管理

一、ConfigMap资源配置

ConfigMap保存的是不需要加密配置的信息

ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象。
应用场景:应用配置

创建 ConfigMap

方法1:

只要指定为一个文件就可以从单个文件中创建 ConfigMap
--from-file 这个参数可以使用多次,即可以使用两次分别指定上个实例中的那两个配置文件

--from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容
kubectl create cm demo1-cm --from-file=demo/

方法2:

使用文字值创建,利用 --from-literal 参数传递配置信息
kubectl create cm kv-cm --from-literal=myname=kukun --from-literal=mylove=hobby

 Pod 中使用 ConfigMap 

作为数据卷挂载使用
vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo-podname: demo-pod
spec:volumes:- name: cm-vol       #定义存储卷名称configMap:        name: demo-cm    #指定cm资源名称containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}volumeMounts:      #指定挂载容器信息- name: cm-volmountPath: /mntdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

 

作为环境变量引用使用
vim demo2-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo2-podname: demo2-pod
spec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}env:               #指定环境变量- name: MYNAME  value: liangzai- name: MYCLASS valueFrom:         #变量值从什么地方而来configMapKeyRef:name: kv-cmkey: myclassdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

补充:

kubectl create cm web-cm --from-file=./vim demo4-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo4-podname: demo4-pod
spec:volumes:- name: web-volconfigMap:name: web-cmcontainers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}volumeMounts:- name: web-volmountPath: /usr/share/nginx/htmldnsPolicy: ClusterFirstrestartPolicy: Always
status: {}kubectl apply -f demo4-pod.yaml 

 更新内容
kubectl edit cm web-cm   修改其中的chen.html为tc通过数据卷挂载使用的支持热更新

注:环境变量引用的方式使用configmap在线修改内容不会进行更新

挂载时如何不覆盖原本目录的内容进行挂载?

(此种方法也不支持热更新)

二、Secret

作用:存储密钥信息资源

Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。

Secret 有四种类型: 
●kubernetes.io/service-account-token:由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /var/run/secrets/kubernetes.io/serviceaccount 目录中;
●Opaque :base64 编码格式的 Secret,用来存储用户自定义的密码、密钥等,默认的 Secret 类型;
●kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息。
●kubernetes.io/tls :用来存储 TLS 证书和私钥信息。

Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret:
●作为挂载到一个或多个容器上的卷 中的文件。
●作为容器的环境变量。
●由 kubelet 在为 Pod 拉取镜像时使用

Opaque的创建、使用

kubectl create -n xy101 secret generic liliang-cecret --from-file=./username.txt --from-file=./password.txt
kubectl create secret -n xy101 generic li-secret --from-file=demo/
kubectl create -n xy101 secret generic scj-secret --from-literal=myname=scj --from-literal=myclass=xy101

挂载方式引用Opaque

 vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:labels:run: demo1-podname: demo1-podnamespace: xy101
spec:volumes:- name: secret-volsecret:secretName: liliang-cecretcontainers:- image: nginxname: myappports:- containerPort: 80resources: {}volumeMounts:- name: secret-volmountPath: /mntdnsPolicy: ClusterFirstrestartPolicy: Always

环境变量方式引用

vim demo2-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo2-podname: demo2-podnamespace: xy101
spec:containers:- image: nginxname: myappports:- containerPort: 80resources: {}env:- name: MYSCHOOLvalueFrom:secretKeyRef:name: scj-secretkey: mynameenvFrom:- secretRef:name: scj-secretdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

总结:

configMap资源(简称cm)  

作用:    

用于保存配置文件、环境变量等不需要加密的信息。它可以实现将配置信息与应用程序镜像解耦

创建cm资源

kubectl create cm <资源名称>  -n <命名空间>  --from-file=文件|目录   --from-liternal=<键名>=<键值>

查看cm资源

kubectl describe -n <命名空间>  cm  <资源名称>
kubectl get -n <命名空间>  cm  <资源名称> -o yaml

注:保存的文件名会作为 cm 资源数据的 键名,文件内容会作为 cm 资源数据的键值

使用cm资源

1、作为存储卷挂载的方式:
在Pod资源配置中用spec.volumes字段设置configMap类型的卷
在容器配置中用volumeMounts字段将卷挂载到容器的指定目录,cm资源数据的键名会作为文件名、键值会作为文件内容生成在容器的挂载点目录中(支持热更新)
在容器配置中用volumeMounts.subPath字段指定文件名,实现将卷挂载到容器中的指定文件上(不支持热更新)

2、作为容器环境变量的方式:(不支持热更新)
在容器配置中用env.name指定自定义容器的环境变量名,用env.valueFrom.configMapKeyRef.name|key字段指定环境变量的值从哪个cm资源的键获取
在容器配置中用envFrom.configMapRef.name字段指定cm资源的名称,使得cm资源数据的键名和键值直接作为容器的环境变量名和

 

secret资源

 作用:

用户保存密码文件、tls证书/私钥文件、token令牌字符串、镜像私有仓库认证信息等需要加密的敏感信息

secret的4种类型:

Opaque:默认的secret资源类型,可以通过选项引用文件、目录、键值对的方式创建secret资源,并且资源数据的键值会被自动转换为base64编码格式
kubernetes.io/service-account-token:当创建serviceaccount账户资源后K8S会自动创建同名的此类型secret资源,用于Pod访问apiserver时会使用此secret中的token做认证
kubernetes.io/dockerconfigjson:用于存储K8S从harbor等镜像私有仓库拉取镜像时做认证的信息
kubernetes.io/tls:用于存储tls证书和私钥文件的信息

创建secret资源

kubectl create secret generic <资源名称>  -n <命名空间>  --from-file=文件|目录   --from-liternal=<键名>=<键值>

kubectl create secret docker-registry <资源名称> -n <命名空间> --docker-server=<镜像私钥仓库URL地址> --docker-username=<仓库用户名> --docker-password=<用户密码> --docker-email=<邮箱地址>

kubectl create secret tls <资源名称> -n <命名空间>  --cert=<证书文件路径>  --key=<私钥文件路径>

查看secret资源

kubectl describe -n <命名空间>  secret  <资源名称>
kubectl get -n <命名空间>  secret  <资源名称> -o yaml

注:数据的键值会以base64编码格式加密显示

使用secret资源

作为存储卷挂载的方式:
在Pod资源配置中用spec.volumes字段设置secret类型的卷
在容器配置中用volumeMounts字段将卷挂载到容器的指定目录,secret资源数据的键名会作为文件名、键值会作为文件内容生成在容器的挂载点目录中

作为容器环境变量的方式:
在容器配置中用env.name指定自定义容器的环境变量名,用env.valueFrom.secretKeyRef.name|key字段指定环境变量的值从哪个secret资源的键获取
在容器配置中用envFrom.secretRef.name字段指定secret资源的名称,使得secret资源数据的键名和键值直接作为容器的环境变量名和值

Pod配置从镜像私钥仓库拉取镜像:
在Pod资源配置中用spec.imagePullSecrets.name字段指定kubernetes.io/dockerconfigjson类型secret资源名称

 

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

相关文章:

  • 高分六号卫星助力农业监测_卫星介绍_论文分享_数据获取
  • 【Linux网络】TCP协议
  • Linux 基本指令讲解 上
  • 深入了解指针(6)
  • 【Linux系列】known_hosts详解
  • MySQL4 多表查询 内连接
  • 力扣45:跳跃游戏2题解
  • 产品经理-产品被同行抄袭如何处理(32)
  • LDR6020在Type-C手机同时充电与USB2.0数据传输方案
  • Python学习笔记(七)
  • mysql中log
  • iOS Object-C 创建类别(Category) 与使用
  • Rocky系统部署k8s1.28.2单节点集群(Containerd)+Kuboard
  • Springboot整合Flowable入门-学习笔记
  • C语言常见的题目
  • Android13适配记录
  • Android TV上OTT PWA应用开发的播放器选择:video.js vs exoplayer
  • 24.8.14 《CLR via C#》 笔记12
  • P2801 教主的魔法
  • Go 语言channel的应用场景及使用技巧
  • QLabel设置图像的方法+绘制文本换行显示
  • LVS原理及相关配置
  • webrtc一对一视频通话功能实现
  • 通道(channel)传递数据的例子写一个
  • Vue3+Echarts+饼图环形图
  • Python while编程题目|AI悦创Python一对一教学辅导
  • C语言 | Leetcode C语言题解之第324题摆动排序II
  • Docker③_VMware虚拟机和Docker的备份与恢复
  • 【EMC专题】ESD抑制器简要介绍
  • 贷齐乐系统最新版SQL注入(绕过WAF可union select跨表查询)