顾名思义,ConfigMap用于保存配置数据的键值对,能够用来保存单个属性,也能够用来保存配置文件。html
ConfigMap同Kubernetes的另外一个概念secret相似,区别是ConfigMap主要用于保存不包含敏感信息的明文字符串。api
建立方式:app
kubectl create configmap special-config --from-literal=i042416=jerryide
上述命令行建立了一个名为special-config的键值对,ui
key为i042416, 值为jerrygoogle
接下来我但愿用这个key为i042416的值"jerry"来定义成pod里的一个环境变量。spa
下面是个人yaml文件:命令行
apiVersion: v1rest
2 kind: Podrouter
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/d...
当使用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的原创文章,请关注公众号"汪子熙":