动态创建configmap yaml文件

时间:2019-12-06 06:07:22

标签: kubernetes kubernetes-helm helmfile

背景:我在不同位置有近15个* .properties文件。我需要为每个属性文件创建configmap。

当前,我正在使用

手动创建configmap yaml文件
 kubectl create configmap app-properties --from-file= /path/app.properties.

安装,一切正常。

需求:一旦我们将任何新的键/值添加到属性文件中,它将立即反映在configmap yaml文件中。我可以使用一些“包含文件”动态创建configmap yaml吗?

1 个答案:

答案 0 :(得分:2)

您可以观察属性文件的修改,并在更改时重新创建ConfigMap。

为此,有多种用于macOS和Linux的工具。

Linux

在Linux上,您可以使用inotifywait监视文件中的更改。您可以按照以下方式进行操作:

创建文件monitor.sh

#!/bin/bash

FILE=$1
inotifywait -m -e modify "$FILE" |
  while read; do
    kubectl create configmap "$(basename $FILE)" --from-file="$FILE" --dry-run -o yaml | kubectl apply -f -
  done

然后对每个属性文件执行它:

./monitor.sh /path/app.properties

这将使用kubectl create生成更新的ConfigMap YAML清单,并在每次修改kubectl apply文件时将其与/path/app.properties一起应用。

您可以通过以下方式安装inotifywait

sudo apt-get install inotify-tools

macOS

在macOS上,您可以使用fswatch来监视文件修改。

创建文件monitor.sh

#!/bin/bash

FILE=$1
fswatch "$FILE" |
  while read; do
    kubectl create configmap "$(basename $FILE)" --from-file="$FILE" --dry-run -o yaml | kubectl apply -f -
  done

然后对每个属性文件执行它:

./monitor.sh /path/app.properties

这将使用kubectl create生成更新的ConfigMap YAML清单,并在每次修改kubectl apply文件时将其与/path/app.properties一起应用。

您可以通过以下方式安装fswatch

brew install fswatch

注意

fswatch也可能在Linux(sudo apt-get install fswatch)上可用,在这种情况下,您也可以在Linux上的MacOS上使用monitor.sh脚本。但是,您可能需要使用fswatch -o(带有-o选项)来确保仅一条输出线。