如何在Spring Boot Kubernetes应用程序在运行时编辑configmap配置

9

我们有一个具有庞大配置的应用程序(这仅是其中的一部分):

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

我遵循这个例子将configmap与spring boot配置绑定,但仍存在一些问题,例如如何解决yaml中的null值,而spring yaml后处理器将其解析为空字符串:问题

第二个问题是如何处理这个configmap。我知道可以编辑然后使用apply,但这可能会导致一些错误。有没有工具可以用来编辑这个yaml并制作一些bash脚本以进行编辑?例如:./my-script.sh -function addMyCustomMapValue -args "KEY5:value5"。我尝试过yq,但我认为它存在一些限制,对于某些用例来说很难使用,并且还有kustomize,我认为它很适合创建configmap,但不适合编辑现有的configmap。

是否已经有一些好的例子适用于这种情况?

3个回答

6

选项:1

您可以使用镜头:https://k8slens.dev/kubernetes.html。它是用于监视和管理K8s集群的UI。使用此工具,您还可以编辑configmap。

选项:2

您可以将所有键值管理到单个YAML文件中,并从文件创建configmap:

kubectl create configmap some-config \
  --from-file=some-key=some-config.yaml \
  -n some-namespace \
  -o yaml \
  --dry-run | kubectl apply -f - 

选项:3

使用 helmvalues.yaml 模板创建您的图表并进一步应用。

使用 YAML 和 helm 创建 Configmap。

apiVersion: v1
kind: ConfigMap
metadata:
  name: jksconfig
data:
  config.json: |-
    {{ .Files.Get "config.json" | indent 4 }}

选项:4

如果您正在将configmap用作环境变量或将其注入到文件路径中,您也可以使用Hashi corp vault:https://www.vaultproject.io/

选项:5

如您所建议的,您可以创建一个Bash脚本,该脚本将把现有运行的Configmap导出到新的YAML文件中,一旦您完成手动编辑YAML,就可以将更改应用于K8s集群。

#bin/bash
kubectl get configmap <configmap-name>  -o yaml > cofig.yaml

你也可以检查一下:https://github.com/Gallore/yaml_cli 可能会有帮助。

3
apiVersion: v1
kind: ConfigMap
metadata:
  name: application-conf
data: 
  {{- if .Values.global.applicationConfiguration }}
  application.properties: | 
    {{- .Values.global.applicationConfiguration  | nindent 4 }}
   {{- end }}

这是如何指定配置映射。如果在values.yaml中添加了applicationConfiguration,那么它才会将application.properties写入外部。它不需要具有所有的属性。

2

2
你怎么知道它是最好的工具? - vitaliis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接