15.2. 创建 ConfigMap

您可以使用以下命令从目录、特定文件或文字值创建 ConfigMap。

流程

  • 创建 ConfigMap:
$ oc create configmap <configmap_name> [options]

15.2.1. 从目录创建 ConfigMap

您可以从目录中创建 ConfigMap。此方法允许您使用目录中的多个文件来创建 ConfigMap。

流程

以下示例流程概述了如何从目录中创建 ConfigMap。

  1. 从包含一些已包含您要填充 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

  2. 输入以下命令,创建一个 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 的输出只会显示键的名称及其大小。

  3. 使用带有 -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。以下示例生成与从目录创建示例相同的结果。

  1. 创建 ConfigMap 指定特定文件:

    $ oc create configmap game-config-2 \
        --from-file=example-files/game.properties \
        --from-file=example-files/ui.properties
  2. 验证结果:

    $ 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 表达式来设置。例如:

  1. 创建 ConfigMap 指定键值对:

    $ oc create configmap game-config-3 \
        --from-file=game-special-key=example-files/game.properties
  2. 验证结果:

    $ 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 语法,允许直接在命令行中提供字面值。

  1. 创建指定字面值的 ConfigMap:

    $ oc create configmap special-config \
        --from-literal=special.how=very \
        --from-literal=special.type=charm
  2. 验证结果:

    $ 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