4 votes

Comment modifier la configuration de la carte de configuration dans une application Kubernetes de Spring Boot pendant l'exécution ?

Nous avons une application avec une configuration énorme (ceci n'est qu'une partie) :

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

Je suis este exemple pour lier configmap avec la configuration de spring boot mais il y a encore quelques problèmes par exemple comment résoudre null dans yaml que spring yaml postprocessor résout comme une chaîne vide : numéro

Le deuxième problème est de savoir comment gérer cette carte de configuration. Je sais que je peux éditer et ensuite utiliser apply mais cela peut conduire à des erreurs. Y a-t-il un outil que je peux utiliser pour éditer ce yaml et faire un script bash pour l'édition ? comme : ./my-script.sh -function addMyCustomMapValue -args "KEY5:value5" . J'ai essayé d'explorer yq mais je pense qu'il y a des limitations et que c'est difficile à utiliser pour certains cas d'utilisation et ensuite personnaliser ce qui, à mon avis, est bon pour créer une carte de configuration mais pas pour modifier une carte existante.

Existe-t-il déjà un bon exemple pour ce cas d'utilisation ?

1voto

Harsh Manvar Points 666

Option : 1

Vous pouvez utiliser l'objectif : https://k8slens.dev/kubernetes.html

C'est l'interface utilisateur pour la surveillance et la gestion des clusters K8s. En utilisant cette interface, vous pouvez également modifier la carte de configuration.

Option : 2

Vous pouvez gérer toutes les valeurs des clés dans un seul fichier YAML et créer une carte de configuration à partir de ce fichier :

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

Option : 3

Utilisez helm y values.yaml pour créer votre graphique et l'appliquer ensuite.

Option : 4

Si vous utilisez la carte de configuration comme environnement ou si vous l'injectez dans le chemin du fichier, vous pouvez également utiliser le coffre-fort de Hashi corp : https://www.vaultproject.io/

Option : 5

Comme vous l'avez suggéré, vous pouvez créer un Bash script qui exportera l'existant en cours d'exécution. Configmap à un nouveau YAML une fois que vous avez fini de modifier YAML manuellement. Vous pouvez appliquer les modifications à K8s cluster.

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

Vous pouvez également vérifier le : https://github.com/Gallore/yaml_cli pourrait être utile.

0voto

C'est le meilleur outil pour éditer et faire des changements dans kubernetes env.

k9s : https://github.com/derailed/k9s

Vous pouvez explorer https://kubeval.instrumenta.dev/ pour attraper toute erreur de configuration avant le déploiement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X