Finalizers - технология, которая позволяет передать kubernetes информацию о том, что перед тем, как удалить какой-то ресурс из kubernetes, необходимо выполнить определённую логику.
Официальная документация -https://kubernetes.io/docs/concepts/overview/working-with-objects/finalizers/
Статья на тему - https://kubernetes.io/blog/2021/05/14/using-finalizers-to-control-deletion/
Но я по прежнему считаю, что что бы лучше всего понять как работает технология - лучше смотреть tutorial’ы для разработчиков - https://book.kubebuilder.io/reference/using-finalizers.html
Раньше единственное, что проверялось, перед тем как удалить какой-либо ресурс из K8s, это есть ли у этого ресурса children.
Например:
**Pod** - ребёнок **ReplicaSet**
**ReplicaSet** - ребёнок **Deployment**
**Deployment** - ребёнок **NameSpace**
Если удалить какой-то ресурс сначала будут удалены всё его дети, а потом и сам ресурс. Именно по этому, когда мы удаляем большие NameSpaces часто приходится немного подождать.
Однако много времени прошло и сейчас у нас есть возможность настройки различных сценариев и действий при удалении контролируемых ресурсов. Однако есть ограничения:
Работает это примерно так: