Вам нужен Kubernetes, а у вашего облачного провайдера такой услуги нет? Мы используем несколько провайдеров и ни у одного из них нет Kubernetes-as-a-Service. Wigin это очень простой в использовании веб-сервис с UI, который может быстро и просто развернуть кластер Kubernetes на любые серверы. И даже немного больше.
Концепция
Сервис называется Wigin по трем причинам. Первая причина в том, что мы используем kubespray для развертывания kubernetes, а kubespray весь сделан на Ansible. Вторая состоит в том, что Ansible это Philotic Parallax Instantaneous Communicator — устройство для мгновенной коммуникации на любом расстоянии. Именно его использовал Эндер Виггин (Wiggin) для геноцида Жукеров. Почитайте «Игра Эндера».
Третья причина — домен wiggin.io был занят.
Концепция Wigin состоит в том, чтобы в пару кликов разворачивать кластер Kubernetes на любые доступные по IP серверы, делать это из веб-сервиса, который будет хранить конфигурацию кластера. Раз конфигурация хранится в облаке, значит кластером можно управлять откуда угодно, и можно давать доступ к конфигурации и управлению кластером другим пользователям.
При этом для конфигурации кластера мы не изобретаем паровоз, а используем стандартный kubespray, который, по сути, есть набор ansible плейбуков. В результате вы получите кластер kubernetes в режиме HA, который можно будет масштабировать также через Wigin.
Как это работает
Конфигурация кластера не займет более 5 минут.
- Вы логинитесь в Wigin и создаете новый кластер.
- Затем вам нужно скачать или скопировать SSH ключ, который нужно положить на серверы, которые вы будете использовать для вашего кластера. Этот автоматически сгенерированный ключ, специально для вашего кластера. Он нужен, чтобы Wigin мог разворачивать ансибл плейбуки на серверах.
Как добавить SSH ключ на существующий серверЕсли ваш сервер уже создан, то проще всего сделать следующее:
cat <PUBLIC_KEY_FILE> | ssh root@<SERVER_IP> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Консоль спросит у вас пароль от указанного пользователя (в данном примере — root).
PUBLIC_KEY_FILE — файл с ключом, который вы скачали из Wigin;
SERVER_IP — адрес вашего сервера.
Еще больше вариантов здесь.
- Затем нужно ввести список IP адресов ваших серверов. Не забудьте нажать +. Число нод должно быть нечетным. На каждой ноде должно быть минимум 2 vCPU и 4 GB памяти.
- Осталось только нажать Deploy Cluster.
После успешного выполнения плейбука появится инструкция, и вы сможете скачать kubeconfig файл для доступа к кластеру. В дальнейшем мы также планируем добавить возможность конфигурации настроек плейбука. Все, ваш Kubernetes up&running. Кстати, вигин бесплатный и будет таковым оставаться.
Но все может быть интереснее
Сейчас Wigin разворачивает кластер Kubernetes, но на месте kubespray может быть любое приложение для которого есть ansible playbook. Значит таким образом можно разворачивать любое кластерное приложение.
Комментарии (33)
dmitriylyalyuev
27.02.2019 11:59Вы серьезно? root? Вот прямо так сразу?
Мой внутренний параноик застрелился сразу после прочтения!pxemul
27.02.2019 12:03Ну вы как бы хотите, чтобы вам на машину пакетов поставили (и сеть сконфигурировали). Даже если и не root, то пользователь из sudo списка нужен будет в любом случае.
dmitriylyalyuev
27.02.2019 12:05+1Именно поэтому я и не хочу. Я и сам с kubeadm подниму все, что мне надо. И хосты будут внутри периметра безопасности. Туда внешний сервис по SSH не попадет при всем желании.
А тем кому нужен такой сервис — буду читать о них в сводках об утечках инфы пользователей.bbelky Автор
27.02.2019 12:19Этот сервис для тех, кто деплоит куб на публичные облака. Если серверы и их данные должны быть в изолированном периметре, то это, понятное дело, другой вопрос. Что же касается публичного облака, Вы же не думаете, что провайдеры не имеют доступ к Вашим данным?)
dmitriylyalyuev
27.02.2019 12:22Имеют. Но доверять данные Амазону или DO (публичное облако), и доверять данные стартапу, у которого даже Privacy Policy не описано… Не находите, что это разные вещи?
pxemul
27.02.2019 12:36Данные? Какие данные? Сделали две пустых VM-ы, положили ключи, развернули, убрали ключи.
dmitriylyalyuev
27.02.2019 12:37И при первой нормальной нагрузке — легли. Отличное решение!
pxemul
27.02.2019 12:39При чём тут нагрузка? Вы даёте сервису на ремя доступ к машинам, который можете в любой момент прекратить. Почему это называется «доверять данные непонятному стартапу»?
dmitriylyalyuev
27.02.2019 12:43Именно потому, что вход по SSH нужно давать только тому, кому вы на 300% доверяете. Есть гарантии того, что при установке k8s не будет добавлена закладка для слива данных? Я не хочу сказать, что это сделают создатели стартапа. Я хочу сказать, что в случае их взлома может быть добавлен код, который будет укладывать закладки на все сервера, где они будут разворачивать k8s.
Это огроменный риск. И я не готов рисковать данными моих пользователей вот таким глупым образом.pxemul
27.02.2019 13:06Гарантий полной безопасности, конечно, нет, соизмерять получаемые риски с удобствами от использования технологий, безусловно нужно. И мы все, конечно же, слышали про километры угнанных паролей от фейсбуков и гуглов и (наверное) стараемся самые сокровенные свои данные даже им не доверять. Степень сокровенности у каждого, понятно, своя. Спасибо, что напомнили нам об этом.
dmitriylyalyuev
27.02.2019 13:10Сама идея, для развертывания тестовых штук, на поиграться, на потыкать — огонь. К примеру, сделать конфигуратор — хочу Istio, RBAC, Ingress Nginx (Traefik, HAProxy, etc) и т.п. В общем для того, чтоб не вникать в набор технологий, но пощупать их.
Потом можно уже вникать и разбираться как это все устроено и работает, чтоб перенести на стейдж и прод.
В любом случае — найдутся те, кто будет пользоваться сервисом. Тема хайповая. :)pxemul
27.02.2019 13:14Именно! А ещё ведь можно написать bbelky и спросить можно ли развернуть эту штуку «внутри своего периметра безопасности» ;)
dmitriylyalyuev
27.02.2019 13:25Ненене. Разбираться и только… Иначе когда эта штука с грохотом нагребнется (не «если», и именно «когда»), то лечить придется руками и тут уже надо знать что, как, зачем и почему. ;)
bbelky Автор
27.02.2019 13:41Wigin будет Open Source. Просто мы сначала запустили его как сервис, чтобы проверить жизнеспособность самой идеи. Сейчас доделаем деплоилку и выложим на github.
При таком раскладе будет интересно?dmitriylyalyuev
27.02.2019 13:43Вот такой подход более интересен. Код можно проверить, развернуть в своем стеке и деплоить окружения.
Спасибо.
bbelky Автор
27.02.2019 12:39Согласен. Но DO тоже был стартапом, да. Privacy Policy добавим.
dmitriylyalyuev
27.02.2019 12:46Дело не только в Privacy Policy. Там еще куча всего должно быть.
Пример, что будет, если ваша инфраструктура будет скомпрометирована? Будет внедрена закладка в процесс деплоя k8s и эта закладка будет распространяться по серверам клиентов? Ботнет — это самое простое, что я вижу тут. Большой ботнет.
Ну и никто не запрещает потом ей открывать бэкдор, сливать базы данных и все, что угодно. Тем более, что она будет установлена с правами root!
Это абсолютнейший контроль над системой.
pxemul
27.02.2019 13:06Помнится, ещё в прошлом веке я видел элктронную записную книжку от Casio, в мануале на которую было написано что-то вроде: «посколько у нас современный высокотехнологичный продукт, то мы вам настоятельно рекомендуем самые ценные ваши записи держать не в нём, а на бумаге».
kvaps
27.02.2019 12:28Хотя бы sudo сделайте, kubespray умеет же в become.
pxemul
27.02.2019 12:37+1
хотя тут телодвижений больше для клиента. Не только ключи разложить, но ещё и пользователя в sudoers добавить.kvaps
27.02.2019 13:03Что может быть проще?
useradd -m wigin -s /bin/bash mkdir -p /home/wigin/.ssh echo $SSH_KEY > /home/wigin/.ssh/authorized_keys echo 'wigin ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/wigin
pxemul
27.02.2019 12:22Да, конечно, вы всё абсолютно правильно говорите. Кто может сам… ну, скажем, переклеить обои и побелить потолок, тот
за железной дверьювнутри периметра безопасности делает это сам. Кто не может (или не хочет), пользуется услугами специалистов. С определённым риском попасть в какие-нибудь интересные сводки.
kharkevich
27.02.2019 14:22Поздравляю, вы изобрели Ansible Tower или Polemarch в SaaS виде :)
bbelky Автор
27.02.2019 14:34Спасибо за поздравления) Так и есть — смысл wigin именно в том, что он сервис, который не нужно деплоить и поддерживать самостоятельно. При этом при желании, можно развернуть его у себя, он же опенсорсный. Такая концепция интересна? Собственно мы его сюда и выложили, чтобы спросить комьюнити, интересен ли такой сервис.
kharkevich
27.02.2019 18:49Как селф-хостед решение — возможно. Но лично для меня не вариант, ибо проигрывает тому же Ansible Tower по всем фронтам.
Как часть некого публичного клауда — вполне себе, но как выше написали Privacy Policy и всё такое (хотя это больше к клауду который данный сервис предостовлят).
Как отдельный сервис в чистом виде — однозначно нет, т.к. эта штука получает полный и непрозрачный контроль над моей инфраструктурой (или её частью)
dleonik
27.02.2019 18:50Опенсорсный самое оно ибо очень не хочется давать ssh =)
bbelky Автор
27.02.2019 22:02Хорошо, безусловно, будет опенсорс вариант доступный on-premises. Все-таки в чем привлекательность опенсорс в данном конкретном случае, если сам вигин изначально предполагается как сервис, который из облака? По такой модели работает, например, bitnami, который тоже имеет доступ ко всему в вашем облаке.
maxim_ge
Это круто. Не совсем уловил про ключ.
Если это ключ для SSH Key-Based Authentication, то его установка требует определенных манипуляций. Или подразумевается, что если решил поставить kubernetes, то про ключи уже должен знать досконально?
bbelky Автор
Спасибо за комментарий, да, возможно я переборщил с предположениями;) Добавлю ссылочку на гайд.
maxim_ge
И еще в связи с этим вопрос, вроде бы имя пользователя нигде не вводится — как так? Разве можно обойтись без этого?
bbelky Автор
Мы везде по-умолчанию используем пользователя root. Собственно, пользователя может потребоваться вводить только, если вы добавляете ключи на сервер вручную.
pxemul
Да, это ключик для того, чтобы ansible мог зайти на ваши сервера и сделать что ему нужно. В… обычной (когда из терминала запускаете) ситуации он может, конечно, пароль спросить, но в форме сервиса спрашивать пароль не у кого, сами понимаете :) Так что пока ключики.
Это, конечно, хлопотно гонять пользователя раскладывать ключи по своим серверам, у нас есть три продолжения этой темы:
1. будет дока, которая расскажет как разложить ключи по серверам (surprise, surprise) запустив ansible из терминала и введя проль(-и)
2. мы предложим вариант загрузки на wigin готового private ключа, если вдруг у пользователя уже готова key-based auth на его машины
3. будет возможность создавать vm-ы для разворачивания в публичных облаках, при таком раскладе все ключи будут разложены автомагически