私密凭据: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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
算法
OR-tools求解器使用介绍(二)
OR-tools求解器使用介绍(二)
1626 0
|
缓存 JavaScript 前端开发
【axios】二次封装——避免重复发送请求
【axios】二次封装——避免重复发送请求
920 0
【axios】二次封装——避免重复发送请求
|
数据可视化 数据挖掘 大数据
【Kibana】kibana详细介绍与说明
【Kibana】kibana详细介绍与说明
932 0
|
JSON 数据格式 索引
记一次ES节点扩容、数据迁移实践
ElasticSearch、ES数据迁移、ES扩容
14297 1
|
JavaScript Java API
如何接入阿里云短信服务 (完整指南)
如何接入阿里云短信服务 (完整指南)
57836 1
|
存储 NoSQL 算法
阿里面试:亿级 redis 排行榜,如何设计?
本文由40岁老架构师尼恩撰写,针对近期读者在一线互联网企业面试中遇到的高频面试题进行系统化梳理,如使用ZSET排序统计、亿级用户排行榜设计等。文章详细介绍了Redis的四大统计(基数统计、二值统计、排序统计、聚合统计)原理和应用场景,重点讲解了Redis有序集合(Sorted Set)的使用方法和命令,以及如何设计社交点赞系统和游戏玩家排行榜。此外,还探讨了超高并发下Redis热key分治原理、亿级用户排行榜的范围分片设计、Redis Cluster集群持久化方式等内容。文章最后提供了大量面试真题和解决方案,帮助读者提升技术实力,顺利通过面试。
Error: Cannot find module ‘node:url‘【已解决】
Error: Cannot find module ‘node:url‘【已解决】
1259 3
|
Kubernetes 负载均衡 容器
Cloud Controller Manager
Cloud Controller Manager是Kubernetes的一个组件,它提供了一个控制平面,用于管理Kubernetes集群。Cloud Controller Manager通过插件机制,可以对接各种云服务提供商的资源,例如阿里云的负载均衡(CLB,原SLB)、虚拟私有云(VPC)等。这样,Kubernetes集群就可以与这些云服务商的资源进行交互,实现负载均衡、跨节点通信等功能。
573 1
|
网络安全
如何用HCL模拟器配置防火墙IRF?
如何用HCL模拟器配置防火墙IRF?
493 2