k8s数据持久化之Secret-创新互联
一、
创新互联建站作为成都网站建设公司,专注重庆网站建设公司、网站设计,有关成都企业网站建设方案、改版、费用等问题,行业涉及高空作业车租赁等多个领域,已为上千家企业服务,得到了客户的尊重与认可。
Secret资源对象:解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。
用来保存一些敏感信息,比如数据库的用户名密码或者密钥。
Secret有三种类型:
1.Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中。
2.Opaque:base64编码格式的Secret,用来存储密码、密钥等。
3.Kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息。
二,以实验测试的方式,创建4种secret资源。
姓名:class=lbs
密码:password=www.com
创建2个Pod,分别以挂载Volume的方式,和以环境变量env的方式去使用,secret2,和secret4.
1)通过 --from-literal(文字的):
kubectl create secret generic **lbssecret1 (创建secret资源的名)**--from-literal=class=lbs --from-literal=password=www.comww.com
Generic:通用的、一般的。加密方式。
查看secret资源
5. kubectl get secrets
6.NAME TYPE DATA AGE
7.lbssecret1 Opaque 2 24s
使用describe可以查看secret资源的详细信息。**(可以看到是以密文的方式存储)**
1kubectl describe secrets lbssecret1
2.Name: lbssecret1
3.Namespace: default
4.Labels:
5.Annotations:
6.
7.Type: Opaque
8.
9.Data
10.====
11.class: 3 bytes #只能查看到数据的大小,无法查看到数据内容。
12.password: 7 bytes
2)通过 --from-file(文件):(**这种方式不推荐使用,需要将存储的数据写入到文件中,注意每个文件只能存储一个数据。)**
echo lbs >class
echo www.com >password
kubectl create secret generic lbssecret2 --from-file=class --from-file=password
查看:
1.kubectl describe secrets lbssecret2
2.Name: lbssecret2
3.Namespace: default
4.Labels:
5.Annotations:
6.
7.Type: Opaque
8.
9.Data
10.====
11.class: 4 bytes
12.password: 8 bytes
3)通过 --from-env-file:**(这种方式可以在同一个文件内写入多个数据。)**
vim lbs.txt
class=lbs
password=www.com(保存退出)
kubectl create secret generic mysecret3 --from-env-file=lbs.txt
查看:
1.kubectl describe secrets lbssecret3
2.Name: lbssecret3
3.Namespace: default
4.Labels:
5.Annotations:
6.
7.Type: Opaque
8.
9.Data
10.====
11.class: 3 bytes
12.password: 7 bytes
4)通过yaml配置文件的方式。(把需要保存的数据加密)
echo lbs | base64
echo www.com | base64
vim lbssecret4.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret4
data:
class: #编译的lbs
password: #编译的www.com
执行文件:
kubectl apply -f lbssecret4.yaml
1.kubectl describe secrets lbhsecret4
2.Name: lbhsecret4
3.Namespace: default
4.Labels:
5.Annotations:
6.Type: Opaque
7.
8.Data
9.====
10.password: 8 bytes
11.class: 4 bytes
创建2个Pod,分别以挂载的方式,和以环境变量的方式去使用,secret2,和secret4.
1)以Volume挂载的方式:使用lbssecret2.
vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: lbspod1
spec:
containers:
- name: lbspod
image: busybox
args:
- /bin/sh
- -c
- sleep 300000
volumeMounts:
- name: secret-lbs
mountPath: "/etc/secret-lbs" 挂在到pod容器内的路径
readOnly: true
volumes:
- name: secret-lbs
secret:
secretName: lbssecret2
执行yaml文件,查看Pod状态:1.[root@master lbhsecret]# kubectl apply -f pod1.yaml
br/>1.[root@master lbhsecret]# kubectl apply -f pod1.yaml
查看:
3. kubectl get pod
4.NAME READY STATUS RESTARTS AGE
5.lbspod1 1/1 Running 0 26s
进入pod内,挂载的路径中。使用cat 查看class姓名,密码(cat class)查看数据是否挂载成功。(可以发现会自动帮助解密)
2)以环境变量的方式:使用lbssecret4.
vim pod2.yaml
apiVersion: v1
kind: Pod
metadata:
name: lbspod2
spec:
containers:
- name: lbspod
image: busybox
args:
- /bin/sh
- -c
- sleep 300000
env:
- name: SECRET_CLASS#容器内的变量名
valueFrom:
secretKeyRef:#提取环境变量的值
name: lbssecret4#调用secret资源的lbssecret4
key: class#调用lbssecret4对应class的值
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: lbssecret2
key: password
执行yaml文件,查看Pod状态:1.[root@master lbhsecret]# kubectl apply -f pod2.yaml
br/>1.[root@master lbhsecret]# kubectl apply -f pod2.yaml
查看:
3. kubectl get pod
4.NAME READY STATUS RESTARTS AGE
5.lbspod1 1/1 Running 0 10m
6.lbspod2 1/1 Running 0 39s
进入pod中查看数据。可使用echo的方式(echo容器内的变量名)
例如:echo $SECRET_CLASS查看保存的姓名,密码。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站标题:k8s数据持久化之Secret-创新互联
文章起源:http://pwwzsj.com/article/dggepg.html