This commit is contained in:
2021-11-14 15:52:46 +08:00
parent 915c231124
commit 1e344dc204
112 changed files with 1039 additions and 1039 deletions

View File

@@ -6,12 +6,12 @@ tags: ["kubernetes", "configmap"]
categories: ["container"]
---
# 概述
## 概述
- ConfigMap 通常用于设置环境变量、设置命令行参数、创建配置文件
- Pod 使用 ConfigMap 前ConfigMap 必须存在,否则 pod 不能启动
- ConfigMap 只能被在同一一个命名空间中的Pod所引用
# 创建 ConfigMap
## 创建 ConfigMap
- 命令如下
```bash
kubectl create configmap <map-name> <data-source>
@@ -21,7 +21,7 @@ categories: ["container"]
- map-name: ConfigMap 名称
- data-source: 目录、文件或具体值
## 通过目录创建 ConfigMaps
### 通过目录创建 ConfigMaps
- 命令如下
```bash
kubectl create configmap game-config \
@@ -43,7 +43,7 @@ categories: ["container"]
kubectl get configmaps game-config -o yaml
```
## 通过文件创建 ConfigMaps
### 通过文件创建 ConfigMaps
- 通过单个文件创建
```bash
kubectl create configmap game-config-2 \
@@ -63,7 +63,7 @@ categories: ["container"]
# value 是 game.properties 文件的内容
```
## 通过具体值创建 ConfigMaps
### 通过具体值创建 ConfigMaps
- 使用 --from-literal 参数定义具体值
```bash
kubectl create configmap special-config \
@@ -71,9 +71,9 @@ categories: ["container"]
--from-literal=special.type=charm
```
# 使用 ConfigMap
## 定义 pod 环境变量
### Pod 环境变量的值来自于单一 ConfigMap
## 使用 ConfigMap
### 定义 pod 环境变量
#### Pod 环境变量的值来自于单一 ConfigMap
- 在ConfigMap中定义一个环境变量作为键值对
```bash
kubectl create configmap special-config --from-literal=special.how=very
@@ -102,7 +102,7 @@ categories: ["container"]
```
- 保存Pod规格的变化Pod将输出SPECIAL_LEVEL_KEY=very
### Pod 环境变量的值来自于多个 ConfigMap
#### Pod 环境变量的值来自于多个 ConfigMap
- 创建两个 ConfigMap
```yaml
---
@@ -149,7 +149,7 @@ categories: ["container"]
```
- 保存变更后的PodPod将会输出SPECIAL_LEVEL_KEY=very和LOG_LEVEL=info
## 在一个ConfigMap中配置的键值对都作为一个Pod的环境变量
### 在一个ConfigMap中配置的键值对都作为一个Pod的环境变量
- **Kubernetes v1.6+可用**
- 创建包含多个键-值对的ConfigMap
```yaml
@@ -180,7 +180,7 @@ categories: ["container"]
```
- Pod的输出包括: SPECIAL_LEVEL=very 和 SPECIAL_TYPE=charm
## 在Pod命令行中使用ConfigMap定义的环境变量
### 在Pod命令行中使用ConfigMap定义的环境变量
- 在Pod规范的command 中使用$(VAR_NAME) 获取ConfigMap定义的环境变量
```yaml
apiVersion:v1
@@ -207,7 +207,7 @@ categories: ["container"]
```
- test-container容器的输出: very charm
# 添加ConfigMap数据至存储卷
## 添加ConfigMap数据至存储卷
- 当通过from-file创建的ConfigMap时文件将作为一个键保存在ConfigMap中而此文件的内容将作为值
```bash
apiVersion:v1
@@ -220,7 +220,7 @@ categories: ["container"]
special.type:charm
```
## 将ConfigMap中的数据传播到指定目录
### 将ConfigMap中的数据传播到指定目录
- 在Pod的存储卷区域添加ConfigMap的名称
- 这将添加ConfigMap数据到volumeMounts.mountPath指定的目录下(此例为/etc/config)
- command区域将引用保存在ConfigMap中的special.level条目
@@ -248,7 +248,7 @@ categories: ["container"]
- Pod运行时command (“ls /etc/config/”)将输出: special.level special.type
- **如果在/etc/config/目录下存在文件,将不会删除**
## 添加ConfigMap数据至存储卷指定的目录
### 添加ConfigMap数据至存储卷指定的目录
- 为ConfigMap条目使用path指定文件路径
- 此例中special.level将在config-volume存储卷中被挂接至/etc/config/keys
```yaml
@@ -275,6 +275,6 @@ categories: ["container"]
```
- Pod运行时(“cat /etc/config/keys”) 将输出: very
# 参考
## 参考
- [Kubernetes-配置字典ConfigMap](https://blog.csdn.net/bbwangj/article/details/81776648)