Гид по технологиям

DevSpace — быстрый запуск и разработка на Kubernetes

10 min read DevOps Обновлено 14 Dec 2025
DevSpace — разработка и деплой на Kubernetes
DevSpace — разработка и деплой на Kubernetes

Важно: DevSpace сам по себе не требует установки компонентов в кластер. Для работы нужен корректный kubeconfig и доступы к реестрам образов.

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

Быстрые ссылки

  • Modern Development Practices for Kubernetes
  • Installing DevSpace
  • Creating a Project
  • Adding an Image
  • Adding a Deployment
  • Using Profiles
  • Using Hot Reload
  • Port Forwarding
  • Other Features
  • Deployments In CI/CD Pipelines
  • Conclusion

Что такое DevSpace и зачем он нужен

DevSpace — это open-source CLI-инструмент для ускорения разработки и деплоя cloud-native приложений в Kubernetes. Он объединяет шаблоны запуска, сборки образов, синхронизацию файлов, проброс портов и жизненный цикл разработчика в одном месте. Если вы хотите потратить меньше времени на управлением YAML и больше на написании кода, DevSpace — инструмент, который помогает это сделать.

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

Короткое определение терминов

  • kubeconfig: файл конфигурации для подключения к Kubernetes-кластеру.
  • imageSelector: правило DevSpace для сопоставления образов контейнеров.
  • hot reload: мгновенная синхронизация локальных изменений в запущенные контейнеры.

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

DevSpace переносит привычный опыт разработки приложений на Kubernetes-кластер. Основные возможности:

  • Горячая перезагрузка файлов в контейнерах. При изменении файлов локально DevSpace синхронизирует их в контейнеры.
  • Проброс портов локально. Благодаря встроенному port-forward вы используете localhost без изменения Ingress в дев-кластере.
  • Удобный доступ к логам и терминалу контейнера без тяжеловесных kubectl-команд.
  • Встроенный web-интерфейс для визуального мониторинга локально.

Схема рабочего процесса DevSpace

DevSpace также поддерживает удаленную отладку через Remote Debugger и упрощает просмотр логов. Это сокращает разрыв между локальной разработкой и поведением приложения в кластере.

Установка DevSpace

DevSpace распространяется как самодостаточный исполняемый файл для Windows, Mac и Linux. Варианты установки включают менеджеры пакетов и универсальные скрипты. В исходном материале приведён пример установки и альтернатива через npm.

Пример из исходного руководства:

dev

sudo install devspace /usr/local/bin

Альтернатива через npm:

npm install -g devspace

Эта команда поместит devspace в ваш PATH при условии, что npm уже установлен.

Важно: для работы DevSpace он использует текущий контекст kubeconfig так же, как kubectl и Helm. Задайте переменную окружения KUBECONFIG на файл, совместимый с kubectl:

export KUBECONFIG=/path/to/kubeconfig.yaml

devspace deploy

Совет: используйте изолированные kubeconfig файлы для разных окружений и не храните в них лишних привилегий.

Инициализация проекта

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

Запуск инициализации:

devspace init

Во время инициализации вы выбираете стратегию развертывания: kubectl, Helm или Kustomize. Рекомендуемый вариант QUICKSTART помогает быстро задать компонентную структуру (frontend, backend, БД) без ручной подготовки Helm-чартов или манифестов.

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

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

Если вы не используете quickstart, укажите путь к вашим Helm-чартам или kubectl-манифестам — DevSpace подстроится.

Добавление образа в конфигурацию

Проект строится из одного или нескольких контейнерных образов. В devspace.yaml образы регистрируются в секции images.

Пример структуры:

images:

  app:

    image: example.com/example/image:latest

    dockerfile: ./Dockerfile

    build:

      disabled: true

Пояснения:

  • image — тег образа в реестре.
  • dockerfile — опциональный путь к Dockerfile в проекте. Если указан, DevSpace будет строить образ.
  • build.disabled — если true, сборка для этого образа пропускается.

Сборки запускаются параллельно по умолчанию. Флаг --build-sequential заставит строить образы последовательно в порядке объявления. После сборки образ автоматически пушится в указанный реестр.

DevSpace следит за изменениями Dockerfile и контекста сборки. Полную принудительную пересборку можно запустить с помощью флага --force-build.

Добавление деплоймента

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

Пример с двумя разными типами деплоя:

deployments:

- name: "helm chart"

  helm:

    chart:

      name: example/example-app

    values:

      VARIABLE_OVERRIDE: "new-value"

- name: "kubectl manifests"

  kubectl:

    manifests:

    - .kube/manifests

Когда вы запускаете devspace deploy, DevSpace установит и обновит все указанные деплойменты. Повторный вызов команды обновляет только изменённые компоненты по умолчанию. Флаг --force-deploy заставит перезадеплоить всё.

Перенос из development в production сводится к смене KUBECONFIG и повторному вызову devspace deploy. Это даёт единый механизм для управления несколькими средами.

Профили окружений

Профили позволяют модифицировать 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

# ... omitted

profiles:

- name: production

  patches:

  - op: remove

    path: images.debug

Активация профиля через флаги -p или --profile:

devspace deploy --profile production

В примере debug-образ удаляется в профиле production и не будет включён в деплой.

Горячая перезагрузка файлов

Hot reload настраивается через синхронизацию файлов в секции dev.

Пример настройки синхронизации:

dev:

  sync:

  - imageSelector: example.com/api-server:latest

    localSubPath: ./api/

    containerPath: /var/www/html

    excludePaths:

    - vendor/

Добавьте ключ dev в devspace.yaml и укажите правила sync для каждого образа. imageSelector сопоставляет таги образов. Локальные файлы из localSubPath будут синхронизированы в containerPath запущенных контейнеров.

Запустите сессию разработки:

devspace dev

Или только синхронизацию:

devspace sync

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

images:

  api:

    image: example.com/api-server:latest

deployments:

- name: api-deployment

# ... omitted

dev:

  autoReload:

    paths:

    - ./kernel/*

    images:

    - example.com/api-server:latest

    deployments:

    - api-deployment

В этом сценарии при изменении файлов в ./kernel/ будет выполнён пересбор и деплой указанного деплоймента.

Проброс портов

Проброс портов конфигурируется через dev.ports. Поддерживается прямой и обратный проброс (reverse forwarding).

Пример:

dev:

  ports:

  - imageSelector: example.com/api-server:latest

    forward:

    - port: 8080

      remotePort: 80

    reverseForward:

    - port: 9000

      remote: 9000

В примере localhost:8080 вашего ПК пробрасывается на порт 80 в контейнере с example.com/api-server. Обратный проброс направляет трафик из контейнера на локальный localhost:9000.

Дополнительные возможности

Помимо рассмотренных функций, DevSpace предлагает:

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

Плагины расширяют возможности: их можно ставить из удалённых URL или локальных скриптов. Плагин API позволяет стандартизировать распространение DevSpace-настроек внутри организации.

Деплой в CI/CD

DevSpace подходит для автоматизированных пайплайнов. Он предоставляет официальный Docker-образ и поддерживает неинтерактивный режим при наличии явных селекторов.

Пример шагов в CI:

echo $KUBECONFIG_CI_VARIABLE > /path/to/kubeconfig
export KUBECONFIG=/path/to/kubeconfig

devspace deploy --profile production --timeout 60 --wait --skip-build

Флаги:

  • --skip-build — пропускает сборку образов (обычно сборка выполняется в отдельной стадии пайплайна);
  • --wait — заставляет DevSpace дождаться готовности указанного количества Pod-ов;
  • --timeout — предел ожидания в секундах.

Важно: без --wait ваш pipeline может завершиться успешно, даже если деплой не стал доступен.

Когда DevSpace может не подойти

Контрпримеры и ограничения:

  • Очень ограниченные окружения без доступа к реестрам образов. Если у вас нет возможности пушить образы, часть функционала ограничена.
  • Политики безопасности кластера, которые запрещают создание прокси-подов или подключение внешних инструментов, могут препятствовать некоторым фичам.
  • Сценарии с крайне кастомными CRD, где требуется сложная логика Helm-чартов, иногда проще управлять напрямую через специализированные CI/CD пайплайны.

Альтернативные подходы

Если DevSpace не подходит, рассмотрите:

  • Skaffold — ориентирован на CI/CD и простые потоки сборки/деплоя.
  • Tilt — фокусируется на локальной разработке с гибкими правилами сборки.
  • Ручной подход через kubectl/helm с кастомными скриптами — даёт полный контроль за процессом.

Выбор зависит от приоритетов: скорость разработки, гибкость конфигурации или строгий контроль инфраструктуры.

Методология быстрого старта команды

Мини-методология для внедрения DevSpace в команду:

  1. Определите базовую структуру devspace.yaml для одного микросервиса.
  2. Настройте локальную синхронизацию и проброс портов для разработчиков.
  3. Автоматизируйте сборку образов и пуш в отдельной стадии CI.
  4. Добавьте профили окружений для staging и production.
  5. Документируйте common commands и шаблоны для новых репозиториев.

Ролевые чек-листы

Чек-лист для разработчика:

  • Настроить локальный kubeconfig.
  • Инициализировать проект devspace init.
  • Настроить dev.sync и dev.ports для быстрого feedback loop.
  • Проверить автоматическое открытие URL и логирование.

Чек-лист для DevOps инженера:

  • Ознакомиться с devspace.yaml всех проектов в организации.
  • Настроить безопасный доступ к реестрам образов.
  • Описать политику RBAC и kubeconfig для CI-агентов.
  • Добавить сканирование образов и политики безопасности.

Чек-лист для инженера CI/CD:

  • Убедиться, что сборка образов выполняется отдельно от devspace deploy.
  • Добавить --wait и --timeout в шаг деплоя в пайплайне.
  • Настроить хранение kubeconfig как защищённой переменной.

SOP для перехода из разработки в production

Стандартный рабочий процесс:

  1. В ветке feature разработчик настраивает devspace dev с синхронизацией.
  2. CI запускает стадию сборки, пушит артефакты в реестр.
  3. CI запускает devspace deploy --profile staging и ждёт доступности.
  4. После тестов запускается devspace deploy --profile production с --wait.
  5. Наблюдение за метриками и логами; при откате — использовать предыдущее значение image tag.

Критерии приёмки деплоя

  • Подсистема отвечает на HTTP-запросы на ожидаемом порту.
  • Количество Pod-ов соответствует ожиданиям и не падает.
  • Логи не содержат ошибок уровня CRITICAL при старте.

Тесты и критерии приёмки

Примеры тест-кейсов для деплоя:

  • Интеграционный smoke-тест: вызвать базовый endpoint и ожидать 200.
  • Проверка зависимости: сервис подключается к базе данных и выполняет миграцию.
  • Тест устойчивости: рестарт Pod-а не вызывает длительного простоя.

Security hardening и приватность

Рекомендации по безопасности:

  • Храните kubeconfig и registry credentials в защищённых секретных хранилищах CI.
  • Используйте минимальные привилегии RBAC для CI-агентов.
  • Не включайте секреты в devspace.yaml и не синхронизируйте их в контейнеры в открытом виде.
  • Сканируйте образы на уязвимости перед пушем в production.

Примечания по приватности и соответствию требованиям:

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

Модель мышления и эвристики

  • DevSpace хорош для ускорения циклов разработки и уменьшения времени обратной связи.
  • Разделяйте сборку образов и деплой: сборка — CI, деплой в DevSpace — быстрый feedback.
  • Используйте профили для явного отделения конфигураций окружений.

Совместимость и миграция

При миграции на DevSpace:

  • Начните с одного сервиса и постепенно расширяйте покрытие.
  • Сохраните существующие Helm-чарты и kubectl-манифесты — DevSpace может их использовать.
  • Убедитесь, что ваши реестры поддерживают нужные теги и доступы для CI.

Отладка и часто встречаемые проблемы

Типичные шаги при проблемах:

  1. Проверить текущий контекст kubectl: kubectl config current-context.
  2. Убедиться, что DevSpace видит образы: проверьте imageSelector и теги.
  3. Включить детализированное логирование DevSpace через флаг -v или --log-level.
  4. Проверить права доступа CI: RBAC и доступы к реестрам.

Полезные команды для диагностики:

  • devspace build --no-push — проверить локальную сборку.
  • devspace sync status — состояние синхронизации файлов.
  • devspace ui — открыть веб-интерфейс локально.

Примеры кода и фрагменты

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

Риски и способы минимизации

Риск: неправильная конфигурация kubeconfig в CI может привести к деплою в неправильное окружение. Митигатор: настройка строгих имён контекстов и проверка через kubectl config current-context в пайплайне.

Риск: утечка учётных данных в логах. Митигатор: скрывать секреты, использовать маскирование переменных среды и централизованные хранилища.

Краткая сводка для принятия решения

  • Выберите DevSpace, если хотите ускорить цикл разработки и уменьшить время на ручные операции с Kubernetes.
  • Выберите Skaffold или Tilt, если ваша главная цель — CI/CD-интеграция или более детальная локальная сборка.

Интерфейс DevSpace

Последние мысли

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

Краткое резюме

  • DevSpace ускоряет цикл правки → тест, предоставляет hot reload и проброс портов.
  • Используйте профили для разделения конфигураций окружений.
  • Разделяйте сборку образов и деплой — сборка в CI, деплой через DevSpace для dev-цикла.

Важно: перед массовым внедрением прогоните пилотный проект и опишите SOP для команды.

Краткая памятка по терминологии

  • kubeconfig — файл конфигурации для kubectl и DevSpace.
  • imageSelector — правило сопоставления образов.
  • devspace.yaml — главный конфигурационный файл проекта.

Короткая инструкция по началу работы

  1. Клонируйте репозиторий проекта.
  2. Убедитесь, что kubeconfig настроен локально.
  3. Выполните devspace init и ответьте на вопросы мастера.
  4. Настройте dev.sync для горячей перезагрузки.
  5. Запустите devspace dev и проверьте приложение на localhost.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Отключение Zero Touch Lock в Lenovo Vantage
Безопасность Lenovo

Отключение Zero Touch Lock в Lenovo Vantage

CrashPlan — руководство по резервному копированию
Резервное копирование

CrashPlan — руководство по резервному копированию

Как удалить репозиторий на GitHub — пошагово
GitHub

Как удалить репозиторий на GitHub — пошагово

Как использовать iPhone Health для отслеживания всего здоровья
Технологии

Как использовать iPhone Health для отслеживания всего здоровья

Как установить Kali Linux в VMware
Кибербезопасность

Как установить Kali Linux в VMware

Haven: охранная камера из старого телефона
Безопасность

Haven: охранная камера из старого телефона