【一起来学kubernetes】21、Secret使用详解


Secret 的详细介绍

Secret 是 Kubernetes 中用于存储和管理敏感信息(如密码、令牌、密钥等)的资源对象。Secret的设计目的是为了安全地存储和传输敏感信息,如密码、API密钥、证书等。这些信息通常不应该直接硬编码在配置文件或镜像中,而应通过Secret进行管理和使用。


1. Secret 的核心特性

敏感数据存储:存储密码、API 密钥、TLS 证书、SSH 密钥等。
与 Pod 解耦:Secret 独立于 Pod 定义,避免敏感信息硬编码。
Base64 编码:数据默认以 Base64 编码存储(非加密,需配合集群安全策略)。
类型化支持:支持多种预定义类型(如 Opaquedocker-registrytls 等)。


2. Secret 的常见类型
类型用途
Opaque默认类型,存储任意用户定义的敏感数据(键值对)。
kubernetes.io/dockerconfigjson存储 Docker 镜像仓库的认证信息(用于 docker pull 鉴权)。
kubernetes.io/tls存储 TLS 证书和私钥(用于 HTTPS 服务)。
kubernetes.io/service-account-token服务账号令牌,用于 Pod 与 API Server 的认证。

3. 创建 Secret 的常用方法
(1) 通过 kubectl 命令行创建
# 从文件创建(自动 Base64 编码)
kubectl create secret generic my-secret \--from-file=username=./username.txt \--from-file=password=./password.txt# 从字面量创建
kubectl create secret generic my-secret \--from-literal=username=admin \--from-literal=password='S!B\*d$zDsb='# 创建 Docker 仓库认证 Secret
kubectl create secret docker-registry regcred \--docker-server=registry.example.com \--docker-username=admin \--docker-password=123456 \--docker-email=user@example.com
(2) 通过 YAML 文件定义
apiVersion: v1
kind: Secret
metadata:name: my-secret
type: Opaque  # 默认为 Opaque
data:username: YWRtaW4=          # Base64 编码的 "admin"password: UyFCX2R6RHNiPQ==  # Base64 编码的 "S!B_d$zDsb="
(3) API

Kubernetes提供了丰富的API接口,可以通过编程方式创建和管理Secret。


4. 在 Pod 中使用 Secret
(1) 作为环境变量
apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: mycontainerimage: nginxenv:- name: SECRET_USERNAMEvalueFrom:secretKeyRef:name: my-secret    # Secret 名称key: username     # Secret 中的键- name: SECRET_PASSWORDvalueFrom:secretKeyRef:name: my-secretkey: password
(2) 挂载为 Volume 文件
apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: mycontainerimage: nginxvolumeMounts:- name: secret-volumemountPath: "/etc/secret"readOnly: truevolumes:- name: secret-volumesecret:secretName: my-secret   # Secret 名称# 可选:指定 keys,默认挂载所有键items:- key: usernamepath: my-username     # 文件名为 my-username- key: passwordpath: my-password
(3) 命令行参数

敏感数据也可以作为命令行参数传递给容器,但这种方式相对容易在日志或命令行界面中暴露,因此应谨慎使用。


5. Secret 的安全管理

加密存储
• 默认情况下,Secret 数据以 Base64 编码存储在 etcd 中,未加密。
• 启用 etcd 加密 或使用 KMS 提供商 实现静态加密(需配置 Kubernetes 集群)。

RBAC 控制
通过 Role-Based Access Control (RBAC) 限制对 Secret 的访问权限。

最小权限原则
仅向 Pod 和用户授予必要的 Secret 访问权限。


6. 最佳实践
  1. 避免将 Secret 提交到版本控制系统
    使用 CI/CD 工具动态注入 Secret,或通过 Secret 管理工具(如 HashiCorp Vault)。

  2. 限制 Secret 的暴露范围
    • 使用 volumeMount 而非环境变量(环境变量可能被日志记录)。
    • 为不同服务分配不同的 Secret。

  3. 定期轮换 Secret
    更新 Secret 后,重启相关 Pod 以加载新数据(若使用环境变量需重启 Pod,Volume 挂载可能自动更新)。

  4. 使用 TLS Secrets 保护通信
    为 Ingress 或 Service 配置 TLS 证书。


7. 与 ConfigMap 的区别
特性SecretConfigMap
数据类型敏感信息(Base64 编码)非敏感配置(明文)
典型用途密码、令牌、密钥配置文件、命令行参数、环境变量
存储安全建议加密存储无需加密
YAML 字段data(Base64)或 stringData(明文)data(明文)

8. 示例:使用 TLS Secret 配置 HTTPS
apiVersion: v1
kind: Secret
metadata:name: tls-secret
type: kubernetes.io/tls
data:tls.crt: <Base64 编码的证书>tls.key: <Base64 编码的私钥># 在 Ingress 中引用
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: my-ingress
spec:tls:- hosts:- example.comsecretName: tls-secretrules:- host: example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: my-serviceport:number: 80

通过合理使用 Secret,可以显著提升 Kubernetes 应用的安全性,确保敏感信息在存储、传输和使用过程中的机密性。

9. 拓展

【一起来学kubernetes】19、Pod使用详解

【一起来学kubernetes】11、Deployment使用详解

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

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

相关文章

Second Me:在 AI 中保留自我的火种丨社区来稿

今天想和所有朋友们分享一种全新的 AI 可能性&#xff0c;Second Me&#xff01; 2025年了&#xff0c;很多人和我一样&#xff0c;都越来越确信&#xff0c;AGI 的到来只是一个时间问题。 然而我也经常想&#xff0c;当我们所有人&#xff0c;都心甘情愿地为自己“造神” –…

仿新浪微博typecho主题源码

源码介绍 仿新浪微博typecho主题源码&#xff0c;简约美观&#xff0c;适合做个人博客&#xff0c;该源码为主题模板&#xff0c;需要先搭建typecho&#xff0c;然后吧源码放到对应的模板目录下&#xff0c;后台启用即可 源码特点 支持自适应 个性化程度高 可设置背景图、顶…

Ubuntu24搭建k8s高可用集群

Ubuntu24搭建k8s高可用集群 环境信息 主机名IPk8s版本备注vm-master192.168.103.2501.28.2master1vm-master2192.168.103.2491.28.2master2vm-master3192.168.103.2541.28.2master3vm-node1192.168.103.2511.28.2node1vm-node2192.168.103.2521.28.2node2 容器进行时&#xf…

洛谷P1216 [IOI 1994] 数字三角形 Number Triangles(动态规划)

P1216 [IOI 1994] 数字三角形 Number Triangles - 洛谷 代码区&#xff1a; #include<algorithm> #include<iostream>using namespace std; const int R 1005; int dp[R][R]; int arr[R][R]; int main() {int n;cin >> n;for (int i 1; i < n; i) {for…

Spring Boot Actuator 自定义健康检查(附Demo)

目录 前言1. Demo2. 拓展 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF Spring Boot 的 actuator 提供了应用监控的功能&#xff0c;其中健康检查&#xff08;Health Check&#xff09;是一个重要的部分&…

2025年优化算法:人工旅鼠算法(Artificial lemming algorithm,ALA)

人工旅鼠算法(Artificial lemming algorithm&#xff0c;ALA)是发表在中科院二区期刊“ARTIFICIAL INTELLIGENCE REVIEW”&#xff08;IF&#xff1a;11.7&#xff09;的2025年智能优化算法 01.引言 随着信息技术与工程科学的快速发展&#xff0c;现代优化问题呈现出高维、非线…

「实战指南 」Swift 并发中的任务取消机制

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

实验12深度学习

实验12深度学习 一、实验目的 &#xff08;1&#xff09;理解并熟悉深度神经网络的工作原理&#xff1b; &#xff08;2&#xff09;熟悉常用的深度神经网络模型及其应用环境&#xff1b; &#xff08;3&#xff09;掌握Anaconda的安装和设置方法&#xff0c;进一步熟悉Jupyte…

【问题解决】Postman 测试报错 406

现象 Tomcat 日志 org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation HTTP状态 406 - 不可接收 的报错&#xff0c;核心原因 客…

微信小程序:用户拒绝小程序获取当前位置后的处理办法

【1】问题描述&#xff1a; 小程序在调用 wx.getLocation() 获取用地理位置时&#xff0c;如果用户选择拒绝授权&#xff0c;代码会直接抛出错误。如果再次调用 wx.getLocation() 时&#xff0c;就不会在弹窗询问用户是否允许授权。导致用户想要重新允许获取地理位置时&#x…

【MySQL】内置函数

目录 一、日期时间函数1.1 简单使用1.2 案例实操 二、字符串函数2.1 简单使用2.2 案例实践2.2.1 获取emp表的ename列的字符集2.2.2 要求显示exam_result表中的信息&#xff0c;显示格式&#xff1a;“XXX的语文是XXX分&#xff0c;数学XXX分&#xff0c;英语XXX分”2.2.3 求exa…

模块二 单元4 安装AD+DC

模块二 单元4 安装ADDC 两个任务&#xff1a; 1.安装AD活动目录 2.升级当前服务器为DC域控制器 安装前的准备工作&#xff1a; 确定你要操作的服务器系统&#xff08;Windows server 2022&#xff09;&#xff1b; 之前的服务器系统默认是工作组的模式workgroup模式&#xff08…

卫星互联网智慧杆:开启智能城市新时代​

哇哦&#xff01;在当下这个数字化浪潮正以雷霆万钧之势席卷全球的超酷时代&#xff0c;智慧城市建设已然成为世界各国你追我赶、竞相发力的核心重点领域啦&#xff01;而咱们的卫星互联网智慧杆&#xff0c;作为一项完美融合了卫星通信与物联网顶尖技术的创新结晶&#xff0c;…

ThreadLocal 的详细使用指南

一、ThreadLocal 核心原理 ThreadLocal 是 Java 提供的线程绑定机制&#xff0c;为每个线程维护变量的独立副本。其内部通过 ThreadLocalMap 实现&#xff0c;每个线程的 Thread 对象都有一个独立的 ThreadLocalMap&#xff0c;存储以 ThreadLocal 对象为键、线程局部变量为值…

免费开源的NAS解决方案:TrueNAS

TrueNAS是业内知名的FreeNAS系统的升级版&#xff0c;是一款开源的网络存储系统&#xff0c;具有高性能、稳定性和易用性等优点。 TrueNAS目前有三个版本&#xff0c;分别是TrueNAS CORE、TrueNAS ENTERPRISE、TrueNAS SCALE。其中&#xff0c;TrueNAS CORE基于FreeBSD开发&…

Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点

Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点 目录 Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点Fisher 通过似然估计求解真实数据和权重参数之间的差异**1. Fisher 信息矩阵的定义****2. 计算对数似然函数的二阶导数****3. 代入 Fisher 信息矩阵定义…

自定义myshell(精讲)

我们都知道&#xff0c;我们给Linux下发的指令都是shell帮我们处理并完成的&#xff0c;那么他是怎么完成的呢&#xff1f;不难想到他都是通过环境变量以及程序替换来完成的。我们这一篇文章就手把手来教你怎么自己实现一个简单的shell。 目标&#xff1a; 1.要能处理普通命令 …

HTML图像标签的详细介绍

1. 常用图像格式 格式特点适用场景JPEG有损压缩&#xff0c;文件小&#xff0c;不支持透明适合照片、复杂图像PNG无损压缩&#xff0c;支持透明&#xff08;Alpha通道&#xff09;适合图标、需要透明背景的图片GIF支持动画&#xff0c;最多256色简单动画、低色彩图标WebP谷歌开…

信号的捕捉(操作部分)

目录 信号集和信号屏蔽字 信号集 信号屏蔽字 信号位操作函数 sigemptyset sigaddset sigismember sigprocmask sigpending 手动操作让2号信号屏蔽打印pending 信号处理函数sigaction 我们继续来学习信号的捕捉 信号集和信号屏蔽字 信号集 信号集是存储一组信号的…

CIR-Net:用于 RGB-D 显著性目标检测的跨模态交互与优化(问题)

摘要 问题一&#xff1a;自模态注意力优化单元和跨模态加权优化单元什么意思&#xff1f; 1 优化中间件结构的作用 位置&#xff1a;位于编码器和解码器之间 输入&#xff1a;编码器提取的RGB特征&#xff0c;深度特征以及RGB-D特征。 输出&#xff1a;经过优化的RGB&…