前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S ConfigMap使用

K8S ConfigMap使用

作者头像
oYabea
发布2020-09-07 11:50:54
3.4K0
发布2020-09-07 11:50:54
举报

k8s系列文章:

configmap是k8s的一个配置管理组件,可以将配置以key-value的形式传递,通常用来保存不需要加密的配置信息,加密信息则需用到Secret,主要用来应对以下场景:

  1. 使用k8s部署应用,当你将应用配置写进代码中,就会存在一个问题,更新配置时也需要打包镜像,configmap可以将配置信息和docker镜像解耦。
  2. 使用微服务架构的话,存在多个服务共用配置的情况,如果每个服务中单独一份配置的话,那么更新配置就很麻烦,使用configmap可以友好的进行配置共享。

其次,configmap可以用来保存单个属性,也可以用来保存配置文件。

创建

你可以通过命令kubectl create configmap -h帮助信息查看具体的创建。

configmap有三种常见创建方式:

**1. 通过yaml / json文件创建(推荐) **

这种是我比较推荐的方式,创建configmap.yaml:

apiVersion: v1
kind: ConfigMap
metadata: 
  name: test-conf
  namespace: test
data:
  test-conf: |+
    SESSION_LIFETIME: 3600
    URL: "http://test-server:8080"

执行命令:

kubectl create -f configmap.yaml

若报错:"namespace 'test' not found",则需要先创建namespace:

kubectl create namespace test

2. 通过--from-file

分别指定单个文件和目录,指定目录可以创建一个包含该目录中所有文件的configmap:

kubectl create configmap *** --from-file=/path

将--from-file指定为单个文件就可以从单个文件中创建:

kubectl create configmap *** --from-file=file1

其中,--from-file可以使用多次,比如:

kubectl create configmap *** --from-file=file1 --from-file=file2

3. . 通过key-value字符串创建

kubectl create configmap *** --from-literal=config1=123 --from-literal=config2=234

4. 通过env文件创建

通过环境文件创建:

kubectl create configmap *** --from-env-file=env.txt

其中,env.txt的文件格式为:

config1=***
config2=***

当使用多个--from-env-file从多个数据源创建configmap时,仅最后一个env文件有效。

查看

可以使用以下命令查看创建成功的configmap:

命令

说明

kubectl get configmaps

查看所有configmap

kubectl get configmaps -n namespace1

查看命名空间为namespace1的所有configmap

kubectl describe configmaps configmap1

查看configmap1的详细信息

kubectl get configmaps configmap1 -o yaml

以yaml文件形式展示configmap详细信息

使用

configmap创建成功之后,如何在pod中使用呢?有以下几种方法:

注意

使用ConfigMap有以下几个限制条件:

  1. ConfigMap必须在pod之前创建
  2. configmap受namespace的限制,只能相同namespace的pod才可以引用
env

通过环境变量获取ConfigMap中的内容。

首先创建configmap:

kubectl create configmap test-config --from-literal=env_model=prd -n test

接下来用作环境变量,创建pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: test
spec:
  containers:
    - name: test-container
      image: test:v0.1
      env:
        - name: TEST-CONF
          valueFrom:
            configMapKeyRef:
              name: test-config
              key: env_model

执行命令创建Pod:

kubectl create -f pod.yaml

创建成功之后,执行命令查看pod的详细信息,可以看到已经将configmap中的配置添加到环境变量:

kubectl describe pod test-pod -n test

同时,也支持多个configmap共同创建环境变量。

volume

通过Volume挂载的方式将ConfigMap中的内容挂载为容器内部的文件或目录,这是我平时用的较多的方式。

接下来使用最开始创建的test-conf为例说明,将configmap挂载到特定目录,并保存为指定文件:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: test
spec:
  containers:
    - name: test-container
      image: test:v0.1
      volumeMounts:
      - name: test-volume
        mountpath: /app/config
  volumes:
    - name: test-volume
    configMap:
      name:test-conf
      items:
      - key: test-conf
        path: config.yaml      

以上。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建
  • 使用
    • env
      • volume
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档