kubernetes - 动态创建 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
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
这将生成一个更新的 ConfigMap YAML 清单,并在每次修改文件时kubectl create
应用它。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
这将生成一个更新的 ConfigMap YAML 清单,并在每次修改文件时kubectl create
应用它。kubectl apply
/path/app.properties
您可以安装fswatch
:
brew install fswatch
笔记
fswatch
也可能在 Linux ( sudo apt-get install fswatch
) 上可用,在这种情况下,您也可以monitor.sh
在 Linux 上使用 macOS 的脚本。但是,您可能需要使用fswatch -o
(带有-o
选项)来确保只有一个输出行。
推荐阅读
- firebase - 使用 Glide 加载 Firebase 存储映像会产生计费费用吗?
- java - 在 Spring AOP 中使用 @AfterReturning 修改类中的值
- google-cloud-platform - GKE 错误:版本“cloud.google.com/v1”中类型“BackendConfig”没有匹配项
- javascript - 对所有操作系统的网站仅使用一种字体 - 需要哪些文件?
- django - django-elasticsearch-dsl-drf 建议 url 给出 404 错误
- f# - F# Canopy:不拾取某些页面元素
- image-processing - 将 2D 图像变形到另一个图像上
- google-chrome - 如何在 chrome 开发工具中显示自己的数据
- python - 是否可以更改外部库保存的文件的保存路径?
- optimization - 如何计算总计的动态百分比作为 Power BI 的衡量标准?