K8S学习之基础二十九:K8S中的secret

server/2025/3/17 12:18:41/

K8S中的secret

​ configMap是用来存放明文数据的,如环境变量、配置文件等,对于蜜柑数据,如密码、私钥等数据,就要用到secret类型。

​ secret可选参数:

​ 1、generic:通用类型,通常用于存储密码数据

​ 2、tls:用于存储私钥和证书

​ 3、docker-registry:保存docker仓库的认证信息

​ secret的类型:

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

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

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

kubectl create secret generic password --from-literal=password=1qaz\!QAZ
[root@mast01 secret]# kubectl get secret
NAME                   TYPE                             DATA   AGE
password               Opaque                           1      35s
[root@mast01 secret]# kubectl describe secret password
Name:         password
Namespace:    default
Labels:       <none>
Annotations:  <none>Type:  OpaqueData
====
password:  8 bytes

​ 使用secret的两种方式:

​ 1、通过环境变量

# 创建pod,加载将secret加载到环境变量
vi pod-secret.yaml 
kind: Pod
metadata:name: pod-cm
spec:containers:- name: busyboximage: 172.16.80.140/busybox/busybox:latestcommand: [ "/bin/sh", "-c", "sleep 3600" ]env:- name: PASSWORD        #定义环境变量valueFrom:secretKeyRef:name: password    #指定secret的名字key:  password    #指定secret中的keyrestartPolicy: Never[root@mast01 secret]# kubectl get pods -owide
NAME                               READY   STATUS    RESTARTS   AGE   IP               NODE     NOMINATED NODE   READINESS GATES
nfs-provisioner-7559c6b4fc-nbmb6   1/1     Running   0          93m   10.244.140.65    node02   <none>           <none>
pod-cm                             1/1     Running   0          47s   10.244.196.130   node01   <none>           <none>
[root@mast01 secret]# kubectl exec -it pod-cm -- /bin/sh
/ # env
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.96.0.1:443
HOSTNAME=pod-cm
SHLVL=1
HOME=/root
TERM=xterm
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_HOST=10.96.0.1
PWD=/
PASSWORD=1qaz!QAZ        # 加载secret到环境变量,直接明文,不安全

​ 2、通过volume挂载

# 创建pod,加载将secret加载到环境变量
vi pod-secret-volume.yaml 
apiVersion: v1
kind: Pod
metadata:name: pod-secret
spec:containers:- name: busyboximage: 172.16.80.140/busybox/busybox:latestcommand: [ "/bin/sh", "-c", "sleep 3600" ]volumeMounts:- name: secret-volumemountPath: /etc/secretreadOnly: truevolumes:- name: secret-volumesecret:secretName: passwordrestartPolicy: Never[root@mast01 secret]# kubectl get pods -owide
NAME                               READY   STATUS    RESTARTS   AGE    IP               NODE     NOMINATED NODE   READINESS GATES
nfs-provisioner-7559c6b4fc-nbmb6   1/1     Running   0          107m   10.244.140.65    node02   <none>           <none>
pod-secret                         1/1     Running   0          7s     10.244.196.132   node01   <none>           <none>
[root@mast01 secret]# kubectl exec -it pod-secret -- /bin/sh
/ # cd /etc/secret
/etc/secret # ls
password
/etc/secret # cat password
1qaz!QAZ/etc/secret #           # 明文密码,不安全

http://www.ppmy.cn/server/175695.html

相关文章

STM32 —— MCU、MPU、ARM、FPGA、DSP

在嵌入式系统中&#xff0c;MCU、MPU、ARM、FPGA和DSP是核心组件&#xff0c;各自在架构、功能和应用场景上有显著差异。以下从专业角度详细解析这些概念&#xff1a; 一、 MCU&#xff08;Microcontroller Unit&#xff0c;微控制器单元&#xff09; 核心定义 集成系统芯片&a…

Ubuntu 22.04 无法进入图形界面的解决方法

Ubuntu 22.04 无法进入图形界面&#xff0c;只能进入 tty&#xff0c;可能是由于图形界面相关的配置或驱动程序出现了问题。以下是一些常见的解决方法&#xff1a; 1. 检查图形界面服务状态 首先&#xff0c;检查图形界面服务&#xff08;通常是 gdm 或 lightdm&#xff09;的…

新手村:数据预处理-缺失值补充策略

新手村&#xff1a;数据预处理-缺失值补充策略 缺失值补充策略 策略描述适用场景优点缺点删除含有缺失值的行或列删除包含任何缺失值的行或列。当缺失值比例较小且数据量较大时。简单直接&#xff0c;不会引入新的误差。可能导致数据丢失&#xff0c;特别是在缺失值较多的情况…

Java 并发编程——Java BIO NIO Socket编程

参考Java 并发编程——Java BIO NIO Socket编程 BIO&#xff1a;阻塞式编程模型 Socket 服务端编程Socket 客户端编程 NIO&#xff1a;非阻塞式编程模型 NIO 介绍Java 中 NIO 非阻塞式与前面 BIO 阻塞式的区别Java NIO类库包含以下三个核心组件ServerSocketChannel 服务端编程…

【ES6】模块化

概述 模块功能主要有两个命令&#xff0c;export和import。 一个js文件就是一个模块。 参考视频 【一小时速通JavaScript模块化&#xff0c;涵盖CommonJS与ES6模块化-哔哩哔哩】 https://b23.tv/gZ1uK7V 导出成员 在正常变量、函数前加export关键字。 导入模块 在另一个…

探索数据交互的奥秘:深入剖析缓冲区的工作原理与应用场景

目录 1.理解“一切皆文件” 2.缓冲区 2.1 什么是缓冲区 2.2 为什么要引⼊缓冲区机制 2.3 解释一个遗留问题 2.4 缓冲类型 2.5 FILE 3.简单设计⼀下libc库 1.理解“一切皆文件” ⾸先&#xff0c;在windows中是⽂件的东西&#xff0c;它们在linux中也是文件&#xff1b;其…

Linux系统移植篇(二)Uboot 顶层 Makefile 解析

在之前的文章&#xff0c;我们经过编译&#xff0c;配置工具链&#xff0c;编译好了uboot的内容&#xff0c;呈现的工程结构如下所示&#xff1b; 具体的内容作用也就不做过多的解析了&#xff0c;读者可以根据内容单个去查。 在阅读 uboot 源码之前&#xff0c;肯定是要先看一…

Carto 无尽旅图 for Mac v1.0.7.6 (51528)冒险解谜游戏 支持M、Intel芯片

游戏介绍 《Carto》源于英文"Cartographer"&#xff08;制图师&#xff09;&#xff0c;卡朵不慎坠入未知世界。这里蜿蜒曲折&#xff0c;地形丰富。作为制图师卡朵&#xff0c;你将用你自己的神秘力量&#xff0c;操纵地图颠覆世界&#xff0c;将其翻转、拼合。当世…