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

k8s学习--Secret详细解释与应用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • Secret
    • 什么是Secret?
    • Secret四种类型及其特点
    • Secret应用案例
      • (1)将明文密码进行base64编码
      • (2)编写创建secret的YAML文件
    • Secret的两种使用方式
      • (1)通过环境变量的方式传递给pod
      • (2)通过volume的方式挂载到pod内(建议使用)
      • 热更新:


Secret

什么是Secret?

类似与ConfigMap 区别在于
ConfigMap存储明文
Secret存储密文

ConfigMap可以用作配置文件管理,
Secret用于密码、密钥、token等敏感数据配置管理

##Secret特性

1非敏感数据:专门用于存储非敏感的配置信息。

2.多种数据源:数据可以从命令行、文件、目录等多种来源创建。

3.动态更新:更新 ConfigMap 后,Pod 可以动态加载新的配置信息(需要应用支持热加载)

Secret四种类型及其特点

Opaque Secrets(不透明Secrets):

Opaque Secrets是最通用的Secret类型,可以存储任意类型的机密数据,如用户名/密码、API密钥等。
数据以Base64编码的形式存储,并且要求用户自行对数据进行加密。


Service Account Token Secrets(服务账户令牌Secrets):

这种类型的Secret由Kubernetes自动生成和管理,用于存储与Service Account相关的API访问令牌。
这些Secrets默认会挂载到Pod中,以便允许Pod内的应用程序使用与Service Account相关的API访问令牌进行安全通信。


Docker Registry Secrets(Docker注册表Secrets):

用于存储访问Docker私有注册表所需的认证信息,如用户名、密码和邮箱。
这些Secrets通常用于在Kubernetes中拉取私有Docker镜像时进行身份验证。


TLS Secrets(TLS证书Secrets):

用于存储TLS证书和私钥,以便在TLS终止、HTTPS等情况下使用。
这些Secrets可用于在Kubernetes Ingress或Service中配置SSL/TLS终止,从而实现加密通信。

Secret应用案例

(1)将明文密码进行base64编码

Opaque类型密码需要进行base64编码

[root@master ~]# echo -n 123 | base64
MTIz

假设密码为123,得到的编码为MTIz

(2)编写创建secret的YAML文件

[root@master ~]# vim secret-mysql.yml

apiVersion: v1
kind: Secret
metadata:name: secret-mysql
data:password: MTIz

[root@master ~]# kubectl apply -f secret-mysql.yml

Secret的两种使用方式

(1)通过环境变量的方式传递给pod

编写pod的YAML文件使用Secret

[root@master ~]# vim pod-mysql-secret.yml
apiVersion: v1
kind: Pod
metadata:name: pod-mysql-secret1
spec:containers:- name: mysqlimage: mysql:5.7env:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: secret-mysqlkey: password
[root@master ~]# kubectl apply -f pod-mysql-secret.yml 

等一会,因为本地没有,所以要下载mysql镜像

进入pod内,用传递的密码登录

[root@master ~]# kubectl exec -it pod-mysql-secret1 -- bash
[root@master ~]# kubectl exec -it pod-mysql-secret1 -- bash
root@pod-mysql-secret1:/# mysql -uroot -p123

登录成功即可
在这里插入图片描述

(2)通过volume的方式挂载到pod内(建议使用)

编写pod的YAML文件使用Secret
[root@master ~]# vim pod-mysql-secret2.yml

apiVersion: v1
kind: Pod
metadata:name: pod-mysql-secret2
spec:containers:- name: busyboximage: busyboxargs:- /bin/sh- -c- sleep 10000volumeMounts:- name: vol-secretmountPath: "/opt/passwd"readOnly: truevolumes:- name: vol-secretsecret:secretName: secret-mysql

验证:

[root@master ~]# kubectl exec pod-mysql-secret2 -- cat /opt/passwd/password
123

热更新:

[root@master ~]# echo -n 123456 | base64
MTIzNDU2
[root@master ~]# kubectl edit secrets secret-mysql

在这里插入图片描述

pod-mysql-secret2已更新

[root@master ~]# kubectl exec pod-mysql-secret2 -- cat /opt/passwd/password
123456

在这里插入图片描述

pod-mysql-secret1未更新

[root@master ~]# kubectl exec -it pod-mysql-secret1 -- bash
root@pod-mysql-secret1:/# mysql -uroot -p123456

在这里插入图片描述
完成
有问题请指出,全天在

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

相关文章:

  • 功能问题:如何防止接口重复请求?
  • 系统架构设计师【第5章】: 软件工程基础知识 (核心总结)
  • 嵌入式Linux系统编程 — 2.2 标准I/O库:检查或复位状态
  • pESC-HIS是什么,怎么看?-实验操作系列-2
  • 树形表/树形数据接口的开发
  • 二叉树的镜像--c++【做题记录】
  • redis安裝启动
  • 为什么Java中的main方法必须是public static void的?
  • shell的编程方式
  • 前端面试项目细节重难点(已工作|做分享)想(八)
  • Loguru,一个 Python 日志神器
  • C++ 反转单词
  • Apache Doris 基础 -- 数据表设计(表索引)
  • 资源描述框架的用途及实际应用解析
  • 工业级物联网边缘网关解决方案-天拓四方
  • 认识微服务,认识Spring Cloud
  • 电脑设置密码怎么设置?让你的电脑更安全!
  • 搜维尔科技:SenseGlove Nova2使用主动接触反馈来模拟手掌的感觉,结合力反馈和振动触觉反馈,使其成为市场上第一款具有手掌反馈的无线触觉手套
  • 基于Python的实验室管理系统的设计与实现(论文+源码)_kaic
  • Windows系统WDS+MDT网络启动自动化安装
  • Apple开发者证书创建完整过程
  • for深入学习
  • 引用(C++)和内联函数
  • 【stm32/CubeMX、HAL库】swjtu嵌入式实验七 ADC 实验
  • springboot 解耦、隔离、异步的原则以及实战
  • 设计模式详解(八):外观模式——Facade
  • R语言绘图 | 双Y轴截断图
  • 使用PNP管控制MCU是否需要复位
  • 二重,三重积分和曲面,曲线积分的关系和区别
  • 处理STM32 DMA方式下的HAL_UART_ERROR_ORE错误