Dotnet 6 Web API в Yandex Cloud Serverless Container
Для начала создадим проект на основе примера Web API.
Для начала создадим проект на основе примера Web API.
В прошлом Serverless Full Text Search я рассмотрел JavaScript библиотеку для in-memory полнотекстового поиска Lyra. Почему я выбрал именно ее? Во-первых, именно на доклад про неё я наткнулся на YouTube. Во-вторых, мне понравилась её универсальность и возможность притащить её в браузер.
Если вы для своего проекта выбрали serverless стек, то наверняка вы заметили, что в Яндекс Облаке для него нет решения обеспечивающего полнотекстовый поиск. Ну, то есть вы конечно можете поднять кластер ElasticSearch. Но при его минимальной стоимости и выделяемых ресурсах это наверняка будет стрельбой из пушки по воробьям.
Но что же делать, если хочется сохранить низкие расходы на инфраструктуру и получить быстрый полнотекстовый поиск?
Что это такое? Удобнее ли обычного Terraform? И можно ли им заменить Serverless framework?
Небольшая предыстория. Мне понадобилось собрать Ubuntu 22.04 Jammy Jellyfish при помощи Packer используя ssh provisioner. А для дебага этого процесса захотелось научиться сохранять создаваемые пакером ключи на диск, чтобы с их помощь можно было зайти на ВМ.
Итак, у вас есть цель выполнять какую-то задачу внутри serverless контейнера по расписанию. К сожалению, вы не сможете просто взять положить в контейнер ваш код и надеяться что все заработает просто так.
Сегодня я хотел бы разобрать модель работы облачных функций в Яндекс Облаке.
Если вы хотите отгружать логи из Managed Kubernetes в Yandex Cloud, для этого есть как минимум два пути:
Тут конечно же мы рассмотрим второй способ.
Я сначала начал писать заголовок на русском, но получилось что-то типа «Набор правил для валидации специфичных для Яндекс Облака расширений, для интеграции с другими облачными сервисами, спецификации OpenAPI 3.0, используемой для конфигурации сервиса API Gateway.» Потом посмеялся и стер всё.
Update (2025-08): Обновил туториал до актуальной версии Kubernetes 1.32.
Я наткнулся на очень популярный (30тыс звёзд на GitHub) туториал Kelsey Hightower «Kubernetes The Hard Way». Это очень подробный туториал, разделенный на 14 лабораторных, подробно рассказывающий как развернуть кластер Kubernetes самостоятельно, не прибегая к managed решениям.
В туториале минимум автоматизации и максимум наглядности. Изначально он писался для Google Cloud Platform.
Я решил его перевести и переложить на использование Yandex Cloud.
Моя версия тут https://github.com/nikolaymatrosov/kubernetes-the-hard-way
В туториале будут развернут высоко доступный зональный кластер с 3 мастерами и 3 воркерами. Перед мастерами настроен Network Load Balancer.
Я считаю, что это отличное пособие для тех, кто хочет разобраться как Kubernetes устроен изнутри и как его компоненты взаимодействуют друг с другом. Если вы собираетесь администрировать кластера Kubernetes, то вы обязательно должны его пройти.
И так вы решили создать managed кластер Redis с поддержкой SSL в Yandex Cloud, но старые примеры кода не работают?
Как и обычно туториал я начну с небольшого кода приложения, которое мы будем использовать для наглядности. Код ни разу не production ready, а скорее минимально необходимый для демонстрации.
Надеюсь вы уже знакомы с тем, что такое GitHub Actions и для чего они вам могут быть полезны. Если нет, то могу посоветовать хороший доклад и его текстовую расшифровку на эту тему.
Тут же я расскажу про экшены, которые помогут вам интегрироваться с Yandex Cloud.
Cloud Logging отличный сервис для просмотра логов. Но у него есть одно ограничение — время хранения. Сейчас, пока сервис в стадии превью это 3 дня, позже с выходом в General Availability это время вероятно увеличат, но все равно оно вряд ли будет бесконечным, и уж тем более это не будет бесплатно.
А теперь вопрос: что делать если вам хочется (ну чтобы через год сравнить) или необходимо (по каким-нибудь юридическим или регуляторным причинам) хранить логи достаточно продолжительное время, от года и более. А еще делать это максимально просто и дешево.
Решение есть! А самое прекрасное, что нам почти не понадобится нечего дополнительно настраивать, если вы уже настроили поставку логов через Fluentbit, как я рассказывал в двух предыдущих постах про поставку логов из контейнера.
В прошлом посте я рассказал, как доставить логи из systemd. Теперь давайте разберемся как доставлять логи контейнеризированного приложения. И, как и в прошлый раз начнем с микро приложения, которое будет генерить нам поток логов.
Для этого нам понадобится serverless функция.
И так нам понадобится сервис Lockbox и сервисный аккаунт с доступом к нему.
Вы можете собрать docker-образ в GitHub Action, а эта инструкция расскажет как удобно его доставить до registry в Yandex.Cloud.
Как настроить экспорт логов из Yandex Cloud Object Storage и наглядно их анализировать при помощи интерактивных графиков в DataLens.