Разворачиваем контейнеры в Kubernetes


Как работать с Kubernetes — вопрос, который волнует многих. Система оркестрации контейнеров Docker под названием Kubernetes прочно вошла в инфраструктуру серьезных приложений. Именно с помощью нее можно максимально автоматизировать процесс развертывания и обновления приложений. Родившаяся в недрах компании Google, данная система управления стала де-факто стандартом по всему миру. Да есть и другие варианты менеджмента и создания кластера работающих контейнеров Docker. Но именно Kubernetes справляется с этой задачей лучше всего. Его многие сравнивают с системой виртуализации VMware и ее системой управления vCenter. То, что делает VMware для виртуализации операционных систем, делает Kubernetes для контейнеров Docker. Как запустить нужные контейнеры в кубере и сделать их доступными снаружи кластера попробую осветить в данной статье.

Ранее в своем блоге уже не раз затрагивал тематику работы с контейнерами Docker. В частности, в статьях — Используем Docker для python приложения, Docker-сompose на практике. Как Вы понимаете с контейнерами Docker можно работать напрямую через утилиту docker, или через дополнительные различные сторонние графические интерфейсы. Но также можно задействовать и тяжелую артиллерию, каковой в данном контексте является Kubernetes. Порог входа при этом для начала использования кубера довольно высокий. Нужно не просто знать и понимать, как работают контейнеры, но также и вникнуть во множество специфичных фишек кубера. Это и поды, и ReplicaSet, и различные виды балансировки нагрузки, и многое другое. Сейчас хотелось бы не заморачиваясь во все нюансы, показать как развернуть Docker контейнер в кубере.

Читать далее «Разворачиваем контейнеры в Kubernetes»

Docker-сompose на практике

docker compose img

Чем больше Вы работаете с Docker, тем чаще испытываете необходимость запускать одновременно сразу несколько контейнеров в связке. Это позволяет обеспечить работоспособность приложений, требующих нескольких компонентов для своего функционирования. Банальный пример, который иллюстрирует часто встречающую связку из реальной жизни — nginx, php-fpm и mysql. Как правило, современные веб приложения в минимальной конфигурации требуют СУБД — mysql, поддержку PHP, и возможность отдачи через веб сервер. Данную связку легко поднять с помощью 3 контейнеров, каждый из которых будет выполнять свой процесс. Так контейнер с nginx будет взаимодействовать с пользователями, контейнер с php-fpm обрабатываь PHP скрипты, а контейнер с mysql хранить информацию. Сами скрипты PHP и вспомогательные файлы приложения могут спокойно храниться на сервере, где работает Docker. С помощью Docker-compose проблема работы такой связки решается легко и эффективно.

Docker-compose позволяет сгруппировать вместе несколько контейнеров и использовать их в работе как единую группу. Вам не придется в процессе их работы думать о том, как они между собой связаны и что нужно сделать, чтобы эту взаимосвязь поддержать. При этом сам принцип работы предельно простой и требует по большому счету только понимание написания yaml файлов. Вся конфигурация группы контейнеров создается в одном общем файле, который определяет зависимости и принцип работы этой группы. При этом подразумевается, что у Вас есть понимание принципов работы Docker и Вы уже умеет создавать Dockerfile для своих контейнеров.

Читать далее «Docker-сompose на практике»

Используем Docker для python приложения

docker img

Технология контейнеризации Docker — своеобразная священная корова последних лет в области Информационных Технологий. Именно с помощью Docker и различных систем управления для контейнеров получается реализовать самые высоконагруженные системы в мире. Также заметно упрощается процесс разработки приложений. В свое время уже писал в блоге статью из этой области — Docker в повседневной работе ITшника. Сейчас хотелось бы немного больше осветить практическую часть вопроса. А именно способ запуска python приложения в Docker контейнере на сервере. При этом подразумевается, что Вы не используете инфраструктуру наподобие Kubernetes или его аналогов, а просто хотите по мере необходимости использовать контейнеры от случая к случаю. Частенько бывает ситуация, что сервер для различных задач задействует возможности Python v2. При этом есть существенная необходимость запускать приложения, написанные на Python v3. Использование Docker позволяет элегантно решить эту задачу.

По большому счету для того, чтобы ощутить всю прелесть преимуществ использования Docker нужна хорошая система оркестрации. Именно при полной декомпозиции программных приложений под Docker с использованием систем управления мы получим отличное масштабирование, фишки CI/CD, отказоустойчивость. В данном примере всего этого у нас не будет. Мы будем разворачивать наше контейнеризированное приложение напрямую в операционной системе Linux. Это будет своеобразным примером, который позволит понять с практической точки зрения как же на самом деле работает Docker в реальной жизни.

Читать далее «Используем Docker для python приложения»

Инструменты админа во времена DevOps

tools image

В свое время, когда начинал работать в IT, для системного администратора было важно разбираться с операционной системой Linux, уметь пользоваться bash и основными утилитами ОС, знать как настраивать Apache, Nginx, MySQL, Postfix и понимать сеть и маршрутизацию. Прошло время, и теперь сисадмины стали девопсами. Теперь уже всех вышеперечисленных знаний стало недостаточно, чтобы быть крутым перцем в области администрирования. Технологии HighLoad, зародившиеся в таких гигантах, как Facebook и Google, пришли в обычные компании, где работают уже простые смертные. Если еще лет пять — семь назад в проектах, где нужно было горизонтально масштабировать сервисы под большую нагрузку, приходилось очень долго задумываться над технической реализаций. Сейчас все это решается легко и банально.

Где-то в литературе читал, что DevOps — это в первую очередь взаимоотношения между ITшниками в коллекиве и уже потом какие-то специфичные программные утилиты. Однако, с моей точки зрения, DevOps — во многом определяют программные продукты, которые позволяют организовать хорошо масштабируемые IT сервисы с уклоном в облачные технологии. Понимание того, как работают основные программные продукты HighLoad, одно из основных требований для инженеров DevOps. Тут попытаюсь показать основные инструменты, которые используют DevOps специалисты. В первую очередь это система контейнеризации Docker и система управления контейнерами Kubernetes. Следующим важным продуктом обязательным для изучения является система управления конфигурациями Ansible. Также многие относят к средствам DevOps-ов систему контроля версия Git, которую по сути используют практически все программисты. Также специалисту необходимо знать средства CI — Contitunuos Integration на базе ПО Jenkins, и систему IaaC — Terraform.

Читать далее «Инструменты админа во времена DevOps»

Docker в повседневной работе ITшника


За последние несколько лет технологии DevOps сильно перевернули мир IT. Зародившись в гигантских корпорациях, разрабатывающих современные IT системы, способные эффективно горизонтально масштабироваться, эти технологии прочно вошли в повседневую жизнь обычных администраторов и программистов. Docker — система контейнеризации приложений, которая позволяет эффективно использовать аппаратные ресурсы, оперативно горизонтально машстабироваться, а также отделить контекст работы приложения от остальной операционной системы. Подход работы с приложениями с помощью контейнеров можно сравнить по масштабу с теми изменениями в IT, которые происходили когда появилась полноценная виртуализация серверов на базе VMware ESX.

Что дает система Docker рядовому ITшнику на современный день и как она позволяет повысить эффективность труда. Как в целом меняется подход к работе, после того как под рукой появляются контейнеры с приложениями. В первую очередь, заметно уменьшается количество новых серверов или виртуальных машин. Теперь для того, чтобы протестировать работу того или иного приложения нет надобности в установке целого сервера. Достаточно загрузить нужный контейнер и работать с выбранным приложением. Кроме экономии аппаратных ресурсов сервера это значительно экономит и затраты времени на развертывание того или иного приложения.

Читать далее «Docker в повседневной работе ITшника»