K8S之Secret的介绍和使用

Secret

  • Secret的介绍
  • Secret的使用
    • 通过环境变量引入Secret
    • 通过volume挂载Secret

Secret的介绍

Secret是一种保护敏感数据的资源对象。例如:密码、token、秘钥等,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。

Pod 可以用两种方式使用 secret:作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里,或者当 kubelet 为 pod 拉取镜像时使用。

secret可选参数有三种:

  • generic: 通用类型,通常用于存储密码数据。
  • tls:此类型仅用于存储私钥和证书。
  • docker-registry: 若要保存docker仓库的认证信息的话,就必须使用此种类型来创建。

Secret类型:

  • Service Account:用于被 serviceaccount 引用。serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。Pod 如果使用了 serviceaccount,对应的 secret 会自动挂载到 Pod 的/run/secrets/kubernetes.io/serviceaccount 目录中。

  • Opaque:base64编码格式的Secret,用来存储密码、秘钥等。可以通过base64 --decode解码获得原始数据,因此安全性弱

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

Secret的使用

通过环境变量引入Secret

1、把mysql的root用户的password创建成secret

kubectl create secret generic mysql-password --from-literal=password=admin**lucky66
kubectl get secret

在这里插入图片描述

kubectl describe secret mysql-password

在这里插入图片描述

password的值是加密的,但secret的加密是一种伪加密,它仅仅是将数据做了base64的编码

2、创建pod,引用secret

vim pod-secret.yaml 
apiVersion: v1
kind: Pod
metadata:name: pod-secretlabels:app: myapp
spec:containers:- name: myappimage: myapp:v1imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80env:- name: MYSQL_ROOT_PASSWORD   #Pod启动成功后,Pod中容器的环境变量名.valueFrom:secretKeyRef:name: mysql-password  # secret的对象名key: password         # secret中的key名

更新资源清单文件

kubectl apply -f pod-secret.yaml
kubectl exec -it pod-secret -- /bin/sh
printenv

在这里插入图片描述

通过volume挂载Secret

1、创建Secret,并手动加密(基于base64加密)

echo -n 'admin' | base64

YWRtaW4=
在这里插入图片描述

echo -n 'admin123456' | base64

YWRtaW4xMjM0NTY=
在这里插入图片描述

解码:

echo YWRtaW4xMjM0NTY=  | base64 -d

在这里插入图片描述

2、创建yaml文件

vim secret.yaml
apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4=password: YWRtaW4xMjM0NTY=

更新资源清单文件

kubectl apply -f secret.yaml
kubectl describe secret mysecret

在这里插入图片描述

3、将Secret挂载到Volume中

vim pod_secret_volume.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-secret-volume
spec:containers:- name: myappimage: myapp:v1volumeMounts:- name: secret-volumemountPath: /etc/secretreadOnly: truevolumes:- name: secret-volumesecret:secretName: mysecret

更新资源清单文件

kubectl apply -f pod_secret_volume.yaml
kubectl exec -it pod-secret-volume -- /bin/sh
ls /etc/secret
cat /etc/secret/username
cat /etc/secret/password

在这里插入图片描述

由上可见,在pod中的secret信息实际已经被解密

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

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

相关文章

【Linux】TCP网络套接字编程+守护进程

文章目录 日志类(完成TCP/UDP套接字常见连接过程中的日志打印)单进程版本的服务器客户端通信多进程版本和多线程版本守护进程化的多线程服务器 日志类(完成TCP/UDP套接字常见连接过程中的日志打印) 为了让我们的代码更规范化&…

前缀树实现字典添加查询

. - 力扣(LeetCode) Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。 请你实现 T…

车载电子电器架构 —— 诊断数据库开发

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

Python 后端 Flask 使用 Flask-SocketIO、前端 Vue3 实现长连接 Websocket 通信详细教程(更新中)

Flask 安装 Flask-Socketio Flask-SocketIO 第三方库使 Flask 应用程序可以实现客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用 Javascript、Python、C、Java 和 Swift 中的任何 SocketIO 客户端库或任何其他兼容客户端来建立与服务器的永久连接。 Flask-Socke…

价值投资已死,MEME币永生?

BOME和SLERF结束了疯狂拉升,市场再次经历和见证了又一轮暴富「淘金」,尽管MEME的热浪尚未彻底退去,但市场也短暂恢复了一些冷静。 除了感慨 “币圈一天,传统金融一年” 的涨幅和收益之外,不少「老韭菜」都在讨论一个问…

基于微信小程序的自习室预约系统的设计与实现

基于微信小程序的自习室预约系统的设计与实现 文章目录 基于微信小程序的自习室预约系统的设计与实现1、前言介绍2、功能设计3、功能实现4、开发技术简介5、系统物理架构6、系统流程图7、库表设计8、关键代码9、源码获取10、 🎉写在最后 1、前言介绍 伴随着信息技术…

AR-Net网络(图像篡改检测)

AR-Net网络 摘要AbstractAR-Net1. 文献摘要2. 研究背景3. 创新点4. AR-Net 网络架构5. 实验6. 结论总结 摘要 AR-Net使用自适应注意力机制来融合位置和通道维度的特征,使网络能够充分利用不同维度的被篡改特征,此外,AR-Net 改进了预测掩模&a…

民宿预定(源码+文档)

民宿预定系统(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端注册页学生特权介绍页我的界面登录界面民宿界面推荐房形已完成订单首页邀请好友待支付页全部订单进行中订单 管理端关键字管理用户管理订单管理民宿管理 文件包…

【春秋云镜】CVE-2023-27179靶标Wp

0x01:漏洞点 他的标题已经告诉我们路径在哪里,所以我们直接访问/_admin/imgdownload.php OK啊白白的一片,直接丢Yakit里面去 教训他。 0x02:操作部分 报告长官,一切正常!!未发现连接错误&#…

C语言-malloc(申请函数)free(释放函数)

malloc和free的语法格式 malloc 函数是 C 语言标准库中的一个重要函数,用于动态分配内存。其语法如下: void *malloc(size_t size);这里的 void * 表示返回的是一个 void 类型的指针,实际上这个指针指向的是一个 char 类型的内存块。size_t …

HTTP/1.1 如何优化?(计算机网络)

有三种方法: 第一个思路是,通过缓存技术来避免发送 HTTP 请求。客户端收到第一个请求的响应后,可以将其缓存在本地磁盘,下次请求的时候,如果缓存没过期,就直接读取本地缓存的响应数据。如果缓存过期&#…

GridLayoutManager 中的一些坑

前言 如果GridLayoutManager使用item的布局都是wrap_cotent 那么会在布局更改时会出现一些出人意料的情况。&#xff08;本文完全不具备可读性和说教性&#xff0c;仅为博主方便查找问题&#xff09; 布局item: <!--layout_item.xml--> <?xml version"1.0&qu…

DAY10,DAY11|逆波兰表达式,有效括号,删除字符串中重复项

文章目录 232.用栈实现队列225.用队列实现栈20.有效的括号1047.删除字符串中的所有重复项150.逆波兰表达式 232.用栈实现队列 文档讲解&#xff1a;用栈实现队列 视频链接&#xff1a;代码随想录-用栈实现队列 状态&#xff1a;ok 思路&#xff1a; 用两个栈实现队列操作&…

大模型面试准备(十一):怎样让英文大语言模型可以很好的支持中文?

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…

设计模式(11):适配器模式

一.什么使适配器模式&#xff1f; 将一个类的接口转换成客户希望的另外一个接口&#xff0c;Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 二.模式中的角色 目标角色(Target)&#xff1a; 客气所期待的接口。目标可以是具体的或抽象的类&#…

C++20中的jthread

一、多线程开发 c11以前&#xff0c;是不包含线程库的&#xff0c;开发多线程&#xff0c;必须使用OS系统自带的线程API&#xff0c;这就导致了很多问题&#xff0c;最主要的是&#xff0c;跨平台的开发&#xff0c;一般要保持几个主流应用的库的代码支持&#xff0c;特别是对…

关于缓存的一些问题

关于缓存的一些问题 1、缓存穿透 什么是缓存穿透&#xff1a; 缓存穿透指的是在使用缓存系统的过程中&#xff0c;对于不存在的数据不断地进行查询请求&#xff0c;导致这些请求都无法从缓存中获取到数据&#xff0c;最终达到了绕过缓存的目的&#xff0c;直接访问后端数据源…

C语言-文件操作函数基础+进阶标准输入流输出流

学习的流程 ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————…

RedisDesktopManager 安装

简介&#xff1a;安装redis可视化工具 一、下载压缩包 Redis 可视化工具 链接&#xff1a;https://pan.baidu.com/s/1P2oZx9UpQbXDsxJ3GPUeOQ 提取码&#xff1a;6rft Redis 命令窗口版本 链接&#xff1a;https://pan.baidu.com/s/1mIuxCEWwD__aoqp1Cx8MFQ 提取码&#xf…

Lucene及概念介绍

Lucene及概念介绍 基础概念倒排索引索引合并分析查询语句的构成 基础概念 Document&#xff1a;我们一次查询或更新的载体&#xff0c;对比于实体类 Field&#xff1a;字段&#xff0c;是key-value格式的数据&#xff0c;对比实体类的字段 Item&#xff1a;一个单词&#xff0…