Мир разработки программного обеспечения меняется быстрее, чем, когда бы то ни было. Появилась потребность в более быстром цикле выпуска окончательных версий программного обеспечения, и это привело к увеличению спроса на технологии виртуализации. Уже много лет существуют виртуальные машины, но в последнее время контейнеры оставляют их в тени. А все потому, что виртуальные машины более медленные и не такие простые, как контейнеры. С ростом популярности микрослужб контейнеры стали отличной альтернативой, которая заменила виртуальные машины. Они стали использоваться для разработки, тестирования и развертывания приложений в упрощенной среде.
И здесь появляется Docker – технология с открытым исходным кодом, которая использует контейнеры Linux для виртуализации приложений и других программных процессов. Все это необходимо для того, чтобы они могли работать независимо друг от друга и более надежно, как если бы они были отдельными компьютерными программами на одном устройстве.
Docker упаковывает программные приложения в виртуальные контейнеры, чтобы их можно было быстро и эффективно доставлять, развертывать и запускать. Эти контейнеры можно интерпретировать как некие виртуальные шкафчики для вашего приложения. В них упаковывается ваше приложение и его зависимости, чтобы потом их можно было явно отправить и запустить где угодно. Это значит, что у вас может быть один и тот же пользовательский интерфейс для систем разработки, тестирования, подготовки и производства.
Расширения Docker
Docker анонсировал расширения на DockerCon 2022. Идея создания расширений Docker заключается в том, чтобы помочь разработчикам расширить их возможности с помощью сторонних инструментов, например, дополнительных модулей, или плагинов. Вы можете подключить расширения, которые доступны во вкладке расширений на рабочем столе Docker, буквально одним нажатием кнопки. Расширения повышают продуктивность разработчиков и упрощают рабочие процессы. Разработчики могут использовать свои любимые инструменты из одного места, например, с рабочего стола Docker.
Перед тем, как мы приступим к изучению различных интересных расширений, перейдите на рабочий стол Docker и подключите в настройках расширения.
Мы рассмотрим некоторые расширения Docker, которые должен знать каждый разработчик для того, чтобы ускорить процесс разработки программного обеспечения.
Drone CI
Drone CI – это расширение Docker, которое позволяет выполнять непрерывную интеграцию прямо на ваших ноутбуках. Мы все знаем, что непрерывная интеграция (CI - continuous integration) – это первый шаг к DevOps. Когда разработчики пишут программный код, они сохраняют его в инструменте управления исходным кодом, например, Git. После чего они тестируют и создают код с помощью инструмента непрерывной интеграции. CI – это неотъемлемая часть любого DevOps-подхода. Drone CI – это инструмент CI с открытым исходным кодом, который очень легко настроить и которым очень легко пользоваться. И теперь, когда у вас есть это расширение, вы можете выполнять CI прямо на своем ноутбуке. Вам только нужен yml-файл для того, чтобы определить инструкции, и все.
Давайте создадим простое Node.js-приложение для того, чтобы мы могли работать с нашими дополнительными модулями. Скопируйте пример приложения - https://github.com/pavanbelagatti/Simple-Node-App
Вы можете установить расширение Drone CI прямо из вкладки расширений на рабочем столе Docker.
После того, как вы его установите, нажмите на него, и вы увидите следующую панель управления:
Так как мы еще не настроили ни одного конвейера, то перед вами должна появиться пустая панель управления.
Нажмите «Import pipelines», чтобы импортировать проект. Расширение покажет все проекты, в которых есть файлы с расширением .drone.yml. Выбертие и импортируйте проект, чтобы испытать его локально.
Для примера я импортировал свой проект Simple-Node-App. Это простое node.js-приложение, которое содержит простые тесты.
Следующий шаг – запуск конвейера. Для этого нам необходимо добавить несколько простых параметров, и как только мы нажмем кнопку «Run»/«Play» (Запуск), то мы увидим, что произойдет следующие:
Заполните необходимые поля, такие как инструкции для запуска, секретный файл, если он у вас есть (можно просто указать файл secret.txt), файл среды и т.д.
Как только вы запустите приложение, то увидите, как конвейер начал выполняться.
Disk Usage
Disk Usage – это расширение Docker от корпорации Docker, которое позволяет разработчикам видеть, как они используют диск. Как только вы подключите это расширение, оно начнет анализировать и классифицировать дисковое пространство, которое используется различными сущностями/объектами, например, образами, контейнерами, локальными объектами и кэшем. Это расширение помогает освободить место на диске, избавляясь от объектов, которые вы не используете. Оптимизация дискового пространства путем удаления ненужных файлов – это важный процесс, с помощью которого освобождается место для более ценных объектов. Расширение доступно во вкладке расширений Docker.
Нажмите «Install» (Установить), и расширение тут же будет установлено. Откройте расширение, и вы увидите панель управления:
Здесь вы можете видеть список объектов и объем дискового пространства, который они занимают. Нажмите «Reclaim space» (Освободить пространство), и вы сможете что-то удалить и освободить тем самым пространство.
Вы можете удалить объекты, которые не представляют для вас ценности, а уже после приступить к освобождению дискового пространства.
vcluster
Работа с Kubernetes может оказаться не такой простой. Так как у него крутая кривая обучения, разработчики тратят большое количество времени и усилий на то, чтобы изучить эту платформу. Это того стоит, но что, если есть инструменты, способные помочь разработчикам повысить их продуктивность?
vcluster – один из таких инструментов. С его помощью вы сможете создавать виртуальные кластеры поверх любого кластера Kubernetes. Создание полноценных кластеров может лишь увеличить ваши траты на облако, тогда как виртуальные кластеры являются более дешевым вариантом, и у них есть дополнительное преимущество - работа в режиме коллективной аренды. Это окажется очень полезным для тех, кто настраивает разные конфигурации для разработки и тестирования.
Убедитесь, что вы подключили Kubernetes в настройках на рабочем столе Docker.
Расширение vcluster можно легко найти во вкладке расширений на рабочем столе Docker, и его можно легко установить одним нажатием кнопки.
Как только расширение будет установлено, вы увидите простую панель управления, где вы сможете создать виртуальный кластер.
Нажмите «Create new cluster» (Создать новый кластер). Дайте своему кластеру название, заполните необходимые поля и нажмите «Create» (Создать).
После того, как вы заполните все необходимые поля, вы увидите, как создается ваш кластер. Через некоторое время вы должны увидеть, как он заработает.
Запущенный кластер можно проверить с помощью интерфейса командной строки vcluster. Чтобы получить список ваших виртуальных кластеров, воспользуйтесь следующей командой:
vcluster list
Microcks
Microcks – это платформа с открытым исходным кодом, которая предназначена для имитации и тестирования API и микрослужб. Вы можете локально развернуть макеты и поэкспериментировать с REST API. И теперь, когда у вас есть расширение Docker, вы можете грамотно имитировать и тестировать API на уровне событий. Расширение Microcks доступно для использования на рабочем столе Docker, и вы можете его легко установить одним нажатием кнопки.
Нажмите на вкладку «Launch Microcks» (Запустить Microcks).
Microcks начнет работать, и вы сможете получить доступ к localhost:8080 для тестирования вашего API.
Давайте перейдем к localhost:8080, и перед вами должна появиться панель управления Microcks.
Нажмите на вкладку «APIs and Services» (API и службы).
Выберите «REST API» и нажмите «Next» (Далее).
Дайте API имя (Name), укажите версию (Version) и источник (Resource) и нажмите «Next».
Для того, чтобы провести эксперимент, введите фиктивные полезные данные в поле JSON Reference Payload (контрольные полезные данные JSON), как показано ниже, и нажмите «Next».
Последний шаг – это Review (Проверка), и как только вы проверите все данные, которые вы ввели, нажмите «Next».
В списке вы должны увидеть API, который вы только что создали.
Нажмите на него, чтобы просмотреть список операций управления данными (CRUD), которые вы можете выполнять с конечными точками. Давайте протестируем GET.
Скопируйте ссылку и откройте конечную точку в локальном браузере, и вы должны будете увидеть что-то вроде этого
OpenShift
Разработчики довольно часто ищут способы развернуть свои приложения на высокомасштабируемой платформе, такой как Kubernetes или OpenShift. OpenShift позволяет разработчикам с легкостью развертывать свои образы и приложения. И теперь, когда появилось расширение Docker под названием OpenShift, у вас появилась возможность легко развертывать локальные контейнеры в удаленных средах OpenShift или кластерах Kubernetes буквально одним нажатием кнопки. Это расширение позволяет разработчикам развертывать свои приложения в средах, которые отличаются от их локальной, и легко тестировать приложения.
Расширение OpenShift доступно для использования на рынке расширений Docker. После того, как вы его установите, он автоматически распознает контексты Kubernetes и образы контейнеров. Вы можете переключать контексты и входить в разные кластеры. Выберите контейнеры, которые вы хотите развернуть, из раскрывающегося списка и нажмите «Deploy» (Развернуть).
Portainer
Portainer – это известная платформа управления контейнерами, с помощью которой разработчики могут легко управлять своими контейнерами. Portainer делает процесс управления хостами контейнеров довольно простым, а управление кластерами Docker Swarm и Kubernetes еще проще. Уникальная особенность Portainer заключается в том, что он запускается локально и предоставляет стандартный пользовательский интерфейс, с помощью которого вы можете создавать и публиковать образы контейнеров и управлять приложениями. И все это можно делать из одного места.
Установить расширение Portainer легко. Вы можете это сделать прямо с рабочего стола Docker во вкладке расширений. После того, как вы его установите, через панель инструментов вы сможете получить доступ к списку образов, контейнеров, стеков и приложений, которые работают на вашем локальном компьютере.
Snyk
Безопасность – это самый важный компонент успешного DevOps-подхода. За безопасностью должен следить каждый разработчик, а также за тем, чтобы приложения и образы, которые добавляются в реестр контейнеров, не имели уязвимостей высокой степени риска. К счастью, это расширение Docker существует именно для устранения такого рода уязвимостей в образах.
Snyk - это средство обеспечения безопасности для разработчиков, которое помогает им в обнаружении уязвимостей в своих образах и которое информирует их о сопутствующих рисках. Вы можете выбрать свои образы, и список уязвимостей отобразится на панели инструментов Snyk. С этим расширением работа с контейнеризованными приложениями становится проще, а также упрощается сканирование образов на ранних этапах процесса до того, как они попадут в производство. Расширение Snyk позволяет быстро сканировать и устранять проблемы, связанные с контейнерами.
Расширение Snyk можно легко установить, перейдя на рабочий стол Docker и далее во вкладку расширений. Расширение уже есть в списке, и вам нужно его просто установить. После того, как расширение будет установлено, вы можете выбрать образы и просмотреть их уязвимости.
Давайте выберем какой-нибудь образ, который мы хотим просканировать.
Расширение сканирует выбранный нами образ и выводит список его уязвимостей, а также подробную информацию о каждой из них.
JFog Xray Scan
Jfog Xray Scan – это расширение, которое помогает сканировать образы на наличие уязвимостей. Это расширение предоставляет список всех возможных уязвимостей ваших образов Docker. Расширение JFog доступно для использования на рынке расширений, и его легко можно установить одним нажатием кнопки. После того, как оно будет установлено, вам нужно будет войти в свою учетную запись JFog, после чего появится панель инструментов, где вы можете выбрать образы, которые вы хотите проверить.
После того, как настройка завершится, вам будет предложено выбрать образы для сканирования.
Как только вы выберете образ, расширение начнет анализировать его, чтобы предоставить вам список уязвимостей.
И наконец, перед вами появится список уязвимостей, который были обнаружены в этом образе, а также сопутствующие риски.
Если вы нажмете на любой из объектов, то вы увидите более подробный анализ уязвимостей с более детальной информацией.
okteto
okteto – это необычный инструмент, который приносит разработчикам исключительно удовольствие. Он увеличивает продуктивность разработчиков за счет предварительно настроенной среды, которая позволяет начать разработку сразу, а не тратить время на ручную настройку. В сочетании с подходящей CI/CD платформой это может ускорить цикл разработки и выпуска программного обеспечения. Кроме того, здесь есть среда предварительного просмотра (такая же как среды тестирования и разработки), где вы можете поэкспериментировать и посмотреть, что не так, прежде чем вносить окончательные изменения в рабочую среду. okteto также упрощает для разработчиков разработку облачно-ориентированных приложений.
Расширение okteto доступно для использования на рынке расширений Docker, и его можно установить одним нажатием кнопки. Для того, чтобы okteto творил настоящие чудеса, вам нужно настроить манифест okteto для нашего приложения. Вы можете прочитать официальную документацию, чтобы получить более подробную информацию о том, как настроить и использовать okteto. После того, как вы установите расширение, вам предложат запустить удаленную среду. Вы можете выбрать папку приложения, которая содержит файл манифеста okteto и начать свои эксперименты. Воспользуйтесь этим простым руководством, в котором продемонстрировано, как можно исправить ошибку в среде разработки с помощью сред разработки okteto.
Заключение
Docker – это платформа, которая является обязательной для изучения для тех, кто занимается разработкой программного обеспечения. За эти годы Docker приобрел огромное сообщество и поддержку. Создание расширений - это отличная инициатива Docker, которая должна помочь разработчикам оптимизировать свою работу, связанную с разработкой и развертыванием программного обеспечения. Привлекательным может показаться то, что вы можете создать собственное расширение по индивидуальному заказу. У нас есть несколько расширений на рынке и вне его. Это все необходимые расширения – от непрерывной интеграции до поставки. При грамотном использовании расширений, которые мы перечислили выше, вы можете существенно повлиять на ваш процесс поставки программного обеспечения. Попробуйте их в деле, и повысьте продуктивность.