我使用以下命令创建configMap.
kubectl create configmap test --from-file=./application.properties --from-file=./mongo.properties --from-file=./logback.xml
Run Code Online (Sandbox Code Playgroud)
现在,我已经修改了mongo.properties中的密钥值,我需要在kubernetes中更新.
选项1 :-
kubectl edit test
Run Code Online (Sandbox Code Playgroud)
在这里,它打开整个文件.但是,我想只更新mongo.properties,因此只想看到mongo.properties.还有其他方法吗?
注意: - 我不想在单独的configMap中使用mongo.properties.
谢谢
irv*_*ifa 16
另一种选择实际上是你可以使用这个命令:
kubectl create configmap some-config --from-file=some-key=some-config.yaml -n some-namespace -o yaml --dry-run | kubectl apply -f -
请参阅Github问题:支持使用--from-file更新配置映射和机密
Sat*_*ish 11
kubectl edit configmap -n <namespace> <configMapName> -o yaml
这将打开一个带有 yaml 格式的 configmap 的 vim 编辑器。现在只需对其进行编辑并保存即可。
Ste*_*per 11
这是从脚本进行就地更新的一种巧妙方法。
这个想法是;
kubectl get cm -o yaml)sed在命令行中用新值 ( sed "s|from|to")替换旧值kubectl apply在这个工作示例中,我将日志级别变量从“信息”级别日志记录更新为“警告”级别日志记录。
所以,第一步,读取当前配置;
$ kubectl get cm common-config -o yaml
apiVersion: v1
data:
CR_COMMON_LOG_LEVEL: info
kind: ConfigMap
Run Code Online (Sandbox Code Playgroud)
第 2 步,使用正则表达式搜索和替换在本地修改它,使用sed:
$ kubectl get cm common-config -o yaml | \
sed -e 's|CR_COMMON_LOG_LEVEL: info|CR_COMMON_LOG_LEVEL: warn|'
apiVersion: v1
data:
CR_COMMON_LOG_LEVEL: warn
kind: ConfigMap
Run Code Online (Sandbox Code Playgroud)
您可以看到值已更改。让我们把它推回集群;
第 3 步;use kubectl apply -f -,它告诉 kubectl 从 stdin 读取并将其应用到集群;
$ kubectl get cm common-config -o yaml | \
sed -e 's|CR_COMMON_LOG_LEVEL: info|CR_COMMON_LOG_LEVEL: warn|' | \
kubectl apply -f -
configmap/common-config configured
Run Code Online (Sandbox Code Playgroud)
小智 9
现在你可以。只需kubectl edit configmap <name of the configmap>在命令行上抛出:然后,您可以编辑您的配置。
我会高度考虑使用像k9s这样的 CLI 编辑器(它更像是 K8S CLI 管理工具)。
如下所示(忽略所有白色占位符),当在终端上设置集群的上下文时,您只需键入k9s即可到达一个不错的终端,您可以在其中检查所有集群资源。
只需输入“:”并输入资源名称(在我们的例子中为 configmaps),它将出现在屏幕中间(绿色矩形)。
然后,您可以使用向上和向下箭头选择相关的配置映射并键入e进行编辑(请参见绿色箭头)。
对于您选择的所有命名空间中的所有 Configmap 0,对于特定命名空间,您可以从左上角菜单中选择数字 - 例如1对于 kube-system:
小智 6
以下是在 jq 的帮助下如何在 configmap 中添加/修改/删除文件的方法:
将配置映射导出到 JSON 文件:
CM_FILE=$(mktemp -d)/config-map.json
oc get cm <configmap name> -o json > $CM_FILE
DATA_FILES_DIR=$(mktemp -d)
files=$(cat $CM_FILE | jq '.data' | jq -r 'keys[]')
for k in $files; do
name=".data[\"$k\"]"
cat $CM_FILE | jq -r $name > $DATA_FILES_DIR/$k;
done
Run Code Online (Sandbox Code Playgroud)
添加/修改文件:
echo '<paste file contents here>' > $DATA_FILES_DIR/<file name>.conf
Run Code Online (Sandbox Code Playgroud)
删除文件:
rm <file name>.conf
Run Code Online (Sandbox Code Playgroud)
完成后,更新配置映射:
kubectl create configmap <configmap name> --from-file $DATA_FILES_DIR -o yaml --dry-run | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)
删除临时文件和文件夹:
rm -rf CM_FILE
rm -rf DATA_FILES_DIR
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21975 次 |
| 最近记录: |