NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
我们也可以使用文件创建 Secret 对象,文件可以为 json 或是 yaml 数据格式,定义 Secret 时分别有两种字段:data 和 stringData。data 字段存储被 Base64 编码以后的数据,而 stringData 字段的使用会更加随意一些,可以存储数据的纯文本值。 比如,使用 data 字段在 Secret 中存储两个字符串,使用如下命令将它们使用 Base64 编码: ~~~bash $ echo -n 'admin' | base64 YWRtaW4= $ echo -n '1f2d1e2e67df' | base64 MWYyZDFlMmU2N2Rm ~~~ 在`/home/shiyanlou`目录下新建`secret.yaml`文件,并写入如下内容: ~~~yaml apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: username: YWRtaW4= password: MWYyZDFlMmU2N2Rm ~~~ 执行创建: ~~~bash $ kubectl create -f secret.yaml secret/mysecret created ~~~ 如果想要在配置的时候更加明确配置信息,这个时候你就需要使用到 stringData 字段了,使用这个字段可以将未被 Base64 编码的数据直接配置到 YAML 文件中,当创建或是更新 Secret 的时候、数据将自动被 Base64 加密并存储。 比如,当你使用 Secret 部署应用需要存储一个配置文件,在`/home/shiyanlou`目录下新建`secret-2.yaml`文件,并写入如下内容: ~~~yaml apiVersion: v1 kind: Secret metadata: name: mysecret-2 type: Opaque stringData: config.yaml: |- apiUrl: "https://my.api.com/api/v1" username: admin password: 1f2d1e2e67df ~~~ 执行创建: ~~~bash $ kubeclt create -f secret-2.yaml secret/mysecret-2 created ~~~ stringData 字段是只写的,使用`kubectl get -o yaml`获取 Secret 的 YAML 格式定义时,不会显示 stringData 字段,stringData 字段下面的所有条目会被 Base64 编码之后展示在 data 字段下: ~~~bash $ kubectl get secret mysecret-2 -o yaml apiVersion: v1 data: config.yaml: YXBpVXJsOiAiaHR0cHM6Ly9teS5hcGkuY29tL2FwaS92MSIKdXNlcm5hbWU6IGFkbWluCnBhc3N3b3JkOiAxZjJkMWUyZTY3ZGY= kind: Secret metadata: ...... type: Opaque ~~~ 如果一个配置项在 data 字段和 stringData 字段中都被定义了,那么会使用来自 stringData 的值,比如在`/home/shiyanlou`目录下新建`secret-3.yaml`文件,并写入如下内容: ~~~yaml apiVersion: v1 kind: Secret metadata: name: mysecret-3 type: Opaque data: username: YWRtaW4= stringData: username: administrator ~~~ 执行创建并且获取它的配置信息,如下所示: ~~~yaml apiVersion: v1 data: username: YWRtaW5pc3RyYXRvcg== kind: Secret metadata: ...... type: Opaque ~~~ 其中,`YWRtaW5pc3RyYXRvcg==`解码就为`administrator`。