Kubernetes 动态创建configmap yaml文件

Kubernetes 动态创建configmap yaml文件,kubernetes,kubernetes-helm,helmfile,Kubernetes,Kubernetes Helm,Helmfile,背景:我在不同的位置有将近15个*.properties文件。我需要为每个属性文件创建configmap 目前,我正在使用手动创建configmap yaml文件 kubectl create configmap app-properties --from-file= /path/app.properties. 坐骑,一切正常 要求:一旦我们向属性文件添加任何新的键/值,它就会反映在configmap yaml文件中。我可以使用一些“包含文件”动态创建configmap yaml吗 您可以查

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

目前,我正在使用手动创建configmap yaml文件

 kubectl create configmap app-properties --from-file= /path/app.properties.
坐骑,一切正常


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

您可以查看属性文件的修改情况,并随时重新创建ConfigMap

为此,macOS和Linux有不同的工具

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

创建文件
monitor.sh

#/bin/bash
文件=$1
inotifywait-m-e修改“$FILE”|
边读边读;做
kubectl创建配置映射“$(basename$文件)”--从文件=“$FILE”--干运行-o yaml | kubectl应用-f-
完成
然后对每个属性文件执行它:

/monitor.sh/path/app.properties
每次修改
/path/app.properties
文件时,这将使用
kubectl create
生成更新的ConfigMap YAML清单,并使用
kubectl apply
应用它

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

sudo apt get安装inotify工具
马科斯 在macOS上,您可以使用
fswatch
监视文件修改

创建文件
monitor.sh

#/bin/bash
文件=$1
fswatch“$FILE”|
边读边读;做
kubectl创建配置映射“$(basename$文件)”--从文件=“$FILE”--干运行-o yaml | kubectl应用-f-
完成
然后对每个属性文件执行它:

/monitor.sh/path/app.properties
每次修改
/path/app.properties
文件时,这将使用
kubectl create
生成更新的ConfigMap YAML清单,并使用
kubectl apply
应用它

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

brew安装fswatch

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

您可以查看属性文件的修改情况,并在更改时重新创建ConfigMap

为此,macOS和Linux有不同的工具

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

创建文件
monitor.sh

#/bin/bash
文件=$1
inotifywait-m-e修改“$FILE”|
边读边读;做
kubectl创建配置映射“$(basename$文件)”--从文件=“$FILE”--干运行-o yaml | kubectl应用-f-
完成
然后对每个属性文件执行它:

/monitor.sh/path/app.properties
每次修改
/path/app.properties
文件时,这将使用
kubectl create
生成更新的ConfigMap YAML清单,并使用
kubectl apply
应用它

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

sudo apt get安装inotify工具
马科斯 在macOS上,您可以使用
fswatch
监视文件修改

创建文件
monitor.sh

#/bin/bash
文件=$1
fswatch“$FILE”|
边读边读;做
kubectl创建配置映射“$(basename$文件)”--从文件=“$FILE”--干运行-o yaml | kubectl应用-f-
完成
然后对每个属性文件执行它:

/monitor.sh/path/app.properties
每次修改
/path/app.properties
文件时,这将使用
kubectl create
生成更新的ConfigMap YAML清单,并使用
kubectl apply
应用它

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

brew安装fswatch

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

谢谢。我们可以使用jenkins管道来实现这一点。如果您想在CI/CD中实现这一点,您可能不需要监视文件更改,但您可以在管道运行时检查文件是否更改。@weibeld我认为您的解决方案存在问题。它将创建configmap,但在更新它时第二次运行它时会给出一个错误,说明它已经存在。@DawidKruk是的,我只是更新了解决方案,以便更新现有的configmap,而不是尝试创建新的configmap。谢谢。我们可以使用jenkins管道来实现这一点。如果您想在CI/CD中实现这一点,您可能不需要监视文件更改,但您可以在管道运行时检查文件是否更改。@weibeld我认为您的解决方案存在问题。它将创建configmap,但在更新它时第二次运行它时会给出一个错误,说明它已经存在。@DawidKruk是的,我只是更新了解决方案,以便更新现有的configmap,而不是尝试创建一个新的。