configMapGenerator

生成 ConfigMap 资源.

列表中的每个条目都将生成一个 ConfigMap (合计可以生成 n 个 ConfigMap)。

以下示例创建四个 ConfigMap:

  • 第一个使用给定文件的名称和内容创建数据
  • 第二个使用文件中的键/值对将数据创建为键/值
  • 第三个使用 literals 中的键/值对创建数据作为键/值
  • 第四个通过 options 设置单个 ConfigMap 的注释和标签

每个 configMapGenerator 项均接受的参数 behavior: [create|replace|merge],这个参数允许修改或替换父级现有的 configMap。

此外,每个条目都有一个 options 字段,该字段具有与 kustomization 文件的 generatorOptions 字段相同的子字段。

options 字段允许用户为生成的实例添加标签和(或)注释,或者分别禁用该实例名称的哈希后缀。此处添加的标签和注释不会被 kustomization 文件 generatorOptions 字段关联的全局选项覆盖。但是如果全局 generatorOptions 字段指定 disableNameSuffixHash: true,其他 options 的设置将无法将其覆盖。

  1. apiVersion: kustomize.config.k8s.io/v1beta1
  2. kind: Kustomization
  3. # 这个标签将添加到所有的 ConfigMap 和 Secret 中。
  4. generatorOptions:
  5. labels:
  6. fruit: apple
  7. configMapGenerator:
  8. - name: my-java-server-props
  9. behavior: merge
  10. files:
  11. - application.properties
  12. - more.properties
  13. - name: my-java-server-env-file-vars
  14. envs:
  15. - my-server-env.properties
  16. - more-server-props.env
  17. - name: my-java-server-env-vars
  18. literals:
  19. - JAVA_HOME=/opt/java/jdk
  20. - JAVA_TOOL_OPTIONS=-agentlib:hprof
  21. options:
  22. disableNameSuffixHash: true
  23. labels:
  24. pet: dog
  25. - name: dashboards
  26. files:
  27. - mydashboard.json
  28. options:
  29. annotations:
  30. dashboard: "1"
  31. labels:
  32. app.kubernetes.io/name: "app1"

这里也可以定义一个 key 来为文件设置不同名称。

下面这个示例会创建一个 ConfigMap,并将 whatever.ini 重命名为 myFileName.ini

  1. apiVersion: kustomize.config.k8s.io/v1beta1
  2. kind: Kustomization
  3. configMapGenerator:
  4. - name: app-whatever
  5. files:
  6. - myFileName.ini=whatever.ini