美丽之安全信息(秘密)及配置信息(configmap)管理

  

应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥。将这些信息直接保存在容器镜像中显然不妥,Kubernetes提供的解决方案是秘密。

  

秘密会以密文的方式存储数据,避免了直接在配置文件中保存敏感信息.Secret会以体积的形式被挂载到仓,容器可通过文件的方式使用秘密中的敏感数据,此外,容器也可以环境变量的方式使用这些数据。

  

秘密可通过命令行或YAML创建。比如希望秘密中包含如下信息:

  
      <李>用户名管理员李   <李>密码123456李   
   创建秘密   

有四种方法创建秘密:

  
      <李>   

    通过——从字面:

      
     <代码> kubectl创建通用mysecret秘密——从字面=用户名=admin——文字=密码=123456  
      

    每个——文字对应一个信息条目。

      李   <李>   

    通过——从文件:

      
     <代码> echo - n管理比;/用户名
      echo - n 123456比;/密码。
      kubectl创建通用mysecret秘密——从文件=?用户名——从文件=/密码。 
      

    每个文件内容对应一个信息条目。

      李   <李>   

    通过——from-env-file:

      
     <代码>猫& lt; & lt;EOF的在env.txt
      用户名=admin
      密码=123456
      EOF
      kubectl创建秘密通用mysecret——from-env-file=env.txt  
      

    文件env。键值对的txt中每行应一个信息条目。

      李   <李>通过YAML配置文件:   
     <代码> apiVersion: v1
      :秘密
      元数据:
      名称:mysecret
      数据:
      用户名:YWRtaW4=密码:MTIzNDU2  
      
  

文件中的敏感数据必须是通过base64编码后的结果。

  
 <代码> [root@k8s-master ~] # echo - n管理| base64
  YWRtaW4=[root@k8s-master ~] # echo - n 123456 | base64
  MTIzNDU2  
  

执行kubectl应用创建秘密:

  
 <代码> # - f mysecrete.yml kubectl适用
  秘密/mysecret创建 
  <编辑>使用这些创建好的秘密。   

查看Secre
可以通过kubectl得到秘密查看存在的秘密。

  
 <代码> [root@k8s-master ~] # kubectl得到秘密
  名称类型数据时代
  default-token-5l66h kubernetes。io/service-account-token 3 14 d
  mysecret不透明2 20 s  
  

显示有两个数据条目,kubectl描述秘密查看条目的关键:

  
 <代码> [root@k8s-master ~] # kubectl描述mysecret秘密
  名称:mysecret
  名称空间:默认
  标签:& lt; none>
  注释:
  类型:不透明的
  
  数据=https://www.yisu.com/zixun/===密码:6个字节
  用户名:5个字节
  (root@k8s-master ~) #  
  

如果还想查看价值,可以用kubectl编辑秘密mysecret:

  
 <代码> apiVersion: v1
  数据:
  密码:MTIzNDU2
  用户名:YWRtaW4=:秘密
  元数据:
  注释:
  kubectl.kubernetes。io/last-applied-configuration: |
  {“apiVersion”:“v1”,“数据”:{“密码”:“MTIzNDU2”、“用户名”:“YWRtaW4="},“类型”:“秘密”、“元数据”:{"注释":{},“名字”:“mysecret”、“名称”:“默认”}}
  creationTimestamp:“2019 - 10 - 14 - t08:26:43z”
  名称:mysecret
  名称空间:默认
  resourceVersion:“13845”
  selfLink:/api/v1/命名空间//机密/mysecret违约
  uid: a713292c - 6 -有限元分析- 4065 b5ae - 239 f8fe9a76f
  类型:不透明的
  ~  
  

然后通过base64将值反编码:

  
 <代码> [root@k8s-master ~] # echo - n MTIzNDU2 | base64解码
  123456
  
  # echo - n YWRtaW4=| base64解码
  管理(root@k8s-master ~) #  
  

如何在豆荚中使用秘密。

  <编辑>卷方式使用秘密/编辑>   

荚可以通过卷或者环境变量的方式使用秘密。

  

荚的配置文件如下所示:

  
 <代码> apiVersion: v1
  :豆荚
  元数据:
  名称:mypod
  规范:
  容器:
  ——名称:mypod
  busybox映像:
  参数:
  ——/bin/sh
  - - - - - - - c
  ——睡眠10;30000年碰/tmp/健康,睡眠
  volumeMounts:
  ——名称:foo
  mountPath:/etc/foo
  只读的:真
  卷:
  ——名称:foo
  秘密:
  secretName: mysecret  
  

①定义体积foo,来源为秘密mysecret。

  

②将foo挂载到容器路径/etc/foo,可指定读写权限为只读的。

  

创建舱并在容器中读取秘密:

美丽之安全信息(秘密)及配置信息(configmap)管理