【问题标题】:Is there a way to create a configMap containing multiple files for a Kubernetes Pod?有没有办法为 Kubernetes Pod 创建包含多个文件的 configMap?
【发布时间】:2020-03-23 00:52:13
【问题描述】:

我想使用 Kubernetes 部署 Grafana,但我不知道如何将配置的仪表板附加到 Pod。在我看来,将它们作为键值数据存储在 configMap 中就像一场噩梦——例如https://github.com/do-community/doks-monitoring/blob/master/manifest/dashboards-configmap.yaml——在我的情况下,我需要更多的 JSON 仪表板——因此是严厉的意见。

我在将 Grafana 设置、数据源和仪表板提供程序配置为 configMaps 时没有遇到任何问题,因为它们是在单个文件中定义的,但仪表板的情况对我来说有点棘手。

我所有的仪表板都存储在“/files/dashboards/”下的 repo 中,除了前面描述的方式之外,我想知道如何使它们对 Pod 可用。想知道如何使用 hostPath 对象,但对于不同主机上的多节点部署没有意义。

也许这很容易 - 但我对 Kubernetes 还很陌生,无法弄清楚 - 所以任何帮助都将不胜感激。谢谢!

【问题讨论】:

    标签: kubernetes configmap


    【解决方案1】:

    您可以从目录中的一组 fo 文件自动生成 ConfigMap。每个文件都将是 ConfigMap 中的一个键值对,文件名是键,文件内容是值(就像在您的链接示例中一样,但自动完成而不是手动完成)。

    假设您的仪表板文件存储为,例如:

    files/dashboards/
    ├── k8s-cluster-rsrc-use.json
    ├── k8s-node-rsrc-use.json
    └── k8s-resources-cluster.json
    

    您可以运行以下命令直接在集群中创建ConfigMap:

    kubectl create configmap my-config --from-file=files/dashboards
    

    如果您希望只为 ConfigMap 生成 YAML 清单,您可以这样做:

    kubectl create configmap my-config --from-file=files/dashboards --dry-run -o yaml >my-config.yaml
    

    【讨论】:

      【解决方案2】:

      您可以查看以下选项:

      • 使用persistent volume

      • 将仪表板的 JSON 文件存储在 git 等代码仓库、nexus 等文件仓库或普通 Web 服务器中,并使用 init 容器在应用程序 (Grafana) 容器启动之前获取文件并将它们放入在 init 容器和应用程序 (Grafana) 容器之间共享的卷上。 This example 可能是一个很好的起点。

        请注意,这不需要持久卷。请参阅示例 - 它使用类型为 emptyDir 的卷。

      【讨论】:

      • 感谢您的建议,但我选择了 configMaps - 感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 2022-11-25
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      相关资源
      最近更新 更多