十二、kubernetes 核心技术configMap

本文介绍了Kubernetes的ConfigMap功能,用于管理应用配置信息,避免直接在Pod中硬编码。ConfigMap可用于设置环境变量、命令行参数和创建配置文件。文中通过创建和挂载ConfigMap到Pod的示例,展示了如何存储和引用配置数据,包括配置文件和变量。ConfigMap适用于存储非敏感数据,而敏感信息则应使用Secrets管理。

1. ConfigMap 介绍

在Kubernetes 1.2中新添加了功能ConfigMap,主要功能是为了解决应用程序会从配置文件、环境变量中获取配置信息。

注意: ConfigMap不是属性配置文件的代替品,ConfigMap只是作为多个properties文件的引用。

场景: 配置文件


2. ConfigMap 项目演示(配置文件)

configmap主要还是方便处理非敏感的数据,比如注册中心地址、数据库地址、nginx地址等。像密码之类需要加密的还是需要使用secrets来进行管理

下方yaml文件中data一栏包括了配置数据,ConfigMap可以保存单个属性,也可以用来保存一个配置文件。配置数据可以通过很多种方式在Pods里被引用,ConfigMap可以用来:

  • 设置环境变量的值
  • 在容器里设置命令行参数
  • 在数据卷里面创建config文件

用户和系统两者都可以在ConfigMap里存储

2.1 创建配置文件

cat > redis.properties <<-EOF
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
EOF

2.2 创建configmap

$ kubectl create configmap redis-config --from-file=redis.properties 

#查看
[root@k8s-master01 k8s]# kubectl get cm
NAME           DATA   AGE
redis-config   1      30s
[root@k8s-master01 k8s]# kubectl describe cm redis-config 
Name:         redis-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
redis.properties:
----
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

Events:  <none>

2.3 以Volume挂载到Pod容器中

apiVersoin: v1
kind: Pod
metadata:
  name: configmap-test
spec:
  containers:
  - name: busybox
    image: busbox
    command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:       ##
      name: redis-config
  restartPolicy: Never

创建并验证

[root@k8s-master01 k8s]# kubectl get all 
NAME                                READY   STATUS      RESTARTS   AGE
pod/configmap-test                  0/1     Completed   0          4m36s

[root@k8s-master01 k8s]# kubectl logs configmap-test 
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

3. ConfigMap 项目演示(变量)

3.1 创建configmap

apiVersion: v1
kind: ConfigMap
metadata:
  name: myconfig
data:
  db.host: localhost
  db.port: "3306"

创建并查看

kubectl apply -f **.yaml
[root@k8s-master01 k8s]# kubectl get configmaps 
NAME           DATA   AGE
myconfig       2      39s

3.2 创建Pod进行引用

apiVersion: v1
kind: Pod
metadata:
  name: configmap-env
spec:
  containers:
    - name: busybox-configmap-env
      image: busybox
      command: [ "/bin/sh","-c","echo $(db.host) $(db.port)" ] 
      env:
        - name: db.host
          valueFrom:
            configMapKeyRef:
              name: myconfig
              key: db.host
        - name: db.port
          valueFrom:
            configMapKeyRef:
              name: myconfig
              key: db.port
  restartPolicy: Never              

创建并验证

$ kubectl apply -f **.yaml
[root@k8s-master01 k8s]# kubectl logs configmap-env 
localhost 3306

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值