kubectl edit

Otwiera manifest zasobu w edytorze i zapisuje zmiany na żywo.

kubectl edit pobiera aktualny manifest zasobu z klastra Kubernetes, otwiera go w Twoim edytorze tekstu, a po zapisaniu i zamknięciu pliku od razu wysyła zmiany do API serwera. To najszybszy sposób, żeby ręcznie poprawić jeden parametr działającego zasobu (Deployment, Service, ConfigMap itd.) bez kombinowania z osobnym plikiem YAML. Edytor bierze się z zmiennej KUBE_EDITOR, a jeśli jej nie ma — z EDITOR (domyślnie zwykle vi). Pamiętaj: to zmiana na żywo, nie ćwiczenie z notatnika.

Składnia i najważniejsze opcje

Podstawowa forma to kubectl edit TYPE NAME, na przykład kubectl edit deployment nginx.

  • -n, --namespace — wskazuje przestrzeń nazw, w której leży zasób (bez tego trafiasz do default).
  • -o, --output — format edytowanego pliku, najczęściej yaml (domyślnie) albo json.
  • -f, --filename — edytuj zasób opisany lokalnym plikiem zamiast podawać typ i nazwę.
  • --save-config — zapisuje bieżącą konfigurację w adnotacji, żeby późniejszy kubectl apply działał spójnie.
  • --field-manager — nazwa zarządcy pól do śledzenia własności (domyślnie kubectl-edit).
  • --subresource — edytuj podzasób, np. status, zamiast głównego obiektu.
  • --windows-line-endings — wymusza końce linii w stylu Windows w pliku tymczasowym.
  • --validate — kontroluje walidację schematu (np. strict), zanim zmiany pójdą do klastra.

Przykłady użycia

  • kubectl edit deployment nginx -n web — otwiera Deployment o nazwie nginx z przestrzeni web, np. żeby zmienić liczbę replik albo tag obrazu.
  • kubectl edit svc moja-aplikacja — poprawia Service, na przykład typ z ClusterIP na NodePort.
  • kubectl edit configmap app-config -o json — edytuje ConfigMap w formacie JSON zamiast YAML, jeśli tak Ci wygodniej.
  • KUBE_EDITOR="nano" kubectl edit deployment api — ustawia nano jako edytor tylko na to jedno wywołanie (ratunek dla uciekających z vi).
  • kubectl edit deployment api --subresource=status — pozwala podejrzeć i edytować podzasób status zamiast specyfikacji.

Częste błędy i pułapki

YAML jest wrażliwy na wcięcia — jedna spacja za dużo i przy zapisie dostaniesz komunikat o błędzie, a kubectl zostawi Twoje zmiany w pliku tymczasowym /tmp, żebyś mógł poprawić i spróbować ponownie. Nie każde pole da się zmienić w locie: część jest tylko do odczytu (np. status obiektu, creationTimestamp, resourceVersion) i edycja zostanie zignorowana albo odrzucona. Druga klasyczna wpadka to zmienianie zasobów zarządzanych przez GitOps lub Helm — ręczna poprawka przez edit zniknie przy następnym apply czy helm upgrade, więc traktuj ją jako tymczasowy hotfix, nie trwałą konfigurację. Jeśli edytor nie chce się odpalić, ustaw KUBE_EDITOR, bo domyślne vi potrafi zaskoczyć początkującego.

Powiązane komendy: kubectl apply, kubectl patch, kubectl get, kubectl set, kubectl replace.