【问题标题】:Split ConfigMap in two with using Kustomize使用 Kustomize 将 ConfigMap 一分为二
【发布时间】:2021-03-01 15:30:04
【问题描述】:

我有以下ConfigMap。我正在尝试将两个数据源拆分为两个单独的文件,并在“构建时”使用 Kustomize 合并它们。

但我就是不知道该怎么做?

这就是我所拥有的:

apiVersion: v1
kind: ConfigMap
metadata:
  name: grafana-datasources
  namespace: grafana
data:
  datasources.yaml: |-
    apiVersion: 1
    datasources:
      - name: prometheus
        type: prometheus
        access: proxy
        url: http://prometheus:9090
        isDefault: true
        version: 1
      - name: Azure Monitor
        type: grafana-azure-monitor-datasource
        access: proxy
        version: 1

我想拆分成单独文件(然后合并到 ConfigMap)的部分是:

      - name: prometheus
        type: prometheus
        access: proxy
        url: http://prometheus:9090
        isDefault: true
        version: 1

还有:

      - name: Azure Monitor
        type: grafana-azure-monitor-datasource
        access: proxy
        version: 1

【问题讨论】:

    标签: kubernetes configmap kustomize


    【解决方案1】:

    您必须为数据源创建两个单独的文件。 创建目录以放置基本配置:

    $ mkdir -p $DEMO_HOME/base
    

    第一个数据源应如下所示:

    $ cat <<EOF >$DEMO_HOME/base/datasource1.yaml
    
      apiVersion: 1
        datasources:
          - name: prometheus
            type: prometheus
            access: proxy
            url: http://prometheus:9090
            isDefault: true
            version: 1
    

    第二个数据源应如下所示:

    $ cat <<EOF >$DEMO_HOME/base/datasource2.yaml
    
      apiVersion: 1
        datasources:
          - name: Azure Monitor
            type: grafana-azure-monitor-datasource
            access: proxy
            version: 1
    
        $ cat <<EOF >$DEMO_HOME/base/kustomization.yaml
    

    然后在 kustomization 文件中传递有关 configmap 的信息并添加文件:

    $ cat <<EOF >$DEMO_HOME/base/kustomization.yaml
    
    configMapGenerator:
    - name: my-configmap
      files:
      - datasource1.yaml
      - datasource2.yaml
    EOF
    
    

    最后你可以生成 configMaps 用于开发:

    $ kustomize build $DEMO_HOME/base
    

    请看:kustomize-operationkustomize

    编辑:

    您还可以将 ConfigMap 拆分为两个单独的 ConfigMap,它们都将包含一个文件。 第一个是datasources1.yaml,第二个是datasources2.yaml

    【讨论】:

    • 我认为 OP 正在寻找包含单个键 datasources.yml 的最终 ConfigMap,其中所有内容都合并。
    • @ITChap 是的,你是对的。幸运的是,我发现“datasources.yaml”不是 ConfigMap 中文件的必需名称。所以我可以有两个具有不同文件名的 ConfigMap,例如“datasources_1.yaml”和“datasources_2.yaml”
    • 是的,你是对的,把它分成两个configmap也是个好主意,但是我认为我的解决方案也是正确的。我也用两个单独的配置图更新了我的答案。
    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2013-07-20
    • 1970-01-01
    相关资源
    最近更新 更多