168 lines
3.5 KiB
Markdown
168 lines
3.5 KiB
Markdown
### 创建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
|
||
```
|