Перейти к основному содержимому

🦎 Туннели стали высокодоступными

· 10 мин. чтения
Анимация: один из трёх дата-центров горит, а запросы посетителей идут через два оставшихся по туннелю в home lab, и сайт продолжает работать

Два года Tuna работала на той конфигурации, с которой стартовала. Адрес туннеля вёл прямо на конкретный сервер, и этот сервер делал всё сразу: принимал трафик из интернета, держал подключения клиентов и передавал одно в другое. Для запуска это было разумно. Но Tuna выросла. Сегодня у нас одновременно онлайн больше тысячи туннелей, а туннельные ноды принимают десятки тысяч подключений в сутки. Для такого сервиса схема «всё на одном сервере» уже не годилась. Стоило серверу уйти на перезагрузку или потерять сеть, и все туннели на нём лежали вместе с ним.

14 октября мы закончили переезд, который готовили с лета, и туннели наших пользователей стали по-настоящему высокодоступными. Без преувеличения, это самое большое изменение в инфраструктуре Tuna с момента запуска. Ни один сервер и ни один дата-центр больше не является единственной точкой отказа. Делать для этого ничего не нужно. Адреса и сертификаты переехали сами.

🕵️ AIOps: наш опыт внедрения HolmesGPT на трёх проектах

· 28 мин. чтения
Окно Slack: алерт KubernetesJobFailed от Alertmanager и под ним разбор Holmes с вердиктом и шагами проверки
Это пример алерта и его разбора Holmes в Slack.

Алерт приходит в чат без контекста. «Pod перезапускается», «очередь переполнена», «Job упал» — и дежурный начинает с одного и того же: открыть дашборд, найти Pod, полистать логи, вспомнить, что выкатывали накануне. Это первичное расследование почти всегда одинаково по форме, и именно его мы отдали агенту.

Мы внедрили HolmesGPT — open-source SRE-агента — в шести Kubernetes-кластерах: в собственном кластере Tuna и в пяти кластерах наших клиентов, которые у нас на DevOps-сопровождении. Клиентских проектов два: один живёт в российском облаке, другой — зарубежный, на двух облаках.

По ходу внедрения нам пришлось написать собственный инструмент — holmes-alert-bridge: готовой связки с Alertmanager в открытой версии HolmesGPT нет. Он принимает алерт, отсеивает лишнее, передаёт агенту вместе с контекстом и приносит разбор в чат; код мы открыли. Теперь через несколько минут после алерта рядом с ним лежит гипотеза: что происходит, почему и что проверить. Ниже — как это устроено, сколько стоит и чему мы научились за первый месяц.

📒 Туннель для 1С — база в интернете одной командой

· 4 мин. чтения

База 1С стоит на компьютере в офисе, а поработать с ней нужно из дома, из командировки или показать её заказчику. Обычно выбирают между удалённым рабочим столом, VPN и публикацией базы на веб-сервере. Последний вариант самый удобный для пользователей — база открывается прямо в браузере, — но и самый хлопотный: нужно поставить Apache или IIS, подключить к нему модуль 1С, пробросить порт на роутере, получить «белый» IP и выпустить сертификат.

В tuna-cli 0.37 появилась команда tuna 1c, которая делает всё это сама. Одна команда — и база доступна по HTTPS-адресу:

tuna 1c "Моя база" --basic-auth="login:password"

☸️ Kubernetes-туннель — временный доступ к кластеру по одной ссылке

· 4 мин. чтения

Знакомая ситуация: подрядчику нужно посмотреть логи в staging-кластере, коллеге из соседней команды — помочь с отладкой, а API-сервер кластера закрыт от интернета. Дальше обычно выбирают между «завести человеку VPN и учётку» и «скинуть свой kubeconfig» — и оба варианта плохие.

В tuna-cli 0.36 появился новый тип туннеля — Kubernetes. Одна команда, и гость получает ссылку на готовый kubeconfig, с которым работает обычный kubectl:

tuna kubernetes --context=staging --service-account=shop/debug --preset=debug --ttl=4h

🎁 Бесплатный тариф без таймера и с постоянным поддоменом

· 3 мин. чтения

У бесплатного тарифа Tuna было два ограничения, на которые жаловались чаще всего: туннель жил только 30 минут, а адрес при каждом запуске был новым. Оба ограничения мы убрали:

  • HTTP-туннель на бесплатном тарифе работает без ограничения по времени — сколько нужно;
  • у каждого пользователя есть собственный постоянный поддомен вида brave-otter-4821.ru.tuna.am, который не меняется между запусками.

🧑‍💻 Terraform-провайдер для Tuna

· 3 мин. чтения

Когда туннелей, доменов и шлюзов становится больше десятка, настраивать их кликами в личном кабинете уже неудобно: сложно повторить конфигурацию для второго окружения, непонятно, кто и когда что поменял. Поэтому мы выпустили Terraform-провайдер yuccastream/tuna — теперь инфраструктуру Tuna можно хранить в git рядом с остальным кодом, ревьюить в merge request'ах и применять через terraform apply.

terraform {
required_providers {
tuna = {
source = "yuccastream/tuna"
}
}
}

resource "tuna_domain" "preview" {
subdomain = "myapp-preview"
location = "ru"
}

🖥️ tuna-cli 0.36 — интерфейс в терминале и большое обновление

· 6 мин. чтения

За последние два релиза консольный клиент tuna-cli изменился сильнее, чем за весь предыдущий год. Главное — у туннелей появился полноэкранный интерфейс в терминале: вместо бегущего текстового лога вы видите ленту запросов, метрики, сессии баз данных и SSH и можете разобрать любой запрос, не выходя из консоли.

🗝️ Секреты целиком из консоли — большое обновление tuna secrets

· 4 мин. чтения

До недавнего времени секреты в консоли умели немного: скачать конфигурацию, привязать каталог и запустить приложение с переменными окружения. Всё остальное — завести секрет, поправить значение, создать окружение — приходилось делать в личном кабинете.

В tuna-cli 0.35 tuna secrets стал полноценным инструментом: секретами, проектами, окружениями и сервисными ключами теперь можно управлять целиком из терминала, а вывод команд удобно разбирать в скриптах и CI.

💳 Оплата международными картами — подключили PayPro Global

· 3 мин. чтения

Пожалуй, самая долгожданная просьба в нашей поддержке наконец закрыта: подписку в Tuna теперь можно оплатить международной картой. Мы подключили платёжного провайдера PayPro Global и принимаем оплату в долларах картами Visa и Mastercard практически любой страны.

Переключатель валюты оплаты в личном кабинете Tuna — рубли или доллары США

🔐 Ключи доступа (passkeys) — вход в Tuna без пароля

· 4 мин. чтения

Пароли всем надоели: их придумывают, забывают, пересылают в чат «на пару минут», а потом меняют после очередной утечки. В Tuna появился способ забыть о них насовсем — вход по ключам доступа (passkeys). Приложили палец, взглянули в камеру или ввели PIN — и вы уже в аккаунте. Ни пароля, ни кода из приложения-аутентификатора.

Кнопка «Войти с ключом доступа» на странице входа Tuna

Кто может зайти в ваш внутренний сервис? 5 способов закрыться авторизацией

· 6 мин. чтения

Внутренние сервисы иногда нужно открывать — сотруднику, подрядчику или заказчику. Например, открыть staging, служебную панель, внутреннюю админку или API для интеграций. Или HTTP-сервис без собственной авторизации, вроде Prometheus или Alertmanager.

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

Способов решить эту задачу несколько, и каждый хорош для своей ситуации. Разберём от самых простых к более гибким по контролю. В конце — сравнительная таблица.

Перейти к разделу Приложения в документации

Главная страница приложений

🔐 Безопасность Секретов и отличие от Паролей - мастер-ключ, шифрование и общая архитектура.

· 9 мин. чтения

Когда вы отдаёте свои пароли, токены и ключи доступа во внешний сервис, главный вопрос — можно ли ему доверять. Поэтому мы решили показать, как устроена безопасность Tuna Секретов изнутри: где хранится мастер-ключ, каким алгоритмом шифруются данные и — самое важное — что произойдёт, если нашу инфраструктуру взломают и утечёт вся база данных.

🆕 Приложения — Zero Trust доступ к вашим сервисам

· 5 мин. чтения

Мы рады представить новый компонент платформы Tuna — Приложения. Это защищённый reverse proxy, который закрывает любой ваш веб-сервис авторизацией, SSO и гранулярным контролем доступа — без единой строчки изменений в самом сервисе.

Перейти к разделу Приложения в документации

Главная страница приложений

Не приходят webhooks от api.telegram.org в туннель в RU зоне

· 2 мин. чтения

В последнее время многие пользователи сообщают об одной и той же проблеме: webhooks от api.telegram.org перестали приходить в туннели в регионе RU. В этом посте — как быстро обойти проблему, переключив туннель в другой регион.

Поддержка PROXY Protocol в TCP туннелях

· 2 мин. чтения

В консольном клиенте tuna добавлена поддержка PROXY Protocol для TCP туннелей. Теперь вы можете передавать оригинальный IP-адрес и порт клиента напрямую вашему приложению.

$ tuna tcp 54321 --proxy-protocol=2
INFO[22:08:58] Welcome to Tuna
INFO[22:09:00] Forwarding tcp://ru.tuna.am:22347 -> 127.0.0.1:54321

Перейти к документации

🆕 Мониторы - новый функционал

· 4 мин. чтения

Мы рады представить новый компонент платформы Tuna — Мониторы. Функционал для отслеживания работоспособности ваших сервисов, туннелей, задач и инфраструктуры с уведомлениями через различные каналы связи.

Перейти к разделу Мониторы в документации

Главная страница мониторов

🆕 Отчёты - новый функционал

· 2 мин. чтения

Мы рады представить новый компонент платформы Tuna - Отчёты. Предназначенный для генерации отчётов об ошибках на вашем сайте. С помощью встраиваемого скрипта пользователи и QA-инженеры могут легко показать, где спрятался баг, а вы – получить отладочную информацию и сразу приступить к исправлению.

Перейти к разделу Отчёты в документации

Настройка

🆕 Вебхуки (SMTP, политики трафика, повтор в туннель), TOTP в паролях, улучшение дистрибуции клиентов

· 2 мин. чтения

В этом обновлении - о новых функциях в Вебхуках. Небольшое, но важное обновление в Менеджере паролей. Улучшения и повышении безопасности в дистрибуции клиентов.