Развертывание Terraform kubernetes с готовностью ворот - PullRequest
0 голосов
/ 02 апреля 2020

Мы используем ресурс terraform "kubernetes_deployment" для развертывания наших модулей. Наши капсулы имеют датчики готовности, но эти тесты недостаточно хороши, потому что нам нужна внешняя обратная связь, чтобы решить, готов ли пакет. В нашем случае модуль готов только после того, как внешняя программа создаст файл в корзине aws S3, и это ручной шаг, который может быть выполнен в произвольное время (может быть несколько дней / недель), поэтому проверка готовности не подходит , потому что это потерпит неудачу и оставит наш модуль в "неготовом" состоянии. Мы понимаем, что kubernetes 1.14 ввел нечто, называемое готовность-ворота. См. https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod -readiness-gate Однако кажется, что ресурс terraform "kubernetes_deployment" не поддерживает ворота готовности pod.

Обратите внимание, что мы предпочитаем использовать развертывание kubernetes (а не определять pods напрямую) потому что нам нужна скользящая стратегия обновления.

Как мы можем определить ворота готовности капсулы с помощью terraform?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

В настоящее время вы не можете определить готовность ворот с помощью terraform.

Вы можете создать запрос функции на terreform-kubernetes github repo или добавить эту функцию самостоятельно и создать запрос на извлечение.

На данный момент вы можете использовать initContainers (как уже упоминалось Юрием) или используйте проверку готовности с командой, которая использует bash, чтобы связать воедино проверку готовности приложения и существования файла.

Но, вероятно, лучшее, что вы можете сделать, - это переписать ваше приложение, поэтому он может обрабатывать случай, когда файл еще не существует.

0 голосов
/ 03 апреля 2020

Попробуйте использовать initcontainer для проверки состояния корзины S3. Я отправил вам пример ниже:

'' initContainers: - имя: установить образ: команда busybox: - wget - "-O" - "/work-dir/index.html" - http://kubernetes.io ''

...