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

Быстрые ссылки
- 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 также поддерживает удаленную отладку через Remote Debugger и упрощает просмотр логов. Это сокращает разрыв между локальной разработкой и поведением приложения в кластере.
Установка DevSpace
DevSpace распространяется как самодостаточный исполняемый файл для Windows, Mac и Linux. Варианты установки включают менеджеры пакетов и универсальные скрипты. В исходном материале приведён пример установки и альтернатива через npm.
Пример из исходного руководства:
devsudo install devspace /usr/local/bin
Альтернатива через npm:
npm install -g devspaceЭта команда поместит devspace в ваш PATH при условии, что npm уже установлен.
Важно: для работы DevSpace он использует текущий контекст kubeconfig так же, как kubectl и Helm. Задайте переменную окружения KUBECONFIG на файл, совместимый с kubectl:
export KUBECONFIG=/path/to/kubeconfig.yamldevspace deploy
Совет: используйте изолированные kubeconfig файлы для разных окружений и не храните в них лишних привилегий.
Инициализация проекта
Первый шаг — создать конфигурацию проекта в каталоге репозитория. DevSpace создаст devspace.yaml, где будут храниться настройки образов, деплоев, синхронизации и профилей.
Запуск инициализации:
devspace initВо время инициализации вы выбираете стратегию развертывания: kubectl, Helm или Kustomize. Рекомендуемый вариант QUICKSTART помогает быстро задать компонентную структуру (frontend, backend, БД) без ручной подготовки Helm-чартов или манифестов.

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/kubeconfigexport 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 в команду:
- Определите базовую структуру
devspace.yamlдля одного микросервиса. - Настройте локальную синхронизацию и проброс портов для разработчиков.
- Автоматизируйте сборку образов и пуш в отдельной стадии CI.
- Добавьте профили окружений для staging и production.
- Документируйте 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
Стандартный рабочий процесс:
- В ветке feature разработчик настраивает
devspace devс синхронизацией. - CI запускает стадию сборки, пушит артефакты в реестр.
- CI запускает
devspace deploy --profile stagingи ждёт доступности. - После тестов запускается
devspace deploy --profile productionс--wait. - Наблюдение за метриками и логами; при откате — использовать предыдущее значение 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.
Отладка и часто встречаемые проблемы
Типичные шаги при проблемах:
- Проверить текущий контекст kubectl:
kubectl config current-context. - Убедиться, что DevSpace видит образы: проверьте
imageSelectorи теги. - Включить детализированное логирование DevSpace через флаг
-vили--log-level. - Проверить права доступа 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 упрощает многие аспекты разработки в Kubernetes и помогает сократить разрыв между локальной работой и облачными окружениями. Он не отменяет необходимости в проектировании инфраструктуры и политик безопасности, но делает рабочие процессы более доступными для разработчиков и команд.
Краткое резюме
- DevSpace ускоряет цикл правки → тест, предоставляет hot reload и проброс портов.
- Используйте профили для разделения конфигураций окружений.
- Разделяйте сборку образов и деплой — сборка в CI, деплой через DevSpace для dev-цикла.
Важно: перед массовым внедрением прогоните пилотный проект и опишите SOP для команды.
Краткая памятка по терминологии
- kubeconfig — файл конфигурации для kubectl и DevSpace.
- imageSelector — правило сопоставления образов.
- devspace.yaml — главный конфигурационный файл проекта.
Короткая инструкция по началу работы
- Клонируйте репозиторий проекта.
- Убедитесь, что kubeconfig настроен локально.
- Выполните
devspace initи ответьте на вопросы мастера. - Настройте
dev.syncдля горячей перезагрузки. - Запустите
devspace devи проверьте приложение на localhost.
Источник и дополнительные материалы: используйте официальную документацию DevSpace для получения самых свежих примеров команд и шаблонов.
Похожие материалы
Отключение Zero Touch Lock в Lenovo Vantage
CrashPlan — руководство по резервному копированию
Как удалить репозиторий на GitHub — пошагово
Как использовать iPhone Health для отслеживания всего здоровья
Как установить Kali Linux в VMware