15.2. 创建 ConfigMap
您可以使用以下命令从目录、特定文件或文字值创建 ConfigMap。
流程
- 创建 ConfigMap:
$ oc create configmap <configmap_name> [options]
15.2.1. 从目录创建 ConfigMap
您可以从目录中创建 ConfigMap。此方法允许您使用目录中的多个文件来创建 ConfigMap。
流程
以下示例流程概述了如何从目录中创建 ConfigMap。
从包含一些已包含您要填充 ConfigMap 的数据的文件目录开始:
$ ls example-files
输出示例
game.properties ui.properties
$ cat example-files/game.properties
输出示例
enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30
$ cat example-files/ui.properties
输出示例
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
输入以下命令,创建一个 ConfigMap,包含此目录中每个文件的内容:
$ oc create configmap game-config \ --from-file=example-files/
当
--from-file
选项指向某个目录时,该目录中的每个文件都直接用于在 ConfigMap 中填充密钥,其中键的名称是文件名称,键的值是文件的内容。例如,上一命令会创建以下 ConfigMap:
$ oc describe configmaps game-config
输出示例
Name: game-config Namespace: default Labels: <none> Annotations: <none> Data game.properties: 158 bytes ui.properties: 83 bytes
您可以看到,映射中的两个键都是从命令中指定的目录中的文件名创建的。因为这些键的内容可能较大,所以
oc describe
的输出只会显示键的名称及其大小。使用带有
-o
选项的oc get
命令以查看键的值:$ oc get configmaps game-config -o yaml
输出示例
apiVersion: v1 data: game.properties: |- enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30 ui.properties: | color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice kind: ConfigMap metadata: creationTimestamp: 2016-02-18T18:34:05Z name: game-config namespace: default resourceVersion: "407"- selflink: /api/v1/namespaces/default/configmaps/game-config uid: 30944725-d66e-11e5-8cd0-68f728db1985
15.2.2. 从一个文件创建 ConfigMap
您可以从文件创建 ConfigMap。
流程
以下示例流程概述了如何从文件创建 ConfigMap。
如果从文件创建 configmap,您可以在不会破坏非 UTF8 数据的项中包含非 UTF8 的数据。OpenShift Container Platform 检测到二进制文件,并将该文件编码为 MIME
。在服务器上,MIME
有效负载被解码并存储而不会损坏数据。
您可以多次将 --from-file
选项传递给 CLI。以下示例生成与从目录创建示例相同的结果。
创建 ConfigMap 指定特定文件:
$ oc create configmap game-config-2 \ --from-file=example-files/game.properties \ --from-file=example-files/ui.properties
验证结果:
$ oc get configmaps game-config-2 -o yaml
输出示例
apiVersion: v1 data: game.properties: |- enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30 ui.properties: | color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice kind: ConfigMap metadata: creationTimestamp: 2016-02-18T18:52:05Z name: game-config-2 namespace: default resourceVersion: "516" selflink: /api/v1/namespaces/default/configmaps/game-config-2 uid: b4952dc3-d670-11e5-8cd0-68f728db1985
您可以为从文件中导入的内容在 ConfigMap 中指定要设置的键。这可以通过向 --from-file
选项传递 key=value
表达式来设置。例如:
创建 ConfigMap 指定键值对:
$ oc create configmap game-config-3 \ --from-file=game-special-key=example-files/game.properties
验证结果:
$ oc get configmaps game-config-3 -o yaml
输出示例
apiVersion: v1 data: game-special-key: |- 1 enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30 kind: ConfigMap metadata: creationTimestamp: 2016-02-18T18:54:22Z name: game-config-3 namespace: default resourceVersion: "530" selflink: /api/v1/namespaces/default/configmaps/game-config-3 uid: 05f8da22-d671-11e5-8cd0-68f728db1985
- 1
- 这是您在前面的步骤中设置的密钥。
15.2.3. 使用字面值创建 ConfigMap
您可以为 ConfigMap 提供字面值。
流程
--from-literal
选项使用 key=value
语法,允许直接在命令行中提供字面值。
创建指定字面值的 ConfigMap:
$ oc create configmap special-config \ --from-literal=special.how=very \ --from-literal=special.type=charm
验证结果:
$ oc get configmaps special-config -o yaml
输出示例
apiVersion: v1 data: special.how: very special.type: charm kind: ConfigMap metadata: creationTimestamp: 2016-02-18T19:14:38Z name: special-config namespace: default resourceVersion: "651" selflink: /api/v1/namespaces/default/configmaps/special-config uid: dadce046-d673-11e5-8cd0-68f728db1985