image


Вам нужен 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 минут.

  1. Вы логинитесь в Wigin и создаете новый кластер.
  2. Затем вам нужно скачать или скопировать 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 — адрес вашего сервера.
    Еще больше вариантов здесь.

  3. Затем нужно ввести список IP адресов ваших серверов. Не забудьте нажать +. Число нод должно быть нечетным. На каждой ноде должно быть минимум 2 vCPU и 4 GB памяти.
  4. Осталось только нажать Deploy Cluster.

После успешного выполнения плейбука появится инструкция, и вы сможете скачать kubeconfig файл для доступа к кластеру. В дальнейшем мы также планируем добавить возможность конфигурации настроек плейбука. Все, ваш Kubernetes up&running. Кстати, вигин бесплатный и будет таковым оставаться.

Но все может быть интереснее


Сейчас Wigin разворачивает кластер Kubernetes, но на месте kubespray может быть любое приложение для которого есть ansible playbook. Значит таким образом можно разворачивать любое кластерное приложение.

Комментарии (33)


  1. maxim_ge
    27.02.2019 10:55
    +1

    Это круто. Не совсем уловил про ключ.

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


    Если это ключ для SSH Key-Based Authentication, то его установка требует определенных манипуляций. Или подразумевается, что если решил поставить kubernetes, то про ключи уже должен знать досконально?


    1. bbelky Автор
      27.02.2019 11:02

      Спасибо за комментарий, да, возможно я переборщил с предположениями;) Добавлю ссылочку на гайд.


      1. maxim_ge
        27.02.2019 11:13

        И еще в связи с этим вопрос, вроде бы имя пользователя нигде не вводится — как так? Разве можно обойтись без этого?


        1. bbelky Автор
          27.02.2019 11:26

          Мы везде по-умолчанию используем пользователя root. Собственно, пользователя может потребоваться вводить только, если вы добавляете ключи на сервер вручную.


    1. pxemul
      27.02.2019 11:36
      +1

      Да, это ключик для того, чтобы ansible мог зайти на ваши сервера и сделать что ему нужно. В… обычной (когда из терминала запускаете) ситуации он может, конечно, пароль спросить, но в форме сервиса спрашивать пароль не у кого, сами понимаете :) Так что пока ключики.

      Это, конечно, хлопотно гонять пользователя раскладывать ключи по своим серверам, у нас есть три продолжения этой темы:
      1. будет дока, которая расскажет как разложить ключи по серверам (surprise, surprise) запустив ansible из терминала и введя проль(-и)
      2. мы предложим вариант загрузки на wigin готового private ключа, если вдруг у пользователя уже готова key-based auth на его машины
      3. будет возможность создавать vm-ы для разворачивания в публичных облаках, при таком раскладе все ключи будут разложены автомагически


  1. dmitriylyalyuev
    27.02.2019 11:59

    Вы серьезно? root? Вот прямо так сразу?
    Мой внутренний параноик застрелился сразу после прочтения!


    1. pxemul
      27.02.2019 12:03

      Ну вы как бы хотите, чтобы вам на машину пакетов поставили (и сеть сконфигурировали). Даже если и не root, то пользователь из sudo списка нужен будет в любом случае.


      1. dmitriylyalyuev
        27.02.2019 12:05
        +1

        Именно поэтому я и не хочу. Я и сам с kubeadm подниму все, что мне надо. И хосты будут внутри периметра безопасности. Туда внешний сервис по SSH не попадет при всем желании.

        А тем кому нужен такой сервис — буду читать о них в сводках об утечках инфы пользователей.


        1. bbelky Автор
          27.02.2019 12:19

          Этот сервис для тех, кто деплоит куб на публичные облака. Если серверы и их данные должны быть в изолированном периметре, то это, понятное дело, другой вопрос. Что же касается публичного облака, Вы же не думаете, что провайдеры не имеют доступ к Вашим данным?)


          1. dmitriylyalyuev
            27.02.2019 12:22

            Имеют. Но доверять данные Амазону или DO (публичное облако), и доверять данные стартапу, у которого даже Privacy Policy не описано… Не находите, что это разные вещи?


            1. pxemul
              27.02.2019 12:36

              Данные? Какие данные? Сделали две пустых VM-ы, положили ключи, развернули, убрали ключи.


              1. dmitriylyalyuev
                27.02.2019 12:37

                И при первой нормальной нагрузке — легли. Отличное решение!


                1. pxemul
                  27.02.2019 12:39

                  При чём тут нагрузка? Вы даёте сервису на ремя доступ к машинам, который можете в любой момент прекратить. Почему это называется «доверять данные непонятному стартапу»?


                  1. dmitriylyalyuev
                    27.02.2019 12:43

                    Именно потому, что вход по SSH нужно давать только тому, кому вы на 300% доверяете. Есть гарантии того, что при установке k8s не будет добавлена закладка для слива данных? Я не хочу сказать, что это сделают создатели стартапа. Я хочу сказать, что в случае их взлома может быть добавлен код, который будет укладывать закладки на все сервера, где они будут разворачивать k8s.

                    Это огроменный риск. И я не готов рисковать данными моих пользователей вот таким глупым образом.


                    1. pxemul
                      27.02.2019 13:06

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


                      1. dmitriylyalyuev
                        27.02.2019 13:10

                        Сама идея, для развертывания тестовых штук, на поиграться, на потыкать — огонь. К примеру, сделать конфигуратор — хочу Istio, RBAC, Ingress Nginx (Traefik, HAProxy, etc) и т.п. В общем для того, чтоб не вникать в набор технологий, но пощупать их.

                        Потом можно уже вникать и разбираться как это все устроено и работает, чтоб перенести на стейдж и прод.

                        В любом случае — найдутся те, кто будет пользоваться сервисом. Тема хайповая. :)


                        1. pxemul
                          27.02.2019 13:14

                          Именно! А ещё ведь можно написать bbelky и спросить можно ли развернуть эту штуку «внутри своего периметра безопасности» ;)


                          1. dmitriylyalyuev
                            27.02.2019 13:25

                            Ненене. Разбираться и только… Иначе когда эта штука с грохотом нагребнется (не «если», и именно «когда»), то лечить придется руками и тут уже надо знать что, как, зачем и почему. ;)


                            1. bbelky Автор
                              27.02.2019 13:41

                              Wigin будет Open Source. Просто мы сначала запустили его как сервис, чтобы проверить жизнеспособность самой идеи. Сейчас доделаем деплоилку и выложим на github.

                              При таком раскладе будет интересно?


                              1. dmitriylyalyuev
                                27.02.2019 13:43

                                Вот такой подход более интересен. Код можно проверить, развернуть в своем стеке и деплоить окружения.

                                Спасибо.


            1. bbelky Автор
              27.02.2019 12:39

              Согласен. Но DO тоже был стартапом, да. Privacy Policy добавим.


              1. dmitriylyalyuev
                27.02.2019 12:46

                Дело не только в Privacy Policy. Там еще куча всего должно быть.
                Пример, что будет, если ваша инфраструктура будет скомпрометирована? Будет внедрена закладка в процесс деплоя k8s и эта закладка будет распространяться по серверам клиентов? Ботнет — это самое простое, что я вижу тут. Большой ботнет.

                Ну и никто не запрещает потом ей открывать бэкдор, сливать базы данных и все, что угодно. Тем более, что она будет установлена с правами root!

                Это абсолютнейший контроль над системой.


              1. pxemul
                27.02.2019 13:06

                Помнится, ещё в прошлом веке я видел элктронную записную книжку от Casio, в мануале на которую было написано что-то вроде: «посколько у нас современный высокотехнологичный продукт, то мы вам настоятельно рекомендуем самые ценные ваши записи держать не в нём, а на бумаге».


          1. kvaps
            27.02.2019 12:28

            Хотя бы sudo сделайте, kubespray умеет же в become.


            1. pxemul
              27.02.2019 12:37

              +1

              хотя тут телодвижений больше для клиента. Не только ключи разложить, но ещё и пользователя в sudoers добавить.


              1. 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


                1. pxemul
                  27.02.2019 13:08

                  Да, да, да, но это надо сделать на каждой машине, которую вы регистритуете в wigin. Надо будет сделать что-то в стиле вот этого.


        1. pxemul
          27.02.2019 12:22

          Да, конечно, вы всё абсолютно правильно говорите. Кто может сам… ну, скажем, переклеить обои и побелить потолок, тот за железной дверью внутри периметра безопасности делает это сам. Кто не может (или не хочет), пользуется услугами специалистов. С определённым риском попасть в какие-нибудь интересные сводки.


  1. kharkevich
    27.02.2019 14:22

    Поздравляю, вы изобрели Ansible Tower или Polemarch в SaaS виде :)


    1. bbelky Автор
      27.02.2019 14:34

      Спасибо за поздравления) Так и есть — смысл wigin именно в том, что он сервис, который не нужно деплоить и поддерживать самостоятельно. При этом при желании, можно развернуть его у себя, он же опенсорсный. Такая концепция интересна? Собственно мы его сюда и выложили, чтобы спросить комьюнити, интересен ли такой сервис.


      1. kharkevich
        27.02.2019 18:49

        Как селф-хостед решение — возможно. Но лично для меня не вариант, ибо проигрывает тому же Ansible Tower по всем фронтам.
        Как часть некого публичного клауда — вполне себе, но как выше написали Privacy Policy и всё такое (хотя это больше к клауду который данный сервис предостовлят).
        Как отдельный сервис в чистом виде — однозначно нет, т.к. эта штука получает полный и непрозрачный контроль над моей инфраструктурой (или её частью)


      1. dleonik
        27.02.2019 18:50

        Опенсорсный самое оно ибо очень не хочется давать ssh =)


        1. bbelky Автор
          27.02.2019 22:02

          Хорошо, безусловно, будет опенсорс вариант доступный on-premises. Все-таки в чем привлекательность опенсорс в данном конкретном случае, если сам вигин изначально предполагается как сервис, который из облака? По такой модели работает, например, bitnami, который тоже имеет доступ ко всему в вашем облаке.