Что мы сделали для вас в феврале



Обычно мы рассказываем вам о новостях платформы Mail.ru Cloud Solutions за прошедший месяц, но в этот раз не удержались и решили поделиться и самыми свежими новостями марта.

Провайдер Terraform для MCS
Возможно, вы не знали, но у MCS уже давно есть полноценная поддержка Terraform. С помощью него вы можете создавать сложные облачные топологии, включающие виртуальные машины, диски, сети, балансировщики нагрузки, правила firewall, а также PaaS-сервисы, например кластеры Kubernetes и БД.

Начать работу с Terraform в MCS теперь стало проще: можно скачать файл провайдера Terraform прямо в портале MCS.
Об управлении инфраструктурой в MCS с помощью Terraform.
mcs.mail.ru/help/iaas-api/infrastructure-terraform


Kubernetes 1.16
Теперь в MCS можно развернуть кластеры Kubernetes версии 1.16. Крупные изменения в этой версии:
  • Эфемерные контейнеры
  • Менеджер топологии узла
  • Проверка контейнеров при их запуске
  • Поддержка двойного сетевого стека IP4 + IP6
  • Новый API для endpoints
mcs.mail.ru/help/kubernetes/clusterfast

Webhooks для S3
Webhooks для S3 — это возможность настраивать отправку HTTP/S запросов по событиям для бакета, используя API. Например, вы можете:
  • Настроить обработку и конвертирование файлов после загрузки
  • Интегрироваться с любыми внешними системами
  • Настроить логирование для объектного хранилища
mcs.mail.ru/help/storage-api/webhooks-s3

Подключение расширения мониторинга для баз данных
Для управляемых баз данных теперь можно подключить мониторинг с помощью Prometheus. Для этого мы добавили возможность устанавливать различные расширения ко всем поддерживаемым СУБД. Сейчас поддерживается установка Prometheus exporters в качестве расширений для MySQL, PostgreSQL, MongoDB, ClickHouse и Redis. В следующих релизах будут также доступны специализированные расширения для PostgreSQL и других БД.

Для подключения зайдите в инстанс базы данных и перейдите на вкладку Расширения.
mcs.mail.ru/help/db-faq/db-extensions

Новые сервисы на платформе MCS
  • Анти-DDoS, защита от DDoS и других атак.
  • Web Application Firewall, фильтрация трафика и защита от атак.
  • CDN, географически распределённая инфраструктура доставки контента.
mcs.mail.ru/app/auth/

Простой доступ к дополнительным сервисам
Оставьте заявку в разделе Специальные сервисы, чтобы подключить:
  • Аварийное восстановление, резервирование инфраструктуры на случай сбоев.
  • Автоматическая миграция с любых железных или облачных серверов на MCS.
  • Cloud Managed Services — администрирование вашей облачной IT-инфраструктуры «под ключ».
  • Виртуальное частное облако, инфраструктура публичного облака MCS на изолированных физических серверах.
mcs.mail.ru/app/special-services/

VPNaaS в веб-интерфейс
Теперь VPN доступен в виде отдельного сервиса в разделе Облачные вычисления. Тип VPN — site-to-site IPsec.
Подробнее о работе с VPN.
mcs.mail.ru/help/network/vpn-mcs

Доступ к машинам через RDP в два клика
Для доступа к Windows-машине можно скачать конфиг RDP. На машине под Windows его запуск открывает настроенную панель удалённого доступа. Такой файл доступен для машин, подключенных к внешней сети.
mcs.mail.ru/help/iaas-create/rdp-connect

Инкрементальные бэкапы для виртуальных машин
Раньше инкрементальные бэкапы можно было настроить только при создании виртуальной машины. Теперь их можно включить в любой момент. Инкрементальные бэкапы занимают меньше места и быстрее создаются.
mcs.mail.ru/help/settings/servers-backup

Стоп и старт кластера для Kubernetes через веб-интерфейс
Теперь можно сделать через веб-интерфейс. Если вы остановите кластер, то не будете платить за использование памяти и процессорной мощности, пока он остановлен. Это может сэкономить вам до 60% для тестовых сред и является хорошей альтернативой спотовым инстансам.

Оперативно получать новости платформы MCS можно в нашем Telegram-канале.
t.me/mcsnews

Почитать
Хабр: Устройство Helm и его подводные камни
Завтра облачно: Managed Services: как аутсорс поможет сэкономить на зарплате IT-отдела
Завтра облачно: Что угрожает безопасности бизнеса: 4 главные киберугрозы 2020 года
Следите за выпусками «‎Завтра облачно»:
t.me/zavtra_oblachno
www.facebook.com/Mail.ruCloudSolutions/

С уважением, Илья Летунов
Руководитель платформы
Mail‌.ru Cloud Solutions

12 марта пройдет вебинар по Managed Kubernetes — мы ждем вас



Приглашаем вас на вебинар по созданию кластеров с Managed Kubernetes. На мероприятии мы расскажем о том, как быстро разворачивать простое приложение, добавлять диски и балансировщик нагрузки. Присоединяйтесь, чтобы разобраться в функциональности Managed Kubernetes и решить, подходит ли он для ваших задач.



promo.selectel.ru/webinars/kubernetes/

Rancher 2.3 упрощает использование Linode для Kubernetes



Поскольку сообщество Linode продолжает использовать Docker и Kubernetes для их рабочих нагрузок, мы начали работать с Rancher, чтобы упростить развертывание и управление кластерами Kuberenetes с помощью Rancher на Linode. Еще в апреле мы запустили Linode Node Driver для Rancher и установили партнерские отношения друг с другом, чтобы сообщество разработчиков открытого исходного кода могло извлечь выгоду из обеих платформ.

Сегодня мы с гордостью можем сказать, что версия Rancher 2.3 поставляется с драйвером узла для Linode, который активирован по умолчанию. Это упрощает работу пользователей Rancher, желающих использовать несколько облачных провайдеров в одном простом графическом интерфейсе.

Линод в Rancher 2.3
Если драйвер узла Linode включен по умолчанию, вы можете пропустить любую предварительную настройку и сразу перейти к созданию шаблона вашего узла для предоставления вашего главного и рабочего узлов в Linode. В этом выпуске мы добавили поддержку функции облачных учетных данных Rancher. Облачные учетные данные позволяют вам получать доступ к часто используемым учетным данным, таким как токены API Linode, при создании шаблонов узлов.



Наш новый документ «Как развернуть Kubernetes на Linode с помощью Rancher 2.3» поможет вам узнать, как:
  • Установите Rancher на Линоде
  • Разверните кластер Kubernetes на Linode, используя Rancher
  • Разверните приложение из библиотеки приложений Rancher в своем кластере
  • Воспользуйтесь преимуществами Linode CCM и CSI для Kubernetes через Rancher.
linode.com/docs/applications/containers/kubernetes/how-to-deploy-kubernetes-on-linode-with-rancher-2-x/

Ищете больше информации о Kubernetes? Проверьте полную коллекцию ресурсов здесь.

Присоединяйтесь к бета-версии Linode Kubernetes Engine (LKE)!
Если у вас есть рабочая нагрузка, которую вы готовы развернуть в Kubernetes, зарегистрируйтесь, чтобы стать бета-тестером. Вы также можете подписаться на уведомления, чтобы быть в курсе прогресса на LKE и быть первым, кто узнает, когда мы откроем двери.
welcome.linode.com/lkebeta/
welcome.linode.com/kubernetes/

Облако растёт: новости сервисов





Встречайте Yandex Managed Service for Kubernetes
Мы рады объявить, что в Облаке появился сервис для управления кластерами Kubernetes!
Он подходит для запуска контейнеризованных приложений микросервисов. С помощью Yandex Managed Service for Kubernetes вы также можете мигрировать ваши приложения в Облако без рефакторинга кода и разработки дополнительных инструментов.
Сейчас Yandex Managed Service for Kubernetes находится на стадии Preview — оставьте заявку на сайте, чтобы использовать его в работе.
cloud.yandex.ru/services/managed-kubernetes

Новые сервисы в Яндекс.Облаке
Yandex Message Queue
Это масштабируемое решение для обмена сообщениями между приложениями теперь доступно всем пользователям Облака.
Настройте эффективную коммуникацию между приложениями без разработки своего протокола и обработки ошибок. Приложения с очередями сообщений легче масштабируются и обладают повышенной отказоустойчивостью. Подробнее о том, как устроен сервис, читайте в нашей статье.
Создать очередь сообщений
cloud.yandex.ru/services/message-queue
cloud.yandex.ru/docs/message-queue/

Yandex Managed Service for MySQL
Наконец-то! Теперь все пользователи Яндекс.Облака могут управлять базами данных на основе одной из самых популярных СУБД — MySQL.
MySQL отлично подходит для размещения бэкенда веб-проекта или системы управления контентом (CMS).
С сервисом Yandex Managed Service for MySQL легко создавать read-реплики. Кроме того, сервис непрерывно делает снимки БД и поддерживает технологию Point-in-Time Recovery (PITR), которая позволяет восстановить БД на любой момент времени за последние 7 суток.
Развернуть кластер MySQL в Облаке
cloud.yandex.ru/services/managed-mysql
cloud.yandex.ru/docs/managed-mysql/

Yandex Data Proc
Мы запустили сервис, который помогает разворачивать кластеры Apache Hadoop и Apache Spark в Яндекс.Облаке.
Yandex Data Proc сам создаёт хосты и настраивает их по вашим параметрам. Вы сможете изменить количество и мощности хостов в любой момент. Вы также сможете загружать свои приложения и необходимые сервисы Hadoop.
Доступ к новому сервису предоставляется по заявке — заполните её на нашем сайте.
Попробовать Yandex Data Proc
cloud.yandex.ru/services/data-proc
cloud.yandex.ru/docs/data-proc/

Yandex Instance Groups
Этот компонент сервиса Yandex Compute Cloud позволяет создавать группы однотипных виртуальных машин в инфраструктуре Яндекс.Облака.
Yandex Instance Groups поможет настроить развёртывание и горизонтальное масштабирование ваших ресурсов.
Создать группу ВМ
cloud.yandex.ru/services/instance-groups
cloud.yandex.ru/docs/compute/concepts/instance-groups/

Новые возможности
Калькулятор тарифов
Создавать виртуальные машины и базы данных на основе Intel Xeon Gold (Cascade Lake) выгоднее — производительность новых процессоров выше, а цены ниже. Убедитесь в этом — рассчитайте, сколько стоит нужная вам конфигурация ВМ или БД в калькуляторе!
Например, самая популярная конфигурация виртуальной машины в Облаке с 2 vCPU, 4 RAM и диском 13 ГБ обойдётся в 1673.88 ₽ в месяц с НДС на процессорах новой линейки (вместо 1740.56 ₽). Развернуть управляемую базу данных с частичным использованием ядра (burstable) стоит от 530 ₽ в месяц.
Перейти в калькулятор
cloud.yandex.ru/prices

Список управления доступом (ACL)
Списки управления доступом в Yandex Object Storage позволяют регулировать доступы к бакетам и объектам. Этот механизм не зависит от Yandex Identity and Access Management.
По умолчанию ACL пустой. Владелец Облака может добавить в него пользователей, сервисные аккаунты или системную группу.
Узнать больше про ACL
cloud.yandex.ru/docs/storage/concepts/acl

Другие новые функциональности сервисов
Доступна возможность обновления ранее созданных кластеров ClickHouse в Облаке.
Документация cloud.yandex.ru/docs/managed-clickhouse/operations/cluster-version-update
SQL-запросы к базам данных ClickHouse в Облаке.
Документация cloud.yandex.ru/docs/managed-clickhouse/operations/web-sql-query
CName для Yandex Managed Service for MySQL.
Документация cloud.yandex.ru/docs/managed-mysql/operations/connect
Подключение к базе данных в кластере PostgreSQL с драйвером, поддерживающим только один хост.
Документация cloud.yandex.ru/docs/managed-postgresql/operations/connect
Логическая репликация для управляемой PostgreSQL в Облаке.
Документация cloud.yandex.ru/docs/managed-postgresql/operations/data-migration
Автоматическое восстановление виртуальных машин в группе.
Документация cloud.yandex.ru/docs/compute/concepts/instance-groups/autohealing

Сценарии
Мы добавили два новых сценария по управлению инфраструктурой в Yandex Object Storage и рассказали, как установить Active Directory в Яндекс.Облаке с помощью Terraform и создать образ диска с помощью Packer.
Начало работы с Packer cloud.yandex.ru/docs/solutions/infrastructure-management/packer-quickstart
Развертывание Active Directory cloud.yandex.ru/docs/solutions/infrastructure-management/active-directory

Вебинары и мероприятия
Yandex DataLens: визуализация и анализ данных в Облаке:
Посмотреть запись
Сервисы ML и AI API в Яндекс.Облаке:
Посмотреть запись
Митап Яндекс.Облака в Санкт-Петербурге 2 июля:
Регистрация events.yandex.ru/events/meetings/jul-2

Яндекс.Облако запускает Managed Service for Kubernetes



Яндекс.Облако запускает Managed Service for Kubernetes — сервис для управления контейнеризованными приложениями

Новый сервис предоставляет окружение для удобного управления кластерами Kubernetes в инфраструктуре Яндекс.Облака. Обеспечивает надежную и безопасную работу контейнеризованных приложений. Сервис позволяет автоматизировать процессы управления, масштабирования, изменения, обновления и удаления контейнеров.

Основная сущность, которой оперирует сервис — кластер Kubernetes. Кластер состоит из управляющего узла (мастера) и групп узлов, на которых запускаются пользовательские контейнеризованные приложения. Сервис управляет мастером и следит за состоянием и работоспособностью узлов. Группы узлов добавляются в кластер пользователем. Вы задаёте для каждой группы нужный размер, параметры виртуальных машин и зону доступности, в которой будут размещаться узлы. Разные группы узлов внутри одного кластера могут размещаться в разных зонах доступности.

Все взаимодействия мастера и узлов кластера автоматически шифруются с помощью протокола TLS. При необходимости вы также можете создать приватный кластер, полностью изолированный от интернета.

Сервис поддерживает формат контейнеров Docker. Docker-образы можно хранить в репозитории Yandex Container Registry. Это позволит увеличить скорость загрузки и избежать расходов на исходящий трафик.

На стадии Preview использование Yandex Managed Service for Kubernetes не тарифицируется. Запросить доступ к сервису в этот период можно через форму заявки на сайте или в консоли управления на странице сервиса. Для этого нужна регистрация в Яндекс.Облаке.
cloud.yandex.ru/services/managed-kubernetes
console.cloud.yandex.ru/

Доступ предоставляется выборочно. Расскажите в заявке, как вы планируете использовать сервис. Подробное объяснение позволит нам оценить, сколько ресурсов может вам потребоваться. Чем лучше мы будем понимать ваши задачи, тем быстрее одобрим заявку.

Дополнительную информацию и инструкции по работе с сервисом вы найдете в нашей документации.

Развертывание платформы FaaS на управляемых OVH Kubernetes с использованием OpenFaaS

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

Привет, Орасио, эта вещь из Kubernetes довольно крутая, но мне бы очень хотелось увидеть платформу «Функции как услуга». Большинство моих приложений можно легко сделать с помощью базы данных и нескольких бессерверных функций!

Это был не первый раз, когда я получил этот вопрос.

Будучи, прежде всего, веб-разработчиком, я могу определенно иметь отношение. Kubernetes — замечательный продукт — вы можете одним щелчком мыши устанавливать сложные веб-архитектуры, но как насчет базы данных + модели некоторых функций?

Ну, вы также можете сделать это с Kubernetes!

В этом прелесть богатой экосистемы Kubernetes: вы можете найти проекты, предназначенные для самых разных вариантов использования, от игровых серверов с Agones до платформ FaaS.

Для этого есть карта Хелма!
Говоря «Вы можете сделать это с Kubernetes! »Это почти новое« Для этого есть приложение! », Но это не помогает многим людям, которые ищут решения. Поскольку этот вопрос поднимался несколько раз, мы решили подготовить небольшое руководство по развертыванию и использованию платформы FaaS на управляемых OVH Kubernetes.

Мы начали с тестирования нескольких платформ FaaS на наших Kubernetes. Нашей целью было найти следующее решение:
  • Простота развертывания (в идеале с простой диаграммой Хелма)
  • Управляется как пользовательским интерфейсом, так и интерфейсом командной строки, потому что разные клиенты имеют разные потребности
  • Авто-масштабируемый, как в увеличенном, так и в уменьшенном смысле
  • Поддерживается всеобъемлющей документацией
Мы протестировали множество платформ, таких как Kubeless, OpenWhisk, OpenFaaS и Fission, и я должен сказать, что все они работали довольно хорошо. В конце концов, тем, кто достиг лучших результатов с точки зрения наших целей, был OpenFaaS, поэтому мы решили использовать его в качестве ссылки для этого поста в блоге.

OpenFaaS — платформа FaaS, родная из Кубернетеса


OpenFaaS
OpenFaaS — это платформа с открытым исходным кодом для создания бессерверных функций с помощью Docker и Kubernetes. Проект уже зрелый, популярный и активный, с более чем 14 тысячами звезд на GitHub, сотнями участников и множеством пользователей (как корпоративных, так и частных).

OpenFaaS очень прост в развертывании, используя диаграмму Хелма (включая оператор для CRD, т.е. функции get kubectl). Он имеет как CLI, так и пользовательский интерфейс, эффективно управляет автоматическим масштабированием, и его документация действительно всеобъемлющая (с каналом Slack для обсуждения, как приятный бонус!).

Технически OpenFaaS состоит из нескольких функциональных блоков:
  • Функция Watchdog. Крошечный HTTP-сервер golang, который превращает любой образ Docker в функцию без сервера
  • Шлюз API, который обеспечивает внешний маршрут к функциям и собирает метрики
  • Портал пользовательского интерфейса, который создает и вызывает функции
  • CLI (по сути, клиент REST для шлюза API), который может развернуть любой контейнер как функцию
  • Функции могут быть написаны на многих языках (хотя я в основном использовал JavaScript, Go и Python для целей тестирования), используя удобные шаблоны или простой Dockerfile.


Подробности настройки
www.ovh.com/fr/blog/deploying-a-faas-platform-on-ovh-managed-kubernetes-using-openfaas/

Обновление продукта: Kubernetes в GA



DigitalOcean Kubernetes теперь вообще в наличии — и лучше, чем когда — либо
Мы рады сообщить, что DigitalOcean Kubernetes теперь производство готовых и общедоступны.

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

Тысячи уже работают свои приложения с помощью DigitalOcean Kubernetes. Вот что один клиент должен был сказать:

Мы приняли Managed Kubernetes DigitalOcean, чтобы развернуть одну из наших систем Analytics. Мы выбрали DigitalOcean из его разработчиков дружественных панелей, четкой ценовой схемы и отличной документация. Эти вещи позволили Super Lucky создать кластер Kubernetes, с сохранением состояния развертывания, балансировки нагрузки и услуги в течение нескольких дней, а не недель
Алан Моралес, старший инженер — программист, Super Lucky

Мониторинг и управление кластером Kubernetes, все в одном месте
DigitalOcean позволяет запускать кластер Kubernetes на вершине стандарта, общего назначения, и CPU-Оптимизированная каплях, которые предлагают многочисленные комбинации процессора, оперативной памяти и SSD. Для того, чтобы право размера вашей инфраструктуру для приложений и услуг, необходимо прозрачность использования ресурсов вашего кластера.

DigitalOcean Kubernetes обеспечивает свободный, интегрированный сервис мониторинга с графиками и метрик временных рядов, в том числе использование процессора, средней загрузки, памяти и использования диска, дискового ввода / вывода, и пропускной способности.


Если развернуть Кубэ-состояние-метрику агента в кластер, вы получите видимость состояния Pod развертывания, статус развертывания DaemonSet, StatefulSet статус развертывания стручка, и многое другое.


www.digitalocean.com/resources/kubernetes/

Bare-metal and GPU nodes for Kubernetes



Служба OVH Managed Kubernetes предлагает вам полностью управляемый кластер, в котором вы выбираете выбранные рабочие узлы в каталоге постоянной производительности виртуальной машины OVH Public Cloud. В настоящее время мы изучаем лучший способ добавить поддержку для работников графических процессоров и «голого металла» (без виртуализации), чтобы вы могли смешивать и подбирать виртуальные машины для еще более специализированных и мощных конфигураций. Помогите нам сформировать новые функции нашего предложения Kubernetes, ответив на короткий опрос (рассказывающий о ваших потребностях в оборудовании и программном обеспечении, ваших конкретных случаях использования ...), и у вас будет возможность получить доступ к закрытой бета-версии в течение лета.
labs.ovh.com/gpu-baremetal-kubernetes-nodes

Развертывание игровых серверов с Agones на OVH Managed Kubernetes

Одним из ключевых преимуществ использования Kubernetes является огромная экосистема вокруг него. От Rancher до Istio, от Rook до Fission, от gVisor до KubeDB, экосистема Kubernetes богата, динамична и постоянно растет. Мы подошли к тому, что для большинства потребностей в развертывании мы можем сказать, что для этого существует проект с открытым исходным кодом на основе K8s.

Одним из последних дополнений к этой экосистеме является проект Agones, многопользовательский, выделенный хостинг на игровом сервере с открытым исходным кодом, построенный на Kubernetes, разработанный Google в сотрудничестве с Ubisoft. Проект был анонсирован в марте, и уже наделал немало шума…

В OVH Platform Team мы являемся поклонниками онлайн-игр и Kubernetes, поэтому мы сказали себе, что нам нужно протестировать Agones. И какой лучший способ проверить это, чем развернуть его в нашей службе OVH Managed Kubernetes, установить кластер игровых серверов Xonotic и сыграть в старом классе с коллегами?



Почему агон?
Agones (происходит от греческого слова agōn, конкурсы, проводимые во время публичных фестивалей или, в более широком смысле, «соревнование» или «соревнование в играх»), стремится заменить обычные проприетарные решения для развертывания, масштабирования и управления игровыми серверами.
www.merriam-webster.com/dictionary/agones
kubernetes.io/docs/concepts/api-extension/custom-resources/#custom-controllers
kubernetes.io/docs/concepts/api-extension/custom-resources/#customresourcedefinitions

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

Подождите, о каких игровых серверах вы говорите?
Итак, основное внимание Agones уделяют многопользовательским онлайн-играм, таким как FPS и MOBA, быстрым играм, требующим выделенных игровых серверов с малой задержкой, которые синхронизируют состояние игры между игроками и служат источником правды в игровых ситуациях.

Игры такого типа требуют относительно эфемерных выделенных игровых серверов, причем каждое совпадение выполняется на экземпляре сервера. Серверы должны быть с состоянием (они должны сохранять статус игры), причем состояние обычно хранится в памяти на время матча.

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

А как вы подключаете плееры к нужному серверу?
Каждый издатель игр имел свои собственные проприетарные решения, но большинство из них следуют аналогичному потоку, предлагая сервис по подбору игроков, который объединяет игроков в матчи, взаимодействует с менеджером кластера для предоставления выделенного экземпляра игрового сервера и отправки игрокам его IP-адрес и порт, чтобы позволить им напрямую подключаться к серверу и играть в игру.



Agones и его пользовательский контроллер и пользовательское определение ресурса заменяет сложную инфраструктуру управления кластером стандартизированными инструментами и API на основе Kubernetes. Службы сватов взаимодействуют с этими API-интерфейсами для создания новых модулей игровых серверов и передачи их IP-адресов и портов заинтересованным игрокам.



Вишня на торте
Использование Kubernetes для этих задач также дает приятный дополнительный бонус, например, возможность развертывать полную игровую инфраструктуру в среде разработчика (или даже в мини-кубе) или легко клонировать ее для развертывания в новом центре обработки данных или облачной области, но также предлагая целую платформу для размещения всех дополнительных услуг, необходимых для создания игры: управление учетными записями, списки лидеров, инвентарь
github.com/kubernetes/minikube

И, конечно же, простота эксплуатации платформ на базе Kubernetes, особенно когда они динамические, разнородные и распределенные, как большинство игровых онлайн-платформ.

Развертывание Agones на управляемых OVH Kubernetes
Есть несколько способов установить Agones в кластер Kubernetes. Для нашего теста мы выбрали самый простой: установка с помощью Helm.
helm.sh/

Включение создания ресурсов RBAC
Первым шагом для установки Agones является настройка учетной записи службы с достаточными разрешениями для создания некоторых специальных типов ресурсов RBAC.
kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole=cluster-admin --serviceaccount=kube-system:default

Теперь у нас есть Cluster Role Binding, необходимая для установки.
kubernetes.io/docs/reference/access-authn-authz/rbac/#rolebinding-and-clusterrolebinding

Установка диаграммы Agones
Теперь давайте продолжим, добавив хранилище Agones в список хранилищ Helm.
helm repo add agones https://agones.dev/chart/stable

И затем установка стабильной диаграммы Agones:
helm install --name my-agones --namespace agones-system agones/agones

agones.dev/site/docs/installation/helm/

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

Подтверждение Agones началось успешно
Чтобы убедиться, что Agones работает в нашем кластере Kubernetes, мы можем взглянуть на модули в пространстве имен agones-system:
kubectl get --namespace agones-system pods

Если все в порядке, вы должны увидеть модуль контроллера agones со статусом Running:
$ kubectl get --namespace agones-system pods
NAME                                 READY   STATUS    RESTARTS   AGE
agones-controller-5f766fc567-xf4vv   1/1     Running   0          5d15h
agones-ping-889c5954d-6kfj4          1/1     Running   0          5d15h
agones-ping-889c5954d-mtp4g          1/1     Running   0          5d15h


Вы также можете увидеть более подробную информацию, используя:
kubectl describe --namespace agones-system pods


Глядя на описание agones-контроллера, вы должны увидеть что-то вроде:
$ kubectl describe --namespace agones-system pods
Name:               agones-controller-5f766fc567-xf4vv
Namespace:          agones-system
[...]
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True

Где все Условия должны иметь статус True.

Развертывание игрового сервера
Мир Agones Hello довольно скучный, простой эхо-сервер UDP, поэтому мы решили пропустить его и перейти непосредственно к чему-то более интересному: игровому серверу Xonotic.
github.com/GoogleCloudPlatform/agones/tree/release-0.9.0/examples/simple-udp
github.com/GoogleCloudPlatform/agones/blob/release-0.9.0/examples/xonotic
www.xonotic.org/

Xonotic — это многопользовательский FPS с открытым исходным кодом, довольно неплохой, с множеством интересных игровых режимов, карт, оружия и опций настройки.

Развернуть игровой сервер Xonotic поверх Agones довольно просто:
kubectl create -f https://raw.githubusercontent.com/GoogleCloudPlatform/agones/release-0.9.0/examples/xonotic/gameserver.yaml


Развертывание игрового сервера может занять несколько минут, поэтому нам нужно подождать, пока его состояние не станет «Готов», прежде чем использовать его. Мы можем получить статус с:
kubectl get gameserver


Мы ждем, пока извлечение не даст статус Ready на нашем игровом сервере:
$ kubectl get gameserver
NAME      STATE   ADDRESS         PORT   NODE       AGE
xonotic   Ready   51.83.xxx.yyy   7094   node-zzz   5d

Когда игровой сервер готов, мы также получаем адрес и порт, который мы должны использовать для подключения к нашей игре Deathmatch (в моем примере, 51.83.xxx.yyy: 7094).

Время фрагмента
Теперь, когда у нас есть сервер, давайте проверим его!

Мы загрузили клиент Xonotic для наших компьютеров (он работает на Windows, Linux и MacOS, так что оправданий нет) и запустили его:


Затем мы идем в многопользовательское меню и вводим адрес и порт нашего игрового сервера:


И мы готовы играть!


А на стороне сервера?
Со стороны сервера мы можем следить за тем, как идут дела на нашем игровом сервере, используя логи kubectl. Давайте начнем с поиска модуля, на котором запущена игра:
kubectl get pods


Мы видим, что наш игровой сервер работает в модуле под названием xonotic:
$ kubectl get pods 
NAME      READY   STATUS    RESTARTS   AGE
xonotic   2/2     Running   0          5d15h


Затем мы можем использовать логи kubectl. В модуле есть два контейнера, основной ксонотический и колонтитул Agones, поэтому мы должны указать, что нам нужны журналы ксонотического контейнера:
$ kubectl logs xonotic
Error from server (BadRequest): a container name must be specified for pod xonotic, choose one of: [xonotic agones-gameserver-sidecar]
$ kubectl logs xonotic xonotic
>>> Connecting to Agones with the SDK
>>> Starting health checking
>>> Starting wrapper for Xonotic!
>>> Path to Xonotic server script: /home/xonotic/Xonotic/server_linux.sh 
Game is Xonotic using base gamedir data
gamename for server filtering: Xonotic
Xonotic Linux 22:03:50 Mar 31 2017 - release
Current nice level is below the soft limit - cannot use niceness
Skeletal animation uses SSE code path
execing quake.rc
[...]
Authenticated connection to 109.190.xxx.yyy:42475 has been established: client is v6xt9/GlzxBH+xViJCiSf4E/SCn3Kx47aY3EJ+HOmZo=@Xon//Ks, I am /EpGZ8F@~Xon//Ks
LostInBrittany is connecting...
url_fclose: failure in crypto_uri_postbuf
Receiving player stats failed: -1
LostInBrittany connected
LostInBrittany connected
LostInBrittany is now spectating
[BOT]Eureka connected
[BOT]Hellfire connected
[BOT]Lion connected
[BOT]Scorcher connected
unconnected changed name to [BOT]Eureka
unconnected changed name to [BOT]Hellfire
unconnected changed name to [BOT]Lion
unconnected changed name to [BOT]Scorcher
[BOT]Scorcher picked up Strength
[BOT]Scorcher drew first blood! 
[BOT]Hellfire was gunned down by [BOT]Scorcher's Shotgun
[BOT]Scorcher slapped [BOT]Lion around a bit with a large Shotgun
[BOT]Scorcher was gunned down by [BOT]Eureka's Shotgun, ending their 2 frag spree
[BOT]Scorcher slapped [BOT]Lion around a bit with a large Shotgun
[BOT]Scorcher was shot to death by [BOT]Eureka's Blaster
[BOT]Hellfire slapped [BOT]Eureka around a bit with a large Shotgun, ending their 2 frag spree
[BOT]Eureka slapped [BOT]Scorcher around a bit with a large Shotgun
[BOT]Eureka was gunned down by [BOT]Hellfire's Shotgun
[BOT]Hellfire was shot to death by [BOT]Lion's Blaster, ending their 2 frag spree
[BOT]Scorcher was cooked by [BOT]Lion
[BOT]Eureka turned into hot slag
[...]


Добавьте друзей
Следующий шаг в основном приятен: попросить коллег подключиться к серверу и провести настоящий Deathmatch, как в Quake 2 раза.

И сейчас?
У нас есть работающий игровой сервер, но мы едва раскрыли возможности Agones: развертывание флота (набор теплых GameServer, доступных для распределения), тестирование FleetAutoscaler (для автоматического увеличения и уменьшения флота в ответ на спрос), делая некоторые фиктивные услуги распределителя. В будущих публикациях в блоге мы углубимся в это и рассмотрим эти возможности.
agones.dev/site/docs/tutorials/allocator-service-go/
agones.dev/site/docs/reference/fleet/
agones.dev/site/docs/reference/fleetautoscaler/

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