顾名思义,ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。

ConfigMap同Kubernetes的另一个概念secret类似,区别是ConfigMap主要用于保存不包含敏感信息的明文字符串。

创建方式:

kubectl create configmap special-config --from-literal=i042416=jerry

上述命令行创建了一个名为special-config的键值对,

key为i042416, 值为jerry

接下来我希望用这个key为i042416的值"jerry"来定义成pod里的一个环境变量。

下面是我的yaml文件:

apiVersion: v1

2 kind: Pod

3 metadata:

4 name: jerry-config-pod

5 spec:

6 containers:

7 - name: test-container

8 image: gcr.io/google_containers/busybox

9 command: [ "/bin/sh", "-c", "env" ]

10 env:

11 - name: JERRY_NAME

12 valueFrom:

13 configMapKeyRef:

14 name: special-config

15 key: i042416

16 restartPolicy: Never

可以看到第15行引用了我的ConfigMap的key:i042416

下面使用create -f将该yaml文件导入,创建一个新的pod:

创建之后,能在pod的明细页面看到configMap的key已经作为环境变量显示出来了:

因为我yaml文件里指定pod执行的script为/bin/sh -c env, 因此最后会将容器里所有的环境变量都打印出来,我们定义在ConfigMap里的i042416的值jerry也被显示了出来:

这种定义环境变量的做法和SAP云平台CloudFoundry环境里定义环境变量的方式很类似。

CloudFoundry环境变量一览表:

https://docs.run.pivotal.io/devguide/deploy-apps/environment-variable.html

  • CF_INSTANCE_ADDR
  • CF_INSTANCE_GUID
  • CF_INSTANCE_INDEX
  • CF_INSTANCE_IP
  • CF_INSTANCE_INTERNAL_IP
  • CF_INSTANCE_PORT
  • CF_INSTANCE_PORTS
  • DATABASE_URL
  • HOME
  • LANG
  • MEMORY_LIMIT
  • PORT
  • PWD
  • TMPDIR
  • USER
  • VCAP_APP_PORT
  • VCAP_APPLICATION
  • VCAP_SERVICES

当使用cf push命令将本地应用部署到SAP云平台的CloudFoundry环境下时,某些环境变量会自动被系统写入相应的值,这个行为同ABAP的sy-sysid自动被设置为当前系统ID具有一样的逻辑。

比如app router会把用户访问请求重定向到XSUAA实例上。

app router在manifest.yml里定义的XSUAA实例名称为xsuaa-jerry-demo,

在运行时这个XSUAA的id会被SAP云平台自动写入环境变量VCAP_SERVICES里:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Kubernetes里的ConfigMap的用途的更多相关文章

  1. 如何使用Kubernetes里的NetworkPolicy

    创建一个类型为NetworkPolicy的Kubernetes对象的yaml文件. 第九行的podSelector指定这个NetworkPolicy施加在哪些pod上,通过label来做pod的过滤. ...

  2. 使用Kubernetes里的job计算圆周率后2000位

    使用Kubernetes里的job(作业),我们可以很方便地执行一些比较耗时的操作. 新建一个job.ymal文件: 定义了一个Kubernetes job,名称为pi,类型为job,容器名称为pi, ...

  3. 如何在Kubernetes里创建一个Nginx service

    Jerry之前的文章如何在Kubernetes里创建一个Nginx应用,已经使用kubectl命令行创建了Pod,但是在kubernetes中,Pod的IP地址会随着Pod的重启而变化,因此用Pod的 ...

  4. kubernetes里kube-proxy的ConfigMap误删除处理

    由于想要开启ipvs,没想到把cm当成pod删除了....然后就开始了修复之路 ConfigMap介绍 ConfigMap是一种API对象,用来将非加密数据保存到键值对中.可以用作环境变量.命令行参数 ...

  5. kubernetes系列之ConfigMap使用方式

    作用理解 核心用途就是容器和配置的分离解耦. 如启用一个mysql容器,mysql容器重要的文件有两部分,一部分为存储数据文件,一部分为配置文件my.cnf,存储数据可以用持久存储实现和容器的分离解耦 ...

  6. Kubernetes中的Configmap和Secret

    本文的试验环境为CentOS 7.3,Kubernetes集群为1.11.2,安装步骤参见kubeadm安装kubernetes V1.11.1 集群 应用场景:镜像往往是一个应用的基础,还有很多需要 ...

  7. Kubernetes外挂配置管理—ConfigMap介绍

    目录贴:Kubernetes学习系列 其他容器编排调度工具会大谈特谈“轻应用”.“十二要素应用”,这样就势必会对企业级复杂应用做很大的改动.Kubernetes是为了解决“如何合理使用容器支撑企业级复 ...

  8. Kubernetes 学习13 kubernetes pv pvc configmap 和secret

    一.概述 1.我们在pvc申请的时候未必就有现成的pv能正好符合这个pvc在申请中指定的条件,毕竟上一次的成功是我们有意设定了有一些满足有一些不满足的前提下我们成功创建了一个pvc并且被pod绑定所使 ...

  9. Kubernetes里的Service是如何工作的

    Service是Kubernetes接入层的一种抽象资源,它为我们提供了一种固定的.统一的访问接口地址和负载均衡能力,这时可能会想到,当时使用docker-compose的时候,不存在Service概 ...

随机推荐

  1. iOS设备屏幕分辨率分布

    iOS设备屏幕分辨率比较单一,960*640是iPhone4和4s的分辨率,占比67.4%;1024*768是iPad1和iPad2的分辨率,占比22.5%;480*320是iPhone3和3gs的分 ...

  2. 【Linux学习】Vi / Vim编辑器—编辑器工作模式、vi编辑操作

    Vi / Vim编辑器-编辑器工作模式.vi编辑操作 推荐一个很好的学习指南:http://www.oschina.net/translate/learn-vim-progressively 一.编辑 ...

  3. Flutter实战视频-移动电商-18.首页_火爆专区后台接口调试

    18.首页_火爆专区后台接口调试 楼层结束之后有个火爆专区.到地图有个上拉加载的效果 lib/config/service_url.dart 首先找到我们的接口配置文件,增加接口的配置 lib/ser ...

  4. 解决“System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本”

    问题描述:远程访问该数据库(客户端同样是Oracle11g)提示“System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本”. 解决的办法: 1.一定要关闭Win ...

  5. 洛谷 - P1593 - 因子和 - 费马小定理

    类似的因为模数比较小的坑还有卢卡斯定理那道,也是有时候逆元会不存在,因为整除了.使用一些其他方法避免通过逆元. https://www.luogu.org/fe/problem/P1593 有坑.一定 ...

  6. DZNEmptyDataSet——空白数据集显示框架

    GitHub地址:DZNEmptyDataSet DZNEmptyDataSet DZNEmptyDataSet 是基于 UITableView/UICollectionView 的范畴/扩展(cat ...

  7. mysql--浅谈视图1

    这是对自己学习燕十八老师mysql教程的总结,非常感谢燕十八老师. 依赖软件:mysql5.6 系统环境:win 视图(view) 什么是视图? 答:视图是表通过某种运算得到的一个投影,占有一定空间的 ...

  8. P3809【模板】后缀排序

    传送门 深入理解了一波后缀数组,这东西真的很妙诶,自己推感觉完全不现实,看来只能靠背代码了 这段时间就多敲敲,把板子记熟吧 代码: #include<cstdio> #include< ...

  9. Access restriction: The type 'JPEGCodec' is not API

    问题 今天导入项目时Eclipse报错如下: Access restriction: The type 'JPEGCodec' is not API (restriction on required ...

  10. HDU6300(2018多校第一场)

    Bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6300 排个序就好了 #include<iostream> #include& ...