配置资源管理

Secret

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

三种类型:

  1. kubernetes.io/service-account-token:由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中;

  2. Opaque :base64 编码格式的 Secret,用来存储用户自定义的密码、密钥等,默认的 Secret 类型;
  3. kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息。

Pod 需要先引用才能使用某个 secret,

Pod 有 3 种方式来使用 secret:

  1. 作为挂载到一个或多个容器上的卷 中的文件。
  2. 作为容器的环境变量。
  3. 由 kubelet 在为 Pod 拉取镜像时使用。

应用场景:凭据
 

https://kubernetes.io/docs/concepts/configuration/secret/
 

实例

1、用kubectl create secret命令创建Secret
 

[root@master01 opt]# echo -n 'zhangsan' > username.txt
[root@master01 opt]# echo -n 'abc123' > password.txt

kubectl create secret generic mysecret --from-file=username.txt --from-file=password.txt

查看

kubectl get secrets

kubectl describe secret mysecret

用于获取关于名为 mysecret 的 Secret 对象的详细描述信息

kubectl describe secret mysecret

get或describe指令都不会展示secret的实际内容,这是出于对数据的保护的考虑
 

2、内容用 base64 编码,创建Secret

echo -n zhangsan | base64
emhhbmdzYW4K=echo -n abc1234 | base64
YWJjMTIzNAo==

vim secret.yaml
apiVersion: v1
kind: Secret
metadata:name: mysecret1namespace: default
type: Opaque
data:username: emhhbmdzYW4=password: YWJjMTIz

kubectl edit secrets mysecret1 

使用方式为挂载

1、将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下
 

vim secret-test.yaml
apiVersion: v1
kind: Pod
metadata:name: mypodlabels:run: myapp-pod
spec:containers:- image: nginxname: nginxports:- containerPort: 80volumeMounts:- name: mysecretsmountPath: /etc/secretsreadOnly: truevolumes:- name: mysecretssecret:secretName: mysecret

kubectl exec -it mypod bash

将 Secret 导出到环境变量中

apiVersion: v1
kind: Pod
metadata:labels:run: mypod1name: mypod1
spec:containers:- image: nginxname: mypod1env:- name: TEST_USERvalueFrom:secretKeyRef:name: mysecret1key: username- name: TEST_PASSWORDvalueFrom:secretKeyRef:name: mysecret1key: password

创建完成 

ConfigMap

概述:

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

应用场景:应用配置

创建 ConfigMap

1、使用目录创建
 

vim /opt/configmap/game.properties
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30vim /opt/configmap/ui.properties
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNicels /opt/configmap/
game.properties
ui.properties

kubectl create configmap game-config --from-file=/opt/configmap/

kubectl get cm

 查看文件详细信息·

2、使用文件创建 
 

只要指定为一个文件就可以从单个文件中创建 ConfigMap
--from-file 这个参数可以使用多次,即可以使用两次分别指定上个实例中的那两个配置文件,效果就跟指定整个目录是一样的
kubectl create configmap game-config-2 --from-file=/opt/configmap/game.properties --from-file=/opt/configmap/ui.properties

kubectl get configmaps game-config-2 -o yaml

kubectl describe cm game-config-2

3、使用字面值创建 
使用文字值创建,利用 --from-literal 参数传递配置信息,该参数可以使用多次,格式如下
 

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=good

 

kubectl get configmaps special-config -o yaml

获取名为"special-config"的ConfigMap资源的详细信息,并以YAML格式进行输出。ConfigMap是Kubernetes中用于存储配置数据的一种资源对象。该命令将返回特定ConfigMap的配置信息,包括键值对和其他元数据。

kubectl delete cm --all删除所有的ConfigMap资源。ConfigMap是Kubernetes中用于存储配置数据的一种资源对象。使用这个命令将会删除集群中的所有ConfigMap,包括它们的键值对和其他元数据。请谨慎使用该命令,确保你真正需要删除所有的ConfigMap。kubectl delete pod --all
删除所有的Pod资源。Pod是Kubernetes中最小的可部署单元,用于运行容器化应用程序。使用该命令将会删除集群中的所有Pod,包括它们的镜像、配置和其他相关资源。请谨慎使用该命令,确保你真正需要删除所有的Pod,并且已经备份了必要的数据。

Pod 中使用 ConfigMap 

1、使用 ConfigMap 来替代环境变量
 

apiVersion: v1
kind: ConfigMap
metadata:name: special-confignamespace: default
data:special.how: veryspecial.type: good
---
apiVersion: v1
kind: ConfigMap
metadata:name: env-confignamespace: default
data:log_level: INFOkubectl create -f env.yaml 

创建

kubectl get cm

Pod的创建

vim test-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod
spec:containers:- name: busyboximage: busybox:1.28.4command: [ "/bin/sh", "-c", "env" ]env:- name: SPECIAL_HOW_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.how- name: SPECIAL_TYPE_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.typeenvFrom:- configMapRef:name: env-configrestartPolicy: Never

创建完成

kubectl create -f test-pod.yaml

kubectl logs pod-test

2、用 ConfigMap 设置命令行参数 
 

vim test-pod2.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod2
spec:containers:- name: busyboximage: busybox:1.28.4command: - /bin/sh- -c- echo "$(SPECIAL_HOW_KEY) $(SPECIAL_TYPE_KEY)"env:- name: SPECIAL_HOW_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.how- name: SPECIAL_TYPE_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.typeenvFrom:- configMapRef:name: env-configrestartPolicy: Neverkubectl create -f test-pod2.yaml

 创建完成

kubectl logs test-pod2

3、通过数据卷插件使用ConfigMap 
 

在数据卷里面使用 ConfigMap,就是将文件填入数据卷,在这个文件中,键就是文件名,键值就是文件内容
 

vim test-pod3.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod3
spec:containers:- name: busyboximage: busybox:1.28.4command: [ "/bin/sh", "-c", "sleep 36000" ]volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: special-configrestartPolicy: Neverkubectl create -f test-pod3.yaml 

 创建完成

kubectl get pods

 

kubectl exec -it test-pod3 sh

ConfigMap 的热更新 

vim test-pod4.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: log-confignamespace: default
data:log_level: INFO
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: my-nginx
spec:replicas: 1template:metadata:labels:run: my-nginxspec:containers:- name: my-nginximage: nginxports:- containerPort: 80volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: log-configkubectl apply -f test-pod5.yaml

kubectl get pods kubectl exec -it my-nginx-76b6489f44-6dwxh -- cat /etc/config/log_level
kubectl edit configmap log-config
apiVersion: v1
data:log_level: DEBUG		#INFO 修改成 DEBUG
kind: ConfigMap
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"v1","data":{"log_level":"DEBUG"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"log-config","namespace":"default"}}			#INFO 修改成 DEBUGcreationTimestamp: 2021-05-25T07:59:18Zname: log-confignamespace: defaultresourceVersion: "93616"selfLink: /api/v1/namespaces/default/configmaps/log-configuid: 1b8115de-bd2f-11eb-acba-000c29d88bba

等大概10秒左右,使用该 ConfigMap 挂载的 Volume 中的数据同步更新 

kubectl exec -it my-nginx-76b6489f44-6dwxh -- cat /etc/config/log_level

ConfigMap 更新后滚动更新 Pod

更新 ConfigMap 目前并不会触发相关 Pod 的滚动更新,可以通过在 .spec.template.metadata.annotations 中添加 version/config ,每次通过修改 version/config 来触发滚动更新
kubectl patch deployment my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20210525" }}}}}'
kubectl get pods 
kubectl get pods 

更新 ConfigMap 后:

使用该 ConfigMap 挂载的 Env 不会同步更新。
●使用该 ConfigMap 挂载的 Volume 中的数据需要一段时间(实测大概10秒)才能同步更新。

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

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

相关文章

kubeadm安装k8s高可用集群

目录 一、环境规划: 二、注意事项: 三、环境准备: 1. 关闭防火墙规则,关闭selinux,关闭swap交换: 2. 修改主机名: 3. 有节点修改hosts文件: 4. 所有节点时间同步: 5. 所…

【星海出品】flask (二) request替代VUE测试flask接口

flask 是一门使用 python 编写的后端框架。 VUE前端UI装饰推荐学习Element组件库 之后就不使用UI去测试flask了,环节太多,影响直观反映,直接使用postman或request测试更加直观. url携带参数 app.route(/my/blog/<blog_id>)def blog_detail(blog_id): # put applicatio…

c++ 中 const 和static

1. static 首先使用static的主要目的是控制存储周期&#xff0c; 链接性 和可见性 可以作为 1. 局部变量 2.类成员 3. 全局变量和函数 2. const const 关键字用于声明一个变量为常量&#xff0c; 一旦初始化之后&#xff0c;它的值就不会被改变 。 2.1 常量表达式 声明为c…

CF1781F Bracket Insertion(2700*) 题解(括号匹配DP)

题目 题面 简要题意&#xff1a; 你需要执行一下步骤 n n n 次来构建括号序列&#xff1a; ⋅ \cdot ⋅ 等概率选择一个空位&#xff08;若当前有 k k k 个字符&#xff0c;则有 k 1 k 1 k1 个空位&#xff09;。 ⋅ \cdot ⋅ 以 p p p 的概率插入字符…

2023.10月考试战报|华为认证HCIP考试100%通过

相关文章&#xff1a; 考试战报|2023.7月-8月思科认证、华为认证-CSDN博客 2023.4月及5月最新HCIP 考试战报来袭_厦门微思网络的博客-CSDN博客 HCIP 3-4月考试战报_厦门微思网络的博客-CSDN博客 2023年HCIP/CCNP考试战报_厦门微思网络的博客-CSDN博客 2023年10月&#xff0…

卸载QQ后聊天记录怎么恢复?这3个有效方法送给大家!

近年来&#xff0c;微信崛起&#xff0c;已经逐渐占据了人们的日常生活&#xff0c;成为大家不可或缺的东西。这也导致了如今使用QQ的用户变得越来越少。如果用户使用QQ的频率比较低&#xff0c;那么他们可能会选择卸载QQ以此来节省手机空间。 一旦将QQ卸载&#xff0c;这意味…

集合贴3——智能客服系统

基础课17——智能客服系统-CSDN博客文章浏览阅读56次。近年来&#xff0c;实体客服机器人开始出现在银行办公厅、电信商务厅等场合&#xff0c;形成了网络智能客服、电话智能客服、实体客服机器人综合智能客服系统&#xff0c;这初步形成了一种新的产业形式。https://blog.csdn…

电汇ABC(2023-10)

目录 基本表单费用承担方式汇款人姓名(拼音)汇款人地址收款人姓名收款人账号收款人地址(及国家/地区)收款行SWIFT 代码收款行名称、地址申报信息 相关汇款时效汇出审核关于汇往境外他人账户 费用钞转汇 其他其他方式个人购汇额度美元现钞存取额度破损美元境内外币转账美元 OR 港…

强化您的应用安全,从app加固开始

强化您的应用安全&#xff0c;从app加固开始 目录 强化您的应用安全&#xff0c;从app加固开始 摘要 引言 1. 加密和数据保护 2. 代码混淆 3. 防止反编译 4. 安全测试 5. 更新和补丁 6. 权限控制 7. 输入验证和输出过滤 8. 日志记录和监控 9. 安全设计和架构 10.…

Python 函数定义详解(More on Defining Functions)- 默认参数/位置参数/关键字参数

1.函数的定义和调用方法 1.1函数定义方法 """def 关键字用来定义一个函数。function_name 是函数名&#xff0c;应遵循命名规范。parameter1, parameter2, ... 是函数的参数列表&#xff0c;可以是任意数量和类型的参数。函数体是用缩进&#xff08;通常为4个…

Cesium 相机设置

1.setView 直接跳转到目的地 // 设置相机位置 const position Cesium.Cartesian3.fromDegrees(113, 31, 20000); // setView通过定义相机目的地&#xff08;方向&#xff09;,直接跳转到目的地 viewer.camera.setView({ destination: position, // 位置设置 orientation: { //…

基于SSM的二手车交易网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

华为开源carbondata中的使用问题处理

carbondata中的使用问题处理 Q&#xff1a;什么是不良记录&#xff1f; A&#xff1a;由于数据类型不兼容而无法加载到CarbonData中的记录或为空或具有不兼容格式的记录被归类为不良记录。 Q&#xff1a;CarbonData中的不良记录存储在哪里&#xff1f; A&#xff1a;不良记录…

代码随想录day2

目录 vscode 自定义代码模板Reference vscode 自定义代码模板 select User snippets from Settings on the bottom left corner. select a certain language for example: cpp create your own snippets 格式如下&#xff0c;防着写 第一行"cpp template",模板…

【Web安全】CORS跨域资源共享漏洞

文章目录 前言一、漏洞概述二、漏洞原理三、CORS响应头类型四、漏洞挖掘五、修复建议前言 本篇文章主要介绍CORS跨域漏洞产生的原理,漏洞复现过程,挖掘手段以及如何进行修复,文章难免会有失误,烦请留下宝贵建议,谢谢! 一、漏洞概述 跨域资源共享(CORS)是一种浏览器机制…

Git 入门使用 —— 建库、代码上下传、常用命令

目录 一、Git 入门 1.1 Git简介 1.2 Git安装 1.3 创建码云仓库 二、Git 使用 2.1 git初始化操作 2.2 代码上传 2.3 代码下载 2.4 代码更新 2.4.1 仓库管理者 2.4.1 仓库使用者 三、Git 常用命令 一、Git 入门 1.1 Git简介 Git是一个开源的分布式版本控制系统&am…

app自动化测试——capability 配置参数解析

一、Capability 简介 功能&#xff1a;配置 Appium 会话&#xff0c;告诉 Appium 服务器需要自动化的平台的应用程序 形式&#xff1a;键值对的集合&#xff0c;键对应设置的名称&#xff0c;值对应设置的值 主要分为三部分 公共部分 ios 部分 android 部分 二、Session Appi…

muduo源码剖析之InetAddress

InetAddress InetAddress 类是 muduo 网络库中的一个重要类&#xff0c;用于表示网络中的 IP 地址和端口号。 InetAddress 类在 muduo 网络库中被广泛使用&#xff0c;用于表示网络中的通信实体的地址信息&#xff0c;例如服务器地址、客户端地址等。通过 InetAddress 类&…

第14章,lambda表达式与流处理例题

package 例题;import java.util.List; import java.util.stream.Collectors; import java.util. stream.Stream;public class 例题19 { public static void main(String[] args){List<例题14> list 例题14.get例题14List();//获取公共类的测试数据Stream<例题14>…

Win11 Edge浏览器进入朔日考试系统(无纸化测评系统)的方法

Win11 Edge浏览器进入朔日考试系统&#xff08;无纸化测评系统&#xff09;的方法 笔记本型号&#xff1a;联想 使用浏览器&#xff1a;edge浏览器 操作系统&#xff1a;Windows11 网址&#xff1a;http://172.31.0.139/WZHEDU/ 注意:使用此方法打开edge浏览器会频繁出现弹窗&a…