🔧🔧🔧На прошлой неделе у меня появилась пара идей для моих проектов, одна из них — телеграм-бот для управления кластером. Вот так, чтобы тремя кнопками можно было перезапустить под, глянуть логи и т. д. 😬
В пятницу вечером я уже накидал основу, задеплоил приложение в кластер и обнаружил, что этот бот не работает, как и все остальные.
Дело в том, что у телеграм-ботов есть два типа получения событий:
- long polling — мой бот опрашивает наличие событий каждые n секунд;
- и webhook — бот подписывается на события, после чего Telegram подключается к нему и отправляет данные по мере их появления. Чтобы не гонять лишний трафик и делать всё красиво, в продакшне у меня стоят вебхуки.
Как оказалось, блокируются не только запросы к серверам (что сейчас и происходит), но и запросы от этих серверов к нам. То есть события из Telegram по вебхукам также перестали приходить.
Тут два выхода: 1⃣ 100% рабочий (на данный момент) — перенести кластер за бугор. Не очень хочется заново всё перенастраивать, разворачивать бэкапы базы и т.д. К тому же он не самый надёжный, так как в нынешних условиях переносить кластер из одной страны в другую может понадобиться часто.
2⃣ Настроить прокси на кластере — более трудоёмкий путь: потребуется развернуть прокси, направить трафик и постоянно мониторить, что всё работает. Но путь самурая лежит именно здесь. 🥷🏼
Изначально идея была развернуть на сервере VPN и прокинуть трафик пода через него, а всё остальное пускать напрямую в интернет. Здесь есть минус — сложность настройки: помимо настройки самого клиента, тонко настраивать таблицы маршрутизации не хотелось бы.
Следующий вариант — поставить sidecar-контейнер с прокси в одном поде с ботом и направлять трафик туда. Звучит неплохо, да. Теперь нужно настроить сам прокси.
Есть один VPN-провайдер, который предоставляет JSON-конфигурацию для кастомных кейсов: например, если нужно встроить VPN в роутер или другое ПО, то вот тебе конфиг стандарта Xray. 🚘
Вчера я весь день пытался запустить Xray-туннель в соседнем с ботом контейнере, но тут то конфиг провайдера оказывался не совсем в нужном формате, то возникали ошибки с сертификатами. После общения с техподдержкой мне посоветовали попробовать ещё пару клиентских утилит.
💀 В общем, буду пробовать завести всё это дело и довести до конца. В итоге, как всё получится, напишу полноценную статью на Хабре о том, что, как и куда обходить.
А вообще, конечно, попасть бы в белые списки и не заниматься этим калом 🤡 А то пока забугорные челы бороздят OpenClaw и пилят тысячи проектов в день, мы копаем к ним туннели с отвёрткой 🚀🚀🚀