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

Где:

  1. helloworld — название относится к spec.template.spec.containers[0].name..

  2. command— переопределяет любой ENTRYPOINT определенный образом контейнера openshift/origin-ruby-sample..

  3. env — необязательный набор переменных сред для хуки контейнера.

  4. 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

См.также

Подробнее о хуки жизненного цикла здесь.