作用:

    在kubernetes中,还存在一种和ConfigMap非常类似的对象,称为Secret对象,它主要用于存储敏感信息,例如密码、秘钥、证书等等

    实验:

    Step - 1:查看base64编码
    image.png
    首先使用base64对数据进行编码

    Step - 2:编辑Secret CM
    image.png
    image.png
    image.png
    创建secret.yaml配置文件,并将上一步的对应加密编码进行存放,并进行声明式创建

    “vim configmap-secret.yaml”

    apiVersion: v1
    kind: Secret #加密型存储配置
    metadata:
    name: secret
    namespace: storage
    type: Opaque #加密
    data:
    username: YWRtaW4=
    password: MTIzNDU2

    “kubectl apply -f configmap-secret.yaml”

    image.png
    可以看到,通过这种类型的配置文件,你再也看不到明文信息,增加你的安全行

    “kubectl describe secret secret -n storage”

    Step - 3:编辑POD资源,并从Secret CM拉取配置信息
    image.png
    image.png
    编辑一个pod资源,并在资源清单中指定secret cm,并声明式更新

    “vim configmap-secret-pod.yaml”

    apiVersion: v1
    kind: Pod
    metadata:
    name: pod-secret
    namespace: storage
    spec:
    containers:
    - name: nginx
    image: nginx:latest
    volumeMounts: # 将secret挂载到目录
    - name: config
    mountPath: /secret/config
    volumes:
    - name: config
    secret:
    secretName: secret

    image.png
    声明式创建资源:

    “kubectl apply -f configmap-secret-pod.yaml”

    Step - 4:效果验证
    image.png
    image.png
    这次用命令行去查看pod内资源与配置

    “ kubectl exec -it pod-secret /bin/sh -n storage”

    可以看到,配置信息成功获取,并在pod内成功解码并显示

    PS:base64只是一种加密的方式,为了实验效果,所以选择这个方式,这种加密方式的解密是十分容易的,所以在实际生产环境里面不推荐用这个