Kubernetes-Secret使用说明

【Kubernetes】k8s密码管理详细说明【secret、cm】 [root@master sec]# kubectl create secret generic mysecret1 --from-literal=password1=redhat1 --from-literal=password2=redhat2secret/mysecret1 created[root@master sec]#[root@master sec]# kubectl get secretsNAME TYPE 阅读详情

Kubernetes提供Secret资源用于解决密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。

Secret类型

  • Opaque:base64编码格式的Secret,用来存储密码、密钥等;但数据也通过base64 –decode解码得到原始数据,所有加密性很弱。
  • kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息。
  • kubernetes.io/service-account-token: 用于被serviceaccount引用。serviceaccout创建时Kubernetes会默认创建对应的secret。Pod如果使用了serviceaccount,对应的secret会自动挂载到Pod目录/run/secrets/ kubernetes.io/serviceaccount中。

常用的应用主要使用Opaque类型的Secret,本次我们主要介绍该类型

Secret的创建方式

1. 通过yaml文件创建

[root@k8s-node1 dinghh]# cat passwd-secret.yaml 
apiVersion: v1
kind: Secret
metadata:
  name: passwd-secret 
type: Opaque 
data: 
  username: dXNlcm5hbWUK
  password: cGFzc3dvcmQK

其中username和password是根据base64加密

[root@k8s-node1 dinghh]# echo username | base64
dXNlcm5hbWUK
[root@k8s-node1 dinghh]# echo password | base64
cGFzc3dvcmQK

创建secret

[root@k8s-node1 dinghh]# kubectl create -f passwd-secret.yaml 
secret/passwd-secret created

[root@k8s-node1 dinghh]# kubectl get secrets passwd-secret -oyaml
apiVersion: v1
data:
  password: cGFzc3dvcmQK
  username: dXNlcm5hbWUK
kind: Secret
metadata:
  creationTimestamp: "2019-07-02T06:20:40Z"
  name: passwd-secret
  namespace: default
  resourceVersion: "995896"
  selfLink: /api/v1/namespaces/default/secrets/passwd-secret
  uid: 83644454-9c91-11e9-ad16-fa163e17fab9
type: Opaque

可以看到通过describe secret是可以看到secret中的具体数据的,通过base64解码则可以看到原始数据

[root@k8s-node1 dinghh]# echo dXNlcm5hbWUK | base64 --decode
username
[root@k8s-node1 dinghh]# echo cGFzc3dvcmQK | base64 --decode
password

2. 通过kubectl指定配置文件等参数来创建

kubectl create secret generic

根据配置文件、目录或指定的literal-value创建secret。

secret可以保存为一个或多个key/value信息。

当基于配置文件创建secret时,key将默认为文件的基础名称,value默认为文件内容。如果基本名称的key无效,则可以指定另一个key。

当基于目录创建secret时,key还是文件的基础名称,目录中有效的key的每个文件都被打包到secret中,除了常规文件之外的任何目录条目都被忽略(例如subdirectories, symlinks, devices, pipes, etc)。

基于文件创建(更多创建方式参考:http://docs.kubernetes.org.cn/556.html)

[root@k8s-node1 dinghh]# echo username > username 
[root@k8s-node1 dinghh]# echo password > password

[root@k8s-node1 dinghh]# kubectl create secret generic test-secret --from-file=./username --from-file=./password 
secret/test-secret created

[root@k8s-node1 dinghh]# kubectl get secrets test-secret -oyaml
apiVersion: v1
data:
  password: cGFzc3dvcmQK
  username: dXNlcm5hbWUK
kind: Secret
metadata:
  creationTimestamp: "2019-07-02T06:52:47Z"
  name: test-secret
  namespace: default
  resourceVersion: "1000413"
  selfLink: /api/v1/namespaces/default/secrets/test-secret
  uid: 00824b62-9c96-11e9-ad16-fa163e17fab9
type: Opaque

可以看到指定文件创建时会自动进行base64加密

Secret的使用

1. 在文件中使用

通过volumeMount方式将secret挂载到pod容器中

创建一个pod

[root@k8s-node1 dinghh]# cat nginx.yaml 
apiVersion: v1
kind: Pod
metadata:
  labels:
    k8s-app: nginx
    version: master
  name: nginx
spec:
  containers:
  - image: nginx:master
    imagePullPolicy: IfNotPresent
    name: nginx
    ports:
    - containerPort: 80
      name: dashboard
      protocol: TCP
    resources: {}
    volumeMounts:
    - mountPath: /etc/secrets
      name: passwd-secret
      readOnly: true
  restartPolicy: Always
  volumes:
  - name: passwd-secret
    secret:
      defaultMode: 420
      secretName: passwd-secret

[root@k8s-node1 dinghh]# kubectl create -f nginx.yaml 
pod/nginx created

通过yaml可以看到通过volumeMounts方式将secret挂载到容器的/etc/secret目录

进入容器查看

[root@k8s-node1 dinghh]# kubectl create -f nginx.yaml 
pod/nginx created
[root@k8s-node1 dinghh]# kubectl exec -it nginx bash
[root@nginx /]# cd /etc/secrets/
[root@nginx secrets]# ll
total 0
lrwxrwxrwx 1 root root 15 Jul  2 15:00 password -> ..data/password
lrwxrwxrwx 1 root root 15 Jul  2 15:00 username -> ..data/username
[root@nginx secrets]# cat username 
username
[root@nginx secrets]# cat password 
password

可以看到将secret中的key作为文件名称写在指定目录下,并且文件中的内容是base64解密之后的

2. 在环境变量中使用

创建pod

[root@k8s-node1 dinghh]# cat nginx-env.yaml 
apiVersion: v1
kind: Pod
metadata:
  labels:
    k8s-app: nginx
    version: master
  name: nginx-env
spec:
  containers:
  - env:
    - name: USERNAME_ENV
      valueFrom:
        secretKeyRef:
          name: passwd-secret
          key: username
    - name: PASSWORD_ENV
      valueFrom:
        secretKeyRef:
          name: passwd-secret
          key: password
    image: 192.168.133.20:30050/kube-system/aistack-dashboard:master
    imagePullPolicy: IfNotPresent
    name: nginx
    ports:
    - containerPort: 80
      name: dashboard
      protocol: TCP
    resources: {}
  restartPolicy: Always

[root@k8s-node1 dinghh]# kubectl create -f nginx-env.yaml 
pod/nginx-env created

可以看到在该Pod中定义了两个环境变量分别引用passwd-secret中的对应的key

进入容器查看

[root@k8s-node1 dinghh]# kubectl exec -it nginx-env bash
[root@nginx-env /]# echo $USERNAME_ENV
username
[root@nginx-env /]# echo $PASSWORD_ENV
password

 

K8S实战进阶 官网文档:https://kubernetes.io/zh-cn/docs/reference/using-api/REST API 是 Kubernetes 系统的重要部分,组件之间的所有操作和通信均由 API Server 处理的 REST AP I调用,大多数情况下, API 定义和实现都符合标准的 HTTP REST 格式,可以通过kubectl命令管理工具或其他命令行工具来执行。控制管理器开启–horizontal-pod-autoscaler-use-rest-clients。 阅读详情

相关推荐

软考29-上午题-【数据结构】-排序

数据结构7种排序

qq_31532983的博客 1579

Kubernetes中Secret使用详解

Secret解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。 Secret类型 Secret有三种类型: Opaque:base64编码格式的Secret,用来存储密码、密钥等;但数据也通过base64 –decode解码得到原始数据,所有加密性很弱。 kubernetes.io/doc...

1万+

使用Power Apps实现SharePoint Online列表的下拉菜单的级联选择

在SharePoint列表中添加数据的时候,下拉菜单的级联选择一直是一个非常实用的功能,尤其是有很多数据的情况,级联选择可以根据上一层的选择,自动过滤下一层的选择,方便用户查找和选择准确的信息。一个最常用的情景是选择供应商的地区和国家,例如有三个列表,一个是供应商所在的大洲,一个是国家,一个是供应商。当用户选择州的时候,会自动列出属于这个州的国家。避免用户迷失在大量的数据中。 这里展示一下如何在...

shrenk的专栏 7809

【kubernetes系列】Kubernetes之Secret凭证

如果–service-account-key-file=未传入任何值,那么将默认使用–tls-private-key-file的值,即API Server的私钥。它们都通过mount 的方式挂载到 pod 中,其中 token 保存的路径是 /var/run/secrets/kubernetes.io/serviceaccount/token ,是 kube-controller-manager 通过–service-account-private-key-file私钥签发的token;

margu_168的博客 1558

竞赛无人机模块化开发实战:2023 TI电赛G题空地协同消防系统(飞控与视觉融合篇)

本文以2023年TI电赛G题为例,详细阐述了采用模块化开发思维构建空地协同智能消防系统的实战方法。文章重点拆解了无人机飞控二次开发、视觉识别与融合控制等核心模块,提供了硬件选型、代码实现与系统联调的完整指南,旨在帮助参赛者通过“搭积木”式编程高效完成复杂系统集成。

js777的博客 454

十年芯片资深IC设计工程师面经系列(四)SDC约束

set_driving_cell:当我们的设计是模块级(Block level)的design时,我们的设计前面一般还有其他的设计,那么前面模块的输出便是我们模块的输入,5.1set_false_path:可以单独的时钟或者路径进行约束。set drive :当我们的设计是芯片级(Chip level)的顶层设计时,芯片外围电路要驱动的是负载较大的IO单元,故需要的驱动能力较强,:set_load 是指output端口的负载,设置的值会影响输出到端口的net上的电容,从而影响相应的路径延时。

weixin_47349046的博客 1773

kubernetes存储 -- Secret配置管理

简介 ConfigMap是用来存储一些非安全的配置信息,如果涉及到一些安全相关的数据的话用ConfigMap就非常不妥了, 因为ConfigMap明文存储的,这个时候j就应该使用Secret Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 ssh key。 敏感信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活。 Pod 可以用两种方式使用 secret: 作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里。 当 kubel

thermal_life的博客 1087

生成EtherCAT从站XML图片信息方法

详细介绍了EtherCAT从站XML文件中图片元素的生成方法。

kevin1499的博客 2128

【Kubernetes】第十五篇 - Secret 对象的简介与创建

上一篇,介绍了 docker 私有镜像仓库的安装和使用;本篇,介绍 Secret 对象的创建;Secret 是 Kubernetes 中的一种资源类型,可以用来储存机密信息,如:密码,token,密钥等;信息被存入 Secret 后,可以通过挂载卷的方式挂载到 Pod 内;也可以用于存放 docker 私有镜像库的登录名和密码,用于拉取私有镜像使用;Opaque 类型;

BraveWangDev 1153

手机银行应用架构设计

网上银行借助互联网、移动通信网络等技术向客户提供金融服务,易受到通讯层面的安全威胁,金融机构应从通讯协议、安全认证、通信链路安全等层面,采取措施有效应对相关风险。网上银行系统服务器端提供网上银行应用服务和核心业务处理功能,金融机构应充分利用物理环境、通信网络、计算环境等领域的防护技术,在攻击者和受保护的资源间建立多道严密的安全防线。 网上银行除直接向用户提供金融服务外,也可能与外部机构开展业务合作。在网上银行系统设计、开发、部署和运营过程中,应充分考虑外部机构的系统可能存在的安全风险,并针对各类风险进行有效

银行信息系统应用架构详解 4830

HyperLynx仿真(一)LineSim简单介绍

可以选择设置信号线与信号线之间默认的距离和信号线与同平面的平面之间的距离,这些设置根据工程师项目上经常使用的情况而设置,也可以选择不设置,在每次仿真时根据需要再对每一个仿真单独设置。仿真属性的设置对话框包含一般设置、 显示颜色设置、LineSim 设置、BoardSim 设置、 层叠默认设置、焊盘类型设置、仿真示波器默认设置、电路仿真器默认设置、电源完整性设置及高级设置。第一次使用HyperLynx软件时需要设置仿真相关环境,包括仿真软件的基本设置、模型库路径设置、仿真控制器控制、单位等。...

小幽余生不加糖 8950

k8s 配置 Secret 集成Harbor

本篇主要 记录一下 在 k8s 中如果想要 从 harbor拉取镜像 该怎么操作,以及介绍了一下 k8s 中 Secret 是什么 1.Secret 是什么 1.1 Secret 概述 Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Secret 意味着你不需要在应用程序代码中包含机密数据。 由于创建 Secret 可以独立于使用它们的 Pod, 因此在创建、查看和编辑 Pod 的工作流程中暴露 Secret(及其数据...

qq_34285557的博客 1997

YOLO11涨点优化:训练技巧 | 使用标签平滑(Label Smoothing)配合余弦退火学习率,防止过拟合,稳步提点

摘要: YOLO11凭借动态卷积核调度、自适应特征融合等创新成为2026年目标检测主流,但面临训练集过拟合问题。文章聚焦两种零推理开销的正则化技巧:标签平滑(Label Smoothing)和余弦退火学习率(Cosine Annealing LR)。标签平滑通过软化硬标签(如将[1,0]改为[0.9,0.1])防止模型过度自信,代码中通过label_smoothing=0.1一键启用;余弦退火则以平滑的余弦曲线调整学习率(cos_lr=True),避免阶梯衰减的震荡。两者组合可显著缩小YOLO11训练与验证

2601_95807009的博客 45

K8S初级入门系列之四-Namespace/ConfigMap/Secret

本篇主要介绍了Namespace,ConfigMap以及secret的基本用法。Namespace可以在K8S集群中创建多个"虚拟集群",集群间实现隔离,本篇主要介绍了Namespace的创建,查看,删除以及如何创建指定Namespace的Pod。

恰恰虎的博客 1525

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

k8s yaml说明

k8s yaml # yaml格式的pod定义文件完整内容: apiVersion: v1#必选,版本号,例如v1 kind: Pod #必选,Pod metadata: #必选,元数据 name: string#必选,Pod名称 namespace: string#必选,Pod所属的命名空间 labels:...

weixin_30410119的博客 196

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Ubuntu下Kubernetes(k8s)集群搭建

ubuntu下Kubernetes集群搭建方法

lrclrk的博客 7281

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

K8s镜像拉取权限的深度解析:从Docker Login到Secret的权限传递机制

本文深入解析Kubernetes中镜像拉取权限的传递机制,从Docker Login到Secret的配置实践。详细介绍了如何解决常见的`pull access denied`问题,通过创建docker-registry或generic类型的Secret,并配置imagePullSecrets实现私有仓库的安全访问。文章还提供了多仓库凭证管理、Namespace级别默认凭证等高级技巧,以及常见问题的排查指南和安全最佳实践。

cola5的博客 226

探索云原生技术之容器编排引擎-Kubernetes/K8S详解(8)

探索云原生技术之容器编排引擎-Kubernetes/K8S详解。Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。.......................................

Yyyy的博客 897

基于k8s环境下使用Helm部署pulsar集群

在网上,大量部署 Apache Pulsar 的案例都是基于裸金属环境。鉴于此,本人特别贡献出在 Kubernetes (K8s) 环境中部署、安装和扩缩容 Pulsar 的经验。通过使用 Helm 清单文件,可以在几分钟内快速部署 Pulsar 集群,并根据负载动态调整资源。K8s 的自动扩缩容功能(scale)能够自动调整 Pulsar 组件的数量,通过部署pulsar-manager方便管理pulsar环境。大大简化了运维工作。

ToString_1024的博客 1669

【Kubernetes】 Ingress HTTPS代理访问

在宿主机的 C:\Windows\System32\drivers\etc\hosts 文件中添加 192.168.99.172 www3.tomxcz.com 记录。使用谷歌浏览器访问 https://www3.tomxcz.com。

翡翠泪滴的博客 1383

K8S存储类型

k8s 的存储相关知识

xuying0906的博客 875

让用户看到本地语言的宝可梦:PokeAPI 多语言数据怎么用

PokeAPI([pokeapi.co](https://pokeapi.co) 背后的开源项目)是一套 Pokémon RESTful API 服务端,除统计、特性、招式等结构化数据外,还内置了 14 种语言的名称与描述数据。本文讲清楚这些多语言数据存在哪里、接口和 GraphQL 各怎么用,以及仓库里新增一种语言的实际流程。 ## 支持的 14 种语言从哪里查 语言清单维护在 [data/

gitblog_01131的博客 911

运维别卷系列 - 云原生监控平台 之 07.prometheus kubernetes 监控实践

如果 endpoint 由 Pod 支持,则 Pod 的所有其他容器端口(未绑定到 endpoint 端口)也会被发现为目标。cAdvisor 是谷歌开源的工具,已经集成在 kubelet 里面了,只要是采集容器的资源使用情况的,和 kube-state-metrics 是有区别的,这两个组件也是搭配使用的。如果容器没有指定的端口,则会为每个容器创建一个无端口目标,以便通过重新标记手动添加端口。为每个服务的每个服务端口发现一个目标。该地址将设置为服务的 Kubernetes DNS 名称和相应的服务端口。

以梦为马|越骑越傻 1253

k8s拉取镜像规则_K8S从私有仓库拉取镜像

通常来讲,我们在通过公共镜像仓库拉取docker镜像的时候,不需要任何的认证操作,但我们在构建了企业的私有镜像以后,就不得不在拉取镜像之前通过用户名密码来完成认证。在docker单机环境中,我们可以直接在宿主机上执行docker login https://myhub.fdccloud.com类似这种命令的方式来完成认证。但在通过kubernetes来对docker做相关集群管理时,就不得不在所有...

weixin_34396144的博客 779
上一篇: Kubernetes-ConfigMap使用说明
下一篇: Kubernetes-动态PV&PVC
Aaron.com
博客等级 码龄17年 25粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值