Вы должны управлять своими модулями через контроллер более высокого уровня, такой как Deployment или StatefulSet.Если вы это сделаете и измените какие-либо подробности спецификации встроенных модулей, Deployment / StatefulSet / ... перезапустит все ваши модули для вас.Вероятно, самый минимальный способ сделать это - добавить аннотацию к спецификации модуля, в которой говорится, когда она была в последний раз развернута:
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
annotations:
deployed-at: 20181222
Возможно, для этого существует kubectl patch
однострочная;если вы используете диспетчер развертывания, такой как kubernetes-helm , то вы можете просто передать текущую дату как «значение» (поле конфигурации) и вставить ее для вас.
Еслихотя вы хотите подумать о большем: различные базовые образы обычно имеют обновления безопасности и незначительные исправления ошибок, и если вы будете docker pull ubuntu:18.04
один раз в месяц или около того, вы получите эти обновления.Если вы активно знаете, что в любом случае хотите перезапускать свои модули каждый месяц, и у вас есть хороший конвейер CI / CD, подумайте о настройке запланированного задания в Jenkins или о том, что перестраивает и переустанавливает все, даже если нет изменений внижележащее исходное дерево.Это приведет к обновлению image:
, что приведет к уничтожению и воссозданию всех модулей, и , и вы всегда будете в курсе последних обновлений безопасности.