编辑
2023-06-13
K8S
00
请注意,本文编写于 590 天前,最后修改于 590 天前,其中某些信息可能已经过时。

目录

1.ConfigMap
2.优点
3.定义 ConfigMap
3.1常用操作
3.2 命令行创建
3.3 通过配置文件创建(推荐)
4.使用configmap
4.1环境变量中使用
5.通过 Volume 使用配置

1.ConfigMap

在 Kubernetes 中,ConfigMap 是一种用于存储非敏感信息的 Kubernetes 对象。它用于存储配置数据,如键值对、整个配置文件或 JSON 数据等。ConfigMap 通常用于容器镜像中的配置文件、命令行参数和环境变量等。

ConfigMap 可以通过三种方式进行配置数据的注入:

  1. 环境变量注入:将配置数据注入到 Pod 中的容器环境变量中。
  2. 配置文件注入:将配置数据注入到 Pod 中的容器文件系统中,容器可以读取这些文件。
  3. 命令行参数注入:将配置数据注入到容器的命令行参数中。

2.优点

  1. 避免了硬编码,将配置数据与应用代码分离。
  2. 便于维护和更新,可以单独修改 ConfigMap 而不需要重新构建镜像。
  3. 可以通过多种方式注入配置数据,更加灵活。
  4. 可以通过 Kubernetes 的自动化机制对 ConfigMap 进行版本控制和回滚。
  5. ConfigMap 可以被多个 Pod 共享,减少了配置数据的重复存储。

3.定义 ConfigMap

3.1常用操作

sh
# 查看 configmap kubectl get configmap/cm # 查看详细 kubectl describe configmap/cm my-config # 删除 cm kubectl delete cm my-config

3.2 命令行创建

sh
kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2

3.3 通过配置文件创建(推荐)

可以通过创建YAML文件的方式来定义configmap的内容。例如,创建一个名为my-config的configmap,内容如下:

yml
# 格式 apiVersion: v1 kind: ConfigMap metadata: name: app-cm data: key1: value1 key2: value2
yml
apiVersion: v1 kind: ConfigMap metadata: name: app-cm data: name: "songxuan2" age: '24'

4.使用configmap

4.1环境变量中使用

env方式

yml
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: busybox command: ["/bin/sh", "-c", "echo $BUSY_NAME ; sleep 3600;"] env: # name: 是容器需要环境变量名称 - name: BUSY_NAME # valueForm: value 来源与什么 valueFrom: configMapKeyRef: # 值来源与 configmap 来源与哪个 configmap 来源与哪个 configmap 中 key name: app-cm key: name

envFrom方式

yml
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: busybox command: ["/bin/sh", "-c", "echo $name ;echo $age; sleep 3600;"] # 一次性注入这个 configmap envFrom: - configMapRef: name: app-cm

5.通过 Volume 使用配置

configmap文件

yml
apiVersion: v1 kind: ConfigMap metadata: name: app-cm data: 123.yml: | name: "songxuan2" age: '24'

测试pod文件

yml
apiVersion: v1 kind: Pod metadata: name: myapp-pod spec: containers: - name: myapp-container image: busybox command: ["/bin/sh","-c","sleep 3600"] volumeMounts: - name: data-volume #卷的名称要相同 mountPath: /data #挂载到容器内的/data目录 volumes: - name: data-volume #卷的名称要相同 configMap: name: app-cm #名字需要跟configmap的名称相同

进入pod容器内查看

image.png

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document