Kubernetes入门(六)配置参数ConfigMap
容器配置参数的三种方式向容器传递命令行参数ENTRYPOINT["node","xxx.js"] # exec形式ENTRYPOINT node xxx.js #shell形式,比exec形式多一个shell进程,不推荐容器启动时,设置环境变量参数通过ConfigMap资源向将配置参数文件挂载到容器内k8s中覆盖命令和参数在k8s中定义容器时,镜像中的ENTRYPOINT和CMD参数都可以被覆盖,
·
容器配置参数的三种方式
- 向容器传递命令行参数
ENTRYPOINT["node","xxx.js"] # exec形式
ENTRYPOINT node xxx.js #shell形式,比exec形式多一个shell进程,不推荐
- 容器启动时,设置环境变量参数
- 通过ConfigMap资源向将配置参数文件挂载到容器内
k8s中覆盖命令和参数
在k8s中定义容器时,镜像中的ENTRYPOINT和CMD参数都可以被覆盖,配置参数为command和args,注意,这两个参数在pod被创建后无法修改
kind: Pod
spec:
containers:
- image: xxx
command: ["/bin/command"]
args: ["arg1","arg2","arg3"]
镜像 | pod |
---|---|
ENTRYPOINT | command 可执行文件 |
CMD | args 传递给可执行文件的参数 |
pod内指定环境变量
kind: Pod
spec:
containers:
- image: xxx
env: #指定环境变量
- name: FIRST_ENV
value: "12"
- name: SECOND_ENV
value: "$(FIRST_ENV)90" #引用FIRST_ENV的值,即为1290
利用ConfigMap解耦参数配置
ConfigMap是key-value映射对,应用程序无需直接读取ConfigMap,其参数配置通过环境变量或者卷文件的形式传递给容器,从而实现应用程序和参数配置的解耦。
开发与生产环境的ConfigMap分别配置
创建ConfigMap
①命令行方式创建
kubectl create configmap configmap_name \
--from-literal=config_1=90 \
--from-literal=config_2=100 \
--from-literal=config_3=110
ConfigMap
键名 | 键值 |
---|---|
config_1 | 90 |
config_2 | 100 |
config_3 | 110 |
②yaml文件创建
config-file.yaml
apiVersion: v1
data:
first_env: 12
metadata:
name: configureData
kubectl create -f config-file.conf
③直接读取配置文件config-file.conf
config-file.conf
abc
kubectl create configmap configmap_name --from-file=config-file.conf
ConfigMap
键名 | 键值 |
---|---|
config-file.conf | abc |
④从文件夹创建
kubectl create configmap configmap_name \
--from-file=foo.json \
--from-file=bar=foobar.conf \
--from-file=config-opts/ \
--from-literal=some=thing
从容器中读取ConfigMap
①使用valueFrom
apiVersion: v1
kind: Pod
metadata:
name: read-env-from-configmap
spec:
containers:
- image: xxx
env:
- name: FIRST_ENV #设置环境变量FIRST_ENV
valueFrom:
configMapRef: #初始化ConfigMap,不使其固定,从而实现动态调整
name: configmap_name # ConfigMap的名字
key: env_value # 引用configmap_name内的环境变量值env_value ,来填充FIRST_ENV
args: ["$(FIRST_ENV)"]#直接引用FIRST_ENV
一次传递所有ConfigMap的值
apiVersion: v1
kind: Pod
metadata:
name: read-env-from-configmap
spec:
containers:
- image: xxx
envFrom:
#- prefix: CONFIG_ #所有的环境变量都包含的前缀名字
configMapRef:
name: configmap_name
②使用ConfigMap卷,将条目作为文件挂载到容器
apiVersion: v1
kind: Pod
metadata:
name: read-env-from-configmap
spec:
containers:
- image: xxx
name: name_xxx
volumeMounts:
- name: config
mountPath: /etc/nginx/config.d #挂载ConfigMap到这个位置
readOnly: true
volumes:
- name: config
configMap:
name: configmap_name
注意:这种做法会使得 /etc/nginx/config.d目录下原所有文件都被隐藏掉
更多推荐
已为社区贡献3条内容
所有评论(0)