secrets资源,类似于configmap资源,只是secrets资源是用来传递重要的信息的;

        secret資源就是將value的值使用base64编译后传输,当pod引用secret后,k8s会自动将其base64的编码,反编译回正常的字符串;

一、创建secrets资源

1,创建工作目录

[root@k8s231 configmap]# mkdir /xinjizhiwa/secrets
[root@k8s231 configmap]# cd /xinjizhiwa/secrets

2,准备将“想要的数据”使用base64进行编码

· base64编码的操作命令

#正向编码

[root@k8s231 secrets]# echo xinjizhiwa | base64
eGluaml6aGl3YQo=

[root@k8s231 configmap]# echo kubernetes | base64
a3ViZXJuZXRlcwo=

#反向编码
[root@k8s231 secrets]# echo eGluaml6aGl3YQo= | base64 -d
xinjizhiwa

3,声明式创建secrets资源

· 编辑secrets资源清单

[root@k8s231 secrets]# cat 01-secret.yaml 
apiVersion: v1
kind: Secret
metadata:
  name: s1

#用户自定义的类型(Opaque为自定义类型;generic为)
type: Opaque
data: 
  k8s: eGluaml6aGl3YQo=
  xinjizhiwa: a3ViZXJuZXRlcwo=

· 创建secret资源

[root@k8s231 secrets]# kubectl apply -f 01-secret.yaml

4,响应式创建secret

[root@k8s231 secrets]# kubectl create secret generic secret-02 --from-literal=school=eGluaml6aGl3YQo= --from-literal=class=Z29uZ3poZW5nCg==

1>docker-registry:创建一个给Docker registry容器镜像仓库使用的secret
2>generic: 从本地file, directory或者literal value创建一个 secret(这是大多数情况使用的)

                     也就是资源清单中的type:Opaque是一个意思;
3>tls: 创建一个TLS secret
————————————————

                            LQ@fenglq.com
                        
原文链接:https://blog.csdn.net/flq18210105507/article/details/120749275

二、pod引用secret资源

1,pod资源env环境变量引用

· 创建pod资源

[root@k8s231 secrets]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: m13
spec:
  containers:
  - image: nginx:1.20.1-alpine
    name: nginx
    env: 
    - name: secret-env01
      valueFrom:
        #声明引用sercet
        secretKeyRef: 
          #声明secret名称
          name: s1
          #声明secret的key
          key: k8s
    - name: secret-env02
      valueFrom:
        secretKeyRef:
          name: s1
          key: xinjizhiwa

[root@k8s231 secrets]# kubectl apply -f pod.yaml 
pod/m13 created

· 查看pod资源

[root@k8s231 secrets]# kubectl get pods -o wide

· 登录pod资源查看env变量

[root@k8s231 secrets]# kubectl exec m13 -it -- sh
/ # env
...
secret-env01=xinjizhiwa

secret-env02=kubernetes
 

2,pod資源volume存儲卷引用secret資源

· 編輯pod資源清單 

[root@k8s231 secrets]# vim pod.yaml 

apiVersion: v1
kind: Pod
metadata:
  name: m14
spec:
  volumes:
  - name: vol-secret
    #生命存?卷挂在?ing
    secret:
      #指定secret?源名?
      secretName: s1
  containers:
  - image: nginx:1.20.1-alpine
    name: nginx
    volumeMounts:
    - name: vol-secret
      mountPath: /xinjizhiwa/

· 創建Pod資源

[root@k8s231 secrets]# kubectl apply -f pod.yaml

· 進入容器查看是否挂在為文件

[root@k8s231 secrets]# kubectl exec m14 -it -- sh
/ # cd xinjizhiwa/
/xinjizhiwa # ls
k8s         xinjizhiwa
/xinjizhiwa # cat k8s 
xinjizhiwa
/xinjizhiwa # cat xinjizhiwa 
kubernetes

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐