基于 Kubernetes 的 ConfigMap 实现的腾讯云配置文件管理功能介绍

引言

在几乎所有的应用开发中,都会涉及到配置文件的变更,比如说在web的程序中,需要连接数据库,缓存甚至是队列等等。应用开发上线过程需要分别部署到开发环境、测试环境、预发布环境等多个环境。而每一个环境都要定义其独立的各种配置。如何对配置文件进行管理,是应用程序管理的重要内容。

Kubernetes中通过ConfigMap资源管理应用程序的配置信息。ConfigMap本质上是一个基于key/value键值方式存储的一段文本。Kubernetes支持三种使用方式:

  1. 设置成容器的环境变量。
  2. 在容器的启动参数中使用。
  3. 将key中的内容,作为文件挂载到容器某个目录下。

腾讯云容器服务根据用户使用的场景。基于Kubenertes的ConfigMap实现了通过配置文件设置容器的环境变量和将key中的内容挂载到容器的某个目录。

Kubernetes中将配置文件内容设置成容器的环境变量

在示例中我们创建一个如下所示的配置文件。

apiVersion: v1
data:
  DASHBOARD.CONF.INI: |
    [mysqld]
    log-bin = mysql-bin
    [port]
    serviceport="80"
  IMAGE_VERSION: v2.0
  OTHERKEY: OTHERVALUE
  REPLICAS: "2"
kind: ConfigMap
metadata:
  name: tst-config
  namespace: default

然后将对应的key设置成容器的环境变量。

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: test-container
      image: busybox:latest
      command: [ "/bin/sh", "-c", "env" ]
      env:
        - name: REPLICAS
          valueFrom:
            configMapKeyRef:
              name: tst-config
              key: REPLICAS
        - name: OTHERKEY
          valueFrom:
            configMapKeyRef:
              name: tst-config
              key: OTHERKEY
        - name: IMAGE_VERSION
          valueFrom:
            configMapKeyRef:
              name: tst-config
              key: IMAGE_VERSION
  restartPolicy: Never

当Pod结束后会输出

REPLICAS=2
IMAGE_VERSION=v2.0
OTHERKEY=OTHERVALUE

腾讯云容器服务如何使用配置文件设置容器的环境变量

腾讯云容器服务基于Kubenertes的ConfigMap实现了将配置文件导入成容器的环境变量。并且在此基础上,提供管理配置文件版本的功能。配置文件的修改都是基于版本进行保存,配置文件保存后不能修改只能新增版本,这样保证了配置文件同一个版本的内容不变,方便回滚和追溯。

在腾讯云容器服务中将配置文件,设置成容器的环境变量操作步骤如下:

(1) 在配置页面创建对应的配置项

(2) 在服务创建(更新)时选择从配置文件导入环境变量

(3) 选择需要导入的环境变量

(4) 查看导入的环境变量

这样在服务创建(更新)时配置文件对应的内容就会被设置成容器对应的环境变量。

Kubernetes将配置文件内容挂载到指定目录

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: busybox
      command: [ "/bin/sh","-c","sleep 36000" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
      - name: config-volume2
        mountPath: /etc/config2
  volumes:
    - name: config-volume
      configMap:
        name: tst-config
        items:
        - key: DASHBOARD.CONF.INI
          path: DASHBOARD.CONF.INI
        - key: REPLICAS
          path: REPLICAS
    - name: config-volume2
      configMap:
        name: tst-config
        items:
        - key: REPLICAS
          path: REPLICAS
  restartPolicy: Never

使用kubectl exec -it dapi-test-pod /bin/ash命令进入容器后,查看挂载文件的信息。

/ # ls /etc/config
DASHBOARD.CONF.INI  REPLICAS
/ # cat /etc/config/DASHBOARD.CONF.INI
[mysqld]
log-bin = mysql-bin
[port]
serviceport="80"
/ # ls /etc/config2/
REPLICAS
/ # cat /etc/config2/REPLICAS
2/

腾讯云容器服务如何使用配置文件中的内容挂载到指定目录

在某些情况下,程序已经定义了配置文件的读取形式为:从某个路径下的文件读取。这样简单的通过环境变量的方式就不能满足需求。

腾讯云容器服务考虑到具体的需求场景,同样也支持将配置文件中的内容,通过文件的形式挂载到指定目录。

具体的步骤如下:

(1) 创建对应的配置文件

(2) 从配置文件导入挂载项

(3) 选择对应的挂载项

(4) 查看创建的挂载项

(5) 在容器中设置对应的挂载点

这样在就可以将配置文件中对应的内容,通过文件的方式挂载到容器指定的目录了。同样的,我们登录容器后查看挂载文件的信息。

可以看到分别将DASHBOARD.CONF.INI和REPLICAS中的内容挂载到了/etc/config/和/etc/config2/两个目录。(腾讯云容器服务支持远程在UI界面远程直接登录容器,具体操作方法可以参考)

总结

Kubernetes中对于程序的配置文件通过ConfigMap进行管理。在使用上支持配置文件设置成容器的环境变量以及将配置文件的内容作为文件挂载到指定目录。

腾讯云容器服务基于Kubenertes中ConfigMap的功能,支持配置文件设置成容器的环境变量和支持挂载到制定目录。在UI界面直接进行操作,更加方便。同时支持配置文件的版本管理,便于回滚和追溯。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏别先生

Linux环境安装Eclipse工具开发

1、官网下载maven:https://maven.apache.org/download.cgi ? 2、上传到虚拟机进行解压缩操作: [hadoop@sla...

3598
来自专栏小白安全

自用一键脚本搭建RSS翻墙

直接列出一键脚本 CentOS/Debian/Ubuntu ShadowsocksR单/多端口一键管理脚本: 主用下载地址: yum -y...

4228
来自专栏守望轩

Visual Studio 2008 每日提示(十三)

#121、如何设置vs启动时(工作区)加载内容 原文链接:How to customize what Visual Studio opens to 操作步骤:...

3488
来自专栏魏艾斯博客www.vpsss.net

BT-Panel Linux 自动磁盘挂载工具 自动将分区挂载到/www 目录

1653
来自专栏web编程技术分享

【php增删改查实例】第二十二节 - 引入百度地图

1775
来自专栏我的小碗汤

mysql镜像安装

docker镜像安装mysql的好处:方便,容器间互不干扰,可以在同一主机上安装多个版本的mysql,只需要在主机上映射不同的端口即可。

604
来自专栏coder修行路

让你用sublime写出最完美的python代码--windows环境

 至少很长一段时间内,我个人用的一直是pycharm,也感觉挺好用的,也没啥大毛病 但是pycharm确实有点笨重,啥功能都有,但是有很多可能这辈子我也不会用到...

5486
来自专栏生信技能树

Centos 下非 Root 安装 Microsoft R Open

Centos 下非 Root 安装 Microsoft R Open 作者: Hyacz hyacinth.hao@foxmail.com 2017年8月30...

38512
来自专栏Timhbw博客

防止WordPress后台被暴力破解

2017-04-0613:34:01 发表评论 955℃热度 WordPress作为使用人数最多的博客系统,一直是大家关注的焦点,不安好心的人找漏洞,钻空子爆...

3556
来自专栏云计算教程系列

Nano文本编辑器使用教程

nano是Unix和类Unix系统中的一个文本编辑器,是Pico的复制品(clone)。nano的目标是类似Pico的全功能但又易于使用的编辑器。nano是遵守...

952

扫码关注云+社区