意义
ConfigMap 是一种 API 对象,用来将数据(非机密性)保存到键值对中;Pods 可以
将其用作环境变量、命令行参数或者存储卷中的配置文件
实际工作中,可以将环境变量设置为引用 Kubernetes 集群中的公开服务,云端服务
可以使用配置参数,本地调试也可以使用完全相同的代码
微服务搭建过程中,通过编写configMap实现配置共享,提供更新配置效率及引用便捷
configMap命令行创建
[root@k8smaster4 ~]# kubectl create configmap my-config --from-literal=tomcat_port=8080 --from-literal=tomcat_server=192.168.0.117
-----
[root@k8smaster4 ~]# kubectl get cm
NAME DATA AGE
kube-root-ca.crt 1 157d
my-config 2 6s
mysql-configmap 4 65d
[root@k8smaster4 ~]# kubectl describe cm my-config
Name: my-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
tomcat_port:
----
8080
tomcat_server:
----
192.168.0.117
BinaryData
====
Events: <none>
[root@k8smaster4 ~]#
指定文件夹创建
[root@k8smaster4 cm]# kubectl create configmap my-config --from-file=www=/root/cm
指定文件创建
[root@k8smaster4 cm]# kubectl create configmap my-config --from-file=/root/cm/nginx.conf
volume挂载创建
[root@k8smaster4 cm]# cat demo2.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
namespace: default
labels:
environment: test
app: nginx-demo
app.kubernetes.io/name: MyApp
spec:
containers:
- name: nginx-demo
image: docker.io/library/nginx
imagePullPolicy: IfNotPresent
ports:
- name: nginxport
containerPort: 80
protocol: TCP
resources:
requests:
memory: "2Gi"
cpu: "100m"
limits:
memory: "5Gi"
cpu: "200m"
volumeMounts:
- name: configmap
mountPath: /etc/nginx
volumes:
- name: configmap
configMap:
name: my-nginx
---
apiVersion: v1
kind: Service
metadata:
name: myservice
namespace: default
labels:
app.kubernetes.io/name: myService
spec:
selector:
app.kubernetes.io/name: MyApp
ports:
- targetPort: 80
port: 80
protocol: TCP
nodePort: 30009
type: NodePort
configmap 更新
[root@k8smaster4 cm]# kubectl edit cm my-nginx
configmap/my-nginx edited