Aller au contenu
Conteneurs & Orchestration medium

Modifier des ressources Kubernetes

6 min de lecture

logo kubernetes

Ce guide fait partie d’une série dédiée à kubectl, l’outil en ligne de commande pour interagir avec Kubernetes. Dans ce guide, nous explorons trois commandes essentielles pour modifier les ressources Kubernetes : kubectl edit, kubectl patch et kubectl replace.

Les ressources Kubernetes évoluent continuellement, nécessitant parfois des ajustements en production ou en développement. Ces commandes permettent de :

  • Modifier une ressource en direct (kubectl edit).
  • Appliquer un changement précis sans modifier tout le manifeste (kubectl patch).
  • Remplacer une ressource existante en toute sécurité (kubectl replace).

Ces approches garantissent une gestion efficace et flexible des configurations Kubernetes.

La commande kubectl edit ouvre une ressource Kubernetes dans un éditeur de texte et permet de la modifier directement.

Fenêtre de terminal
kubectl edit <type-ressource> <nom>

1. Modifier un déploiement en direct :

Fenêtre de terminal
kubectl edit deployment my-app

Cette commande ouvre l’éditeur par défaut (vim ou nano). Après modification et sauvegarde, Kubernetes applique automatiquement les changements.

2. Modifier un service :

Fenêtre de terminal
kubectl edit svc my-service
  • error: no changes made : Aucune modification n’a été détectée. Assurez-vous d’avoir bien modifié la ressource.
  • error: resource not found : Vérifiez que la ressource existe avec kubectl get <type-ressource>.

kubectl patch : Appliquer une modification ciblée

Section intitulée « kubectl patch : Appliquer une modification ciblée »

La commande kubectl patch permet de modifier une partie d’une ressource sans avoir à modifier tout le manifeste.

Fenêtre de terminal
kubectl patch <type-ressource> <nom> --type=<type-patch> -p '<modification>'
  • json : Utilisé pour les modifications précises via JSON.
  • merge : Fusionne les changements avec la configuration existante.
  • strategic : Applique des modifications intelligentes sur les champs imbriqués (par défaut pour les objets Kubernetes).

1. Modifier l’image d’un déploiement :

Fenêtre de terminal
kubectl patch deployment my-app -p '{"spec": {"template": {"spec": {"containers": [{"name": "my-container", "image": "nginx:1.21"}]}}}}'

2. Ajouter un label à un pod :

Fenêtre de terminal
kubectl patch pod my-pod -p '{"metadata": {"labels": {"env": "production"}}}'

3. Modifier un champ avec jsonpatch :

Fenêtre de terminal
kubectl patch deployment my-app --type='json' -p='[{"op": "replace", "path": "/spec/replicas", "value": 5}]'
  • error: cannot find path : Vérifiez que le champ à modifier existe avec kubectl get <ressource> -o json.
  • error: invalid JSON/YAML : Assurez-vous que le format JSON ou YAML est valide et bien encadré par des guillemets.

kubectl replace : Remplacer une ressource Kubernetes

Section intitulée « kubectl replace : Remplacer une ressource Kubernetes »

La commande kubectl replace supprime une ressource existante et la remplace par une version mise à jour fournie dans un fichier YAML.

Fenêtre de terminal
kubectl replace -f <fichier.yaml>

1. Remplacer un déploiement avec une version mise à jour :

Fenêtre de terminal
kubectl replace -f updated-deployment.yaml

2. Modifier un service en appliquant un nouveau fichier YAML :

Fenêtre de terminal
kubectl replace -f updated-service.yaml
Fenêtre de terminal
kubectl get deployment my-app -o yaml
  • error: resource not found : La ressource n’existe pas. Utilisez kubectl create si elle doit être créée.
  • error: resource already exists : Kubernetes empêche d’écraser une ressource existante. Utilisez kubectl delete suivi de kubectl apply si nécessaire.
  • Utilisez kubectl edit pour des modifications simples et urgentes.
  • Activez kubectl edit --output=json pour voir la structure JSON et éviter les erreurs.
  • Utilisez patch pour des changements minimes et ciblés.
  • Privilégiez --type=json pour des modifications précises et contrôlées.
  • Utilisez replace pour des modifications majeures, comme un changement de structure.
  • Toujours sauvegarder la configuration actuelle avec kubectl get <ressource> -o yaml > backup.yaml avant d’utiliser replace.

Les commandes kubectl edit, kubectl patch et kubectl replace offrent différentes approches pour modifier les ressources Kubernetes :

  • kubectl edit permet des modifications directes et rapides.
  • kubectl patch applique des changements ciblés sans affecter l’ensemble de la configuration.
  • kubectl replace est idéal pour remplacer entièrement une ressource avec un fichier YAML mis à jour.

En maîtrisant ces outils, vous pourrez gérer efficacement les mises à jour et ajustements dans vos clusters Kubernetes.

Ce guide fait partie d’une série complète dédiée à l’utilisation de kubectl, l’outil en ligne de commande incontournable pour administrer un cluster Kubernetes. Chaque commande de kubectl est abordée en détail dans des guides spécifiques, organisés par thématique pour faciliter l’apprentissage et la référence rapide.

Pour naviguer efficacement entre les différents chapitres, vous trouverez un tableau récapitulatif listant les commandes et leurs guides associés. N’hésitez pas à explorer ces ressources pour approfondir vos connaissances et optimiser votre gestion des clusters Kubernetes.

CommandesDocumentation
kubectl api-resources, kubectl explainExploration de l’API
kubectl create, kubectl applyCréation et mise à jour des ressources
kubectl edit, kubectl patch, kubectl replaceModification des ressources
kubectl get, kubectl describe, kubectl logs, kubectl topRécupération d’informations sur les ressources
kubectl exec, kubectl attach, kubectl debug, kubectl cpGestion et Debug des Pods
kubectl delete, kubectl annotate, kubectl labelSuppression et annotation
kubectl expose, kubectl port-forward, kubectl proxyExposition et accès aux applications
kubectl scale, kubectl autoscale, kubectl rollout, kubectl setMise à l’échelle et gestion des déploiements
kubectl wait, kubectl diffAttente et validation des ressources

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.