2
votes

Comment puis-je renseigner la valeur d'image de ConfigMap dans Kubernetes?

Je veux écrire le nom de l'image docker dans la configuration de kubernetes, puis l'utiliser dans mon fichier de déploiement au lieu de le coder directement en dur. Donc au lieu de:

image: "nginx: latest "

je veux faire ce qui suit:

image:
 valueFrom:
  configMapKeyRef:
   name: docker-config
   key: docker-image


0 commentaires

3 Réponses :


3
votes

ce n'est pas une approche correcte pour mettre à jour la valeur de l'image à partir de configmap. Il pourrait y avoir d'autres moyens également. La commande ci-dessous

cat some-depl.yaml | run 'sed' command to update image value | kubectl apply -f - 


2 commentaires

merci pour la réponse, j'utilise maintenant jinja2 pour générer ceci.


bon à savoir. jinja2 est également l'un des moyens de mettre à jour les valeurs d'exécution sur le modèle



2
votes

Si vous souhaitez mettre à jour la valeur de la clé d'image, vous pouvez utiliser les commandes basées sur les données suivantes en utilisant set strong> par exemple

kubectl set image --help

vous pouvez obtenir plus de détails en utilisant

  # Set a deployment's nginx container image to 'nginx:1.9.1', and its busybox container image to 'busybox'.
  kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1

  # Update all deployments' and rc's nginx container's image to 'nginx:1.9.1'
  kubectl set image deployments,rc nginx=nginx:1.9.1 --all

  # Update image of all containers of daemonset abc to 'nginx:1.9.1'
  kubectl set image daemonset abc *=nginx:1.9.1

  # Print result (in yaml format) of updating nginx container image from local file, without hitting the server
  kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml

voici d'autres exemples pour ressources-de-mise à jour


0 commentaires

0
votes

Il n'y a qu'un ensemble limité de choses que vous pouvez faire avec les valeurs de ConfigMap: vous pouvez les monter en tant que fichiers dans des pods, ou vous pouvez les utiliser pour définir des variables d'environnement, mais c'est tout.

Il est courant d'utiliser une version plus élevée- outil de niveau qui peut appliquer des modèles à votre configuration Kubernetes pour cette tâche (et en particulier la spécification de la balise de l'image est extrêmement routinière). Je connais bien Helm , mais il existe une variété d’autres outils.

Dans Helm vous devrez créer un graphique . Cela comprend deux parties, mais cela vous permet de spécifier un ensemble de valeurs par défaut dans un fichier values.yaml :

helm install . --set tag=1.15.8

Ensuite, il utilise le Utilisez la langue "text / template" pour générer des fichiers Kubernetes YAML, comme dans un fichier templates / nginx-deployment.yaml :

image: nginx:{{ .Values.tag }}


1 commentaires

helm est bien plus que de simples modèles, j'ai donc décidé d'utiliser jinja2 pour cela.