ASP.NET Core on K8S深入学习(9)Secret & Configmap
本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。
一、Secret
1.1 关于Secret
在应用启动过程中需要一些敏感信息,比如数据库用户名、密码,如果直接明文存储在容器镜像中是不安全的,K8S提供的方案是Secret。
Secret 会以密文的方式存储数据,避免了直接在配置文件中保存敏感信息。
Secret 会以 Volume 的形式被 mount 到 Pod,容器可通过文件的方式使用 Secret 中的敏感数据,也可以使用环境变量的方式使用。
1.2 创建与查看Secret
这里假设我们要创建一个包含以下信息的Secret:
(1)用户名:Edison
(2)密码:EDC123456*
有4种方法来创建Secret:
(1)通过 --from-literal:
kubectl create secret generic mysecret --from-literal=username=Edison --from-literal=password=EDC123456*
PS:每个 --from-literal
对应一个信息条目
(2)通过 --from-file:
echo -n Edison > ./username echo -n EDC123456* > ./password kubectl create secret generic mysecret --from-file=./username --from-file=./password
PS:每个文件内容对应一个信息条目
(3)通过 --from-env-file:
cat << EOF > env.txt username=Edison password=EDC123456* EOF kubectl create secret generic mysecret --from-env-file=env.txt
PS:文件 env.txt
中每行 Key=Value 对应一个信息条目
(4)通过YAML配置文件创建:(推荐方式)
由于配置文件中的敏感数据必须是通过base64编码后的结果,因此需要获取base64编码后的值:
下面就是这个YAML文件的内容:
apiVersion: v1 kind: Secret metadata: name: edc-secret data: username: RWRpc29u password: RURDMTIzNDU2Kg==