k8s - Secret实践练习

参考文档:https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/

这个和ConfigMap很相似,这里选两个做下测试,就不过多赘述了

简介

Secret 类似于 ConfigMap 但专门用于保存机密数据。

Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Secret 意味着你不需要在应用程序代码中包含机密数据。

默认情况下,Kubernetes Secret 未加密地存储在 API 服务器的底层数据存储(etcd)中。 任何拥有 API 访问权限的人都可以检索或修改 Secret,任何有权访问 etcd 的人也可以。 此外,任何有权限在命名空间中创建 Pod 的人都可以使用该访问权限读取该命名空间中的任何 Secret; 这包括间接访问,例如创建 Deployment 的能力。
为了安全地使用 Secret,请至少执行以下步骤:

  1. 为 Secret 启用静态加密。
  2. 以最小特权访问 Secret 并启用或配置 RBAC 规则。
  3. 限制 Secret 对特定容器的访问。
  4. 考虑使用外部 Secret 存储驱动。
    有关管理和提升 Secret 安全性的指南,请参阅 Kubernetes Secret 良好实践。

Secret的资源类型

内置类型用法
Opaque用户定义的任意数据
kubernetes.io/service-account-token服务账号令牌
kubernetes.io/dockercfg~/.dockercfg
文件的序列化形式
kubernetes.io/dockerconfigjson~/.docker/config.json
文件的序列化形式
kubernetes.io/basic-auth用于基本身份认证的凭据
kubernetes.io/ssh-auth用于 SSH 身份认证的凭据
kubernetes.io/tls用于 TLS 客户端或者服务器端的数据
bootstrap.kubernetes.io/token启动引导令牌数据

可选类型参数

● generic: 通用类型
● tls:此类型仅用于存储私钥和证书
● docker-registry: 保存docker 仓库的认证信息

使用场景

● 设置容器的环境变量。
● 向 Pod 提供 SSH 密钥或密码等凭据。
● 允许 kubelet 从私有镜像仓库中拉取镜像。

Secret的使用

创建 Secret 有以下几种可选方式:
● 使用kubectl
● 使用配置文件
● 使用 Kustomize 工具

当你在 Pod 中引用 Secret 时,你可以将该 Secret 标记为可选,就像下面例子中所展示的那样。 如果可选的 Secret 不存在,Kubernetes 将忽略它。
例如:

apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: mypodimage: redisvolumeMounts:- name: foomountPath: "/etc/foo"readOnly: truevolumes:- name: foosecret:secretName: mysecretoptional: true

使用 kubectl 编辑 Secret

#这将打开默认编辑器,并允许你更新 data 字段中的 base64 编码的 Secret 值
kubectl edit secrets <secret-name>#请编辑下面的对象。以“#”开头的行将被忽略,
#空文件将中止编辑。如果在保存此文件时发生错误,
#则将重新打开该文件并显示相关的失败。
apiVersion: v1
data:password: UyFCXCpkJHpEc2I9username: YWRtaW4=
kind: Secret
metadata:creationTimestamp: "2022-06-28T17:44:13Z"name: db-user-passnamespace: defaultresourceVersion: "12708504"uid: 91becd59-78fa-4c85-823f-6d44436242ac
type: Opaque#清理
kubectl delete secret db-user-pass

在 Pod 以文件形式使用 Secret

让 Kubernetes 将该 Secret 的值以 文件的形式呈现,该文件存在于 Pod 中一个或多个容器内的文件系统内。

创建一个可以通过卷访问 Secret 数据的 Pod。

#创建Secret - 和ConfigMap使用方式是不是很像?就中间加了个类型 generic/docker-registry/...
kubectl create secret generic test-secret --from-literal='username=my-app' --from-literal='password=39528$vdg7Jb'#pods/inject/secret-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: secret-test-pod
spec:containers:- name: test-containerimage: nginxvolumeMounts:# name 必须与下面的卷名匹配- name: secret-volumemountPath: /etc/secret-volumereadOnly: true# Secret 数据通过一个卷暴露给该 Pod 中的容器volumes:- name: secret-volumesecret:secretName: test-secret#创建 Pod
kubectl apply -f https://k8s.io/examples/pods/inject/secret-pod.yaml#确认 Pod 正在运行
kubectl get pod secret-test-pod#获取一个 Shell 进入 Pod 中运行的容器
kubectl exec -i -t secret-test-pod -- /bin/bash#Secret 数据通过挂载在 /etc/secret-volume 目录下的卷暴露在容器中。
#在 Shell 中,列举 /etc/secret-volume 目录下的文件:
#在容器中 Shell 运行下面命令
ls /etc/secret-volume#在 Shell 中,显示 username 和 password 文件的内容:
#在容器中 Shell 运行下面命令
echo "$( cat /etc/secret-volume/username )"
echo "$( cat /etc/secret-volume/password )"

在这里插入图片描述

使用 Secret 数据定义容器变量

在这里插入图片描述
好,貌似中间件的账户密码什么的,是不是都可以这样玩儿了?

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

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

相关文章

qt creator自动运行单元测试

qt creator自动运行单元测试 工具-选项-Testing-General&#xff0c;找到Automatically run&#xff0c;选项卡选择All。

[C语言]-基础知识点梳理-编译、链接、预处理

前言 各位师傅大家好&#xff0c;我是qmx_07,今天来给大家讲解以下程序运行会经历哪些事情 翻译环境和运⾏环境 在ANSIC的任何⼀种实现中&#xff0c;存在两个不同的环境 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执⾏的机器指令&#xff08;⼆进制指令&a…

Linux下opencv报错 undefined reference to cv::imread cv::Mat

如果你是和libtorch一起使用&#xff0c;那么请你继续&#xff0c;否则该篇文章不适合你。 正文 在https://pytorch.org/下 下载的时候要选择Cxx11 ABI版 随后正常配置就可以了

Langchain-Chatchat

模型能力定制 微调 智能设备 微调 响应有要求 微调 动态数据 RAG 幻觉 RAG 可解释性 RAG 成本 RAG 依赖生成能力 微调 微调需要几万、几十万条好的数据&#xff0c;否者白调&#xff0c;所以是否需要微调&#xff0c;需要视情况而定。 RAG的落地&#xff0c;可以使用 https:/…

wangeditor编辑器自定义按钮和节点,上传word转换html,文本替换

vue3ts 需求&#xff1a;在编辑器插入图片和视频时下方会有一个输入框填写描述&#xff0c;上传word功能 wangeditor文档wangEditor开源 Web 富文本编辑器&#xff0c;开箱即用&#xff0c;配置简单https://www.wangeditor.com/ 安装&#xff1a;npm install wangeditor/edit…

Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门班-task1

机器学习就是去拟合一种函数&#xff0c;它可能在高维上&#xff0c;十分抽象&#xff0c;但是却可以有丰富的语义含义&#xff0c;从而完成一系列任务 回归任务是预测一个准确的值&#xff0c;例如拟合一条直线的时候&#xff0c;我们希望每一个点的值都能对应上 分类任务则…

java多线程(六)关键字Volatile可见性、有序性以及单个变量的原子性

volatile关键字 作用 volatile 是 Java 虚拟机提供的轻量级的同步机制&#xff0c;主要用来确保变量被线程安全地读取和写入。 当一个变量定义为 volatile 后&#xff0c;它具备以下特性&#xff1a; 可见性&#xff1a;确保不同线程对这个变量操作的可见性&#xff0c;即一…

深入学习SQL优化的第三天

目录 聚合函数 排序和分组 聚合函数 1251. 平均售价 表&#xff1a;Prices------------------------ | Column Name | Type | ------------------------ | product_id | int | | start_date | date | | end_date | date | | price | int …

K8S - Java微服务配置 - 使用ConfigMap配置redis

参考文档&#xff1a;https://v1-27.docs.kubernetes.io/zh-cn/docs/tutorials/configuration/configure-redis-using-configmap/ cat <<EOF >./example-redis-config.yaml apiVersion: v1 kind: ConfigMap metadata:name: example-redis-config data:redis-config: …

“解决Windows电脑无法投影到其他屏幕的问题:尝试更新驱动程序或更换视频卡“

目录 背景: 解决方法1: 解决方法2: 什么是驱动程序&#xff1a; 背景: 今天在日常的工作中&#xff0c; 我想将笔记本分屏到另一个显示屏&#xff0c;我这电脑Windows10系统&#xff0c;当我按下Windows键P键&#xff0c;屏幕信息上提示我"你的电脑不能投影到其他屏幕…

C++:继承(protected、隐藏、不能被继承的类、)

目录 继承的概念 继承的使用 继承方式 protected 继承类模板 赋值兼容转换 隐藏 子类的默认成员函数 构造函数 拷贝构造函数 赋值重载函数 析构函数 不能被继承的类 方法1&#xff1a;父类的构造函数私有 方法2&#xff1a;final 继承与友元 继承与静态成员 …

Redis 键值型数据库

一、Redis是什么 Redis&#xff1a;REmote DIctionary Server&#xff08;远程字典服务器&#xff09; 是完全开源免费的&#xff0c;用C语言编写的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的&#xff08;Key/Value&#xff09;分布式内存数据 库&#xff0c;基于内存…

tcp 和udp通信

一.recvfrom recvfrom函数是一个系统调用&#xff0c;用于从套接字接收数据。该函数通常与无连接的数据报服务&#xff08;如 UDP&#xff09;一起使用&#xff0c;但也可以与其他类型的套接字使用。与简单的 recv() 函数不同&#xff0c;recvfrom() 可以返回数据来源的地址信息…

FreeRTOS学习:内存管理

FreeRTOS内存管理简介 在使用 FreeRTOS 创建任务、队列、信号量等对象的时候&#xff0c; FreeRTOS 一般都提供了两种方法&#xff0c; 动态方法创建&#xff1a;自动地从 FreeRTOS 管理的内存堆中申请所创建对象所需的内存&#xff0c;在对象被删除后&#xff0c;又可以将这…

Vue3开始

1.创建 Vue3 工程 1.基于 vue-cli创建 2.基于vite创建工程 Home | Vite中文网 (vitejs.cn) nodejs 环境可以 使用 nvm 来管理 nodejs 的版本 3.开始创建 4.目录结构 5.创建完 执行 安装依赖 npm i 6.运行项目 为什么命令是 dev 就是从这里配置的 npm run dev

大白话社融中M1和M2的学习笔记

一、背景 为什么我看社融数据呢&#xff1f;因为作为一个码农&#xff0c;我不清楚当前个人所处的样本情况是否真实。我所处的环境是在深圳南山&#xff0c;身边一些同事有不少找工作不怎么顺利&#xff0c;我所在的公司今年也没招大学生了&#xff0c;人员也只出不进为主&…

本地生活服务商系统如何利用本地推获得更多曝光?

随着本地生活赛道中的竞争愈演愈烈&#xff0c;越来越多的本地生活服务商和本地生活商家开始计划着通过在本地推等平台投放相关信息&#xff0c;以提高品牌店铺的曝光量和知名度。不过&#xff0c;就目前的情况来看&#xff0c;绝大多数人都陷入了一种“投入多&#xff0c;转化…

教育部-华为产学合作协同育人项目 | 仓颉编程语言专项

为响应《教育部高等教育司关于调整产学合作协同育人项目运行模式及征集2024年产学合作协同育人项目的通知》号召&#xff0c;华为公司2024年第二批70个项目已发布&#xff0c;其中仓颉编程语言领域共计10个项目&#xff0c;如下所示&#xff0c;通过新工科建设项目&#xff0c;…

U盘安装Ubuntu24.04,乌邦图,UltralISO

文章目录 前言通过UltraISO&#xff0c;制作启动U盘下载镜像制作工具UltraISO(软碟通)下载ubuntu镜像文件制作启动U盘 安装ubuntu设置root密码&#xff0c;并登陆root 前言 在Ubuntu作为主流的linux系统&#xff0c;有时候使用VMware安装使用&#xff0c;总归有一定的性能损耗…

力扣每日一题 数组最后一个元素的最小值 位运算

Problem: 3133. 数组最后一个元素的最小值 &#x1f468;‍&#x1f3eb; 灵神题解 class Solution {public long minEnd(int n, int x) {n--; // 先把 n 减一&#xff0c;这样下面讨论的 n 就是原来的 n-1long ans x;int i 0;int j 0;while((n >> j) > 0){// …