hud*_*udi 9 java spring-boot kubernetes configmap
我们有一个具有巨大配置的应用程序(这只是一部分):
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app
data:
application.yaml: |-
config:
app: MY-APP
my-custom-map:
KEY1: value1
KEY2: value2
KEY3: value3
KEY4: value4
something1: true
something2: 123
something3: string123
something4: null
subclass:
anotherMap:
"[AAA:0.0.1,BBB:CCC]": "DDD:EEEE"
subclass2:
something4: AAAA
anotherMap2:
0.0.3: 0.0.3
Run Code Online (Sandbox Code Playgroud)
我按照这个示例将 configmap 与 spring boot 配置绑定,但仍然存在一些问题,例如如何解决 yaml 中的 null ,其中 spring yaml 后处理器将其解析为空字符串:问题
第二个问题是如何处理这个configmap。我知道我可以编辑然后使用 apply,但这可能会导致一些错误。是否有一些工具可以用来编辑这个 yaml 并制作一些 bash 脚本进行编辑?例如: ./my-script.sh -function addMyCustomMapValue -args "KEY5:value5" 。我尝试探索yq但我认为存在一些限制,并且很难用于某些用例,然后kustomize我认为这对于创建 configmap 很有用,但不适合编辑现有的 configmap。
这个用例已经有一些很好的例子了吗?
选项1
您可以使用镜头: https: //k8slens.dev/kubernetes.html
它是用于监控和管理 K8s 集群的 UI。使用它您还可以编辑配置映射。
选项:2
您可以将所有键值管理到单个 YAML 文件中并从文件创建配置映射:
kubectl create configmap some-config \
--from-file=some-key=some-config.yaml \
-n some-namespace \
-o yaml \
--dry-run | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)
选项:3
使用helm模板values.yaml创建图表并进一步应用它。
使用YAML helm 的Configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: jksconfig
data:
config.json: |-
{{ .Files.Get "config.json" | indent 4 }}
Run Code Online (Sandbox Code Playgroud)
选项:4
如果您使用 configmap 作为环境或将其注入文件路径,您也可以使用 Hashi corpVault: https: //www.vaultproject.io/
选项:5
正如您所建议的,您可以创建一个Bash脚本,它将现有正在运行的Configmap导出到一个新的YAML文件,您已经完成了手动编辑 YAML。您可以将更改应用到K8s集群。
#bin/bash
kubectl get configmap <configmap-name> -o yaml > cofig.yaml
Run Code Online (Sandbox Code Playgroud)
您还可以检查:https: //github.com/Gallore/yaml_cli可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |