Лучшая практика для веб-сайта, размещенного на Kubernetes (DigitalOcean)

#nginx #kubernetes

#nginx #kubernetes

Вопрос:

Я следовал этому руководству: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes о том, как настроить вход Nginx с помощью Cert Manager, используя Kubernetes с DigitalOcean в качестве облачного провайдера.

Учебник работал нормально, я смог настроить все в соответствии с тем, что было написано. Хотя (как указано) после выполнения руководства в итоге получается три модуля, из которых только один находится в режиме «Running 1/1», а два других «Down». Также при проверке раздела комментариев кажется, что это довольно проблема. Поскольку, если весь трафик направляется только на 1 модуль, он на самом деле не масштабируется. Или я что-то упускаю? Цитата из их руководства:

Примечание: По умолчанию для службы балансировки нагрузки Nginx Ingress установлено значение service.spec.externalTrafficPolicy Local, которое направляет весь трафик балансировщика нагрузки на узлы, на которых запущены входные модули Nginx. Другие узлы намеренно не будут проверять работоспособность балансировщика нагрузки, чтобы входящий трафик не перенаправлялся на них.

В основном мой вопрос таков: есть ли лучшая практика, которой мне не хватает, чтобы Kubernetes размещал мой веб-сайт? Кажется, мне нужно выбрать либо масштабируемость (наличие всех исправных и работающих модулей), либо получение IP-адреса посетителя клиента.

Ответ №1:

И для тех, кто когда-либо окажется в моей ситуации, это ответ, который я получил от службы поддержки DigitaOcean:

К сожалению, при такой настройке Kubernetes эти другие узлы будут отображаться как отключенные без дополнительной настройки трафика. Можно пропустить входную часть nginx и просто использовать балансировщик нагрузки DigitalOcean, но это опять же требует много настроек и может быть сложнее, чем просто.

Предложение создать веб-сайт с аналитикой (IP) и масштабируемым заключалось в настройке droplet с помощью Nginx и настройке балансировщика нагрузки для него. Более конкретно:

Что касается использования droplet, это будет обычная конфигурация веб-сайта с Nginx в качестве вашего веб-сервера, настроенного для предоставления контента вашему приложению. У вас будет полный доступ к вашему приложению и журналам Nginx в самом droplet. Установка балансировщика нагрузки перед этим потребует дополнительной настройки, поскольку балансировщики нагрузки не передают заголовок x-forward, поэтому IP-адреса клиентов по умолчанию не будут отображаться в журналах. Вам нужно будет настроить прокси-протокол на балансировщике нагрузки и в вашей конфигурации nginx, чтобы иметь возможность получать эти IP-адреса. https://www.digitalocean.com/blog/load-balancers-now-support-proxy-protocol / К сожалению, это тоже немного сложнее.

Надеюсь, это сэкономит кому-нибудь немного времени