Как начать работу с DevSpace и быстро разрабатывать приложения Kubernetes — CloudSavvy IT

Иллюстрация, показывающая логотип DevSpace, облако с символом терминала внутри

DevSpace — это инструмент с открытым исходным кодом, который помогает разработчикам быстро развертывать облачные приложения в кластерах Kubernetes. Он абстрагирует большую часть традиционной сложности Kubernetes, поэтому вы можете вернуться к написанию кода.

DevSpace не зависит от платформы и работает с кластерами, начиная от вашей локальной машины и заканчивая популярными управляемыми общедоступными сервисами. Инструмент представляет собой интерфейс командной строки, который автоматизирует операции с использованием API Kubernetes. Вам не нужно ничего устанавливать внутри кластера, чтобы использовать DevSpace.

Современные практики разработки для Kubernetes

DevSpace привносит многие аспекты современного программирования приложений в развертывания на базе Kubernetes. Он позволяет запускать среду разработки в кластере с поддержкой автоматической горячей перезагрузки. Когда локальный файл изменяется, DevSpace автоматически обновляет ваши контейнеры новым содержимым.

Встроенная переадресация портов означает, что вы можете использовать localhost для доступа к вашему развертыванию. Вам не нужно открывать порты или настраивать HTTP-входы в кластерах разработки, что обеспечивает улучшенный опыт разработчика и большую безопасность.

Схема, показывающая рабочий процесс DevSpaceDevSpace

DevSpace также помогает при отладке. Он поддерживает установку точек останова с помощью инструмента удаленного отладчика, предлагая проверку контейнерных приложений в облаке в реальном времени. Также легко просматривать журналы контейнера или запускать сеанс терминала, не выполняя громоздкие команды Kubectl.

Веб-интерфейс, работающий на localhost, позволяет вам отслеживать и взаимодействовать с вашим запущенным приложением. Вы можете вообще выйти из своего терминала, если предпочитаете более визуальный опыт.

Установка DevSpace

DevSpace распространяется как автономный двоичный файл, который работает в системах Windows, Mac и Linux. Несколько варианты установки доступны. Вот рекомендуемая команда для загрузки DevSpace для Linux и добавления интерфейса командной строки в свой путь:

dev sudo установить devspace / usr / local / bin

В качестве альтернативы вы можете использовать npm, менеджер пакетов Node, для установки и обновления DevSpace:

npm install -g devspace

Эта команда предоставит вам работающее пространство для разработки на вашем пути, при условии, что у вас уже установлен npm.

DevSpace использует ваш активный «KUBE_CONTEXT» так же, как и другие инструменты экосистемы, такие как Kubectl и Helm. Установите KUBECONFIG на Kubectl-совместимый файл конфигурации, определяющий подключение к кластеру:

export KUBECONFIG = / path / to / kubeconfig.yaml # Использует $ KUBECONFIG devspace deploy

Создание проекта

Первым шагом в создании с помощью DevSpace является инициализация каталога вашего проекта. Это создаст файл devspace.yaml, содержащий конфигурацию DevSpace для вашего репозитория.

devspace init

Вам будет предложено выбрать процедуру развертывания, которую вы планируете использовать. DevSpace может работать с Kubectl, Helm или Kustomize при запуске вашего приложения в кластере.

Скриншот "devspace init" команда

Предлагаемый вариант БЫСТРОГО СТАРТА — это специальный график который позволяет вам определять компоненты вашего приложения, такие как внешний веб-сервер, сервер внутреннего API и база данных, вместо предоставления вручную созданных диаграмм Helm или манифестов Kubectl. Используйте это, если вы создаете систему с обычной структурой и не хотите тратить время на создание собственных ресурсов Kubernetes.

Следуйте инструкциям, чтобы указать DevSpace путь к вашему Dockerfile. Вам нужно будет предоставить аутентификацию реестра и некоторую базовую информацию о вашем образе, например, порт, который он прослушивает. DevSpace автоматически создаст готовую конфигурацию, которая позволит вам запустить devspace deploy, чтобы ваше приложение работало в Kubernetes.

Если вы не используете опцию быстрого запуска, вам нужно будет указать путь к вашим диаграммам Helm или манифестам Kubernetes. Следуйте инструкциям по созданию начальной конфигурации. После выхода из мастера установки вы можете продолжить добавление дополнительных образов и развертываний, вручную отредактировав файл devspace.yaml.

Добавление изображения

Проекты DevSpace создаются из одного или нескольких образов контейнеров. Чтобы зарегистрировать изображение в своем проекте, добавьте его под ключом images в вашем файле devspace.yamlfile:

images: app: image: example.com/example/image:latest dockerfile: ./Dockerfile build: disabled: true

Поле изображения определяет имя тега изображения. Поле dockerfile необязательно; если он установлен, он должен ссылаться на путь к Dockerfile изображения в вашем проекте. Образы с файлами Dockerfiles будут созданы автоматически командами devspace build и devspace deploy, если build.disabled не имеет значение true в конфигурации образа.

Изображения построен параллельно для повышения производительности. Флаг —build-sequencetial заставляет изображения строиться по отдельности в том порядке, в котором они указаны. DevSpace автоматически помещает каждый образ в соответствующий реестр после завершения сборки.

Образы не перестраиваются автоматически, если DevSpace не обнаружит изменения либо в их Dockerfile, либо в файлах в контексте сборки. Вы можете принудительно перестроить все настроенные образы с помощью флага —force-build.

Добавление развертывания

Вторая часть devspace.yaml — это ваши развертывания. Они определяют ресурсы, которые будут созданы внутри вашего кластера.

развертывания: — name: «helm chart» helm: chart: name: example / example-app values: VARIABLE_OVERRIDE: «new-value» — name: «kubectl manifestests» kubectl: manifest: — .kube / manifest

Этот файл определяет два отдельных развертывания, одно с использованием Helm, а другое — Kubectl. Когда вы запускаете devspace deploy, в вашем кластере будут установлены как диаграмма Helm, так и ваши манифесты Kubectl.

Повторение команды развертывания обновит ваши развертывания. DevSpace повторно развертывает только те компоненты, которые были изменены, если не используется флаг —force-deploy.

Поскольку DevSpace работает в кластерах, продвижение вашего развертывания от разработки к производству — это случай изменения переменной среды KUBECONFIG и повторного запуска развертывания devspace. Это дает вам единый согласованный механизм для управления несколькими независимыми развертываниями вашей системы.

Использование профилей

DevSpace поддерживает профили, которые позволяют изменять разделы devspace.yaml для каждой из ваших сред. Каждый именованный профиль может заменить, объединить и изменить поля в вашем файле конфигурации.

Сами профили также определены в вашем devspace.yaml:

images: api-server: image: example.com/api-server:latest web-server: image: example.com/web-server:latest debug: image: example.com/debug-tool:latest # … опущено профили: — имя: производственные патчи: — op: удалить путь: images.debug

Профили активируются путем передачи флага -p или —profile командам DevSpace. Вот как начать развертывание с использованием рабочего профиля, определенного выше. Развертывание не будет включать образ отладки, поскольку он удален одним из исправлений профиля.

devspace deploy —profile production

Использование горячей перезагрузки

Функциональность горячей перезагрузки включается путем настройки синхронизации файлов:

dev: sync: — imageSelector: example.com/api-server:latest localSubPath: ./api/ containerPath: / var / www / html excludePaths: — vendor /

Добавьте ключ разработчика в качестве поля верхнего уровня в свой devspace.yaml, затем используйте синхронизацию, чтобы настроить горячую перезагрузку для каждого образа. ImageSelector сопоставляет теги изображений, к которым применяется правило горячей перезагрузки. Файлы из localSubPath в вашем рабочем каталоге будут синхронизированы с containerPath в развернутых экземплярах контейнера.

Запустите сеанс горячей перезагрузки, запустив devspace dev или devspace sync. В бывшая команда запускает все функции среды разработчика DevSpace, включая переадресацию портов и потоковую передачу журналов в реальном времени.

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

images: api: image: example.com/api-server:latest deployments: — name: api-deployment # … пропущено dev: autoReload: paths: — ./kernel/* images: — example.com/api-server : последние развертывания: — api-deployment

В этом примере будет выполнено повторное развертывание api-deployment при изменении файлов в локальном каталоге ядра. Это идеально, когда вы изменяете файлы, которые необходимо запустить в процессе сборки, чтобы сделать их полезными для ваших контейнеров.

Перенаправление порта

Перенаправление портов настраивается через поле dev.ports в вашем devspace.yaml. Также поддерживается обратная пересылка, позволяющая адресам localhost в ваших контейнерах сопоставляться с портами на вашем локальном компьютере.

dev: ports: — imageSelector: example.com/api-server:latest forward: — порт: 8080 remotePort: 80 reverseForward: — порт: 9000 удаленный: 9000

В этом примере настраивается переадресация с localhost: 8080 на вашем компьютере на порт 80 в контейнерах, в которых запущен образ example.com/api-server. Также есть обратный прямой, который направляет внутриконтейнерный трафик на localhost: 9000 обратно на порт 9000 на вашем компьютере.

Другие особенности

Помимо возможностей, описанных здесь, DevSpace также предлагает поддержку нескольких других групп функций, которые позволяют отслеживать развертывания, взаимодействовать с контейнерами и настраивать расширенные рабочие процессы разработки:

  • Автоматический запуск терминала позволяет запускать удаленный сеанс оболочки каждый раз, когда вы запускаете devspace dev.
  • Автоматическое открытие URL запускает веб-сайты и веб-приложения в вашем браузере, когда вы входите в режим разработки.
  • Настраиваемое ведение журнала определяет, какие контейнеры должны отображаться в потоке журнала режима разработки.
  • Пользовательские команды действуют как ярлыки для общих действий, помогая новым членам команды взаимодействовать с вашими развертываниями без необходимости изучать длительные процессы в Kubectl.
  • Крючки запускать команды в процессе развертывания, что позволяет вручную настраивать контейнеры или записывать новые развертывания в централизованную службу мониторинга.
  • Пользовательский интерфейс запускается автоматически в режиме разработки с помощью devspace dev и может быть открыт в вашем браузере с помощью devspace ui.

DevSpace также предлагает плагины что может добавить системе еще больше функциональных возможностей. API подключаемого модуля поддерживает установку с удаленных URL-адресов или локальных сценариев и поддерживает новые команды, перехватчики и переменные. Разработка собственного плагин предоставляет способ стандартизировать использование DevSpace в нескольких независимых проектах.

Развертывания в конвейерах CI / CD

DevSpace может обрабатывать производственные развертывания как часть ваш конвейер CI / CD. Он обеспечивает официальный образ Docker и поддерживает неинтерактивное использование, если вы включаете в свои команды явные селекторы, такие как -l для метки.

Развертывание внутри конвейера CI может выглядеть так:

echo $ KUBECONFIG_CI_VARIABLE> / path / to / kubeconfig export KUBECONFIG = / path / to / kubeconfig devspace deploy —profile production —timeout 60 —wait —skip-build

Это развернет ваше приложение с использованием рабочего профиля DevSpace. Флаг —skip-build указывает DevSpace не создавать ваши изображения. Сборки обычно следует обрабатывать как отдельный этап на более раннем этапе вашего конвейера.

Флаг —wait заставляет DevSpace ждать доступности количества подов, указанного в вашем devspace.yaml, вместо того, чтобы завершать работу сразу после запуска команды. Это больше подходит для среды CI, где вам нужно подтверждение того, что ваша рабочая нагрузка активна. Разрешение DevSpace выхода без ожидания может означать, что ваш конвейер будет отмечен как успешный, даже если есть проблема с развертыванием.

Заключение

DevSpace набирает обороты как ориентированный на разработчиков инструмент развертывания Kubernetes, который предоставляет полезные абстракции для ключевых операций. Он уменьшает объем YAML, необходимый для запуска контейнеров в кластер, заменяя его простыми ключами конфигурации и командами терминала, которые определяют, создают и запускают образы.

Пользовательский интерфейс DevSpaceDevSpace

Как инструмент, не зависящий от платформы и среды, DevSpace позволяет разработчикам меньше беспокоиться об уникальных характеристиках отдельных кластеров. Независимо от цели развертывания, общий опыт аналогичен созданию традиционной системы на вашем локальном компьютере. Это помогает смягчить кривую обучения Kubernetes, сопоставив концепции с более универсальными методами разработки.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *