файл yaml патча kubectl не объект ресурса - PullRequest
2 голосов
/ 29 марта 2020

Есть ли способ исправить файл yaml с помощью kubectl patch?

Так что я имею в виду не исправлять уже развернутое развертывание, например, с помощью массива json, но с помощью файла:

kubectl patch -f deployment.yaml -p '{"spec":{"containers":[{"name":"test","image":"test"}]}}'

(фрагмент кода не работает)

Или, если это невозможно, как лучше всего манипулировать yaml kubernetes на основе массива json?

1 Ответ

1 голос
/ 30 марта 2020

Если вы посмотрите справочные документы для kubectl, вы увидите, что это не поддерживаемая функция:

$> kubectl patch -h
Update field(s) of a resource using strategic merge patch, a JSON merge patch, or a JSON patch.

Поскольку файлы в вашей файловой системе не являются ресурсами API. Я лично считаю, что метод метода манипулирования Kubernetes с помощью JSON патчей будет Kustomize .

Kustomize - это оверлейный движок. Как и в Helm, он разработан таким образом, чтобы автоматизировать развертывание программного обеспечения в Kubernetes. Однако они отличаются тем, как они это делают. Если Helm будет управлять списком переменных файлов, которые затем будут вставлены в шаблон во время выполнения, вместо этого Kustomize выполнит слияние патча с файлом примера c.

Эти патчи могут быть определены несколькими способами. Одним из которых является patchesJSON6902. Вот пример того, как можно это сделать.

...