私密凭据:Secret

简介: 私密凭据:Secret

Secret

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

使用过程与ConfigMap类似

与ConfigMap不同的是:

  • ConfigMap用于明文,Secret用于加密文件,如:密码
  • ConfigMap是没有类型的,但是Secret有类型(type)

常用的Secret类型:



6528da03b2934144a3e237b335af92d1.png

Secret的创建

还是使用比较常用的两种方式:kubectl和配置文件方式来创建

  • 先创建一个实验环境:包含一个文件夹和两个文件
[root@k8s-master01 ~]# cd /secret/
[root@k8s-master01 secret]# echo -n 'yyang' > user.txt
[root@k8s-master01 secret]# echo -n '1qaz2wsx' > passwd.txt
[root@k8s-master01 secret]# ls
passwd.txt  user.txt
  • 利用上面的环境创建以一个Secret
[root@k8s-master01 secret]# kubectl create secret generic db-user-pass \
> --from-file=user.txt \
> --from-file=passwd.txt 
secret/db-user-pass created
  • 查看这个secret的内容:类型为Opaque;内容中data下的内容已经用密文表示
[root@k8s-master01 secret]# kubectl get secrets
NAME                  TYPE                                  DATA   AGE
db-user-pass          Opaque                                2      68s
default-token-7h7vk   kubernetes.io/service-account-token   3      5h51m
[root@k8s-master01 secret]# kubectl get secrets db-user-pass -o yaml 
apiVersion: v1
data:
  passwd.txt: MXFhejJ3c3g=
  user.txt: eXlhbmc=
kind: Secret
metadata:
  creationTimestamp: "2022-03-02T07:36:41Z"
  name: db-user-pass
  namespace: default
  resourceVersion: "40252"
  uid: a46ab9ed-c67c-4195-a5d6-f38dfc3d2016
type: Opaque
  • 这个值是可以解密出来的:邮件前边的数据即为之前的加密数据
[root@k8s-master01 secret]# echo "MXFhejJ3c3g=" | base64 -d
1qaz2wsx您在 /var/spool/mail/root 中有新邮件
  • kubectl方式创建效果类似,就只给出官方的例子了(注意用单引号)
kubectl create secret generic db-user-pass \
  --from-literal=username=devuser \
  --from-literal=password='S!B\*d$zDsb='

还有一种是配置文件方式,这种方式是先把账号密码之类的数据转换为加密数据,然后创建一个yaml文件,随后执行yaml文件;这种方法比较麻烦就不说了,可以看一下官方的例子:

使用配置文件创建Secret

应用于docker私有仓库的secret

pull私有仓库的镜像时需要验证的情况,可以为docker私有仓库创建相应的secret。格式如下:

我就不写具体的创建了

kubectl create secret docker-registry secret-tiger-docker \
  --docker-username=user \
  --docker-password=pass113 \
  --docker-email=tiger@acme.com \
  --docker-server=string

以上几项内容分别的仓库的用户名、密码、邮箱和仓库地址

当你创建完这个secret后使用的时候可以放在spec下,与containers同级

    spec:
      imagePullSecrets:
        - name: secret-tiger-docker
      containers:
        - image: 私有仓库地址
          name: nginx

这样下载私有仓库镜像时就不需要密码了。

注意的点:注意命名空间隔离问题

还有一个常用的类型就是tls,创建方式类似,使用也类似。就不写了,我也没有合适的环境。

其他

其他方面Secret与ConfigMap相近,请看这里

ConfigMap

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
7月前
|
安全 API 数据安全/隐私保护
凭证管理
凭证管理
218 1
|
4月前
|
资源调度 关系型数据库 API
一、next-auth 身份验证凭据-使用电子邮件和密码注册登录
本文是关于如何在Next.js应用中使用next-auth库实现基于电子邮件和密码的注册和登录功能的详细教程,包括环境配置、项目初始化、前后端页面开发、数据库交互以及用户状态管理等方面的步骤和代码示例。
一、next-auth 身份验证凭据-使用电子邮件和密码注册登录
|
4月前
|
存储 Kubernetes 安全
在k8S中,Secret 有哪些使用方式?
在k8S中,Secret 有哪些使用方式?
|
4月前
|
Prometheus Kubernetes 数据安全/隐私保护
使用kubeseal加密和管理k8s集群的secret
使用kubeseal加密和管理k8s集群的secret
76 2
|
5月前
|
网络安全 开发工具 git
|
7月前
|
云安全 弹性计算 安全
AK泄露了,怎么办?
AccessKey(包含AccessKey ID和Secret)是程序访问的凭证,无异于打开云上资源的大门钥匙,保管好AK是保障云上安全最重要的事情,甚至没有之一。
106550 8
|
7月前
|
API 定位技术 开发者
【已解决】您所使用的密钥ak有问题,不支持jsapi服务,可以访问该网址了解如何获取有效密钥。
【已解决】您所使用的密钥ak有问题,不支持jsapi服务,可以访问该网址了解如何获取有效密钥。
144 0
【已解决】您所使用的密钥ak有问题,不支持jsapi服务,可以访问该网址了解如何获取有效密钥。
|
安全 API 数据安全/隐私保护
3分钟教你开通阿里云AccessKey秘钥,并完成对应授权!
3分钟教你开通阿里云AccessKey秘钥,并完成对应授权!
4025 0
3分钟教你开通阿里云AccessKey秘钥,并完成对应授权!
|
存储 运维 安全
用户身份验证真的很简单吗
你现在要建立一个系统。无论系统的功能如何,用户身份验证都是始终存在的一个功能。实现它看起来应该很简单——只需“拖动”一些现成的身份验证模块,或使用一些基本选项(例如 Spring Security)对其进行配置,就完成了。
124 0
用户身份验证真的很简单吗
|
Linux Shell 网络安全