【一起来学kubernetes】21、Secret使用详解
Secret 的详细介绍
Secret 是 Kubernetes 中用于存储和管理敏感信息(如密码、令牌、密钥等)的资源对象。Secret的设计目的是为了安全地存储和传输敏感信息,如密码、API密钥、证书等。这些信息通常不应该直接硬编码在配置文件或镜像中,而应通过Secret进行管理和使用。
1. Secret 的核心特性
• 敏感数据存储:存储密码、API 密钥、TLS 证书、SSH 密钥等。
• 与 Pod 解耦:Secret 独立于 Pod 定义,避免敏感信息硬编码。
• Base64 编码:数据默认以 Base64 编码存储(非加密,需配合集群安全策略)。
• 类型化支持:支持多种预定义类型(如 Opaque、docker-registry、tls 等)。
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. 最佳实践
-
避免将 Secret 提交到版本控制系统
使用 CI/CD 工具动态注入 Secret,或通过 Secret 管理工具(如 HashiCorp Vault)。 -
限制 Secret 的暴露范围
• 使用volumeMount而非环境变量(环境变量可能被日志记录)。
• 为不同服务分配不同的 Secret。 -
定期轮换 Secret
更新 Secret 后,重启相关 Pod 以加载新数据(若使用环境变量需重启 Pod,Volume 挂载可能自动更新)。 -
使用 TLS Secrets 保护通信
为 Ingress 或 Service 配置 TLS 证书。
7. 与 ConfigMap 的区别
| 特性 | Secret | ConfigMap |
|---|---|---|
| 数据类型 | 敏感信息(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使用详解
相关文章:
【一起来学kubernetes】21、Secret使用详解
Secret 的详细介绍 Secret 是 Kubernetes 中用于存储和管理敏感信息(如密码、令牌、密钥等)的资源对象。Secret的设计目的是为了安全地存储和传输敏感信息,如密码、API密钥、证书等。这些信息通常不应该直接硬编码在配置文件或镜像中&#x…...
css重点知识汇总(一)
css重点知识汇总(一) 引入css的不同方式 link 通过src来获取相应的css资源。除了获取css之外还可以获取其他资源,例如js在页面载入是同步下载可以通过js对dom操作来改变css import css3引入的新方法只能引入css资源需要页面完全载入后才…...
PMP-项目运行环境
你好!我是 Lydia-穎穎 ♥感谢你的陪伴与支持 ~~~ 欢迎一起探索未知的知识和未来,现在lets go go go!!! 1. 影响项目的要素 项目存在在不同的环境下,环境对于项目的交付产生不同的影响。需了解环境对于项目的影响,采取相应措施应对…...
shell 脚本搭建apache
#!/bin/bash # Set Apache version to install ## author: yuan# 检查外网连接 echo "检查外网连接..." ping www.baidu.com -c 3 > /dev/null 2>&1 if [ $? -eq 0 ]; thenecho "外网通讯良好!" elseecho "网络连接失败&#x…...
Huawei 鲲鹏(ARM/Aarch64)服务器安装KVM虚拟机(非桌面视图)
提出问题 因需要进行ARM架构适配,需要在Huawei Taishan 200k(CPU: Kunpeng 920 5231K)上,创建几台虚拟机做为开发测试环境。 无奈好久没搞了,看了一下自己多年前写的文章:Huawei 鲲鹏…...
《Python实战进阶》No28: 使用 Paramiko 实现远程服务器管理
No28: 使用 Paramiko 实现远程服务器管理 摘要 在现代开发与运维中,远程服务器管理是必不可少的一环。通过 SSH 协议,我们可以安全地连接到远程服务器并执行各种操作。Python 的 Paramiko 模块是一个强大的工具,能够帮助我们实现自动化任务&…...
备赛蓝桥杯之第十六届模拟赛3期职业院校组
提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题࿰…...
【Kafka】深入了解Kafka
集群的成员关系 Kafka使用Zookeeper维护集群的成员信息。 每一个broker都有一个唯一的标识,这个标识可以在配置文件中指定,也可以自动生成。当broker在启动时通过创建Zookeeper的临时节点把自己的ID注册到Zookeeper中。broker、控制器和其他一些动态系…...
C++特性——RAII、智能指针
RAII 就像new一个需要delete,fopen之后需要fclose,但这样会有隐形问题(忘记释放)。RAII即用对象把这个过程给包起来,对象构造的时候,new或者fopen,析构的时候delete. 为什么需要智能指针 对于…...
C++异常处理时的异常类型抛出选择
在 C 中选择抛出哪种异常类型,主要取决于错误的性质以及希望传达的语义信息。以下是一些指导原则,帮助在可能发生异常的地方选择合适的异常类型进行抛出: 1. std::exception 适用场景:作为所有标准异常的基类,std::e…...
elsticsearch 通过reindex修改shards
elasticsearch reindex 索引。 背景: 索引test1 reindex到test2 修改sharding数量 程序是通过别名test1_alias访问索引 1、创建目标索引test2 索引需要手动提前创建自动创建可能会有mapping 不一致性的风险。 The destination should be configured as wanted …...
CentOS系类普通挂载磁盘挂载命令
检查磁盘是否有分区 lsblk如果 vdb 下面没有分区(比如 vdb1),你需要先创建分区。 创建分区(如果需要) fdisk /dev/vdb然后在 fdisk 交互界面: 输入 n 创建新分区 选择 p 创建主分区 默认分区号和大小 输…...
Kafka自定义分区机制
文章目录 1.如何自定义分区机制2.示例 1.如何自定义分区机制 若需要使用自定义分区机制,需要完成两件事: 1)在 producer 程序中创建一个类,实现 org.apache.kafka.clients.producer.Partitioner 接口主要分区逻辑在 Partitioner.partition中…...
【HarmonyOS NEXT】关键资产存储开发案例
在 iOS 开发中 Keychain 是一个非常安全的存储系统,用于保存敏感信息,如密码、证书、密钥等。与文件系统不同,Keychain 提供了更高的安全性,因为它对数据进行了加密,并且只有经过授权的应用程序才能访问存储的数据。那…...
强化学习(赵世钰版)-学习笔记(9.策略梯度法)
本章是课程的导数第二章,旨在讲解策略的函数化形式。 之前的方法,描述一个策略都是用表格的形式,每一行代表一个状态,每一列代表一个行为,表格中的元素对应相关状态下执行相关行为的概率。 函数化的策略表征形式是指&a…...
ModuleNotFoundError: No module named ‘flask‘ 错误
要解决 ModuleNotFoundError: No module named ‘flask’ 错误,需确保已正确安装 Flask 库。以下是详细步骤: 1. 安装 Flask 在终端或命令行中执行以下命令(注意权限问题): 使用 pip 安装 pip install flask 若…...
【c++】【STL】unordered_set 底层实现(简略版)
【c】【STL】unordered_set 底层实现(简略版) ps:这个是我自己看的不保证正确,觉得太长的后面会总结整个调用逻辑 unordered_set 内部实现 template <class _Kty, class _Hasher hash<_Kty>, class _Keyeq equal_to<_Kty>…...
【Zephyr】【一】学习笔记
Zephyr RTOS 示例代码集 1. 基础示例 1.0 基础配置 每个示例都需要一个 prj.conf 文件来配置项目。以下是各个示例所需的配置: 基础示例 prj.conf # 控制台输出 CONFIG_PRINTKy CONFIG_SERIALy CONFIG_UART_CONSOLEy# 日志系统 CONFIG_LOGy CONFIG_LOG_DEFAULT…...
网络安全设备配置与管理-实验4-防火墙AAA服务配置
实验4-p118防火墙AAA服务配置 从这个实验开始,每一个实验都是长篇大论😓 不过有好兄弟会替我出手 注意:1. gns3.exe必须以管理员身份打开,否则ping不通虚拟机。 win10虚拟机无法做本次实验,必须用学校给的虚拟机。首…...
后端框架模块化
后端框架的模块化设计旨在简化开发流程、提高可维护性,并通过分层解耦降低复杂性。以下是常见的后端模块及其在不同语言(Node.js、Java、Python)中的实现方式: 目录 1. 路由(Routing)2. 中间件(…...
【论文阅读】Contrastive Clustering Learning for Multi-Behavior Recommendation
论文地址:Contrastive Clustering Learning for Multi-Behavior Recommendation | ACM Transactions on Information Systems 摘要 近年来,多行为推荐模型取得了显著成功。然而,许多模型未充分考虑不同行为之间的共性与差异性,以…...
视频转音频, 音频转文字
Ubuntu 24 环境准备 # 系统级依赖 sudo apt update && sudo apt install -y ffmpeg python3-venv git build-essential python3-dev# Python虚拟环境 python3 -m venv ~/ai_summary source ~/ai_summary/bin/activate核心工具链 工具用途安装命令Whisper语音识别pip …...
基于协同过滤推荐算法的景点票务数据系统(python-计算机毕设)
摘 要 I ABSTRACT II 第 1 章 引言 1 研究背景及意义 1 研究背景 1研究意义 1 国内外研究现状 2 智慧旅游 3旅游大数据 3 研究内容 4本章小结 4 第 2 章 相关技术概述 5 基于内容的推荐算法 5 基于内容的推荐算法原理 5基于内容的推荐算法实现 5 协同过滤推荐算法 6 协同过…...
QT学习笔记1
** Qt Creator开发环境配置** 安装流程(Windows平台) 下载与安装 : 访问Qt官网,下载在线安装工具Qt Online Installer。登录或注册Qt账号,选择开源版本(需勾选“接受协议”)。勾选组件ÿ…...
Ubuntu 24 常用命令方法
文章目录 环境说明1、账号管理1.1、启用 root 2、包管理工具 apt & dpkg2.1、apt 简介 & 阿里源配置2.2、dpkg 简介2.3、apt 和 dpkg 两者之间的关系2.4、常用命令 3、启用 ssh 服务4、防火墙5、开启远程登录6、关闭交换分区7、build-essential(编译和开发软…...
Flask多参数模版使用
需要建立目录templates; 把建好的html文件放到templates目录里面; 约定好参数名字,单个名字可以直接使用;多参数使用字典传递; 样例: from flask import render_template # 模板 (Templates) #Flask 使用…...
torcharrow gflags版本问题
问题描述 其实仍然是很简单的编译问题,但是又弄了一整个下午加几乎整个晚上,进度缓慢,又吸取了教训,因而还是来记录一下。 在试图使用torcharrow进行推荐系统模拟的时候,撰写的python程序报错:ERROR: flag…...
自然语言处理|深入解析 PEGASUS:从原理到实践
一、引言 在信息爆炸的时代,互联网上的文本数据以极快的速度增长。无论是新闻资讯、学术论文、社交媒体动态,还是各类报告文档,我们每天接触到的文字信息量巨大。如何快速、准确地提取关键内容成为一项重要任务。文本摘要技术通过将长篇文本…...
Spring AI Alibaba快速使用
AI 时代,Java 程序员也需要与时俱进,这两个框架必须掌握。 一个是 Spring AI一个是 Spring Alibaba AI。 Spring AI 是一个AI工程领域的应用程序框架,它的目标是将 Spring生态系统的设计原则应用于人工智能领域。 但是, Spring…...
socks 协议介绍
SOCKS协议详解 一、基本定义与核心功能 SOCKS(Socket Secure)是一种网络传输协议,主要用于通过代理服务器转发客户端与目标服务器之间的通信请求。其核心功能包括隐藏用户真实IP地址、穿透防火墙限制以及支持多种网络协议(如TCP…...
