What is Rancher?
Rancher can provision Kubernetes from a hosted provider, provision compute nodes and then install Kubernetes onto them, or import existing Kubernetes clusters running anywhere.
Rancher adds significant value on top of Kubernetes, first by centralizing authentication and role-based access control (RBAC) for all of the clusters, giving global admins the ability to control cluster access from one location.
It then enables detailed monitoring and alerting for clusters and their resources, ships logs to external providers, and integrates directly with Helm via the Application Catalog. If you have an external CI/CD system, you can plug it into Rancher, but if you don’t, Rancher even includes Fleet to help you automatically deploy and upgrade workloads.
Rancher is a complete container management platform for Kubernetes, giving you the tools to successfully run Kubernetes anywhere.
Настройка многоузловых развертываний с Rancher 2.1, Kubernetes и Docker Machine в Ubuntu 18.04
Rancher — это популярная платформа управления контейнерами с открытым исходным кодом. Выпущенная в начале 2018 года версия Rancher 2.X работает на Kubernetes и включает новые инструменты, такие как управление несколькими кластерами и встроенные CI конвейеры. Помимо повышенной безопасности, масштабируемости и простых инструментов развертывания, уже имеющихся в Kubernetes, Rancher предлагает графический пользовательский интерфейс, упрощающий управление контейнерами. Благодаря графическому интерфейсу Rancher пользователи смогут управлять секретами, безопасно обрабатывать роли и разрешения, масштабировать узлы и поды, а также выполнять настройку средств распределения нагрузки и томов без необходимости использования инструментов командной строки или сложных файлов YAML.
В этом руководстве мы будем разворачивать многоузловой сервер Rancher 2.1 с помощью Docker Machine в Ubuntu 18.04. По окончании руководства вы сможете предоставить новые дроплеты DigitalOcean и поды контейнеров через пользовательский интерфейс Rancher для быстрого расширения или сокращения вашей среды хостинга.
Предварительные требования
Перед прохождением этого обучающего руководства вам потребуется учетная запись DigitalOcean, а также следующее:
- Маркер персонального доступа DigitalOcean, который вы можете создать в соответствии с указаниями этого руководства. Этот маркер позволит Rancher получить через API доступ к учетной записи DigitalOcean.
- Полное зарегистрированное доменное имя с записью A, которая указывает на IP-адрес дроплета, создаваемый на шаге 1. Вы можете узнать, как привязывать домены к дроплетам DigitalOcean, ознакомившись с документацией по доменам и DNS DigitalOcean. В данном руководстве замените example.com на ваш домен.
Шаг 1 — Создание дроплета с установленным Docker
Чтобы запустить и настроить Rancher, вам нужно будет создать новый дроплет с установленным Docker. Для этого нужно использовать образ Docker DigitalOcean.
Войдите в учетную запись DigitalOcean и выберите Create Droplet (Создать дроплет). Затем в разделе Choose an Image (Выбрать образ) выберите вкладку Marketplace (Магазин). Выберите Docker 18.06.1~ce~3 on 18.04.
Далее выберите дроплет размером не менее 2 ГБ и укажите регион центра обработки данных для вашего дроплета.
После этого добавьте ключи SSH, укажите имя хоста для дроплета и нажмите Create (Создать).
Может потребоваться несколько минут для организации работы сервера и загрузки Docker. После успешного развертывания дроплета вы можете запустить Rancher в новом контейнере Docker.
Шаг 2 — Запуск и настройка Rancher
Дроплет, созданный на шаге 1, будет запускать Rancher в контейнере Docker. На этом шаге вы запустите контейнер Rancher и убедитесь, что у него есть сертификат SSL от Let’s Encrypt для получения защищенного доступа к панели администратора Rancher. Let’s Encrypt — это автоматизированный издатель сертификатов с открытым исходным кодом, позволяющий разработчикам получать действующие в течение 90 дней сертификаты SSL бесплатно.
Выполните вход в новый дроплет:
Чтобы убедиться, что Docker запущен, введите:
Проверьте, что указанная версия Docker соответствует вашим ожиданиям. Вы можете запустить Rancher с уже установленным сертификатом Let’s Encrypt с помощью следующей команды:
Параметр —acme-domain устанавливает сертификат SSL от Let’s Encrypt для обеспечения того, что администратор Rancher обслуживается через HTTPS. Этот скрипт также указывает дроплету выполнить выборку образа Docker rancher/rancher и запускать экземпляр Rancher в контейнере, который автоматически перезапускается в случае аварийного завершения работы. Для облегчения восстановления в случае потери данных скрипт монтирует том на компьютер хоста (в /host/rancher ), который содержит данные Rancher.
Для просмотра всех запущенных контейнеров введите:
Вы увидите примерно следующий вывод (с уникальным идентификатором и именем контейнера):
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7b2afed0a599 rancher/rancher "entrypoint.sh" 12 seconds ago Up 11 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp wizardly_fermat
Если контейнер не запущен, вы можете снова запустить команду docker run .
Прежде чем вы сможете получить доступ к панели администратора Rancher, вам нужно будет задать пароль администратора и URL-адрес сервера Rancher. Интерфейс администратора Rancher позволит вам получить доступ ко всем запущенным узлам, подам и секретам, поэтому важно использовать надежный пароль.
Перейдите к доменному имени, которое указывает на ваш новый дроплет, в браузере. При первом посещении этого адреса Rancher попросит задать пароль:
При запросе URL-адреса сервера Rancher используйте доменное имя, указывающее на ваш дроплет.
Теперь, когда вы выполнили настройку сервера Rancher, вы увидите домашний экран администратора Rancher:
Вы можете перейти к настройке кластера Rancher.
Шаг 3 — Настройка кластера с одним узлом
Для использования Rancher вам потребуется создать кластер с как минимум одним узлом. Кластер — это группа с одним или несколькими узлами. В этом руководстве вы найдете более подробную информацию об архитектуре Kubernetes. В настоящем руководстве узлы соответствуют дроплетам, которыми управляет Rancher. Поды представляют собой группу запущенных контейнеров Docker внутри дроплета. Каждый узел может запускать множество подов. В пользовательском интерфейсе Rancher вы можете настроить кластеры и узлы в лежащей в его основе среде Kubernetes.
К концу этого шага у вас должен быть настроенный кластер с одним узлом, готовый к запуску первого пода.
В Rancher нажмите Add Cluster (Добавить кластер) и выберите DigitalOcean в качестве поставщика инфраструктуры.
Откройте меню Cluster Name (Имя кластера) и прокрутите до раздела Node Pools (Пулы узлов). Введите Name Prefix (Префикс имени), оставьте значение 1 для параметра Count (Счетчик) и проверьте etcd, Control Plane (Уровень управления) и Worker (Рабочее приложение).
- etcd — это система хранения значения ключа Kubernetes для сохранения состояния вашей среды. Для обеспечения высокой доступности вам нужно запустить три или пять узлов etcd, чтобы, если один из узлов перестанет работать, ваша среда оставалась под контролем.
- Control Plane (Уровень управления) проверяет все объекты Kubernetes, например поды, в вашей среде и поддерживает их соответствие конфигурации, которую вы задаете в интерфейсе администратора Rancher.
- Workers (Рабочие приложения) запускают действующие рабочие нагрузки и агенты мониторинга, которые обеспечивают, что ваши контейнеры будут работать и останутся подключены к сети. Рабочие узлы — это место, где ваши поды будут запускать программное обеспечение, которое вы разворачиваете.
Перед созданием кластера нажмите Add Template Node (Добавить шаблон узла) для настройки конкретных параметров вашего нового узла.
Введите персональный маркер доступа DigitalOcean в поле ввода Access Token (Маркер доступа) и нажмите Next: Configure Droplet (Далее: настройка дроплета).
Далее выберите тот же Region (Регион) и Droplet Size (Размер дроплета), что и в шаге 1. Для Image (Образ) выберите Ubuntu 16.04.5 x64, так как в настоящее время существует проблема совместимости Rancher с Ubuntu 18.04. Нажмите Create (Создать) для сохранения шаблона.
После этого нажмите Create (Создать) на странице Add Cluster (Добавить кластера) для завершения процесса предоставления. Rancher потребуется несколько минут на выполнение этого шага, но после завершения работы вы увидите новый дроплет в панели управления дроплетов DigitalOcean.
На этом шаге вы создали новый кластер и узел, где вы будете разворачивать рабочую нагрузку в следующем разделе.
Шаг 4 — Развертывание рабочей нагрузки веб-приложения
Когда новый кластер и узел будут готовы, вы можете развернуть ваш первый под в рабочей нагрузке. Под Kubernetes — это самая маленькая часть работы, доступная в Kubernetes и расширении Rancher. Рабочие нагрузки описывают одну группу подов, которые вы разворачиваете вместе. Например, вы можете запустить несколько подов вашего веб-сервера в одной рабочей нагрузке, чтобы убедиться, что, если один под замедляется при получении конкретного запроса, другие экземпляры могут обрабатывать входящие запросы. В этом разделе вы должны будете развернуть образ Nginx Hello World в одном поде.
Наведите курсор на Global (Глобально) в заголовке и выберите Default (По умолчанию). В результате будет отображена панель проекта по умолчанию. В этом руководстве вы будете работать над развертыванием отдельного проекта, но в этой панели управления вы также можете создать несколько проектов для получения сред для изолированных контейнеров.
Для начала настройки первого пода нажмите Deploy (Развернуть).
Откройте Name (Имя) и введите nginxdemos/hello в поле Docker Image (Образ Docker). Затем разметьте порт 80 в контейнере для порта 30000 на узлах хоста. Это позволит гарантировать, что поды, которые вы разворачивайте, будут доступны на каждом узле порта 30000. Вы можете оставить для параметра Protocol (Протокол) значение TCP, а в следующем выпадающем списке укажите NodePort.
Примечание. Хотя этот метод запуска узла на порте каждого узла легче использовать, Rancher также включает Ingress для распределения нагрузки и прекращения работы SSL для использования в продакшене.
Для запуска пода прокрутите до самого низа и нажмите Launch (Запустить).
Rancher вернет вас на домашнюю страницу проекта по умолчанию, а в течение нескольких секунд ваш под будет готов. Нажмите ссылку 30000/tcp под именем рабочей нагрузки, и Rancher откроет новую вкладку с информацией о среде запущенного контейнера.
Адрес сервера и порт, которые вы видите на этой странице, повторяют данные внутренней сети Docker, а не являются публичным IP-адресом, который вы видите в браузере. Это означает, что Rancher работает и перенаправляет трафик с http:// first_node_ip :30000/ на рабочую нагрузку, как и ожидалось.
В данный момент вы успешно развернули вашу первую рабочую нагрузку одного пода на отдельном узле Rancher. Далее вы узнаете, как можно расширить вашу среду Rancher.
Шаг 5 — Масштабирование узлов и подов
Rancher предоставляет два способа масштабирования ресурсов хостинга: увеличение числа подов в вашей рабочей нагрузке или увеличение числа узлов вашего кластера.
Добавление подов в вашу рабочую нагрузку будет предоставлять вашему приложению большее количество запущенных процессов. Это позволит ему обрабатывать больше трафика и добиться развертываний без остановки работы приложений, но каждый узел сможет обрабатывать только ограниченное количество подов. Когда все ваши узлы достигнут лимита на количество подов, вам нужно будет увеличить количество узлов, если вы захотите продолжить масштабирование вашего приложения.
Еще одним соображением, которое нужно учитывать, является тот факт, что, хотя увеличение количества подов выполняется бесплатно, вам придется платить за каждый узел, добавляемый в вашу среду. На этом шаге вы сможете расширить количество узлов и подов, а также добавить дополнительный узел в ваш кластер Rancher.
Примечание. В этой части руководства будет предоставлен новый дроплет DigitalOcean автоматически через API, поэтому вы должны учитывать, что запуск второго узла будет сопровождаться дополнительными расходами.
Перейдите на домашнюю страницу кластера установки Rancher, выбрав Cluster: your-cluster-name в верхней панели навигации. Далее нажмите Nodes (Узлы) в верхней панели навигации.
Эта страница показывает, что у вас в кластере есть один запущенный узел. Для добавления дополнительных узлов нажмите Edit Cluster (Изменить кластер) и прокрутите до раздела Node Pools (Пулы узлов) внизу страницы. Нажмите Add Node Pool (Добавить пул узлов), введите префикс и проверьте поле Worker (Рабочее приложение). Нажмите Save (Сохранить) для обновления кластера.
В течение 2–5 минут Rancher предоставит второй дроплет и отметит узел как Active (Активный) в панели управления кластера. Этот второй узел — только рабочее приложение, что означает, что он не будет использовать etcd Rancher или контейнеры панели управления. Это предоставляет рабочему приложению больше возможностей для запуска рабочих нагрузок.
Примечание. При наличии нечетного числа узлов etcd будет гарантировано, что всегда можно будет достичь кворума (или консенсуса). Если у вас есть только один узел etcd, вы сталкиваетесь с риском того, что ваш кластер может стать недоступным, если этот один узел прекратит работу. В продакшен-среде лучше использовать три или пять узлов etcd.
Когда второй узел будет готов, вы сможете увидеть рабочую нагрузку, которую вы развернули на предыдущем шаге, на этом узле, если перейдете на http:// send_node_ip :30000/ в браузере.
Масштабирование узлов позволяет вам использовать больше дроплетов для распределения ваших рабочих нагрузок, но вы также можете использовать несколько экземпляров каждого пода внутри рабочей нагрузки. Для добавления дополнительных подов вернитесь на страницу проекта по умолчанию, нажмите стрелку слева от рабочей нагрузки hello-world и нажмите + два раза для добавления двух новых подов.
Rancher автоматически развернет несколько подов и распределит запущенные контейнеры на каждом узле, в зависимости от доступности.
Теперь вы можете масштабировать ваши узлы и поды согласно требованиям вашего приложения.
Заключение
Вы выполнили развертывание нескольких узлов с помощью Rancher 2.1 в Ubuntu 18.04, а также расширили вашу конфигурацию до двух запущенных узлов и нескольких подов внутри рабочей нагрузки. Вы можете использовать эту стратегию для размещения и масштабирования любых контейнеров Docker, которые вам нужно запускать в вашем приложении, и использовать панель управления и оповещения Rancher для максимального повышения производительности ваших рабочих нагрузок и узлов внутри кластера.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Полный гид для инфраструктуры стартапа. Rancher + kubernetes + docker. Часть 1
Данная статья лежала в черновике пару лет. Черновик в полном смысле его слова — обычный набор пунктов и команд для создания инфраструктуры. Я встречал довольно много ребят, которые задавались вопросом, что им делать с их приложениями. Из общения с ними я выделил несколько групп таких ребят:
- Работаю в команде на позиции фронтенд разработчика, решили с другом написать свое приложение, он пилит бекенд. Их объединяет то, что работа в компании дает им всю инфраструктуру из коробки, максимум им приходится править yaml или docker файл.
- CTO стремительно развивающихся стартапов, которые на первых стадиях завязались на azure и подобные сервисы, поняли, что пора брать инфраструктуру под свой контроль.
- Мой друг, который открыл свой бизнес и ему потребовалась серьезная автоматизация, налаживание процессов разработки в командах, CI/CD, и тд.
В этой статье мы научимся работать по взрослому в небольшой команде нового бизнеса, с условием, что масштабирование и рост не ударят в нас как с точки зрения технологий, так и денег.
Список используемых технологий и терминов
Так целевая аудитория довольно обширная по этой теме, то все технологии и другие названия будут расшифрованы прямо в статье. Чтобы читателю не приходилось бегать по куче ресурсов за поиском информации, как в свое время мне приходилось это делать самому. Потратил я тогда не мало дней и ночей.
Rancher — платформа управления контейнерами, работает на kubernetes. Включает в себя веб приложение для управления кластерами и контейнерами.
Kubernetes — система управления контейнерами
Docker — это платформа для разработки, доставки и запуска контейнерных приложений
Pod — базовый строительный блок Kubernetes: pod определяется как представление запроса на запуск одного или более контейнеров на одном узле. После того, как pod создан, Kubernetes обрабатывает его в два этапа: сначала планировщик (Scheduler) планирует pod, а затем — Kubelet запускает его
Helm — это диспетчер пакетов для Kubernetes, упрощающий для разработчиков и операторов упаковку, настройку и развертывание приложений и служб в кластерах Kubernetes.
Gitlub — веб-инструмент жизненного цикла DevOps с открытым исходным кодом, представляющий систему управления репозиториями кода для Git с собственной вики, системой отслеживания ошибок, CI/CD пайплайном и другими функциями
.net — это модульная платформа для разработки программного обеспечения с открытым исходным кодом.
angular — платформа для разработки веб-приложений, написанная на языке TypeScript
postgre — объектно-реляционная система управления базами данных.
CI/CD — это комбинация непрерывной интеграции и непрерывного развертывания программного обеспечения в процессе разработки
Cluster — набор машин, так называемые узлы, которые запускают контейнеризированные приложения. Кластер имеет как минимум один рабочий узел.
Master — отвечает за поддержание желаемого состояния для вашего кластера. Когда вы взаимодействуете с Kubernetes
Worker — отвечает за работу приложений в контейнерах
OpenVPN — технологии для создания зашифрованных каналoв типа точка-точка или сервер-клиенты между компьютерами
cloudflare — американская компания, предоставляющая услуги CDN, защиту от DDoS-атак, безопасный доступ к ресурсам и серверы DNS
SSL — криптографический протокол, который подразумевает более безопасную связь
1. Подготовим площадку
Для того, чтобы показать реальность применения технологий, со скриншотами и командами купим Ubuntu. Для этого я выбрал simplecloud.ru (добавить партнерку).
Рекомендуемая конфигурация покупки из нашего опыта, у нас будет 3 машины:
- Rancher машина — на ней будет крутиться Rancher
- Master — отвечает за работу кластера
- Worker — на нем будут крутиться наши приложения
Итого для стартовой конфигурации достаточно 2700 рублей.
Будем покупать Ubuntu 20.04 x86_64 для всех машин.
Тариф для Rancher
Тариф для Master
Тариф для Worker
С этой конфигурацией у меня получилось создать инфраструктуру, в которой хорошо работает небольшое приложение.
2. Установка rancher
Для установки нужных программ на сервер воспользуемся терминалом и подключимся по ssh.
Выполним команду ssh root@XX.XXX.XX.XXX, где X это ip адрес сервера. Его можно найти в информации на simplecloud в разделе Public IP:
Терминал запросит пароль. Это тот пароль, который был задан при покупке сервера. Начнем установку через терминал:
- Ставим менеджер пакетов apt-get update
- Ставим докер с помощью менеджера пакетов apt install docker.io. Проверяем, что он работает docker run hello-world.
- Ставим Rancher и выполняем согласно инструкции:
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher
или
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher:v2.7.1 --acme-domain
- проверим что появился rancher контейнер docker ps -a
Все, наше ранчо доступно по адресу https://XXX.XX.XX/g/clusters
3. Добавляем Kubernetes кластер
Генерируем скрипт с опцией “etcd” + “Control Plane”. Скрипт выполняем сервере master. Аналогично подключаемся по ssh.
etcd — Key:value хранилище, используемое Kubernetes для управления конфигурациями и service discovery. Кроме того, в нём хранится текущее (current) состояние системы, и желаемое (desired), например — после деплоймента.
Control Plane — запускает процессы контроллера кубера
4. Настраиваем worker
Его нужно устанавливать на отдельный сервер, для этого мы покупали выше worker. Аналогично подключаемся по ssh.
на этом этапе у нас есть кластер!
Заключение
В этой статье мы познакомились с основными терминами, купили сервера, подняли rancher и настроили Kubernetes кластер. В следующей части будет подключен Gitlub и настроен CI/CD для фронтенд и бекенд приложений.
Rancher Labs
Rancher Labs является поставщиком решений с открытым исходным кодом, которые на июнь 2020 года позволяют организациям развертывать, управлять и масштабировать Kubernetes в любых инфраструктурах — в выделенной инсталляции, корпоративном облаке, в центре обработки данных, телеком-облаке, в распределенной филиальной инфраструктуре и на границе сети (MEC).
История
2020: SUSE купила Rancher Labs за $600-700 млн
8 июля 2020 года SUSE официально объявила о приобретении Rancher Labs. Компании не стали называть стоимость сделки. CNBC со ссылкой на свои источники сообщает, что речь идёт о сумме в диапазоне $600-700 млн.
В разговоре с телеканалом Уршит Парих (Ursheet Parikh), представитель инвестфонда Mayfield Fund (партнёр Rancher Labs), рассказал, что переговоры начались весной 2020 года. Помимо SUSE, интерес к покупке Rancher Labs проявляли ряд других компаний, в том числе Zoom, от которой «было много звонков», сообщил Парих.
SUSE купила разработчика ПО для контейнеров Kubernetes
Шэн Лян не стал комментировать финансовую составляющую сделки с SUSE и лишь отметил, что компания после привлечения $95 млн инвестиций потратила лишь треть этой суммы. Rancher была очень прибыльной компанией, заявил он. Российский рынок мобильных приложений для бизнеса и госсектора: крупнейшие игроки, тенденции и перспективы. Обзор TAdviser
Глава Rancher считает, что технологии компании станут еще популярнее в корпоративном секторе благодаря SUSE, а акцент на Kubernetes сделал Rancher коммерчески привлекательным стартапом.
Помимо собственно системы управления контейнерами Rancher Labs работает над своей контейнерно-оптимизированной ОС, известной как RancherOS. Обычный полный Linux-дистрибутив общего назначения имеет пакеты и функции, ненужные при работе с контейнерами, и поэтому есть потребность в контейнерно-оптимизированной Linux. Помимо этого, оптимизированная для контейнеров ОС может улучшить безопасность, минимизируя зону потенциальной атаки, утверждает производитель. [1]