Tenemos una aplicación con una gran configuración (esto es solo una parte):
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.3Sigo este ejemplo para vincular el mapa de configuración con la configuración de arranque de primavera, pero todavía hay algún problema, por ejemplo, cómo resolver nulo en yaml, que el posprocesador de spring yaml resuelve como una cadena vacía: problema
El segundo problema es cómo manejar este mapa de configuración. Sé que puedo editar y luego usar aplicar, pero esto puede generar algún error. ¿Hay alguna herramienta que pueda usar para editar este yaml y hacer un script bash para editar? como: ./my-script.sh -function addMyCustomMapValue -args "KEY5:value5" . Traté de explorar yq pero creo que hay alguna limitación y es difícil de usar para algún caso de uso y luego personalizarlo , lo que creo que es bueno para crear un mapa de configuración pero no para editar uno existente.
¿Ya hay algún buen ejemplo para este caso de uso?
Opción 1
Puede usar la lente: https://k8slens.dev/kubernetes.html
Es una interfaz de usuario para monitorear y administrar clústeres de K8. Con esto también puede editar el mapa de configuración.
Opcion 2
Puede administrar todo el valor de la clave en un solo archivo YAML y crear un mapa de configuración desde el archivo:
kubectl create configmap some-config \ --from-file=some-key=some-config.yaml \ -n some-namespace \ -o yaml \ --dry-run | kubectl apply -f -Opción : 3
Use la plantilla helm y values.yaml para crear su gráfico y aplicarlo más.
Mapa de configuración usando YAML helm
apiVersion: v1 kind: ConfigMap metadata: name: jksconfig data: config.json: |- {{ .Files.Get "config.json" | indent 4 }}Opción : 4
Si está utilizando el mapa de configuración como entorno o inyectándolo en la ruta del archivo, también puede usar la bóveda de Hashi corp: https://www.vaultproject.io/
Opción : 5
Como sugirió, puede crear un script Bash que exportará el Configmap en ejecución existente a un nuevo archivo YAML , una vez que haya terminado de editar YAML manualmente. Puede aplicar los cambios al clúster de K8s .
#bin/bash kubectl get configmap <configmap-name> -o yaml > cofig.yamlTambién puede consultar: https://github.com/Gallore/yaml_cli podría ser útil.
apiVersion: v1 kind: ConfigMap metadata: name: application-conf data: {{- if .Values.global.applicationConfiguration }} application.properties: | {{- .Values.global.applicationConfiguration | nindent 4 }} {{- end }} Así es como podemos especificar un mapa de configuración. Agregue applicationConfiguration en su archivo values.yaml si lo especificó, solo escribirá una application.properties externamente. No es necesario que tenga todas las propiedades.
Esta es la mejor herramienta para editar y realizar cambios en kubernetes env
k9s: https://github.com/derailed/k9s
Puede explorar https://kubeval.instrumenta.dev/ para detectar cualquier error de mapa de configuración antes de implementar