Лучший способ обновить docker изображений в модулях, созданных с помощью statefulset - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть три модуля, сгенерированные набором состояний, которые используют устаревшие c docker изображения из docker хаба.
Я хочу обновить изображения, изменив запись изображения в файле yaml для набора состояний.
До сих пор я пробовал kubectl -n THE_NAMESPACE apply -f statefuleset-definition.yaml после обновления файла, я получаю: statefulset "statefulset-name" configured
Но модули не будут автоматически перезагружаться.
С этой страницы, которую я также вижу можно передать имя изображения напрямую, используя флаг --image, но я бы хотел, чтобы это происходило из файла определения statefulset, чтобы сохранить как файл, так и модуль в строке. Эта процедура также предлагает прямое обновление, но оно изменит имя модуля, что я не хочу.
Есть советы?

1 Ответ

0 голосов
/ 25 февраля 2020

Вы можете использовать команду kubectl patch для обновления образа StatefulSet. По умолчанию он использует стратегию rolling update для обновления состояния.

Это должно быть похоже на:

kubectl patch statefulset <statefulset_name> --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"<new_image_name>"}]'

Таким образом, изображение будет обновлено, а имена модулей будут сохранены без изменений. Он обновляет стручки один за другим. Если один модуль получает обновление, он исправляет следующий и так далее. Если обновление модуля завершилось неудачно, оно будет восстановлено до предыдущей версии.

...