Kubernetes详解(四十)——Secret和ConfigMap

今天继续给大家介绍Linux运维相关知识,本文主要内容是Secret和ConfigMap。

一、背景

在不使用Kubernetes集群时,如果我们要实际部署一项服务,我们通常都会根据实际的业务场景对该服务进行一定的配置。例如,为Nginx服务指定Sevrer_Name或者是为Tomcat的JAVA配置内存堆大小。那么在Kubernetes集群系统下,我们如何实现对服务的配置呢?一般来说,在Kubernetes集群中,我们对服务的配置有以下四种方式:
1、启动容器后,通过命令传入参数。
2、将定义好的配置文件通过镜像文件的形式进行导入。
3、通过环境变量的方式进行数据导入。
4、挂载volume卷传送配置文件。
在Kubernetes集群中,支持两种特殊的卷,即SecretConfiMap,它们并不像之前我们介绍的普通卷一样,提供存储空间,而是用于从容器外部向容器内注入配置信息。其中,Secret一般用于向Pod传递敏感信息,比如私钥、密码、证书等,这些敏感的信息如果存储在容器中容易泄露,这时我们可以将这些信息配置成Secret的方式,放在Kubernetes集群中,然后通过Pod进行挂载,以实现敏感数据和Pod解耦的效果。ConfigMap则主要用于向Pod注入非敏感数据,我们可以将一些应用的配置文件配置成ConfigMap卷,然后在Pod中引用该ConfigMap卷,以实现容器的配置文件与容器之间的解耦。

二、Secret详解

Secret对象对敏感数据的参数格式是键值对的方式,Pod对Secret资源的调用是通过环境变量或者是存储卷的方式对这些敏感数据进行访问。Secret对象通常使用base64编码,但是在容器中对Secret进行访问时,会对base64编码的数据进行自动解码,使之恢复称为明文格式。需要注意的是,Secret对象以非加密的方式(base64编码不是加密)存储在etcd中,因此我们需要对etcd的管理和权限进行严格控制。
Secret有四种类型,这四种类型名称及作用如下所示:
1、Service Account
该Secret主要用于访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中。
2、Opaque
Opaque是一种base64编码的Secret,主要用于存储证书、密码等,这种类型的Secret标识符是generic。
3、kubernetes.io/dockerconfigjson
用于存储私有docker仓库的认证信息,类型标识符为docker-registry。
4、kubernetes.io/tls
用于为SSL通信模式存储证书和私钥文件,类型标识符为tls。

三、ConfigMap详解

ConfigMap提供了给容器中的镜像注入配置文件的方法,这可以实现容器与配置之间的解耦。ConfigMap可以用来保存单个属性,也可以用来保存整个配置文件或者是JSON二进制对象。ConfigMap资源中的配置数据可以在Pod中直接使用,或者像Controller一样为系统组件存储配置数据。相比于Secret,ConfigMap通常被用来处理不含敏感信息的配置。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

你可能感兴趣的:(虚拟化运维,kubernetes,docker,Secret,ConfigMap,K8S)