configmap
configMap描述信息
configMap功能在Kubernetes1.2版本中引入,许多应用程序会从配置文件,命令行参数或环境变量中读取配置信息。ConfigMap API给我们提供了向容器中注入配置信息的机制。ConfigMap可以被用来保存单个属性。
也可以用来保存整个配置文件或者JSON二进制大对象。
ConfigMap的创建
1,使用目录创建
$ls docs/user-guide/configmap/kubectl/
game.properties
ui.properties
$cat docs/user-guide/configmap/kubectl/game.properties
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
$cat docs/user-guide/configmap/kubectl/ui.properties
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice
$kubectl create configmap game-config --from-file=docs/user-guide/configmap/kubectl
-from-file指定在目录下的所有文件都会被用在ConfigMap里面创建一个键值对。键的名字就是文件名。值就是文件的内容。
2.使用文件创建
只要指定为一个文件就可以从单个文件中创建ConfigMap
$kubectl create configmap game-config-2 --from-file=docs/user-
guide/configmap/kubectl/game.properties
$kubectl get configmaps game-config-2 -o yaml
-from-file 这个参数可以使用多次,你可以使用两次分别指定上个实例中的那两个配置文件,效果就跟指定整个目录是一样的。
3使用字面值创建
使用文字值创建,利用 -from-literal参数传递配置信息。该参数可以使用多次。格式如下。
$kubectl create configmap special-config --from-literal=specical.how=very --from-literal=special.type=charm
$kubectl get configmaps special=config -o yaml
1.Pod中使用ConfigMap
1.使用ConfigMap来替代环境变量。
apiVersion:v1
kind : configMap
metafata:
name: special-config
namespace:default
data:
special.how: very
special.type: charm
apiVersion: v1
kind: ConfigMap
metadata:
name:env-config
namespace:default
data:
log_level:INFO
apiVersion: v1
kind: Pod
命令
kubectl get cm
kubectl describe cm env-config
2.用configMap设置命令行参数
APIVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
-name:test-container
image: hub.atguigu.com/library/myapp:v1
command: ["/bin/sh","-c","echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
env:
-name: SPECIAL_LEVEL_KEY
valueFrom:
configMapkeyRef:
name: special-config
key: special.how
-name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.type
restarPolicy: Never
3.通过数据卷插件使用ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
在数据卷里面使用这个ConfigMap,有不同的选项。最基本的就是将文件填入数据卷。在这个文件中。键就是文件名。键值就是文件内容。
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
name:test-contrainer
image:v1
command:
volumeMounts:
-name: config-volume
mountPath: /etc/config