Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于 Kubernetes 的 ConfigMap 实现的腾讯云配置文件管理功能介绍

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

原创
作者头像
腾讯云容器服务团队
修改于 2017-09-07 03:09:49
修改于 2017-09-07 03:09:49
3.5K0
举报

引言

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

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

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

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

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

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

代码语言:sh
AI代码解释
复制
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设置成容器的环境变量。

代码语言:sh
AI代码解释
复制
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结束后会输出

代码语言:txt
AI代码解释
复制
REPLICAS=2
IMAGE_VERSION=v2.0
OTHERKEY=OTHERVALUE

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

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

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

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

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

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

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

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

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

代码语言:txt
AI代码解释
复制
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命令进入容器后,查看挂载文件的信息。

代码语言:txt
AI代码解释
复制
/ # 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界面直接进行操作,更加方便。同时支持配置文件的版本管理,便于回滚和追溯。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kubernetes中ConfigMap的使用
ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。
王先森sec
2023/10/17
3930
腾讯云TKE使用之ConfigMap挂载
ConfigMap(Kubernetes简称cm)作为Kubernetes 提供的一种资源,可以将配置信息,跟业务镜像解耦开来,提高业务镜像的移植性。
白鹏飞
2020/05/17
1.8K0
Kubernetes 漫游:理解 ConfigMap
通过 docker desktop 可以安装适用于单机和开发环境单机版的 K8S,如果 docker desktop 无法启动 Kubernates 通过以下方式解决:
phoenix.xiao
2023/11/16
3080
Kubernetes 漫游:理解 ConfigMap
kubernetes ConfigMap使用详解
在应用部署时,配置文件几乎是绕不开的,通常我们是把配置文件放置在指定目录下,通过配置文件使应用修改的灵活性更高。但是如果我们把应用打包成容器镜像后,容器内的镜像文件就不容易修改了,一般我们会采用以下方式修改容器中的配置文件:
星星在线
2020/11/19
2K0
kubernetes ConfigMap使用详解
Kubernetes中的Configmap和Secret
如果需要向容器传递参数,可以在Yaml文件中通过command和args或者环境变量的方式实现。
大江小浪
2018/12/05
1.9K0
Kubernetes中的Configmap和Secret
【K8S专栏】Kubernetes应用配置管理
不论什么样的应用,基本都有配置文件,在企业中,大部分会用到配置中心,比如apollo、nacos等,也有一些公司直接使用Kubernetes自带的配置管理,主要有:
没有故事的陈师傅
2022/12/06
6110
ConfigMap(二)
一旦创建了 ConfigMap,就可以在 Kubernetes Pod 中使用它。有两种方法可以使用 ConfigMap 中的配置数据:作为环境变量或作为卷。
玖叁叁
2023/05/02
3290
「走进k8s」Kubernetes1.15.1的ConfigMap(26)
PS:ConfigMap是kubernetes的一个核心的概念,跟上次说的service一样,这个在实际的环境中使用很频繁。当ConfigMap以数据卷的形式挂载进Pod的时,这时更新ConfigMap(或删掉重建ConfigMap),Pod内挂载的配置信息会热更新。这时可以增加一些监测配置文件变更的脚本,然后reload对应服务。ConfigMap允许您将配置文件从容器镜像中解耦,从而增强容器应用的可移植性。
IT架构圈
2019/08/29
6890
「走进k8s」Kubernetes1.15.1的ConfigMap(26)
K8S ConfigMap使用
configmap是k8s的一个配置管理组件,可以将配置以key-value的形式传递,通常用来保存不需要加密的配置信息,加密信息则需用到Secret,主要用来应对以下场景:
oYabea
2020/09/07
3.6K0
一文学会 Kubernetes 之 ConfigMap
我们知道,在几乎所有的应用开发中,都会涉及到配置文件的变更,比如说在web的程序中,需要连接数据库,缓存甚至是队列等等。而我们的一个应用程序从写第一行代码开始,要经历开发环境、测试环境、预发布环境只到最终的线上环境。而每一个环境都要定义其独立的各种配置。如果我们不能很好的管理这些配置文件,你的运维工作将顿时变的无比的繁琐。为此业内的一些大公司专门开发了自己的一套配置管理中心,如360的Qcon,百度的disconf等。kubernetes也提供了自己的一套方案,即ConfigMap。kubernetes通过ConfigMap来实现对容器中应用的配置管理。
kubernetes中文社区
2019/06/24
7730
【云原生 | Kubernetes篇】Kubernetes 配置(十五)
要使用 Secret,Pod 需要引用 Secret。 Pod 可以用三种方式之一来使用 Secret:
Lansonli
2022/06/21
6390
【云原生 | Kubernetes篇】Kubernetes 配置(十五)
Pod 配置管理:configMap
ConfigMap 以一个或多个 key:value 的形式保存在 kubernetes 系统中供应用使用,既可以用于表示一个变量的值,也可以用于表示一个完整配置文件的内容。
看、未来
2022/09/27
6420
k8s-kubernetes-configmap存储
ConfigMap功能在Kubernetes1.2版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。 ConfigMap API给我们提供了向容器中注入配置信息的机制, ConfigMap可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象
eadela
2019/12/11
4880
kubernetes中configmap和secret
Kubernetes是一个容器编排平台,用于管理容器化应用程序的部署、扩展和管理。在Kubernetes中,ConfigMap和Secret是两个核心概念,它们用于存储应用程序的配置和敏感数据,以便应用程序可以使用它们。
堕落飞鸟
2023/04/01
4880
ConfigMap用管理对象的方式管理配置
在今天的文章中我将介绍Kubernetes中的ConfigMap对象。它的主要用途什么,为什么要用ConfigMap以及在Kubernetes里通常是如何使用ConfigMap的管理应用配置的。
KevinYan
2020/11/10
9980
K8S学习笔记之Kubernetes 配置管理 ConfigMap
很多情况下我们为某一应用做好镜像,当我们想修改其中的一些参数的时候,就变得比较麻烦,又要重新制作镜像,我们是不是有一种方式,让镜像根据不同的场景调用我们不同的配置文件呢,那我们就需要用到 k8s 的另外一种资源,那就是 ConfigMap。
Jetpropelledsnake21
2019/07/01
2K0
kubernetes系列之ConfigMap使用方式
如启用一个mysql容器,mysql容器重要的文件有两部分,一部分为存储数据文件,一部分为配置文件my.cnf,存储数据可以用持久存储实现和容器的分离解耦,配置文件也能够实现和容器的分离解耦,也就是说mysql容器能够直接读取并使用预先配置好的配置文件(而不是使用容器中默认自带的配置文件).这就是configMap的功能。
程序员同行者
2019/04/18
3.1K4
Kubernetes-配置字典ConfigMap
很多生产环境中的应用程序配置较为复杂,可能需要多个config文件、命令行参数和环境变量的组合。使用容器部署时,把配置应该从应用程序镜像中解耦出来,以保证镜像的可移植性。尽管Secret允许类似于验证信息和秘钥等信息从应用中解耦出来,但在K8S1.2前并没有为了普通的或者非secret配置而存在的对象。在K8S1.2后引入ConfigMap来处理这种类型的配置数据。
菲宇
2019/06/12
1.5K0
结合例子讲解 Kubernetes 如何实现应用配置管理
本文整理自《CNCF x Alibaba 云原生技术公开课》第 8 讲,点击“阅读原文”直达课程页面
kubernetes中文社区
2020/09/01
7110
结合例子讲解 Kubernetes 如何实现应用配置管理
Kubernetes持久化配置文件
ConfigMap了解 描述信息ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者 JSON 二进制大对象
Yuou
2022/09/26
2800
相关推荐
Kubernetes中ConfigMap的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档