3.5 KiB
3.5 KiB
创建ConfigMap的方法:
通过直接在命令行中指定configmap参数创建,即--from-literal
通过指定文件创建,即将一个配置文件创建为一个ConfigMap--from-file=<文件>
通过指定目录创建,即将一个目录下的所有配置文件创建为一个ConfigMap,--from-file=<目录>
事先写好标准的configmap的yaml文件,然后kubectl create -f 创建
命令行指定参数创建
kubectl create configmap demo_config --from-literal=name=demo --from-literal=version=v1
指定文件创建
kubectl create configmap demo_config --from-file=k1=/path/to/file1 --from-file=k2=/path/to/file2
指定目录创建(以目录下的文件名为键,内容为值)
只识别文件,忽略目录下的子目录
kubectl create configmap demo_config --from-file=k1=/path1 --from-file=/path2
以yaml文件创建
apiVersion: v1
kind: ConfigMap
metadata:
name: demo_config
namespace: demo-ns
labels:
name: demo
version: v1
data:
name: demo
version: v1
使用ConfigMap
第一种是通过环境变量的方式,直接传递给pod
使用configmap中指定的key
使用configmap中所有的key
第二种是通过在pod的命令行下运行的方式(启动命令中)
第三种是作为volume的方式挂载到pod内
valueFrom、configMapKeyRef指定key
apiVersion: v1
kind: Pod
metadata:
name: pod-demo1
namespace: demo-ns
labels:
name: pod-demo1
version: v1
spec:
containers:
- name: demo
image: demo1
command:
- "/bin/sh"
- "-c"
- "echo hello demo"
ports:
- name: demo-http
containerPort: 80
protocol:TCP
env:
valueFrom:
- name: CONFIG_ENV
configMapKeyRef:
name: demo_config
key: name
envFrom、configMapRef指定configmap中所有key
apiVersion: v1
kind: Pod
metadata:
name: pod-demo1
namespace: demo-ns
labels:
name: pod-demo1
version: v1
spec:
containers:
- name: demo
image: demo1
command:
- "/bin/sh"
- "-c"
- "echo hello demo"
ports:
- name: demo-http
containerPort: 80
protocol:TCP
envFrom:
- configMapRef:
name: demo_config
在命令行下引用时,需要先设置为环境变量,之后可以通过$(VAR_NAME)设置容器启动命令的启动参数
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: SPECIAL_LEVEL
- name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: SPECIAL_TYPE
restartPolicy: Never
作为volume挂载使用
以key为文件名,value为内容
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-configmap
spec:
replicas: 1
template:
metadata:
labels:
app: nginx-configmap
spec:
containers:
- name: nginx-configmap
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: config-volume4
mountPath: /tmp/config4
volumes:
- name: config-volume4
configMap:
name: test-config4