Как лучше всего запустить Symfony Messenger Worker в Кубернетесе - PullRequest
0 голосов
/ 03 июля 2019

Какой лучший способ запустить задачу messenger:consume в Kubernetes?

Развертывание?

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

Чтобы предотвратить это, мы, вероятно, могли бы установитьhigh terminationGracePeriodSeconds и использовать lifecycle.preStop в комбинации?

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: deploy
  name: deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      run: deploy
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: deploy
    spec:
      terminationGracePeriodSeconds: 6000
      containers:
      - command:
        - sh
        - -c
        - sleep 1d # bin/console messenger:consume
        image: bash
        name: deploy
        lifecycle:
          preStop:
            exec:
              command:
              - sh
              - -c
              - echo "Test if a message is consumed at the moment and prevent POD shutdown till then?"                    

Но во время моих тестов, даже если задачи lifecycle.preStop заканчиваются рано, полное время, определенное terminationGracePeriodSeconds, все еще ждет, пока модульпрекращено.

У кого-нибудь есть хорошая идея?

...