Прим. перев.: казалось бы, еще недавно сочетание из заголовка казалось невозможным безумием. Мир не стоит на месте, и это безумие стало не просто возможным, а даже по-настоящему простым в реализации. Подтверждение читайте ниже в переводе соответствующей инструкции от Johan Siebens — облачного архитектора из Бельгии.
Вчера у себя в ленте я увидел этот твит от Chris Campbell:
Ох, воспоминания… Quake III Arena — один из моих самых любимых шутеров от первого лица.
В прошлом я потратил (и потерял) немало времени, играя в эту динамичную игру с друзьями и врагами. Теперь, благодаря проекту QuakeKube от Capital One Tech, для нее открыт мир контейнеров и Kubernetes.
QuakeKube представляет собой Kubernetes'ированную версию QuakeJS. Для этого в соответствующем deployment'е запускается выделенный серверQuake 3, к которому клиенты подключаются через QuakeJS в браузере.
Конечно, мне не терпелось испробовать этот проект, особенно после того, как в документации увидел следующее:
Контейнерные образы кросс-компилируются с помощью Docker Buildx и могут запускаться на железе с различными архитектурами и операционными системами. В настоящее время доступны версии под linux/amd64 и linux/arm64.
Поддержка ARM64! Класс, значит я могу запустить Quake на одном из своих Raspberry Pi! (Прим. перев.: далее в статье будет рассмотрен вариант установки k3s на Raspberry Pi, а если вас интересует обычный [vanilla] Kubernetes — об этом мы недавно писали.)
Что ж, давайте постреляем!
Основную часть работы уже проделали другие энтузиасты, поэтому при наличии соответствующих инструментов и готового плана для запуска игры потребуется всего несколько минут.
Требования
Raspberry Pi с Ubuntu 20.04 с поддержкой ARM64;
k3sup — легковесная утилита для автоматической установки и настройки k3s на любой локальной или удаленной виртуальной машине;
arkade — простой CLI на Golang со строго определяемыми флагами, позволяющий легко и непринужденно устанавливать чарты и приложения в кластер;
kubectl;
учетная запись в DigitalOcean и API-токен.
Установка и настройка
Прежде всего установите k3s на Raspberry Pi с ARM64-совместимой операционной системой вроде Ubuntu 20.04:
После установки k3s на Raspberry Pi k3sup также загружает необходимый файл kubeconfig в текущий рабочий каталог. Настройте kubectl на использование этого конфига:
$ export KUBECONFIG=$(pwd)/kubeconfig
Теперь с помощью arcade установите inlets-operator:
Inlets-operator создаст так называемый inlets exit-node в DigitalOcean, т.е. обеспечит публичный IP-адрес для сервисов LoadBalancer закрытого кластера k3s.
Для этого будет достаточно OSS-версии inlets, поскольку клиенты подключаются к серверу через QuakeJS в браузере с websocket'ами. Если нужна поддержка TLS и т.п., рекомендую обратить внимание на PRO-версию.
Наконец, возьмите YAML-файл QuakeKube из репозитория проекта на GitHub и внесите в него соответствующие изменения. Сервис необходимо заменить на LoadBalancer (вместо NodePort). Также можно настроить параметры самой игры по своему желанию.