J'ai un pod qui est défini par un déploiement et la définition de YAML est stockée dans mon codeBase. Il y a du temps quand j'aimerais avoir un montage en volume configuré pour la gousse / conteneur, il serait donc formidable d'avoir un script pouvant permettre cela. Je sais que je peux utiliser Une option serait de simplement avoir une copie de la définition de YAML et de créer / d'appliquer ce que tout en supprimant l'autre, mais il serait plus agréable de modifier l'existence en place. P>
Y a-t-il un moyen d'y parvenir? Est-ce que kubectl edit code> pour ouvrir un éditeur et faire ceci (puis redémarrez la POD), mais il serait plus applicable si notre DevS pourrait simplement faire quelque chose comme
./ Notre_scripts / activation_mount.sh code>. p>
kubectl edit code> a des indicateurs qui me manquent à y parvenir? P>
3 Réponses :
Vous souhaitez déployer une pod différemment dans différentes conditions d'environnement. Helm vous permet de le faire. Vous pouvez avoir un modèle pour la POD, puis passer des valeurs qui changent en fonction de l'environnement ou des conditions que vous souhaitez exécuter.
import yaml document = """ apiVersion: v1 kind: Pod metadata: name: myapp labels: name: myapp spec: containers: - name: myapp image: nginx """ volumemount = True podSpec = yaml.load(document) if volumemount: volumeSpecDoc = """ volumes: - configMap: name: app-config name : app-config-volume """ volumeSpec = yaml.load(volumeSpecDoc, Loader=yaml.FullLoader) podSpec['spec'].update(volumeSpec) containerVolumeMountDoc = """ volumeMounts: - name: app-config-volume mountPath: /etc/config """ containerVolumeMount = yaml.load(containerVolumeMountDoc,Loader=yaml.FullLoader) original = podSpec['spec']['containers'][0] original.update(containerVolumeMount) podSpec['spec']['containers'][0] = original print yaml.dump(podSpec)
Utilisez Gestion déclarative des objets Kubettes utilisant Kustomize . Vous avez déjà un Pour déployer la base, vous utilisez P> déploiement.yaml code> manifeste dans votre codeBase. Maintenant, déplacez-le à
base / déploiement.yaml code> et créez également un
superpositions / avec montage / déploiement-with-mont.yaml code> que remplace em> avec un mont quand vous le souhaitez.
kubectl apply -k overlays/with-mount/deployment-with-mount.yaml
J'aimerais élaborer une réponse faite par @jonas.
L'une des commandes "avancées" pour Je sais que je peux utiliser " Composition et personnalisation des collections de ressources forte>" On ressemble à celui que vous pouvez considérer dans ce contexte. p> C'est peut-être une excédente si vous aimez faire apparaître une podie unique (fichier YAML unique); Cependant, il est utile que vous devez faire quelque chose qui est un peu plus complexe :) p> si vous exécutez Comme vous pouvez le deviner, c'est simplement un "concat" de p> La seule particularité de cette méthode est que le fichier que vous faisant référence doit être dans ou sous le répertoire, le comme Vous pouvez voir, J'espère que vous trouverez cette réponse utile :) p> p> kubectl code> est
kustomize code>.
Il construit une cible de kustomisation à partir d'un répertoire ou d'une URL distante.
Disponible auprès du V1.14
Il prend en charge quelques types de fonctionnalités p>
kubectl éditer code> pour ouvrir un éditeur et faire ceci (puis redémarrez la POD), mais il serait plus applicable si notre Devs pourrait simplement faire quelque chose comme
. /our_scripts/enable_mount.sh
. P>
blockQuote> kubectl kustomize
dir code> signifie que votre kustomization.yaml est assis dans et dans mon exemple, c'est juste un
. code>), vous pouvez voir que kubectl propose avec les nouveaux objets à appliquer : p>
kustomization.yaml code> est assis. p>
./ Notre_scripts / activer_mount.sh code> peut simplement appeler correctement formaté
kubectl kustomize
Vous pouvez utiliser la commande
kubectl code> KUBERNETES.IO/DOCS/TASKS/RUN-AppLication/...