资讯专栏INFORMATION COLUMN

Kubernetes 1.2 新功能解析:ConfigMap (上)

李涛 / 1034人阅读

摘要:我们希望能够让应用的开发者在里充分使用这样的模式。尽管允许类似于验证信息和秘钥这些信息从应用当中分离,但在过去并没有为了普通的或者非配置而存在的对象。从数据角度来看,的类型只是键值组。

容器的配置管理——把应用的代码和配置区分开,是一个好的操作。我们希望能够让应用的开发者在Kubernetes里充分使用这样的模式。尽管Secrets API允许类似于验证信息和秘钥这些信息从应用当中分离,但在过去并没有为了普通的或者非secret配置而存在的对象。在Kubernetes 1.2中,我们加入了一个新的API资源,叫做ConfigMap来处理这种类型的配置数据。

ConfigMap基本原理

ConfigMap的API概念上来说是很简单的。从数据角度来看,ConfigMap的类型只是键值组。应用可以从不同角度来配置,所以关于给用户如何存储和使用配置数据,我们需要给他们一些弹性。在一个pod里面使用ConfigMap大致有三种方式:

命令行参数

环境变量

数据卷文件

这些不同的方法就需要有不同的数据建模方式来使用数据。为了尽可能提供多的弹性,我们使用ConfigMap来承载既有粗力度也有细粒度的数据。另外,由于应用会从环境变量和包含配置数据的文件读取配置信息,我们建立ConfigMap来支持这两者任何一种的读取方式。让我们来看一个例子,ConfigMap时如何获得这两种配置的。

用过Secrets的人会发现ConfigMap用起来很简单——二者非常相似。这些API的一个主要的区别在于,Secret的数值是用byte数组形式存起来的用来支持存储像SSH keys这样的二进制。在JSON和YAML里,byte数组被序列化成base64位字符串。这意味着光看被序列化的格式,无法很容易地得出Secret的内容是什么。由于ConfigMap是为了仅仅存储配置信息而非二进制,数值被存为字符串,这样在被序列化格式也可读。

我们希望创建ConfigMap就像在它里面存数据一样有弹性。创建一个ConfigMap对象,我们已经加了一个kubectl命令,叫做“kubectl create configmap”,提供三种方式来说明健值组:

说明liberal key和value

说明一个多带带的文件

说明一个给每个文件创建key的路径

这些不同的选项可以在一个命令里混合、配对着或重复使用。

使用ConfigMap也很简单,对于用过Secrets的开发者来说也会感觉熟悉。下面是一个例子,如何来使用上文的ConfigMap来部署,跑一个游戏的server:

从上面这个例子可以看出,这个部署使用了从ConfigMap的两个不同机制的key。这个类似于属性一样的 ConfigMap的key被用作为部署模版中单个容器的环境变量,类似文件一样的key填充一个数据卷。

我们希望这些基本原理操作起来还算容易,也想看看大家用ConfigMap能搭出什么样的东西来。大家如果对K8S项目和配置方面的内容感兴趣,可以来参与我们的工作:

(1)我们关于Configuration的在slack上的渠道:点击
(2)K8S configuration这块的email list可以加入:点击
(3)Configuration兴趣小组,每周三太平洋时间上午10点:SIG-Config hangout: 点击

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32438.html

相关文章

  • Kubernetes 1.2 功能解析ConfigMap (下)

    摘要:的工作就是为作出的修改查看我们的配置文件,并且运行读取配置文件的新版本回调函数,使用设置新的。它的目标是使任意额外的成为一个单独更新的,这样我们只要执行一次回调函数。 Kubernetes 1.2版本添加了一个叫ConfigMap的新功能。这个功能提供给容器注入应用程序数据的方式。注入配置文件对于大部分应用程序来说很强大,但是新的ConfigMap功能不仅可以在容器开启时提供初始配置功...

    Blackjun 评论0 收藏0
  • Kubernetes 1.2 功能解析ConfigMap (中)

    摘要:使用很多应用程序的配置需要通过配置文件,命令行参数和环境变量的组合配置来完成。举个例子,思考以下的我们可以像这样在一个中来使用这个的键当这个运行的时候,它的输出将包括以下几行使用案例用设置命令行参数也可以被使用来设置容器中的命令或者参数值。 使用ConfigMap 很多应用程序的配置需要通过配置文件,命令行参数和环境变量的组合配置来完成。这些配置应该从image内容中解耦,以此来保持容...

    honmaple 评论0 收藏0
  • k8s与DNS--配置私有DNS Zones和Upstream Nameservers

    摘要:我们很高兴地宣布,在中,增加了对可配置的私有区域通常称为存根域和外部上游名称服务器的支持。例如,下面的配置插入单个存根域和两个上游名称服务器。具有存根域后缀的名称例如将被发送到配置的自定义解析程序。 许多用户他们想要集成domain name zones(现有域名区域)到Kubernetes DNS 命名空间。例如,混合云用户可能希望在群集内解析其内部.corp域地址。其他用户可能具有...

    bbbbbb 评论0 收藏0
  • k8s与DNS--配置私有DNS Zones和Upstream Nameservers

    摘要:我们很高兴地宣布,在中,增加了对可配置的私有区域通常称为存根域和外部上游名称服务器的支持。例如,下面的配置插入单个存根域和两个上游名称服务器。具有存根域后缀的名称例如将被发送到配置的自定义解析程序。 许多用户他们想要集成domain name zones(现有域名区域)到Kubernetes DNS 命名空间。例如,混合云用户可能希望在群集内解析其内部.corp域地址。其他用户可能具有...

    voidking 评论0 收藏0
  • 如何使用Kubernetesconfigmap通过环境变量注入到pod里

    摘要:实际上就是一系列键值对,存储于里。在区域,我给该注入一个名为的环境变量,值从键值对的键名称为的值中取。创建这个使用命令查看这个运行生成的日志,发现输出的环境变量列表中,出现了,这个是我在文件里注入的环境变量名称,而就来自里的值。 在Kubernetes官网里,有这样一篇文章,提到了Kubernetes里的一个最佳实践就是把应用代码同配置信息分开,一种方式就是使用Kubernetes 1...

    W4n9Hu1 评论0 收藏0

发表评论

0条评论

李涛

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<