【Kubernetes 012】Secret原理和实际操作详解

上一节我们学习了ConfigMap,k8s集群的配置中心。但是因为采用明文存储,ConfigMap并不适合用来存储私密信息,例如密钥等。这一节我们来学习k8s中专门存储私密信息的组件:Secret。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

Secret

很多场景都会用到敏感信息,例如OAuth的token,各种密码,私钥文件。但是k8s采用声明式(Declarative)来定义各种资源,也就是说资源的一些配置信息都存储在定义的yaml或者json文件中。如果直接将这些敏感信息放在yaml文件中,很显然是非常不安全的。于是,k8s引入了Secret组件。

Secret和ConfigMap一样也是k8s中单独的资源,专门用来存储一些敏感信息。把Secret想象成更安全的ConfigMap,就不难理解接下来要学习的对其创建和使用了。

创建Secret

和ConfigMap一样,也是可以通过文件或文件夹来将较长内容加入Secret,或者是通过yaml文件和命令行来将较短内容加入Secret。

下面分开来进行演示。

文件或文件夹创建Secret

用下面的格式来根据文件或者文件夹创建secret

kubectl create secret generic NAME --from-file=xxx

例如有下面两个文件

[root@k8s-master Secret]# ll
total 8
-rw-r--r--. 1 root root 68 May 10 16:40 secret1
-rw-r--r--. 1 root root 58 May 10 16:40 secret2
[root@k8s-master Secret]# cat secret1
d23hehuye8rq340p98du312rpur9er3eru038dfh3ry2098iuerewriu32987er98er
[root@k8s-master Secret]# cat secret2
jp3oiur98sd7re=er=23r-sdf13i4%(eiru2p398(eur1p8u+o3iru2o3

创建两个secret,分别是根据文件和文件夹

[root@k8s-master Secret]# kubectl create secret generic test-secret-1 --from-file=secret1
secret/test-secret-1 created
[root@k8s-master Secret]# kubectl create secret generic test-secret-2 --from-file=.
secret/test-secret-2 created

直接用describe查看是看不到secret的内容的

[root@k8s-master Secret]# kubectl describe secret test-secret-1
Name:         test-secret-1
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
secret1:  68 bytes

可以用下面的方法来查看内容

[root@k8s-master Secret]# kubectl get secret test-secret-1 -o yaml
apiVersion: v1
data:
  secret1: ZDIzaGVodXllOHJxMzQwcDk4ZHUzMTJycHVyOWVyM2VydTAzOGRmaDNyeTIwOThpdWVyZXdyaXUzMjk4N2VyOThlcgo=
kind: Secret
metadata:
  creationTimestamp: "2020-05-10T08:41:18Z"
  name: test-secret-1
  namespace: default
  resourceVersion: "1416449"
  selfLink: /api/v1/namespaces/default/secrets/test-secret-1
  uid: 2e43bebe-dda8-485a-9592-b7ecb32852f6
type: Opaque

有几点要注意下:

  • 自己创建的secret类型都是Opaque
  • secret中还是以键值对存储信息,key是文件名,value是文件的内容
  • 但是value却并不是文件中原始内容,而是经过了某种编码的转换

k8s中通过Base64的方式对原始数据进行了一次编码,注意是编码而不是加密,编码通常意味着很容易就能解码得到原始数据。

我们也可以用Base64命令来解码看看

[root@k8s-master Secret]# echo ZDIzaGVodXllOHJxMzQwcDk4ZHUzMTJycHVyOWVyM2VydTAzOGRmaDNyeTIwOThpdWVyZXdyaXUzMjk4N2VyOThlcgo= | base64 -d -
d23hehuye8rq340p98du312rpur9er3eru038dfh3ry2098iuerewriu32987er98er
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值