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 dodefault).-o, --output— format edytowanego pliku, najczęściejyaml(domyślnie) albojson.-f, --filename— edytuj zasób opisany lokalnym plikiem zamiast podawać typ i nazwę.--save-config— zapisuje bieżącą konfigurację w adnotacji, żeby późniejszykubectl applydziałał spójnie.--field-manager— nazwa zarządcy pól do śledzenia własności (domyślniekubectl-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 zClusterIPnaNodePort.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.