K8s(11)——存储之secrets

目录

Secret介绍

Secret创建方式

secret使用

存储docker registry的认证信息


Secret介绍

k8s中secret是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Secret 意味着你不需要在应用程序代码中包含机密数据。
Secret 类似于 ConfigMap 但专门用于保存机密数据。

k8s secrets用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。它把 Pod 想要访问的加密数据存放到 Etcd 中。然后用户就可以通过在 Pod 的容器里挂载 Volume 的方式或者环境变量的方式访问到这些 Secret 里保存的信息了。

Opaque类型

Opaque 类型的数据是一个 map 类型,要求value是base64编码。

手动创建base64加密

Secret创建方式

Secret创建:通过命令行

从文件创建,分别写入文件用户名及其密码

[root@k8s2 secret]# echo -n 'admin' > ./username.txt

[root@k8s2 secret]# echo -n 'westos' > ./password.txt

用文件创建db-user-pass这个新secret

[root@k8s2 secret]# kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt

查看到的用户和密码不是原本的明文,是经过base64编码后的结果,使用-d参数就可以解码

 这里需要注意的是,像这样创建的 Secret 对象,它里面的内容仅仅是经过了转码,而并没有被加密。在真正的生产环境中,你需要在 Kubernetes 中开启 Secret 的加密插件,增强数据的安全性。

编写yaml文件

Secret创建:通过yaml文件

[root@k8s2 secret]# vim mysecret.yaml

apiVersion: v1

kind: Secret

metadata:

name: mysecret

type: Opaque

data:

username: YWRtaW4= #必须编码后的值

password: d2VzdG9z

运行

[root@k8s2 secret]# kubectl apply -f mysecret.yaml

secret使用

将Secret挂载到Volume中

[root@k8s2 secret]# vim pod1.yaml

apiVersion: v1

kind: Pod

metadata:

name: mysecret

spec:

containers:

- name: nginx

image: nginx

volumeMounts:

- name: secrets

mountPath: "/secret" #把secret挂载到mysecret这个pod中的/secret

readOnly: true #只读

volumes:

- name: secrets

secret:

secretName: mysecret

创建pod,查看pod。进入mysecret,可以看到username和password

[root@k8s2 secret]# kubectl get pod

NAME READY STATUS RESTARTS AGE

mysecret 1/1 Running 0 13s

进入mysecret,可以看到username和password

[root@k8s2 secret]# kubectl exec mysecret -- ls /secret

password

username

删除

[root@k8s2 secret]# kubectl delete -f pod1.yaml

向指定路径映射 secret 密钥

修改yaml文件

[root@k8s2 secret]# vim pod2.yaml

apiVersion: v1

kind: Pod

metadata:

name: mysecret

spec:

containers:

- name: nginx

image: nginx

volumeMounts:

- name: secrets

mountPath: "/secret"

readOnly: true

volumes:

- name: secrets

secret:

secretName: mysecret

items:

- key: username

path: my-group/my-username  #指定路径为/secret/my-group/my-username

创建pod,查看pod。进入mysecret,在/secret/my-group/my-username可以看到username

[root@k8s2 secret]# kubectl apply -f pod2.yaml

进入mysecret,在/secret/my-group/my-username可以看到username

[root@k8s2 secret]# kubectl exec mysecret -- cat /secret/my-group/my-username

admin

[root@k8s2 secret]# kubectl delete -f pod2.yaml

存储docker registry的认证信息

创建myregistrykey,指定仓库名字,给定仓库的用户名和密码

[root@k8s2 secret]# kubectl create secret docker-registry myregistrykey --docker-server=reg.westos.org --docker-username=admin --docker-password=westos --docker-email=yakexi007@westos.org

查看

 创建私有仓库

如果我们需要拉取私有仓库中的docker镜像的话就需要使用到上面的myregistry这个Secret

编写yaml文件

[root@k8s2 secret]# vim pod3.yaml

apiVersion: v1

kind: Pod

metadata:

name: mypod

spec:

containers:

- name: game2048

image: reg.westos.org/westos/game2048

imagePullSecrets:

- name: myregistrykey #给定仓库认证信息

创建pod,查看

[root@k8s2 secret]# kubectl apply -f pod3.yaml

pod/mypod created

查看

[root@k8s2 secret]# kubectl get pod

NAME READY STATUS RESTARTS AGE

mypod 1/1 Running 0 3s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值