web-dev-qa-db-fra.com

Comment patcher un ConfigMap dans Kubernetes

Kubernetes est livré avec un ConfigMap appelé coredns qui vous permet de spécifier les paramètres DNS. Je souhaite modifier ou patcher un petit morceau de cette configuration en ajoutant:

apiVersion: v1
kind: ConfigMap
data:
  upstreamNameservers: |
    ["1.1.1.1", "1.0.0.1"]

Je sais que je peux utiliser kubectrl edit pour modifier le corednsConfigMap existe-t-il un moyen de prendre le fichier ci-dessus contenant uniquement les paramètres que je veux insérer ou mettre à jour et de le fusionner par-dessus ou de corriger sur l'existant ConfigMap?

La raison en est que je veux que mon déploiement soit reproductible à l'aide de CI/CD. Donc, même si j'ai exécuté mon graphique Helm sur un tout nouveau cluster Kubernetes, les paramètres ci-dessus seraient appliqués.

11

Comme ConfigMaps est utilisé pour monter des fichiers de configuration sur Pod, il semble que this soit ce que vous recherchez. Les ConfigMaps à l'intérieur des conteneurs seront mis à jour automatiquement si le ConfigMap ou le Secret sous-jacent est modifié.

Vous pouvez spécifier l'emplacement de configMap:

configMapVolume(mountPath: '/etc/mount3', configMapName: 'my-config'),

Mise à jour:

Ok, je suppose que cela ne résout pas votre problème. Une autre chose qui me vient à l'esprit est kubectl create configmap avec un tuyau vers kubectl replace Donc, la commande entière ressemblerait à ceci:

kubectl create configmap NAME --from-file file.name -o yaml --dry-run | kubectl replace -f -

Notez que cela remplace tout le fichier, donc juste replace devrait aussi fonctionner.

0
aurelius