创建Secret(手动)
和创建其他类型的 API 对象(Pod、Deployment、StatefulSet、ConfigMap 等)一样,您也可以先在 yaml 文件中定义好 Secret,然后通过 kubectl apply -f
命令创建。此时,您可以通过如下两种方式在 yaml 文件中定义 Secret:
- data:使用 data 字段时,取值的内容必须是 base64 编码的
- stringData:使用 stringData 时,更为方便,您可以直接将取值以明文的方式写在 yaml 文件中
在 yaml 中定义 data
-
假设您要保存假设您要保存
username=admin
和password=1f2d1e2e67df
到 Secret 中,请先将数据的值转化为 base64 编码,执行如下命令:echo -n 'admin' | base64 YWRtaW4= echo -n '1f2d1e2e67df' | base64 MWYyZDFlMmU2N2Rm
-
创建 secret.yaml 文件,内容如下所示:
apiVersion: v1 kind: Secret metadata:name: mysecret type: Opaque data:username: YWRtaW4=password: MWYyZDFlMmU2N2Rm
-
执行命令
kubectl apply -f ./secret.yaml
输出结果如下所示:
secret/mysecret created
此时 Secret 创建成功
在 yaml 中定义 stringData
有时,您并不想先将用户名和密码转换为 base64 编码之后再创建 Secret,则,您可以通过定义 stringData 来达成,此时 stringData 中的取值部分将被 apiserver 自动进行 base64 编码之后再保存。
- 创建文件 secret1.yaml,内容如下所示:
apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
stringData:username: adminpassword: 1f2d1e2e67df
执行命令 kubectl apply -f ./secret1.yaml
输出结果如下所示:
secret/mysecret configured
此时 Secret 创建成功
执行命令 kubectl get -f ./secret1.yaml -o yaml
输出结果如下所示:
apiVersion: v1
data:password: MWYyZDFlMmU2N2Rmusername: YWRtaW4=
kind: Secret
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"v1","kind":"Secret","metadata":{"annotations":{},"name":"mysecret","namespace":"default"},"stringData":{"password":"1f2d1e2e67df","username":"admin"},"type":"Opaque"}creationTimestamp: "2023-10-24T15:20:19Z"name: mysecretnamespace: defaultresourceVersion: "53720198"uid: 14321f8d-630a-4dbb-a920-b5791db67d1f
type: Opaque
- 此时 annotation 中可以看到 password 的明文,这也许并不是您所期望的
- 输出的 Secret 对象中,stringData 字段不再出现
同时定义了 data 和 stringData
如果您同时定义了 data 和 stringData,对于两个对象中 key 重复的字段,最终将采纳 stringData 中的 value
-
创建文件 secret2.yaml,该文件同时定义了 data 和 stringData,内容如下所示:
apiVersion: v1 kind: Secret metadata:name: mysecret type: Opaque data:username: YWRtaW4= stringData:username: administrator
-
执行命令
kubectl apply -f ./secret2.yaml
输出结果如下所示:secret/mysecret configured
此时 Secret 创建成功
-
执行命令
kubectl get -f ./secret2.yaml -o yaml
输出结果如下所示:apiVersion: v1 data:password: MWYyZDFlMmU2N2Rmusername: YWRtaW5pc3RyYXRvcg== kind: Secret metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"v1","data":{"username":"YWRtaW4="},"kind":"Secret","metadata":{"annotations":{},"name":"mysecret","namespace":"default"},"stringData":{"username":"administrator"},"type":"Opaque"}creationTimestamp: "2023-10-24T15:20:19Z"name: mysecretnamespace: defaultresourceVersion: "53720952"uid: 14321f8d-630a-4dbb-a920-b5791db67d1f type: Opaque
此处
YWRtaW5pc3RyYXRvcg==
解码后的值是administrator
将配置文件存入 Secret
假设您的某个应用程序需要从一个配置文件中读取敏感信息,此时,您可以将该文件的内容存入 Secret,再通过数据卷的形式挂载到容器。[挂载方式未完待续]
例如,您的应用程序需要读取如下配置文件内容:
apiUrl: "https://www.api.com/api/v1"
username: user
password: password
您可以使用下面的 secret3.yaml 创建 Secret
apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
stringData:config.yaml: |-apiUrl: "https://www.api.com/api/v1"username: userpassword: password
执行命令 kubectl apply -f ./secret3.yaml
输出结果如下所示:
secret/mysecret configured
此时 Secret 创建成功
- 执行命令
kubectl get -f ./secret3.yaml -o yaml
输出结果如下所示:
apiVersion: v1
data:config.yaml: YXBpVXJsOiAiaHR0cHM6Ly93d3cuYXBpLmNvbS9hcGkvdjEiCnVzZXJuYW1lOiB1c2VyCnBhc3N3b3JkOiBwYXNzd29yZA==
kind: Secret
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"v1","kind":"Secret","metadata":{"annotations":{},"name":"mysecret","namespace":"default"},"stringData":{"config.yaml":"apiUrl: \"https://www.api.com/api/v1\"\nusername: user\npassword: password"},"type":"Opaque"}creationTimestamp: "2023-10-24T15:20:19Z"name: mysecretnamespace: defaultresourceVersion: "53721752"uid: 14321f8d-630a-4dbb-a920-b5791db67d1f
type: Opaque
相关文章:
创建Secret(手动)
和创建其他类型的 API 对象(Pod、Deployment、StatefulSet、ConfigMap 等)一样,您也可以先在 yaml 文件中定义好 Secret,然后通过 kubectl apply -f 命令创建。此时,您可以通过如下两种方式在 yaml 文件中定义 Secret&…...

基于PHP的线上购物商城,MySQL数据库,PHPstudy,原生PHP,前台用户+后台管理,完美运行,有一万五千字论文。
目录 演示视频 基本介绍 论文截图 功能结构 系统截图 演示视频 基本介绍 基于PHP的线上购物商城,MySQL数据库,PHPstudy,原生PHP,前台用户后台管理,完美运行,有一万五千字论文。 现如今,购物网站是商业…...
Lua 事件触发机制(注册,触发)
日常工作中经常会用到触发机制,这里就提供一个注册触发机制,在代码中在也不用专门去调用各个模块的接口;只需要触发即可,触发后会自动调用接口 直接上代码 local _EventHandle {}; _EventHandle.listenerHandleIndex 0 _EventH…...
c++ 并发与多线程(12)线程安全的单例模式-1
一、什么是线程安全 在拥有共享数据的多条数据并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。 二、如何保证线程安全 法1、给共享的资源加把锁,保证每个资源变量每时每刻至多被一个线程占用; 法2、让线…...
Python学习笔记--迭代
一、迭代 什么叫做迭代? 比如在 Java 中,我们通过 List 集合的下标来遍历 List 集合中的元素,在 Python 中,给定一个 list 或 tuple,我们可以通过 for 循环来遍历这个 list 或 tuple ,这种遍历就是迭代。…...

idea免费插件分享
分享一些在开发中常用到的idea插件,都是一些我自己常用的,希望对各位程序员有帮助吧。 1、Chinese Language 汉化插件:中文语言包将为您的 IntelliJ IDEA, AppCode, CLion, DataGrip, GoLand, PyCharm, PhpStorm, RubyMine, WebStorm, 和Rid…...

Pytorch使用torch.utils.data.random_split拆分数据集,拆分后的数据集状况
对于这个API,我最开始的预想是从 猫1猫2猫3猫4狗1狗2狗3狗4 中分割出 猫1猫2狗4狗1 和 猫4猫3狗2狗3 ,但是打印结果和我预想的不一样 数据集文件的存放路径如下图 测试代码如下 import torch import torchvisiontransform torchvision.transforms.Compose([torchvision.tran…...

每日一练 | 华为认证真题练习Day122
1、路由器所有的接口属于同一个广播域。 A. 对 B. 错 2、下列配置默认路由的命令中,正确的是()。 A. [Huawei]ip route-static 0.0.0.0 0.0.0.0 192.168.1.1 B. [Huawei-Serial0]ip route-static 0.0.0.0 0.0.0.0 0.0.0.0 C. [Huawei]ip…...

SQL sever中函数(2)
目录 一、函数分类及应用 1.1标量函数(Scalar Functions): 1.1.1格式 1.1.2示例 1.1.3作用 1.2表值函数(Table-Valued Functions): 1.2.1内联表值函数(Inline Table-Valued Functions&am…...

win10专业版驱动开发
我使用的系统版本如何下: 使用的visual studio为VS2019,使用的SDK,WDK如下: 在visual studio单个组件里选择SDK10.0.018362.0 在WDK里面选择版本为: 下载链接如下: 以前的 WDK 版本和其他下载 - Windows drivers | Microsoft Le…...

【JavaEE】网络编程---TCP数据报套接字编程
一、TCP数据报套接字编程 1.1 ServerSocket API ServerSocket 是创建TCP服务端Socket的API ServerSocket 构造方法: ServerSocket 方法: 1.2 Socket API Socket 是客户端Socket,或服务端中接收到客户端建立连接(accept方法&…...

用 Go 访问 MySql 数据库
所有代码样例 package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql" )var db *sql.DB// 初始化连接 func initDB() (err error) {db, err sql.Open("mysql", "root:mm..1213tcp(127.0.0.1:3306)/chapte…...

mac 升级node到指定版本
node版本14.15.1升级到最新稳定版18.18.2 mac系统 先查看一下自己的node版本 node -v开始升级 第一步 清除node的缓存 sudo npm cache clean -f第二步 安装n模块【管理模块 n是管理 nodejs版本】 sudo npm install -g n第三步升级node sudo n stable // 把当前系统的 Node…...

欢迎进QQ群讨论交流
...
C语言解决八皇后问题
八皇后问题是指在一个88的棋盘上,放置8个皇后,使得任意两个皇后都不能在同一行、同一列或同一斜线上。这是一个著名的递归问题。下面是一个C语言实现八皇后问题的代码,以及对代码的讲解。 #include <stdio.h>int board[8][8] {0}; //…...
springboot集成canal,将数据发送至接口
前置条件: mysql开启binlog日志部署canal服务 Springboot代码: 接口工具类: import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; imp…...

Selenum八种常用定位(案例解析)
Selenium是一个备受推崇的工具。它有着丰富的功能,让我们能够与网页互动,执行各种任务,能为测试工程师和开发人员提供了很大的便利。 要充分利用Selenium,就需要了解如何正确定位网页上的元素。 接下来我将带大家共同探讨Seleni…...

Web前端接入Microsoft Azure AI文本翻译
Azure 文本翻译是 Azure AI 翻译服务的一项基于云的 REST API 功能。 文本翻译 API 支持实时快速准确地进行源到目标文本翻译。 文本翻译软件开发工具包 (SDK) 是一组库和工具,可用于轻松地将文本翻译 REST API 功能集成到应用程序中。 文本翻译 SDK 可跨 C#/.NET、…...

容联七陌助力鱼跃医疗升级智能联络中心,让客户服务更“鱼跃”
在当今高度竞争的市场环境中,企业的客户服务质量对于维护品牌形象和保持竞争优势至关重要。而随着人工智能、大数据等技术快速发展,智能化客户服务正在成为各行各业发展的重要部分。 鱼跃医疗是一家致力于“用科技律动生命"的国内知名医疗制造企业…...

【Redis系列】在Centos7上安装Redis5.0保姆级教程!
哈喽, 大家好,我是小浪。那么最近也是在忙秋招,很长一段时间没有更新文章啦,最近呢也是秋招闲下来,当然秋招结果也不是很理想,嗯……这里就不多说啦,回归正题,从今天开始我们就开始正…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...