- PVSM.RU - https://www.pvsm.ru -
Приветствую!
Мы, команда ИТ архитекторов из IBM, которая занимается созданием и продвижением на рынок индустриальных решений для разных отраслей. В свободное от основной работы время исследуем новые технологии, экспериментируем и пробуем на деле лучшие практики.
Последние годы большой популярностью пользуется тематика Интернета Вещей. Наши клиенты спрашивают об универсальных коробочных решениях и платформах, которые могут располагаться локально в их Центрах Обработки Данных. Самое главное, ожидается, что на базе таких «коробочек», все новые сервисы и приложения должны разрабатываться и запускаться очень быстро, а точнее моментально или «еще вчера».
Мы задались вопросом: «А что если собрать нечто подобное на открытых и общедоступных технологиях?»
Про использование контейнеров Docker [1] и средства управления ими на базе Kubernetes [2] было уже немало рассказано и показано. Однако пока не удалось увидеть каким образом все эти передовые технологии могут быть использованы в промышленных масштабах для бизнес-задач, конкретно под Интернет Вещей. Так давайте же восполним этот пробел. Концепцию микросервисов, а также модные подходы разработки (DevOps), интеграции и развертывания приложений (CI/CD) будем считать немного другой задачей и отложим на потом.
В этой статье мы хотим рассказать про подготовку и установку одного из ключевых компонентов — IBM Cloud Private (по сути, промышленную сборку Docker/Kubernetes и еще чуть-чуть), который может выступить в качестве условного инфраструктурного ядра при создании локальной платформы Интернета Вещей. Спросите, почему именно он?
Потому что мы обещали открытые и общедоступные технологии (бесплатная версия для сообщества и поддержка от сообщества): hub.docker.com/r/ibmcom/icp-inception [3]
IBM Cloud Private (ICP) – это приватная облачная платформа для локального развертывания и эксплуатации. ICP представляет собой интегрированную среду, которая позволяет проектировать, разрабатывать, развертывать и управлять локальными приложениями, созданными с учетом контейнерной архитектуры. Поставка ICP включает в себя оркестратор на базе Kubernetes (K8s), локальное хранилище образов, а также консоль управления и вспомогательный инструментарий для мониторинга.
Приватное облако — это модель облачных вычислений, запускаемая исключительно для одной организации, как правило на ее территории и ресурсах. Такое облако может управляться и обслуживаться как собственными специалистами, так и сотрудниками третьих сторон. Размещаться подобная платформа может как за брандмауэром компании, так и вне его. Частное облако предоставляет преимущества общедоступного облака, в том числе быстрое развертывание и масштабируемость, а также простоту использования, управления и гибкости. При этом локальная версия обеспечивает больший контроль над системой, повышение производительности, точно предсказуемые затраты, повышенные требования к безопасности и гибкие возможности управления в зависимости от нужд организации. Частное облако позволяет настраивать его непосредственно под конкретные бизнес-задачи и требования безопасности клиента.
Прежде чем приступать к установке ICP, определимся с терминологией:
Главный узел (master node)
Рабочий узел (worker node)
Контейнеры (containers)
Коконы (pods)
Контроллер репликации (replication controller)
Метки (labels)
Сервисы (services)
Секретная информация (secrets)
Ниже представлена высокоуровневая архитектура ICP на которой перечислены основные компоненты с разбивкой на главный, рабочие и прокси узлы. Стоит отметить, что в этой статье основной упор сделан на связке контейнеров Docker и среды управления Kubernetes. Эти компоненты с открытым исходным кодом являются ключевыми и фундаментальными для платформы ICP. Тем не менее для полноценной работы с ICP также потребуется знание Helm — менеджера управления программными пакетами. K8s используется для развертывания и размещения экземпляров приложений, которые встроены в схемы Helm, они в свою очередь ссылаются на Docker-образы. В схемах Helm содержится информация о деталях вашего приложения, а Docker-образы содержат все программные пакеты, которые необходимы для запуска вашего приложения.
Для детального ознакомления с архитектурой и компонентами платформы ICP можно воспользоваться ссылкой на документацию в IBM Knowledge Center [6].
Для того, чтобы комфортно выполнить установку ICP за 20-30 минут, необходимы следующие минимальные аппаратные ресурсы и доступ в Интернет:
• Один хост (физический или виртуальный)
• CPU = 8 ядер (или виртуальных ядер)
• ОЗУ = 10 Гб (фактически может потребоваться до 14Гб)
• Диск = 40 Гб (на SSD как всегда быстрее)
Примечание: если у вас есть чуть больше свободного времени и чуть меньше аппаратных ресурсов, то где-то за 40-60 минут можно установить ICP на 1 виртуальном ядре core i5 и 10 Гб ОЗУ.
Скачайте дистрибутив Ubuntu Server версии 16.04.05 [7]. Выполните стандартную установку ОС на виртуальную или физическую машину с указанными выше характеристиками.
После завершения процесса установки ОС в командной строке узнайте IP адрес своей виртуальной машины с помощью такой команды:
ifconfig
Вам необходимо записать/запомнить Ethernet IP адрес (inet addr), а также Bcast и Mask. Эти параметры отобразятся после выполнения соответствующей команды:
[8]
Рисунок 1. Пример выполнения команды «ifconfig»
В случае, если при настройке виртуальной машины вы использовали функцию «Easy Install», то после полной установки Ubuntu Server вам необходимо доустановить OpenSSH server. Сделать это можно следующими командами:
apt install openssh-server
sudo systemctl enable sshd
После выполнения соответствующих команд у вас появится возможность подключиться к виртуальной машине с помощью SSH. В зависимости от ОС вы можете использовать разные способы подключения. Для Windows можно воспользоваться популярным инструментом PuTTY [9], для MacOS можно использовать команду ssh в терминале.
[10]
Рисунок 2. Пример подключения через PuTTY для Windows
На следующем этапе необходимо установить пароль для супер-пользователя (root):
sudo -i
passwd
[11]
Рисунок 3. Установка нового пароля для пользователя root
После того как мы настроили возможность подключения через SSH и обновили пароль супер-пользователя, для определения статичных сетевых параметров нам необходимо настроить сетевой интерфейс. Выполняется это следующей командой:
nano /etc/network/interfaces
Обновляем настройки сетевого интерфейса (primary network interface) на базе информации полученной при выполнении команды ifconfig, наш пример выглядит так:
auto ens33
iface ens33 inet static
address 192.168.175.7
netmask 255.255.255.0
network 192.168.175.0
broadcast 192.168.175.255
gateway 192.168.175.2
dns-nameservers 192.168.175.2 8.8.8.8
Примечание: важно правильно указать DNS-сервер, так как доступ в Интернет необходим для последующей установки компонентов ICP.
[12]
Рисунок 4. Настройка сетевого интерфейса
Сохраните обновленный файл при помощи следующих действий: Ctrl + X, Yes, Enter.
Для упрощения входа на виртуальную машину с правами супер-пользователя (root), необходимо внести изменения в конфигурацию SSH сервиса. Для этого необходимо выполнить такую команду:
nano /etc/ssh/sshd_config
Далее найти строку разрешения доступа и отредактировать ее соответствующим образом:
PermitRootLogin yes
[13]
Рисунок 5. Обновление конфигурации SSH
Сохраните файл как в предыдущем шаге: Ctrl + X, Yes, Enter.
После внесения всех изменений, для применения новых параметров имеет смысл полностью перезапустить виртуальную машину или перезапустить соответствующие сервисы (networking и ssh), например такими командами:
shutdown -r 0
или
service <service_name> restart
После перезапуска машины необходимо снова выполнить вход в систему через SSH.
Обновите Ubuntu Server с помощью следующей команды (команда должна выполняться под root правами):
apt update
Примечание: если в ходе обновления возникает ошибка: «The repository 'cdrom://Ubuntu-Server 16.04.5 LTS _Xenial Xerus_ — Release amd64 (20180731) xenial Release' does not have a Release file.». Необходимо выполнить следующую команду:
sudo nano /etc/apt/sources.list
И закомментировать строку:
deb cdrom:[Ubuntu-Server 16.04.5 LTS …
[14]
Рисунок 6. Исправление возможной ошибки
Далее сохраняем файл, как это делали ранее: Ctrl + X, Yes, Enter
После исправления возможной ошибки, выполните повторно команду обновления и в результате вы должны будете увидеть что-то вроде такого:
[15]
Рисунок 7. Обновление Ubuntu
Прежде чем выполнить установку ICP, вам необходимо отредактировать hosts файл:
nano /etc/hosts
Замените строку 127.0.1.1 ubuntu на ваш IP адрес и любое подходящее название хоста.
Убедитесь, что название хоста и псевдонима в строке отделены табуляцией или пробелом:
[16]
Рисунок 8. Изменение hosts файла
Сохраните файл: Ctrl + X, Yes, Enter
Следующие 2 команды позволят вам обновить систему и установить дополнительные модули.
apt update
apt-get install apt-transport-https ca-certificates curl software-properties-common python-minimal jq
Проследите за выводом терминала на наличие ошибок:
[17]
Рисунок 9. Установка дополнительных компонентов
Увеличьте максимальную виртуальную память командой:
sysctl -w vm.max_map_count=262144
K8s не запустится с включенным swap. Отключить его можно командой:
swapoff –a
Примечание: две предыдущие команды будут работать в текущем сеансе. При перезагрузке эти параметры будут утеряны и необходимо прописать их заново.
Применение этих параметров при загрузке ОС можно включить такими командами:
sed -i '/ swap / s/^/#/' /etc/fstab
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
Воспользуемся следующей командой:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Для выполнения установки репозитория необходимо выполнить следующие 2 команды:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
Воспользуйтесь следующей командой для установки Docker (версия Docker 17.12.1 максимальная поддерживаемая версия для IBM Cloud Private 2.1.0.3):
apt-get install docker-ce=17.12.1~ce-0~ubuntu
[17]
Рисунок 10. Процесс установки Docker
Проверить работоспособность Docker можно следующей командой:
docker version
[18]
Рисунок 11. Проверка Docker
Для загрузки образа ICP-ce (Сommunity Edition) с ресурса dockerHub необходимо использовать инструментарий Docker. Выполнить это можно следующей командой:
docker pull ibmcom/icp-inception:2.1.0.3
IBM упаковала все основные компоненты, необходимые для установки, в один пакет (обратите внимание, что при необходимости можно изменить версию на более новую). Команда pull загрузит образ в локальную файловую систему (образ будет запущен для установки ICP).
Создайте каталог и перейдите в него:
mkdir /opt/icp
cd /opt/icp
Скопируйте пакет ICP в этот каталог:
docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:2.1.0.3 cp -r cluster /data
Примечание: эта команда инструментария Docker выполняет Linux команду copy (cp) из заданного каталога (параметр -v). Создастся каталог кластера в /opt/icp со всеми необходимыми файлами.
Создаем новые ssh ключи в каталоге /opt/icp/cluster:
ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N ""
cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys
systemctl restart sshd
cp ~/.ssh/id_rsa ./cluster/ssh_key
Проверяем, что ключ создан и находится в папке /opt/icp/cluster:
ls /opt/icp/cluster
[20]
Рисунок 13. Содержимое папки cluster
Добавляем IP-адрес каждого узла в кластере в файл /opt/icp/cluster/hosts (в нашем случае мы используем один и тот же IP-адрес для каждого компонента, который мы указывали в /etc/hosts). Делаем это следующей командой:
nano /opt/icp/cluster/hosts
[21]
Рисунок 14. Содержимое файла hosts
Сохраните файл: Ctrl + X, Yes, Enter
Подробные сведения о параметрах установки можно посмотреть в файле конфигурации:
more /opt/icp/cluster/config.yaml
Не рекомендуем менять параметры установки по умолчанию.
Примечание: 2 самых важных файла для установки — это hosts и config.yaml, они описывают параметры установки ICP. В конфигурации с несколькими рабочими узлами необходимо указать список IP-адресов в разделе worker. При установке текущей версии ICP в режиме Single Node меняются IP-адреса только в файле hosts.
Перейдите в каталог cluster и запустите установку:
cd /opt/icp/cluster
docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 install
В зависимости от доступных ресурсов установка может длиться от 20 до 60 минут. При появлении ошибок (красные сообщения) внесите соответствующие изменения в конфигурационные файлы. Иногда установка может немного замедлиться из-за попыток повторного подключения к компонентам, которые еще не успели стартовать (например, во время запуска Cloudant или IAM).
Окончание установки должно выглядеть так:
[22]
Рисунок 15. Результат установки ICP
В случае ошибок возможно потребуется деинсталляция ICP:
docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 uninstall
Перед тем, как перейти к следующему шагу, подождите около 5 минут, чтобы все компоненты ICP могли успешно запуститься.
По ссылке указанной после завершения установки войдите в консоль ICP (admin/admin):
https://<ip_address>:8443
[23]
Рисунок 16. Страница входа в панель управления
Страница приветствия ICP:
[24]
Рисунок 17. Веб интерфейс панели управления
Вверху справа выберите меню «Catalog», отобразится список доступных приложений:
[25]
Рисунок 18. Каталог компонентов
В этом каталоге представлен список приложений и ПО, описание которых вы можете изучить на досуге, но пока не стоит торопиться разворачивать их.
Нам еще предстоит научиться правильно обращаться с только что установленным ICP (не только через Веб-интерфейс, но и консоль в виде CLI — Command Line Interface), подключать постоянное хранилище (persistent storage) и производить небольшие настройки.
Подведем итоги.
Мы успешно развернули IBM Cloud Private community edition (версии 2.1.0.3) на одном хосте в виртуальной машине под ОС Ubuntu Server 16.04.5. На текущий момент нами собственноручно проверена установка на гипервизорах VMware и Hyper-V, точно работает на XenServer и никаких сложностей для VirtualBox и KVM быть не должно.
Кому очень не терпится окунуться дальше в изучение ICP, то есть отличная подборка лабораторных работ нашего коллеги тут: github.com/phthom/IBMCloudPrivate [26]
Из предстоящих шагов — после свежей установки нам остается немного настроить ICP и начать наполнять его чем-то полезным и приближенным к практическим задачам.
Если Хабр-сообщество поддержит позитивом это начинание, то по мере продвижения наших исследований и экспериментов мы будем наполнять ядро платформы необходимыми компонентами для сбора телеметрии, хранения данных, их обработки, анализа, построения прогнозов, формирования внешних программных интерфейсов и создания пользовательских приложений. Соответственно развивая серию таких статей.
Ждем ваших отзывов и предложений!
Также, наши единомышленники из AIXportal.ru [27] подготовили замечательный видео-ролик по установке IBM Cloud Private на своем Youtube канале, кому-то будет удобнее так: youtu.be/eQwOOTzjM24 [28]
• Страница о продукте на русском [29]
• Кто хочет потренировать английский, книга — «ICP для чайников [30]» 2018г. (40 страниц)
• Официальная документация по ICP 2.1.0.3 [31] на IBM Knowledge Center
• Открытое сообщество по ICP на IBM developerWorks [32]
• Рецепты по ICP для разработчиков [33]
Автор: evitbon
Источник [34]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ibm/295855
Ссылки в тексте:
[1] Docker: https://habr.com/post/353238/
[2] Kubernetes: https://habr.com/post/258443/
[3] hub.docker.com/r/ibmcom/icp-inception: https://hub.docker.com/r/ibmcom/icp-inception/
[4] выделенный сервер: https://www.reg.ru/?rlink=reflink-717
[5] Image: https://habrastorage.org/webt/ch/hd/is/chhdisgv9bo9fu4bfdow2g1ydmu.png
[6] IBM Knowledge Center: https://www.ibm.com/support/knowledgecenter/SSBS6K_2.1.0.3/getting_started/architecture.html
[7] Ubuntu Server версии 16.04.05: http://mirror.corbina.net/ubuntu-cd/16.04.5/ubuntu-16.04.5-server-amd64.iso
[8] Image: https://habrastorage.org/webt/ao/tp/gh/aotpghosoq-nglwcwwm-1fmn_pk.png
[9] PuTTY: https://www.putty.org/
[10] Image: https://habrastorage.org/webt/2w/v8/st/2wv8st2har9fplst87-ouu2xn3a.png
[11] Image: https://habrastorage.org/webt/tk/p5/l_/tkp5l_dnzxuaf5-bdlf5j2nllis.png
[12] Image: https://habrastorage.org/webt/u3/cb/v7/u3cbv77no49a5vnxx5jfvb-rena.png
[13] Image: https://habrastorage.org/webt/4h/mg/9c/4hmg9clbw62w0fb_v7enmmptweo.png
[14] Image: https://habrastorage.org/webt/x4/l8/0w/x4l80wwrr4ovzqd0a_wj3jqy8ki.png
[15] Image: https://habrastorage.org/webt/iu/i7/7_/iui77_byceas5t0cujkv-1p9ltu.png
[16] Image: https://habrastorage.org/webt/ht/jk/ks/htjkkshqzdczphtd999qhxb_unu.png
[17] Image: https://habrastorage.org/webt/so/ve/fi/sovefisrk9vxuzgcxusddtzir6e.png
[18] Image: https://habrastorage.org/webt/w3/8y/si/w38ysiwd6porpbipaez4_nghy9i.png
[19] Image: https://habrastorage.org/webt/vq/k4/m3/vqk4m3d4o-sclprferxvwcjprte.png
[20] Image: https://habrastorage.org/webt/5t/-f/th/5t-fthfoh0nvegetpvqgs5qcqvm.png
[21] Image: https://habrastorage.org/webt/uv/g4/3n/uvg43n_tjis5f-s9x1oakpsfjwi.png
[22] Image: https://habrastorage.org/webt/ft/9-/8r/ft9-8re-bg2velkh1hlxqdgoecu.png
[23] Image: https://habrastorage.org/webt/t8/en/-t/t8en-t-wktktunis-pn4phoz2dw.png
[24] Image: https://habrastorage.org/webt/ji/bf/t6/jibft6ehclvq8-npu2slawyoxbo.png
[25] Image: https://habrastorage.org/webt/3i/_w/tt/3i_wttbjrkwapn7nvohf-fo4ziy.png
[26] github.com/phthom/IBMCloudPrivate: https://github.com/phthom/IBMCloudPrivate
[27] AIXportal.ru: https://aixportal.ru/
[28] youtu.be/eQwOOTzjM24: https://youtu.be/eQwOOTzjM24
[29] Страница о продукте на русском: https://www.ibm.com/cloud-computing/ru-ru/products/ibm-cloud-private/
[30] ICP для чайников: https://public.dhe.ibm.com/common/ssi/ecm/ku/en/kum12391usen/ibm-cloud-private-fd-ltd-ed_KUM12391USEN.pdf
[31] Официальная документация по ICP 2.1.0.3: https://www.ibm.com/support/knowledgecenter/en/SSBS6K_2.1.0.3/getting_started/overview.html
[32] ICP на IBM developerWorks: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W1559b1be149d_43b0_881e_9783f38faaff
[33] Рецепты по ICP для разработчиков: https://developer.ibm.com/recipes/tag/ibm-cloud-private/
[34] Источник: https://habr.com/post/426135/?utm_campaign=426135
Нажмите здесь для печати.