Kubernetes资源ConfigMap

本文详细介绍了Kubernetes的ConfigMap,包括其基本概念、创建方式(命令行、文件、目录、清单)、通过环境变量和挂载引入ConfigMap,以及实战案例,展示了如何为Redis配置引入ConfigMap。
摘要由CSDN通过智能技术生成

一、ConfigMap的基本概念

1、什么是configMap

ConfigMap资源主要为容器注入相关的程序配置信息,用来定制程序的运行方式,比如Redis监听端口、最大客户端连接数。

当定义好一个ConfiqMap资源后,如果Pod需要使用,可以通过通过环境变量、或存储卷的形式将其挂载并加载相关的配置,降低了配置与镜像文件的耦合关系。

2、为什么需要configMap

将应用配置信息与程序进行分离,这样可以使得应用程序被更好地复用通过不同的配置能实现更灵活的功能,例如:在测试环境中Nqinx提供test域名访问,且没配置压缩功能,而在生产环境中则需要提供www域名访问,且需要开启压缩功能,所以将应用容器与配置分离,根据不同的环境调用不同的ConfigMap配置,能有效的降低耦合度和复杂度。

二、使用命令创建configMap

1.使用 kubectl create configmap命令使用 --from-literal 选项给出键值对来创建 ConfigMap

[root@master configMap]# kubectl  create configmap  nginx-command-cm --from-literal=nginx.host='0.0.0.0' --from-literal=nginx.port='8899'
configmap/nginx-command-cm created
[root@master configMap]# kubectl  get configmaps 
NAME               DATA   AGE
kube-root-ca.crt   1      108d
nginx-command-cm   2      8s

2.通过 kubectl get configmap 查看 nginx-comand-cm对象YAML格式可以看出,ConfigMap资源没有 sepc和status,而是直接使用data字段嵌套键值数据。
在这里插入图片描述

  • 从上配置得知,若要基于配置清单创建ConfigMap资源时,仅需要指定apiVersion、kind、metadata、data这四个字段;
    在这里插入图片描述

三、基于文件创建configMap

ConfigMap资源也可以为应用程序提供大段配置,这些大段配置通常保存在一个或多个文件中,可以使用 kubectl create configmap 命令,通过 --from-file 选项一次加载一个配置文件的内容为指定键的值。默认文件名为key,文件内容为values

1、准备两个Nginx的配置文件

## Nginx的主配置文件
vim myserver.conf
server {
   
  listen 8080;
  server name my.oldxu.net;
  Location / {
   
    root / usr/share/nginx/html;
        index index.html;
  }
  include /etc/nginx/conf.d/*.cfg;
}

## Nginx的分配置文件,Nginx模块状态配置
vim myserver-status.cfg
Location /ngx_status {
   
  stub status;
  access_log off;
}

2、基于文件进行创建configMap

## 准备两个配置文件
[root@master configMap]# vim myserver.conf
[root@master configMap]# vim myserver-status.cfg
## 基于配置文件进行创建configmap
[root@master configMap]# kubectl  create  configmap  nginx-confs --from-file=./myserver.conf --from-file=status.cfg=./myserver-status.cfg 
configmap/nginx-confs created
## 查看configMap
[root@master configMap]# kubectl get configmaps 
NAME               DATA   AGE
kube-root-ca.crt   1      108d
nginx-command-cm   2      13m
nginx-confs        2      7s
[root@master configMap]# kubectl  describe configmaps nginx-confs  
Name:         nginx-confs
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
myserver.conf:
----
server {
   
  listen 8080;
  server name my.oldxu.net;
  Location / {
   
    root / usr/share/nginx/html;
  index index.html;
  }
  include /etc/nginx/conf.d/*.cfg;
}

status.cfg:
----
Location /ngx_status {
   
  stub status;
  access_log off;
}


BinaryData
====

Events:  <none>

## 导出configMap的yaml文件
[root@master configMap]# kubectl  get configmaps  nginx-confs  -o yaml 
apiVersion: v1
data:
  myserver.conf: server {
   \n  listen 8080;\n  server name my.oldxu.net;\n  Location
    / {
   \n    root / usr/share/nginx/html;\n\tindex index.html;\n  }\n  include /etc/nginx/conf.d/*.cfg;\n<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值