K8S使用ConfigMap管理应用配置

前言

ConfigMap可以明文存放应用配置文件,支持多种创建模式,可以使配置文件和镜像解耦,提高镜像的复用性,同时更加灵活的更新配置文件而不需要重构镜像。

1.创建ConfigMap

1.1通过yaml文件创建ConfigMap(常用)

cat > nginx-cm.yaml << EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: config       #定义ConfigMap的名称,用于绑定到pod使用
data:
  nginx.conf: |-     #配置文件的名字和内容,|- 是固定格式,不能省略
    server {
        listen 80;
        server_name baidu.com;
        root /home;
        index.html index.htm;
 
  nginx2.conf: |-    #有多个配置文件按格式添加即可,也可写多个yaml文件定义
    server {
        listen 80;
        server_name jindong.com;
        root /nginx;
        index.html index.htm;   #配置文件缩减需要统一,不然会报错
EOF
kubectl apply -f nginx-cm.yaml

1.2通过 –from-file 参数创建ConfigMap(常用)

cat > nginx.conf << EOF
server {
        listen 80;
        server_name baidu.com;
        root /home;
        index.html index.htm;
EOF

cat > nginx2.conf << EOF
server {
        listen 80;
        server_name baidu.com;
        root /home;
        index.html index.htm;
EOF
kubectl create configmap nginx-cm --from-file=./nginx.conf --from-file=./nginx2.conf  #nginx-cm为cm的名称

1.3查看configmap

kubectl get cm            #查看所有configmap
kubectl get cm nginx-cm   #查看指定configmap

2.ConfigMap绑定到pod

使用 Volume 的方式将ConfigMap绑定到pod

cat nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: blog-nginx
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: blog-nginx
      tier: frontend
  template:
    metadata:
      labels:
        app: blog-nginx
        tier: frontend
    spec:
      nodeSelector:
        nginxssr: ssr
      containers:
      - name: nginx
        image: nginx:v2
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          name: nginx
        volumeMounts:
        - name: config                     #名称,与volumes的name相对应
          mountPath: /etc/nginx/conf.d/    #指定configmap作为配置文件在pod容器中路径
      volumes:
      - name: config                       #名称,与volumeMounts的name相对应
        configMap:
          name: nginx-wp-config            #填写定义的configmap的名称,即可绑定

3.动态修改configmap

configmap支持动态修改,不需要重建configmap

查看configmap属性

kubectl describe cm nginx-cm  #查看configmap属性

动态修改configmap

kubectl  edit cm nginx-cm    #进入configmap进行修改,操作与 vim 一样

修改完configmap之后重启pod即可加载配置,热加载配置的方法未收录 😃。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐