管理Secrets

news2024/11/16 1:56:35

使用 kubectl 管理 Secret

在这里插入图片描述

创建 Secret

Secret 对象用来存储敏感数据,如 Pod 用于访问服务的凭据。例如,为访问数据库,你可能需要一个 Secret 来存储所需的用户名及密码。

使用原始数据

kubectl create secret generic db-user-pass \
    --from-literal=username=admin \
    --from-literal=password='admin12345'
    
    

出现如下提示:

secret/db-user-pass created

使用源文件

  • 将凭据保存到文件:

    root@k8s-master:~# echo -n 'admin' > ./username.txt
    root@k8s-master:~# echo -n 'admin12345' > ./password.txt
    
    

    -n 标志用来确保生成文件的文末没有多余的换行符。

  • kubectl 命令中传递文件路径:

    kubectl create secret generic db-user-pass \
        --from-file=./username.txt \
        --from-file=./password.txt
    
    

    默认键名为文件名。你也可以通过 --from-file=[key=]source 设置键名,例如:

kubectl create secret generic db-user-pass \
    --from-file=username=./username.txt \
    --from-file=password=./password.txt

验证 Secret

root@k8s-master:~# kubectl get secrets | grep db-user-pass
db-user-pass                         Opaque                                2      14m

查看Secret细节:

root@k8s-master:~# kubectl describe secrets db-user-pass
Name:         db-user-pass
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password:  10 bytes
username:  5 bytes

解码 Secret

  • 查看你所创建的 Secret 内容

    root@k8s-master:~# kubectl get secrets db-user-pass -o jsonpath='{.data}'
    {"password":"YWRtaW4xMjM0NQ==","username":"YWRtaW4="}
    
  • 解码数据

    root@k8s-master:~# echo YWRtaW4xMjM0NQ== | base64 --decode
    admin12345
    
    root@k8s-master:~# kubectl get secrets db-user-pass -o jsonpath='{.data.password}' | base64 --decode
    admin12345
    

编辑 Secret

root@k8s-master:~# kubectl edit secrets db-user-pass

你可以编辑一个现存的 Secret 对象, 要想编辑一个 Secret,请使用上方命令,会出现下方内容,允许更新data字段中base64编码

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  password: YWRtaW4xMjM0NQ==
  username: YWRtaW4=
kind: Secret
metadata:
  creationTimestamp: "2023-10-24T05:51:45Z"
  name: db-user-pass
  namespace: default
  resourceVersion: "35866"
  uid: 7fe861f4-2062-49a5-8e76-44a67e0dd014
type: Opaque
~

清除Secret

root@k8s-master:~# kubectl delete secrets db-user-pass
secret "db-user-pass" deleted

使用配置文件管理 Secret

创建 Secret

你可以先用 JSON 或 YAML 格式在一个清单文件中定义 Secret 对象,然后创建该对象。 Secret 资源包含 2 个键值对:datastringDatadata 字段用来存储 base64 编码的任意数据。 提供 stringData 字段是为了方便,它允许 Secret 使用未编码的字符串。 datastringData 的键必须由字母、数字、-_. 组成。

以下示例使用 data 字段在 Secret 中存储两个字符串:

  • 将字符串变为base64:

    root@k8s-master:~# echo -n 'admin' | base64
    YWRtaW4=
    root@k8s-master:~# echo -n 'kubernetes' | base64
    a3ViZXJuZXRlcw==
    
    
  • 创建清单:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    type: Opaque
    data:
      username: YWRtaW4=
      password: a3ViZXJuZXRlcw==
    
  • 创建

    root@k8s-master:~# vim secret.yml
    root@k8s-master:~# kubectl apply -f secret.yml
    secret/mysecret created
    
    

创建 Secret 时提供未编码的数据

对于某些场景,你可能希望使用 stringData 字段。 这个字段可以将一个非 base64 编码的字符串直接放入 Secret 中, 当创建或更新该 Secret 时,此字段将被编码。

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
stringData:
  config.yaml: |
    url: "www.baidu.com"
    username: admin
    password: kubernetes

查看刚刚创建的secret:

root@k8s-master:~# kubectl get secrets mysecret -o yaml
apiVersion: v1
data:
  config.yaml: dXJsOiAid3d3LmJhaWR1LmNvbSIKdXNlcm5hbWU6IGFkbWluCnBhc3N3b3JkOiBrdWJlcm5ldGVzCg==
kind: Secret
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Secret","metadata":{"annotations":{},"name":"mysecret","namespace":"default"},"string                                      Data":{"config.yaml":"url: \"www.baidu.com\"\nusername: admin\npassword: kubernetes\n"},"type":"Opaque"}
  creationTimestamp: "2023-10-24T06:43:02Z"
  name: mysecret
  namespace: default
  resourceVersion: "42840"
  uid: 70127ec6-354f-4814-8f38-455fbdc31f18
type: Opaque

同时指定 datastringData

如果你在 datastringData 中设置了同一个字段,则使用来自 stringData 中的值。

例如,如果你定义以下 Secret:

root@k8s-master:~# kubectl get secrets mysecret -o yaml
apiVersion: v1
data:
  username: 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-24T07:05:00Z"
  name: mysecret
  namespace: default
  resourceVersion: "44348"
  uid: 764d2424-40e2-4a30-a14d-bbee4831e791
type: Opaque

解码为:

root@k8s-master:~# echo YWRtaW5pc3RyYXRvcg== | base64 --decode
administrator

使用 Kustomize 管理 Secret

kubectl 支持使用 Kustomize 对象管理工具来管理 Secret 和 ConfigMap。你可以使用 Kustomize 创建资源生成器(Resource Generator), 该生成器会生成一个 Secret,让你能够通过 kubectl 应用到 API 服务器

创建 Secret

secretGenerator:
- name: database-creds
  literals:
  - username=admin
  - password=1f2d1e2e67df

在所有情况下,你都不需要对取值作 base64 编码。 YAML 文件的名称必须kustomization.yamlkustomization.yml

root@k8s-master:~# vim kustomization.yaml
root@k8s-master:~# kubectl apply -k ./
secret/database-creds-bkbd782d2c created

查看:

root@k8s-master:~# kubectl get -k ./ -o jsonpath='{.data}'
{"password":"MWYyZDFlMmU2N2Rm","username":"YWRtaW4="}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【字符串】【将字符数组转为字符串】Leetcode 122 路径加密

【将字符数组转为字符串】Leetcode 122 路径加密 解法1 在Java中&#xff0c;char数组没有直接的toString()方法来将其转换为字符串。如果你想将char数组转换为字符串&#xff0c;可以使用String类的构造函数来实现&#xff1a; ⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐…

使用vue3 搭建一个H5手机端访问的项目

首先说明&#xff0c;我本地之前运行过vue的项目&#xff0c;所以具有一些基础的运行环境&#xff0c;这里直接按步骤讲我项目框架搭建的过程。 这个不建议使用驼峰&#xff0c;按规范单词中间加横杠就可以。一般会出现选择项&#xff0c;按方向键选择&#xff0c;我这边选择了…

MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)

目标检测模型性能衡量指标、MS COCO 数据集的评价标准以及不同指标的选择推荐 0. 引言 0.1 COCO 数据集评价指标 目标检测模型通过 pycocotools 在验证集上会得到 COCO 的评价列表&#xff0c;具体参数的含义是什么呢&#xff1f; 0.2 目标检测领域常用的公开数据集 PASCAL …

【23真题】招600+,太火爆!题目略难!快来挑战!

今天分享的是23年重庆邮电大学801的信号与系统试题及解析。 本套试难度分析&#xff1a;22年重庆邮电大学801考研真题我也发布过&#xff0c;如有需要戳这里自取&#xff01;本套试题内容难度中等偏上&#xff0c;没有选择计算题&#xff0c;涉及的知识点较多&#xff0c;题量…

干洗店软件,洗鞋店软件小程序,洗衣收银系统,洗衣工厂系统;

洗衣洗鞋店软件功能介绍: 预约上门收衣智能提醒&#xff0b;员工手机抢单&#xff0b;地图导航&#xff0b;拍照同步上传 智能通知会员&#xff0c;消费通知&#xff0b;取衣通知&#xff0b;衣物到期提醒&#xff0b;消费提醒&#xff0b;取衣提醒 快速完成订单&#xff0c…

esp32-S3 + visual studio code 开发环境搭建

一、首先在下面链接网页中下载esp-idf v5.1.1离线安装包 &#xff0c;并安装到指定位置。dl.espressif.cn/dl/esp-idf/https://dl.espressif.cn/dl/esp-idf/ 安装过程中会提示需要长路径支持&#xff0c;所以windows系统需要开启长路径使能 Step 1&#xff1a; 打开运行&…

Jenkins部署失败:no space left on device

Jenkins部署到最后一步时报错&#xff1a;no space left on device&#xff0c;没有可用的空间使用了。 查看磁盘空间使用情况&#xff1a; df -h发现/home/data路径空间已经使用100%。 排查此路径下存在哪些大文件。 //查看系统中文件的使用情况 df -h -T //查看当前目录下各…

众和策略可靠吗?中国资产,一夜狂飙!

可靠 当地时间10月24日&#xff0c;美股三大股指收高&#xff0c;其间道指涨0.62%&#xff0c;接连四个生意日下跌之后反弹&#xff0c;标普指数涨0.73%&#xff0c;纳斯达克指数涨0.93%。 10年期美国国债收益率小幅下滑。可口可乐等公司的财报表现弱小。美10月企业活动加速&…

Dynamics 365 重写自带按钮

必备工具&#xff1a;Ribbon Workbench 步骤&#xff1a; 1、查看默认按钮使用的方法名称 右键按钮选择自定义命令(Customise Command)&#xff0c;然后查看command使用的命令 2、在前台chrome浏览器中搜索对应的命令&#xff0c;查看命令细节 3、基于命令细节新建command&am…

c语言进制的转换16进制转换2进制

c语言进制的转换16进制转换2进制 c语言的进制的转换 c语言进制的转换16进制转换2进制一、16进制的介绍二、八四二一法则三、16进制转换2进制 一、16进制的介绍 十六进制&#xff1a; 十六进制逢十六进一&#xff0c;所有的数组是0到9和A到F组成&#xff0c;其中A代表10&#x…

当我们说“架构”的时候,我们在说什么?---解读《ISO/IEC/IEEE 42010》国际标准

当我们说“架构”的时候&#xff0c;你想到的是什么&#xff1f; 程序员听到“架构”的时候&#xff0c;想到的是SSH、SSM三层架构&#xff0c;或者是SOA架构&#xff0c;或者是微服务架构等。 人力资源专业人员听到架构的时候想到可能是企业组织架构。 几乎每个行业专业都会…

[Unity]给场景中的3D字体TextMesh增加描边方案二

如图所示仅支持图片内的/*数字 下面是资源

8.(vue3.x+vite)组件间通信方式之window挂实例

前端技术社区总目录(订阅之前请先查看该博客) 效果预览 父组件代码 <template><div><div>{{message }}</div><Child

66 跳跃游戏

跳跃游戏 题解1 贪心题解2 DP&#xff08;超时, 但思路应该对&#xff09; 给你一个非负整数数组 nums&#xff0c;你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 …

打出「智驾之王」,小鹏1024科技日为什么这么敢?

作者 | 张祥威 编辑 | 德新 今年小鹏1024科技日&#xff0c;硬核的点很多&#xff0c;比如&#xff1a; 新一代XNet 2.0感知架构、下一代智能座舱系统天玑、分体式飞行汽车等等。 最硬核的&#xff0c;是小鹏的下一代智能驾驶整体能力。以及何小鹏再次明确&#xff0c;要兑…

导致爬虫无法使用的原因有哪些?

随着互联网的普及和发展&#xff0c;爬虫技术也越来越多地被应用到各个领域。然而&#xff0c;在实际使用中&#xff0c;爬虫可能会遇到各种问题导致无法正常工作。本文将探讨导致爬虫无法使用的原因&#xff0c;并给出相应的解决方法。 一、目标网站反爬虫机制 许多网站为了…

ASP.NET Core3.1 API 创建(Swagger配置、数据库连接Sql Server)、开发、部署

文章目录 创建项目点击Nuget安装包删除原有controllers编辑新建controll、添加注释Startup 注册Swagger服务使用swagger中间件配置XML注释更改启动端口 launchsettings.json在startup.cs跨域处理运行 数据库设计与连接安装库新建类继承框架根据数据库表设计对应设计类在DataCon…

AIGC时代 浪潮信息积极推动存储产品创新

近几年&#xff0c;AIGC的兴起&#xff0c;进一步驱动了全闪、混闪等存储产品的创新&#xff0c;也为市场带来了新的机遇&#xff0c;对于厂家而言&#xff0c;也需要升级存储产品的容量、性能及功能&#xff0c;方能满足场景诉求。对此&#xff0c;浪潮信息面向AIGC应用场景打…

8.2 矢量图层点要素单一符号使用一

文章目录 前言单一符号&#xff08;Single symbol&#xff09;渲染简单标记(Simple Marker)QGis代码实现 SVG标记&#xff08;SVG marker&#xff09;QGis代码实现 总结 前言 上一篇教程对矢量图层符号化做了一个整体介绍&#xff0c;并以点图层为例介绍了可以使用的渲染器&am…

解决org.quartz.SchedulerException: Job threw an unhandled exception.

文章目录 1. 复现错误2. 分析错误3. 解决问题3.1 解决方法一3.2 解决方法二 4. 分析spring中的jdk和cglib的动态代理4.1 动态代理对比4.2 原理区别4.3 性能区别4.4 各自局限4.5 静态代理和动态的本质区别 1. 复现错误 今天在执行quartz定时任务时&#xff0c;报出如下错误&…