背景:我在不同位置有近15个* .properties文件。我需要为每个属性文件创建configmap。
当前,我正在使用
手动创建configmap yaml文件 kubectl create configmap app-properties --from-file= /path/app.properties.
安装,一切正常。
需求:一旦我们将任何新的键/值添加到属性文件中,它将立即反映在configmap yaml文件中。我可以使用一些“包含文件”动态创建configmap yaml吗?
答案 0 :(得分:2)
您可以观察属性文件的修改,并在更改时重新创建ConfigMap。
为此,有多种用于macOS和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上,您可以使用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
选项)来确保仅一条输出线。