Lifecycle hooks (хуки жизненного цикла)
Стратегии развертывания Rolling и Recreate поддерживают хуки жизненного цикла. Хуки позволяют менять процесс развертывания добавляя данные в определенных параметрах стратегии.
Пример использования хуки жизненного цикла Pre:
pre:
failurePolicy: Abort
execNewPod: {}
Где поле execNewPod
описывает, как будет выполнен хуки.
В данном примере хук жизненного цикла будет выполнен на основе пода (1).
Каждый хуки имеет значение failurePolicy
, которое определяет действие при сбое:
Abort
— развертывания будет остановлено, если в работе хуки произошел сбой.Retry
— выполнение хуки повторяется до тех пор, пока оно не будет успешно завершено.Ignore
— любой сбой в работе хуки игнорируется, при этом процесс развертывания продолжается.
Lifecycle hooks на основе пода
Хуки, основанные на подах, выполняют подключение в новом поде, полученном из шаблона в Deployment Config.
Пример использования хуки на основе пода в стратегии Rolling:
kind: DeploymentConfig
apiVersion: v1
metadata:
name: frontend
spec:
template:
metadata:
labels:
name: frontend
spec:
containers:
- name: helloworld
image: openshift/origin-ruby-sample
replicas: 5
selector:
name: frontend
strategy:
type: Rolling
rollingParams:
pre:
failurePolicy: Abort
execNewPod:
containerName: helloworld
command: [ "/usr/bin/command", "arg1", "arg2" ]
env:
- name: CUSTOM_VAR1
value: custom_value1
volumes:
- data
Где:
helloworld
— название относится кspec.template.spec.containers[0].name.
.command
— переопределяет любой ENTRYPOINT определенный образом контейнераopenshift/origin-ruby-sample.
.env
— необязательный набор переменных сред для хуки контейнера.volumes
— необязательный набор ссылок на тома для хуки контейнера.
В этом примере хуки Pre будет выполнен в новом поде с использованием образа openshift/origin-ruby-sample из контейнера helloworld и будут иметь следующие свойства:
команда для хуки —
/usr/bin/command arg1 arg2
;переменная окружения хуки —
CUSTOM_VAR1=custom_value1
;действие при сбое работы хуки —
Abort
. Это означает, что процесс развертывания будет остановлен, если в работе хуки произойдет сбой;под для подключения хуки использует том
data
из Deployment Config.
Настройка lifecycle hooks
Установить хуки жизненного цикла для Deployment Config можно с помощью CLI. Для этого используйте команду oc set deployment-hook
, чтобы установить тип хуки жизненного цикла (–pre, –mid или –post).
Например, чтобы установить хуки перед развертыванием, используйте команду:
oc set deployment-hook dc/frontend \\
--pre -c helloworld -e CUSTOM_VAR1=custom_value1 \\
-v data --failure-policy=abort -- /usr/bin/command arg1 arg2
См.также
Подробнее о хуки жизненного цикла здесь.