Il est vraiment important de se rappeler que techniquement, il n'y a pas d'inverse à kubectl apply
. Cela s'explique par le fonctionnement de k8s, qui fait converger l'état souhaité vers l'état actuel. En exécutant apply
vous dites au cluster de "faire en sorte que ça ressemble à ça". Mais les contrôleurs du cluster ne font pas la version de votre configuration au sens strict.
Dans votre situation, ce que vous voulez vraiment dire, c'est "comment me débarrasser des ressources qui ont été créées par mon manifeste mal appliqué ?". Ce qui n'est pas tout à fait la même chose. Les autres réponses font un bon exemple de réponse à cela pour ta situation. Mais il est utile d'être conscient que c'est plus nuancé que cela.
Qu'est-ce que je veux dire par là ?
Considérez ce qui se passerait si vous appliquiez un manifeste, ajustiez le contenu du manifeste puis le réappliquiez à un cluster ? Comment passer de l'état B à l'état A sans tout effacer et redémarrer depuis le début ?
K8s ne se souvient pas de l'état précédent de votre manifeste une fois qu'il a fait l'application, il n'y a pas de bouton "annuler" dans ce contexte, donc vous ne pouvez pas revenir à un état précédent juste en faisant une forme d'hypothétique. kubectl undo
commandement.
Si vous voulez annuler une forme de patch sur une ressource, vous devez vraiment utiliser d'autres outils en dehors de la portée de k8s. C'est pourquoi le contrôle de version devient très important, en particulier lorsque vous exploitez des piles plus compliquées. Dans le scénario que j'ai proposé, vous pourriez potentiellement extraire une version précédente et l'appliquer pour opérer comme votre "rollback". Comme toujours, il y a quelques réserves, mais pour la plupart des cas d'utilisation, cela fonctionnerait bien.
3 votes
kubectl delete -f <filename>
Mais cela implique que vous avez créé ces ressources à partir de zéro il les supprimerait littéralement, et non pas "reviendrait à la version précédente". De même, si leurs conteneurs font quelque chose avec les machines hôtes, cela ne sera pas non plus rétabli.2 votes
@zerkms Veuillez ne pas répondre aux questions dans les commentaires. Je pense que ce que vous dites est correct et serait approprié pour une réponse.
2 votes
@ChathanDriehuys il faut BEAUCOUP plus que ça, mais en effet.
0 votes
Foire @zerkms. Pour une question simple comme celle-ci, je pense qu'une simple réponse de deux lignes avec une commande et un lien vers la documentation serait suffisante. Bien sûr, cette opinion est entièrement la mienne et YMMV.