赞
踩
ConfigMap是Kubernetes 在1.2版本中引入的功能,这篇文章围绕者ConfigMap的4种常用的方式创建方法进行介绍,并将关联的查询和修改删除等操作进行说明。
这里使用一张来源与网络的图来说明ConfigMap常见的使用场景之一:
在Kubernetes 引入ConfigMap时的说明种提到是为了进行“动态配置管理”,上述图示很好地进行了说明,比如名为my-config的配置内容,在开发、测试和生产有不同的配置,通过ConfigMap即可对配置进行动态管理,根据需要进行关联,在实际的使用种更加灵活。
常见的创建方式有如下4种:
本文使用Kubernetes 1.17,可参看下文进行快速环境搭建:
执行命令:kubectl get configmap
或者
执行命令:kubectl get cm
执行命令:kubectl get configmap -n 命名空间名称
执行命令:kubectl get configmap -A
或者
执行命令:kubectl get cm -A
[root@host131 config]# kubectl get configmap
No resources found in default namespace.
[root@host131 config]#
执行命令:kubectl create configmap ConfigMap名称 --from-literal=key1=value1 --from-literal=key2=value2 …
执行示例:
设定项目 | 设定值 |
---|---|
user.name | liumiao |
user.id | 1001 |
[root@host131 config]# kubectl create configmap user-configmap-literal --from-literal=user.name=liumiao --from-literal=user.id=1001
configmap/user-configmap-literal created
[root@host131 config]#
查询创建的ConfigMap信息
[root@host131 config]# kubectl get configmap NAME DATA AGE user-configmap-literal 2 94s [root@host131 config]# kubectl describe configmap user-configmap-literal Name: user-configmap-literal Namespace: default Labels: <none> Annotations: <none> Data ==== user.id: ---- 1001 user.name: ---- liumiao Events: <none> [root@host131 config]#
执行命令:kubectl create configmap ConfigMap名称 --from-file=ConfigMap文件名
执行示例:
设定项目 | 设定值 |
---|---|
user.name | liumiao |
user.id | 1001 |
保存上述设定的ConfigMap文件名称为:
[root@host131 config]# ls
user.properties
[root@host131 config]# cat user.properties
user.name=liumiao
user.id=1001
[root@host131 config]#
创建ConfigMap文件
[root@host131 config]# kubectl create configmap user-configmap-file --from-file=user.properties
configmap/user-configmap-file created
[root@host131 config]#
确认结果
[root@host131 config]# kubectl get cm NAME DATA AGE user-configmap-file 1 5s user-configmap-literal 2 8m57s [root@host131 config]# kubectl describe configmap user-configmap-file Name: user-configmap-file Namespace: default Labels: <none> Annotations: <none> Data ==== user.properties: ---- user.name=liumiao user.id=1001 Events: <none> [root@host131 config]#
执行命令:kubectl create configmap ConfigMap名称 --from-file=ConfigMap文件所在目录名
此种方式与方式2的区别在于如果指定目录下可能会有多个文件
执行示例:
设定项目 | 设定值 |
---|---|
user.name | liumiao |
user.id | 1001 |
保存上述设定的ConfigMap文件名称为:
[root@host131 config]# ls
user.properties
[root@host131 config]# cat user.properties
user.name=liumiao
user.id=1001
[root@host131 config]#
指定当前目录进行创建
[root@host131 config]# kubectl create configmap user-configmap-dir --from-file=.
configmap/user-configmap-dir created
[root@host131 config]#
确认结果
[root@host131 config]# kubectl get configmap NAME DATA AGE user-configmap-dir 1 5s user-configmap-file 1 3m58s user-configmap-literal 2 12m [root@host131 config]# kubectl describe configmap user-configmap-dir Name: user-configmap-dir Namespace: default Labels: <none> Annotations: <none> Data ==== user.properties: ---- user.name=liumiao user.id=1001 Events: <none> [root@host131 config]#
执行命令:kubectl create -f ConfigMap的yaml文件
此种方式的区别在于包括类型、名称以及内容都需要在yaml文件中进行说明,事前准备如下配置文件
[root@host131 config]# cat prometheus.configmap.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-configmap
data:
prometheus.yml: |
global:
scrape_interval: 10s
evaluation_interval: 10s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
[root@host131 config]#
创建ConfigMap
[root@host131 config]# kubectl create -f prometheus.configmap.yml
configmap/prometheus-configmap created
[root@host131 config]#
结果确认
[root@host131 config]# kubectl get cm NAME DATA AGE prometheus-configmap 1 8s user-configmap-dir 1 6m21s user-configmap-file 1 10m user-configmap-literal 2 19m [root@host131 config]# [root@host131 config]# kubectl describe cm prometheus-configmap Name: prometheus-configmap Namespace: default Labels: <none> Annotations: <none> Data ==== prometheus.yml: ---- global: scrape_interval: 10s evaluation_interval: 10s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] Events: <none> [root@host131 config]#
执行命令:kubectl delete configmap ConfigMap名称
执行示例
[root@host131 config]# kubectl get cm
NAME DATA AGE
prometheus-configmap 1 5m40s
user-configmap-dir 1 11m
user-configmap-file 1 15m
user-configmap-literal 2 24m
[root@host131 config]# kubectl delete configmap user-configmap-literal
configmap "user-configmap-literal" deleted
[root@host131 config]# kubectl get cm
NAME DATA AGE
prometheus-configmap 1 6m10s
user-configmap-dir 1 12m
user-configmap-file 1 16m
[root@host131 config]#
执行命令:kubectl edit configmap ConfigMap名称
事前确认
[root@host131 config]# kubectl describe configmap user-configmap-file
Name: user-configmap-file
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
user.properties:
----
user.name=liumiao
user.id=1001
Events: <none>
[root@host131 config]#
修改ConfigMap设定内容
[root@host131 config]# kubectl edit configmap user-configmap-file
configmap/user-configmap-file edited
[root@host131 config]#
修改内容如下所示
apiVersion: v1
data:
user.properties: |
user.name=liumiaocn
user.id=1003
kind: ConfigMap
metadata:
creationTimestamp: "2020-01-03T06:18:06Z"
name: user-configmap-file
namespace: default
resourceVersion: "36993"
selfLink: /api/v1/namespaces/default/configmaps/user-configmap-file
uid: fc26a0ff-594b-4b4d-bb86-69ee598de97f
修改结果确认
[root@host131 config]# kubectl describe configmap user-configmap-file
Name: user-configmap-file
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
user.properties:
----
user.name=liumiaocn
user.id=1003
Events: <none>
[root@host131 config]#
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。