k8s概念-secret

回到目录

k8s secrets用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。它把 Pod 想要访问的加密数据存放到 Etcd 中。然后用户就可以通过在 Pod 的容器里挂载 Volume 的方式或者环境变量的方式访问到这些 Secret 里保存的信息了。

1 secret三种类型

  • Opaque:

    base64 编码格式的 Secret,用来存储密码、密钥等

    但数据也可以通过base64 –decode解码得到原始数据,所有加密性很弱。

  • Service Account:

    用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中。

  • kubernetes.io/dockerconfigjson : 用来存储私有docker registry的认证信息

2 Opaque类型 

Opaque 类型的数据是一个 map 类型,要求value是base64编码

仅仅是对数据进行base64的转码,如果需要增强数据安全性,则需要使用secret的加密插件

2.1 创建

  • 创建一个secret

    kubectl create secret generic 名称 --from-literal=key=value [ --from-literal=key1=value1]

  • 查看所有secret:

    kubectl get secret

  • 查看详细描述:

    kubectl describe secret 名称

  • 以yaml格式查看详细描述【可查看value转码后的内容】:

    kubectl get secret 名称 -o yaml

#1. 创建一个test-secret
[root@k8s-master1 ~]# kubectl create secret generic test-secret --from-literal=user=root --from-literal=password=dfasges
secret/test-secret created#2. 查看默认命名空间的secret
[root@k8s-master1 ~]# kubectl get secret
NAME                  TYPE                                  DATA   AGE
default-token-xdmj5   kubernetes.io/service-account-token   3      6d
test-secret           Opaque                                2      8s#3. 查看详细描述
#查看secret详细时,只能看见key
[root@k8s-master1 ~]# kubectl describe secret test-secret
Name:         test-secret
Namespace:    default
Labels:       <none>
Annotations:  <none>Type:  OpaqueData
====
password:  7 bytes
user:      4 bytes#4. 查看yaml格式的描述
#查看yaml格式的详细时,发现进行了转码
[root@k8s-master1 ~]# kubectl get secret test-secret -o yaml
apiVersion: v1
data:password: ZGZhc2dlcw==user: cm9vdA==
kind: Secret
metadata:creationTimestamp: "2023-06-13T03:01:18Z"name: test-secretnamespace: defaultresourceVersion: "731090"uid: 8f1bfb67-45a7-4e60-b6c2-0b4b2541ca5c
type: Opaque#5. 验证
[root@k8s-master1 ~]# echo ZGZhc2dlcw== | base64 -d
dfasges

2.2 yaml创建

value须提前进行base64转码

#secret.yamlapiVersion: v1          # 版本
kind: Secret			# 资源类型
metadata: name: mysecret		# 名称
type: Opaque			# secret类型
data:  					# 数据
user: YWRtaW4=  		# key:value
pass: MWYyZDFlMmU2N2Rm

2.3 使用 加载数据卷

#test-projected-volume.yamlapiVersion: v1
kind: Pod
metadata:name: test-projected-volume 		# pod名称
spec:containers:- name: test-secret-volume        # 容器名称image: busyboxargs:- sleep- "86400"volumeMounts:					# 挂载数据卷- name: mysql-cred				# 需要挂载的数据卷名称mountPath: "/projected-volume"# 挂载到容器路径readOnly: true				# 是否只读volumes:							# 定义数据卷- name: mysql-cred				# 数据卷名称projected:sources:- secret:						# 数据卷内容name: test-secret-valume  # secret名称

验证:

#1. 进入容器
kubectl exec -it test-secret-valume -- /bin/sh#容器中:
/ # ls
bin               etc               proc              root              tmp               var
dev               home              projected-volume  sys               usr#2. 进入挂载数据卷目录
/ # cd projected-volume//projected-volume # ls
password  user#3. 查看内容
/projected-volume # cat password
dfasges
/projected-volume # cat user 
root

3 dockerconfigjson

用来创建用户docker registry认证的Secret

docker拉去私人仓库镜像进行登录

直接使用kubectl create命令创建即可

kubectl create secret docker-registry myregistry --docker-server=DOCKER_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

4 SubPath

用途:解决挂载时挂载目录覆盖原目录问题

使用 ConfigMap 或 Secret 挂载到目录的时候,会将容器中源目录给覆盖掉,此时我们可能只想覆盖目录中的某一个文件,但是这样的操作会覆盖整个文件,因此需要使用到 SubPath

配置方式:

  1. 定义 volumes 时需要增加 items 属性,配置 key 和 path,且 path 的值不能从 / 开始

  2. 在容器内的 volumeMounts 中增加 subPath 属性,该值与 volumes 中 items.path 的值相同 

containers:......volumeMounts:- mountPath: /etc/nginx/nginx.conf      # 挂载到哪里name: config-volume                   # 使用哪个 configmap 或 secretsubPath: etc/nginx/nginx.conf         # 与 volumes.[0].items.path 相同
volumes:
- configMap:name: nginx-conf                        # configMap 名字items:                                  # subPath 配置key: nginx.conf                       # configMap 中的文件名path: etc/nginx/nginx.conf            # subPath 路径

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

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

相关文章

npm,yarn,pnpm

原理 npm、yarn和pnpm都是用于管理Node.js项目依赖的包管理工具&#xff0c;下面对它们进行详细讲解&#xff1a; npm&#xff08;Node Package Manager&#xff09;&#xff1a; npm是Node.js的默认包管理工具&#xff0c;也是最早被广泛使用的。npm使用package.json文件来管…

【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力(CVPR2021)

文章目录 一、背景二、方法2.1 主要过程2.2 Forming Bag of Regions2.3 Representing Bag of Regions2.4 Aligning bag of regions 三、效果 论文&#xff1a;Aligning Bag of Regions for Open-Vocabulary Object Detection 代码&#xff1a;https://github.com/wusize/ovdet…

pytorch(续周报(1))

文章目录 2.1 张量2.1.1 简介2.1.2 创建tensor2.1.3 张量的操作2.1.4 广播机制 2.2 自动求导Autograd简介2.2.1 梯度 2.3 并行计算简介2.3.1 为什么要做并行计算2.3.2 为什么需要CUDA2.3.3 常见的并行的方法&#xff1a;网络结构分布到不同的设备中(Network partitioning)同一层…

微服务系列<3>---微服务的调用组件 rpc 远程调用

什么是rpc调用,让我们调用远程方法就像调用本地方法一样 这就属于rpc调用 rpc是针对于本地来说的 调用远程方法根调用本地方法一样 如果能达到这种效果 就是rpc调用如果达到一种效果 调用远程和调用本地一样 他就是一种rpc框架2个微服务 之间发的调用 我们之前通过ribbon的方式…

springboot访问请求404的原因

是记录&#xff0c;可能出现错误 可能出现的原因 1.你请求的URL路径不对,比如说你请求的路径是/usr/list,GET方法,但是你UserController上面的RequestMapping是这个样子:RequestMapping(“user”)&#xff0c;有可能哈 2.前端的请求时GET方法&#xff0c;后端对应的处理函数的方…

【Linux命令200例】whereis用于搜索以及定位二进制文件

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜…

IDA+Frida分析CTF样本和Frid源码和objection模块

文章目录 一些资料IDA调试命令IDA调试安卓的10个技巧objection基本使用 Wallbreaker1frida源码阅读之frida-java 第一个实例EasyJNI第二个实例objection资料 art_trace2.pyart_trace2.js IDAFrida分析CTF样本和Frid源码和objection模块 一些资料 IDA调试命令 adb devices adb…

C#设计模式之---抽象工厂模式

抽象工厂模式&#xff08;Abstract Factory&#xff09; 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。工厂方…

Python 批量处理JSON文件,替换某个值

Python 批量处理JSON文件&#xff0c;替换某个值 直接上代码&#xff0c;替换key TranCode的值 New 为 Update。输出 cancel忽略 import json import os import iopath D:\\Asics\\850\\202307 # old path2 D:\\test2 # new dirs os.listdir(path) num_flag 0 for file…

Python3 高级教程 | Python3 正则表达式(一)

目录 一、Python3 正则表达式 &#xff08;一&#xff09;re.match函数 &#xff08;二&#xff09;re.search方法 &#xff08;三&#xff09;re.match与re.search的区别 二、检索和替换 &#xff08;一&#xff09;repl 参数是一个函数 &#xff08;二&#xff09;comp…

C++ 矩形切割

【问题描述】 小明有一些矩形的材料&#xff0c;他要从这些矩形材料中切割出一些正方形。 当他面对一块矩形材料时&#xff0c;他总是从中间切割一刀&#xff0c;切出一块最大的正方 形&#xff0c;剩下一块矩形&#xff0c;然后再切割剩下的矩形材料&#xff0c;直到全部切为正…

Curve深陷安全事件,OKLink如何破局

出品&#xff5c;欧科云链研究院 作者&#xff5c;Matthew Lee 7月31号&#xff0c;Curve 在平台表示 Vyper 0.2.15 的稳定币池由于编译器的漏洞所以遭到攻击。具体因为重入锁功能的失效&#xff0c;所以黑客可以轻易发动重入攻击&#xff0c;即允许攻击者在单次交易中执行某…

二、搜索与图论6:Dijkstra 模板题+算法模板(Dijkstra求最短路 I, Dijkstra求最短路 II,1003 Emergency)

文章目录 算法模板Dijkstra题目代码模板朴素dijkstra算法堆优化版dijkstra 树与图的存储(1) 邻接矩阵&#xff1a;(2) 邻接表&#xff1a;关于e[],ne[],h[]的理解 关于堆的原理与操作 模板题Dijkstra求最短路 I原题链接题目思路题解 Dijkstra求最短路 II原题链接题目思路题解 1…

05|Oracle学习(UNIQUE约束)

1. UNIQUE约束介绍 也叫&#xff1a;唯一键约束&#xff0c;用于限定数据表中字段值的唯一性。 1.1 UNIQUE和primary key区别&#xff1a; 主键/联合主键每张表中只有一个。UNIQUE约束可以在一张表中&#xff0c;多个字段中存在。例如&#xff1a;学生的电话、身份证号都是…

AWS——01篇(AWS入门 以及 AWS之EC2实例及简单实用)

AWS——01篇&#xff08;AWS入门 以及 AWS之EC2实例及简单实用&#xff09; 1. 前言2. 创建AWS账户3. EC23.1 启动 EC2 新实例3.1.1 入口3.1.2 设置名称 选择服务3.1.3 创建密钥对3.1.4 网络设置——安全组3.1.4.1 初始设置3.1.4.2 添加安全组规则&#xff08;开放新端口&…

ELKELFK 日志分析系统

目录 一、ELK 概述 二、为什么要使用 ELK 三、完整日志系统基本特征 四、ELK 的工作原理&#xff1a; 五、ELK Elasticsearch 集群部署&#xff08;在Node1、Node2节点上操作&#xff09; 1&#xff0e;环境准备 2&#xff0e;部署 Elasticsearch 软件 3&#xff0e;安装 …

尝试多数据表 sqlite

C 唯一值得骄傲的地方就是 通过指针来回寻址 &#x1f602; 提高使用的灵活性 小脚本buff 加成

Windows用户如何将cpolar内网穿透配置成后台服务,并开机自启动?

Windows用户如何将cpolar内网穿透配置成后台服务&#xff0c;并开机自启动&#xff1f; 文章目录 Windows用户如何将cpolar内网穿透配置成后台服务&#xff0c;并开机自启动&#xff1f;前置准备&#xff1a;VS Code下载后&#xff0c;默认安装即可VS CODE切换成中文语言 1. 将…

uni-app选择器( uni-data-picker)选择任意级别

背景说明 uni-app 官方的插件市场有数据驱动选择器&#xff0c;可以用作多级分类的场景。引入插件后&#xff0c;发现做不到只选择年级&#xff0c;不选择班级&#xff08;似乎&#xff0c;只能到最后子节点了&#xff09;。 需求中&#xff0c;有可能选择的不是叶子。比如&a…

适应于Linux系统的三种安装包格式 .tar.gz、.deb、rpm

deb、rpm、tar.gz三种Linux软件包的区别 rpm包-在红帽LINUX、SUSE、Fedora可以直接进行安装&#xff0c;但在Ubuntu中却无法识别&#xff1b; deb包-是Ubuntu的专利&#xff0c;在Ubuntu中双击deb包就可以进入自动安装进程&#xff1b; tar.gz包-在所有的Linux版本中都能使用…