k8s的配置资源管理

Secret

Secret用来保存密码、token密钥以及一些敏感的k8s资源。这类数据虽然可以存放在镜像当中,但是放在secret当中可以更方便控制。减少暴露的风险。

Secret的作用:保存加密的信息

Secret的类型

docker-registry()主要用于存储docker仓库的认证信息,以及docker组件认证信息。(私有)

generic(jienairuike)是Secret的默认模式。类型是Qpaque。是base64加密编码的secret。用于用户自定义的密码、密钥等等。

tls表示TLS/SSL,用于存储证书和密钥、存储https证书和密钥队

系统自建的:kubernetes.io/service-account-token来访问系统的apiserver。pod会默认使用kubernetes.io/service-account-token创建的secret和apiserver进行通信。自动挂载到pod的/run/serect/kubernetes.io/service-account

如何创建secret?

1、指定文件提取信息

陈述式的创建方式:

#创建命令
kubectl create secret generic mysecret --from-file=/opt/xiao.txt --from-file=/opt/xiaobu.txt#查看有哪些secret文件
kubectl get secrets
NAME                                 TYPE                                  DATA   AGE
default-token-sgjrp                  kubernetes.io/service-account-token   3      18d
mysecret                             Opaque                                2      11s
nfs-client-provisioner-token-rlg96   kubernetes.io/service-account-token   3      20h#查看指定secret的详细信息
kubectl describe secrets mysecret
Name:         mysecret
Namespace:    default
Labels:       <none>
Annotations:  <none>Type:  OpaqueData
====
xiao.txt:    4 bytes
xiaobu.txt:  4 bytes#以base64的加密方式生成文件内部数据
echo xiaobu.txt | base64
echo xiao.txt | base64

陈述式需要指定资源创建

默认类型的加密方式:Opaque加密类型

声明式的创建方式:

apiVersion: v1
kind: Secret
metadata:name: mysecret1
type:Opaque
data:xiaobu: eGlhb2J1LnR4dAo=xiao: eGlhby50eHQK

data内保存的是加密的内容

pod如何来引用Secret?

1、 挂载方式。将secret挂载到pod当中的一个或者多个容器上的卷里面。

2、 把secret作为容器的环境变量

3、 docker-registry可以作为集群拉取镜像时使用。使用secret可以实现免密登录。

挂载的方式来实现

实验举例:

apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: secretsmountPath: "/etc/secret"readOnly: falsevolumes:- name: secretssecret:secretName: mysecret
#将创建好的mysecret加密内容和容器内的指定目录进行挂载执行命令
kubectl apply -f sercet.yaml
进入容器
kubectl exec -it mypod bash
查看挂载目录
root@mypod:/# cd /etc/secret/
root@mypod:/etc/secret# ls
xiao.txt  xiaobu.txt
root@mypod:/etc/secret# cat xiao.txt
123
root@mypod:/etc/secret# cat xiaobu.txt 
456

保存内容是加密内容,容器内部可以解密直接引用。

把secret作为容器的环境变量

[root@master01 opt]# echo 小布 | base64
5bCP5biDCg==
[root@master01 opt]# echo 小凯 | base64
5bCP5YevCg==创建secretapiVersion: v1
kind: Secret
metadata:name: mysecret1
type:Opaque
data:xiaobu: 5bCP5biDCg==xiaokai: 5bCP5YevCg==创建pod
apiVersion: v1
kind: Pod
metadata:name: mypod1
spec:containers:- name: nginximage: nginx:1.22env:- name: USERvalueFrom:secretKeyRef:name:  mysecret1key: xiaobu- name: USER1valueFrom:secretKeyRef:name: mysecret1key: xiaokai
#我给nginx1.22这个容器里面传两个环境变量,这两个变量的值从secret来,分别是两条mysecret1的加密信息进入容器查看
root@mypod1:/# env              
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=mypod1
PWD=/
PKG_RELEASE=1~bullseye
HOME=/root
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
USER1=小凯NJS_VERSION=0.7.11
TERM=xterm
USER=小布SHLVL=1
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.22.1
_=/usr/bin/env

docker-registry

kubectl create secret docker-registry myharbor --docker-server=20.0.0.73 --docker-username=admin --docker-password=123456apiVersion: v1
kind: Pod
metadata:name: mypod2
spec:containers:- name: nginx1image: hub.test.com/library/nginx:v1imagePullSecrets:- name: myharbornodeName: node02kubectl get pod
NAME                              READY   STATUS    RESTARTS   AGE
mypod                             1/1     Running   0          83m
mypod1                            1/1     Running   0          73m
mypod2                            1/1     Running   0          39s
nfs-provisioner-cbbfd74c8-5tr7r   1/1     Running   0          22h
nginx1-68c5d494c9-9zwhd           1/1     Running   0          103m
nginx1-68c5d494c9-bbbds           1/1     Running   0          103m
nginx1-68c5d494c9-mg8ms           1/1     Running   0          103m

secret三种方式:

陈述式创建

声明式

引用方式:

挂载使用

设定环境变量

docker-registry

ConfigMap

保存的是不需要加密的信息。configmap是1.2引用的功能,应用程序会配置文件,命令参数。以及环境变量中读取信息。

通过configmap在创建容器时,给他注入我们需要的配置信息。既可以是单个的属性也可也是整个文件的配置文件。

陈述式

kubectl create configmap person --from-file=/opt/configmap/xiaobu.txt --from-file=/opt/configmap/xiaokai.txtubectl describe cm person 
Name:         person
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
xiaobu.txt:
----
xiaobu=....
xiaokai=gaoxiaokai.txt:
----
xiao=bu
xiao=kaiEvents:  <none>

指定文件创建,可以是一个,也可以是多个。

kubectl create configmap person1 --from-literal=xiaobu=bu --from-literal=xiaokai=kai[root@master01 opt]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      18d
person             2      2m28s
person1            2      6s

声明式

apiVersion: v1
kind: ConfigMap
metadata:name: person
data:xiaobu: buxiaokai: kai
#configmap是键值对形式kubectl describe cm person 
Name:         person
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
xiaobu:
----
bu
xiaokai:
----
kai
Events:  <none>

引用方式

apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: nginximage: nginx:1.22env:- name: USER1valueFrom:configMapKeyRef:name: personkey: xiaobu- name: USER2valueFrom:configMapKeyRef:name: personkey: xiaokaikubectl get pod
NAME                              READY   STATUS    RESTARTS   AGE
mypod                             1/1     Running   0          6s
nfs-provisioner-cbbfd74c8-5tr7r   1/1     Running   0          22h进入容器查看
root@mypod:/# env
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=mypod
PWD=/
PKG_RELEASE=1~bullseye
HOME=/root
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
USER1=bu
USER2=kai
NJS_VERSION=0.7.11
TERM=xterm
SHLVL=1
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.22.1
_=/usr/bin/env

挂载的方式

数据卷使用comfigmap

准备一个nginx.conf的配置文件
worker_processes  2;
events {worker_connections  1024;
}
http {default_type application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       8081;server_name  localhost;charset utf-8;location / {root   html;index  index.html index.htm;error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}
}kubectl create configmap nginx-con --from-file=/opt/configmap/nginx.conf创建yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx1labels:app: nginx1
spec:replicas: 3selector:matchLabels:app: nginx1template:metadata:labels:app: nginx1spec:containers:- name: nginx1image: nginx:1.22ports:- containerPort: 8081volumeMounts:- name: nginx-configmountPath: /etc/nginx/- name: nginx-mountmountPath: /usr/share/nginx/htmlvolumes:- name: nginx-configconfigMap:name: nginx-con- name: nginx-mounthostPath:path: /opt/htmltype: DirectoryOrCreate访问不了,出现404,可能是访问页面路径不对
修改访问路径之后
kubectl patch deployment nginx1 --patch '{"spec": {"template":{"metadata": {"annotations": {"version/config": "20240116"}}}}}'curl 10.244.0.42:8081
123

热更新的特点:

1、 通过数据卷的形式将配置文件传给pod内的容器

2、 在pod运行的情况下对configmap的配置信息进行修改。直接生效反应到容器当中。

热更新pod不会重启。如果有pod有副本都会一并更改。

3、 configmap的热更新不会触发pod的滚动更新机制。

version/config触发滚动更新机制

kubectal patch deployment nginx1 --path '{"spec": {"template":{"metadata": {"annotations": {"version/config": "20240116"}}}}}'

通过命令触发pod滚动更新,将pod重新拉起,将修改过的configmap重新传递给pod内重新拉起的容器。

secret:主要作用是保存加密文件。使用的方式就是挂载方式。

configMap:把配置信息传递给容器。主要使用方式也是挂载。

configMap的热更新:热更新可以直接反应到容器的内部。也不会触发pod的更新机制。如果不是需要重启的配置。都可以直接生效。

可以通过version/config的方式来触发滚动更新机制

需要重启的,可以重启pod

更新:就是把配置信息重新传递到容器内。重启也是一样的。

在工作中configMap就是将配置信息传递给容器。通过键值对形式保存的非加密信息。

secret和configMap的区别

secret是加密的信息。

configMap是非加密信息。可以传递配置信息给容器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后台生成随机验证码验证登录

web get请求获取图片 <div class"p2"><img id"imgId" src"/get/code"><a href"#">看不清&#xff0c;换一张</a> </div> 后台代码: /*获取动态验证码*/ ResponseBody RequestMapping(value "/…

【MATLAB源码-第113期】基于matlab的孔雀优化算法(POA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 POA&#xff08;孔雀优化算法&#xff09;是一种基于孔雀羽毛开屏行为启发的优化算法。这种算法模仿孔雀通过展开其色彩斑斓的尾羽来吸引雌性的自然行为。在算法中&#xff0c;每个孔雀代表一个潜在的解决方案&#xff0c;而…

人工智能专业必须需要考哪些证书呢?

我们来看看2024年人工智能专业的企业和个人都在紧张报考的两项AI认证证书报考&#xff1a; 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求&#xff0c;深入实施人才强国战略和创新驱…

程序员的职业生涯

程序员的职业生涯一般会经历以下几个阶段&#xff1a; 初级阶段&#xff1a;在这个阶段&#xff0c;程序员通常刚从大学毕业&#xff0c;或者只拥有很少的工作经验。他们开始学习如何编写代码&#xff0c;理解编程语言和开发工具&#xff0c;并熟悉软件开发流程。这个阶段的程…

Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)

专栏系列&#xff1a;Django学习教程 前言 highchart&#xff0c;国外。 echarts&#xff0c;国内。 本项目集成 hightchart和echarts图表库实现数据统计功能。 包括&#xff1a;折线图&#xff0c;柱状图&#xff0c;饼图和数据集图。 效果图 echats Highcharts 源代码…

java 判断中文英文正则表达式 排除 除了中文以外的特殊字符,排除除了英文以外的特殊字符

boolean containsChinese Pattern.matches(".*[\\u4e00-\\u9fa5].*", names);//containsChinese&#xff1a; true 包含中文就直接把其他特殊字符英文去掉if (containsChinese) {names names.replaceAll("[^\\u4E00-\\u9FA5]", "");//使用正则…

odoo17 | 编码规范大全

编码规范 本页介绍Odoo编码指南。这些旨在改善 Odoo应用程序代码的质量。事实上&#xff0c;适当的代码可以提高可读性&#xff0c;简化 维护&#xff0c;帮助调试&#xff0c;降低复杂性并提高可靠性。 这些准则应适用于每个新模块和所有新开发。 警告 在稳定版本中修改现有…

程序员如何保持竞争力

在程序员的职业生涯中&#xff0c;保持竞争力是非常重要的&#xff0c;因为技术行业不断发展和变化。以下是一些建议&#xff0c;可以帮助程序员保持竞争力&#xff1a; 持续学习新技术和编程语言&#xff1a;技术行业的发展非常快&#xff0c;新的编程语言和技术不断涌现。作为…

易点易动设备管理系统:提升企业设备能耗管理效率的不二之选

在当前环保意识日益增强的社会背景下&#xff0c;企业对设备能耗管理的重视程度不断提升。有效的能耗管理不仅可以减少企业的能源消耗和环境污染&#xff0c;还能降低生产成本和提升竞争力。为了帮助企业实现高效的设备能耗管理&#xff0c;易点易动设备管理系统应运而生。本文…

高级分布式系统-第15讲 分布式机器学习--概念与学习框架

高级分布式系统汇总&#xff1a;高级分布式系统目录汇总-CSDN博客 分布式机器学习的概念 人工智能蓬勃发展的原因&#xff1a;“大” 大数据&#xff1a;为人工智能技术的发展奠定了坚实的物质基础。 大规模机器学习模型&#xff1a;具备超强的表达能力&#xff0c;可以解决…

通过IDE和jar包运行时加载json配置文件

程序中使用了json配置文件&#xff0c;位置在$rootPath/src/main/resources/config.json, 调试时使用IDE&#xff0c;但运行时使用Jar包&#xff0c;加载config.json配置文件的代码如下&#xff1a; public ConfigParser(String configFileName) throws IOException {try{Inp…

安全运维:cmd命令大全(108个)

1、calc&#xff1a;启动计算器 2、appwiz.cpl&#xff1a;程序和功能 3、certmgr.msc&#xff1a;证书管理实用程序 4、charmap&#xff1a;启动字符映射表 5、chkdsk.exe&#xff1a;Chkdsk磁盘检查(管理员身份运行命令提示符) 6、cleanmgr: 打开磁盘清理工具 7、clico…

中国丙烯酸酯橡胶行业研究与投资预测报告(2024版)

内容简介&#xff1a; 丙烯酸弹性体&#xff08;Acrylic elastomer&#xff09;是含有丙烯酸烷基酯成分的丙烯酸类合成橡胶&#xff0c;按照ASTM D1418&#xff0c;丙烯酸弹性体有两种类型&#xff0c;丙烯酸酯橡胶和乙烯-丙烯酸酯弹性体&#xff0c;在它们之后又有乙烯-乙酸乙…

Go语言干货系列:错误处理的最佳实践与技巧

今天&#xff0c;我们就要一同探索在Go语言中&#xff0c;如何优雅地处理错误。 1. Go的错误处理思路 Go语言采用了一种简单而独特的错误处理机制。它鼓励明确地检查错误&#xff0c;而不是依赖异常机制。 基本规则&#xff1a; 函数通常会返回一个值和一个错误对象。 如果…

O2066PM无线WIFI6E网卡Windows环境吞吐测试

从2023年开始&#xff0c;除手机外的无线终端设备也逐步向WIFI6/6E进行升级更新&#xff0c;基于802.11ax技术的设备能够进一步满足用户体验新一代Wi-Fi标准时获得优质的性能和覆盖范围。 用户对于WIFI模块&#xff0c;通常会关注WIFI模块的吞吐量&#xff0c;拿到样品之后&am…

Access数据库模糊查询

Access数据库模糊查询的方法 1.使通配符: 在 Access 数据库中&#xff0c;有两种通配符可供使用&#xff0c;分别是"?"和"*"。 "?"表示匹配一个字符。 "*"表示匹配任意多个字符 1例如&#xff1a;如果要查询姓氏以"王"开…

基于DNA的密码学和隐写术综述

摘要 本文全面调研了不同的脱氧核糖核酸(DNA)-基于密码学和隐写术技术。基于DNA的密码学是一个新兴领域,利用DNA分子的大规模并行性和巨大的存储容量来编码和解码信息。近年来,由于其相对传统密码学方法的潜在优势,如高存储容量、低错误率和对环境因素的抗性,该领域引起…

Linux例行性工作 at和crontab命令

1&#xff0c;例行性工作 例行性工作 —— 在某一时刻&#xff0c;必须要做的事情 —— 定时任务 &#xff08;比如&#xff1a;闹钟&#xff09; 例行性工作分为两种&#xff1a;“单一的例行性工作 at”和“循环的例行性工作 crontab” 2&#xff0c;单一执行的例行性工作 …

【PostgreSQL】数据查询-组合查询(UNION,INTERSECT,EXCEPT)

PostgreSQL数据查询-组合查询&#xff08;UNION,INTERSECT,EXCEPT&#xff09; PostgreSQL可以使用集合运算并集、交集和差值来组合两个查询的结果。语法是 query1 UNION [ALL] query2 query1 INTERSECT [ALL] query2 query1 EXCEPT [ALL] query2其中 query1 和 query2 是可以…

使用WAF防御网络上的隐蔽威胁之命令注入攻击

命令注入攻击是网络安全领域的一种严重威胁&#xff0c;它允许攻击者在易受攻击的应用程序上执行恶意命令。 这种攻击通常发生在应用程序将用户输入错误地处理为操作系统命令的情况下。 什么是命令注入攻击 定义&#xff1a;命令注入攻击发生在攻击者能够在易受攻击的应用程…