Kubernetes: получать почту после завершения развертывания - PullRequest
0 голосов
/ 20 января 2020

Есть ли способ получать почту после развертывания в kubernetes на GCP / AWS?

Поддерживать развертывание в kubernetes стало сложнее, когда размер группы развертывания увеличивается. Наличие почтовой службы после развертывания облегчит процесс. Также будет сказано, кто применил развертывание.

Ответы [ 5 ]

1 голос
/ 21 января 2020

Вы можете попытаться просмотреть события развертывания, используя https://github.com/bitnami-labs/kubewatch и обработчик webhook.

Другая вещь может заключаться в реализации настраиваемого решения с API kubernetes, например, в python: https://github.com/kubernetes-client/python, затем запустите его как отдельный модуль уведомлений в кластере.

Третий вариант - управление развертыванием в конвейере ci / cd, где фактический шаг выполнения развертывания имеет тип «утверждения». пользователем, который утвердил и следующим шагом в конвейере после утверждения, может быть уведомление по электронной почте

Утверждение по кругу ci: https://circleci.com/docs/2.0/workflows/#holding -a-рабочий процесс-для-утверждения-вручную

0 голосов
/ 21 января 2020

Похоже, никто еще не упомянул "нативный инструмент", который Kubernetes предоставляет для этого.

Обратите внимание, что в Kubernetes существует концепция Audit .

Он предоставляет хронологический набор записей, относящихся к безопасности, документирующий последовательность действий, которые затронули систему отдельными пользователями, администраторами или другими компонентами системы.

Каждый запрос на каждом этапе его выполнения генерирует событие, который затем предварительно обрабатывается в соответствии с определенной политикой и обрабатывается определенным бэкэндом.

Это позволяет администратору кластера ответить на следующие вопросы:

  • что случилось?
  • когда это произошло?
  • кто инициировал это?
  • о том, что это произошло?
  • где это наблюдалось?
  • откуда оно было инициировано ?
  • куда он направлялся?

Администратор может указать, какие события должны быть записаны и какие данные они должны включать с помощью Политика аудита / ов.

Существует несколько бэкэндов, которые сохраняют события аудита во внешнем хранилище.

  • Бэкэнд журнала, который записывает события на диск
  • Webhook бэкэнд, который отправляет события на внешний бэкэнд API
  • Dynami c, который настраивает бэкэнды webhook через объект AuditSink API.

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

Надеюсь, это поможет!

0 голосов
/ 20 января 2020

Вы можете прикрепить обработчики к событиям жизненного цикла контейнера. Kubernetes поддерживает события preStop и postStart. Kubernetes отправляет событие postStart сразу после запуска контейнера. Вот фрагмент файла развертывания манифеста модуля.

 spec:
     containers:
     - name: <******>
       images:  <******>
       lifecycle:
         postStart:
            exec:
               command: [********]
0 голосов
/ 21 января 2020

С учетом GCP, одним из вариантов может быть создание фильтра для получения информации о завершении развертывания в Ведение журнала Stackdriver , а с фильтром вы можете использовать опцию CREATE METRIC, также в Stackdriver Ведение журнала .

Создав метрику c, используйте Stackdriver Monitoring , чтобы создать оповещение для отправки электронной почты. Подробнее в официальной документации .

0 голосов
/ 20 января 2020

Я не думаю, что такая функция встроена в Kubernetes.

Хотя есть механизм часов, который вы могли бы использовать. Выполните следующий запрос GET:

https://<api-server-url>/apis/apps/v1/namespace/<namespace>/deployments?watch=true

Соединение не закроется, и вы получите «уведомление» о каждом развертывании. Проверьте поля статуса. Затем вы можете отправить письмо или сделать что-то еще.

Вам потребуется передать токен авторизации, чтобы получить доступ к серверу API. Если у вас есть настройка kubectl, вы можете запустить локальный прокси-сервер, который тогда не будет нуждаться в токене: kubectl proxy.

...