AI Platform Docs
Разработка

Garden: граф и точки входа

Основные понятия Garden, пользовательские точки входа и расположение конфигурации Платформы ИИ.

Репозиторий ap-deploy содержит единственную поддерживаемую точку композиции полной среды Платформы ИИ. Он связывает исходные репозитории, окружения, общую инфраструктуру и зависимости действий.

Продуктовые репозитории agent-platform и langflow предоставляют код, образы и Helm charts, но намеренно не содержат собственных Garden Projects. Это исключает второй набор окружений, поставщиков Kubernetes и публичных адресов рядом с общим графом.

Основные понятия

ПонятиеНазначение
ProjectОписывает окружения, поставщиков инфраструктуры и общие переменные
EnvironmentВыбирает кластер, пространство имён, хранилище, адреса и реестр образов
BuildСобирает неизменяемый образ или другой артефакт
DeployПоддерживает длительно работающий Kubernetes-ресурс или Helm-релиз
RunВыполняет конечную операцию, например согласование конфигурации идентификации
TestВыполняет проверку с отдельной семантикой результата
DependencyЗадаёт обязательный порядок и передаёт результаты между действиями

Garden вычисляет версию действия по его конфигурации, исходным файлам и версиям зависимостей. Поэтому изменение исходного кода приводит к пересборке связанного образа и обновлению зависимого развёртывания, а неизменённые части графа могут быть повторно использованы.

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

Граф среды

Эта схема раскрывает три этапа из упрощённого графа в руководстве разработчика. Действия внутри одного этапа не образуют обязательную последовательность: Garden выбирает и выполняет только зависимости запрошенного target.

1. Подготовка зависимостей 2. Развёртывание продуктов 3. Тестовые данные — необязательно Buildобразы продукта Deployобщая инфраструктура Runrealm и identity продукта Deployaggregate targetall = agent-platform + langflow Deployproduct targetsagent-platform · langflow Runidentity-fixtureslangflow-fixtures Deployagent-platform-fixturesall-fixtures

Например, deploy.agent-platform напрямую зависит от трёх сборок образов, локальной шлюзовой топологии, согласования идентификации и сервиса эмбеддингов. Сборки и согласование идентификации являются параллельными зависимостями развёртывания, а не последовательными стадиями друг друга.

Ветки компонентов независимы настолько, насколько это допускают общие контракты. Техническая точка входа langflow не должна развёртывать исполняемые компоненты точки входа agent-platform, и наоборот.

Отдельное узкое исключение существует для артефакта lfx, который используется Low-code Runtime. Это зависимость сборки, а не зависимость двух работающих приложений.

Ещё одна явно отделённая зависимость target agent-platform в dev-local — OCI Registry data-only артефактов опубликованных агентов. Это не Registry application images: Garden продолжает собирать их через local-docker и загружать в Kind. Registry артефактов нужен Publisher во время работы платформы, поэтому Langflow и его build graph от него не зависят.

Пользовательские точки входа

Требуемый результатКоманда
Target langflow: Low-code IDEgarden deploy langflow --env dev-local --yes
Target agent-platform: другие компоненты платформыgarden deploy agent-platform --env dev-local --yes
Полная среда без тестовых данныхgarden deploy all --env dev-local --yes
Общие тестовые пользователиgarden run identity-fixtures --env dev-local --yes
Тестовые данные для target agent-platformgarden deploy agent-platform-fixtures --env dev-local --yes
Тестовые данные для target langflowgarden run langflow-fixtures --env dev-local --yes
Полная тестовая средаgarden deploy all-fixtures --env dev-local --yes
Локальный доступ через шлюзgarden run dev-local-edge-forward --env dev-local
Восстановить Registry артефактов после запуска Kindgarden run dev-local-artifact-registry --env dev-local --yes
Проверить публикацию Runtime image по digestgarden run dev-local-runtime-image --env dev-local --yes

Сценарий all намеренно не включает тестовые данные. Обычное развёртывание не должно создавать тестовых пользователей и агентов.

Fixture actions активируются только при прямом выборе соответствующей точки входа или aggregate target all-fixtures. Вызов без имени garden deploy не создаёт тестовые данные.

Просмотр графа и плана

Посмотреть список действий и их зависимости:

garden get graph --env dev-local

Создать Mermaid-представление:

garden get graph --env dev-local --output json \
  | python3 scripts/garden_graph_to_mermaid.py --direction TB \
  > /tmp/ap-dev-local-garden.mmd

Посмотреть предполагаемые изменения без развёртывания:

garden deploy langflow --env dev-local --plan
garden deploy agent-platform --env dev-local --plan

План является вспомогательной проверкой. Он не заменяет развёртывание и проверку работающей среды.

Карта конфигурации

Путь в ap-deployОтветственность
project.garden.ymlОкружения, поставщики Kubernetes, пространство имён, реестр, хранилище, публичные адреса и закреплённые Git SHA
actions/entrypoints.garden.ymlПользовательские aggregate targets all и all-fixtures
actions/gateway.garden.ymlЛокальная шлюзовая инфраструктура и перенаправление портов
actions/identity.garden.ymlKeycloak, realm, секреты и согласование идентификации
actions/agent-platform.garden.ymlСборки и развёртывание для target agent-platform
actions/langflow.garden.ymlСборки и развёртывание для target langflow
actions/preflight.garden.ymlПроверки до изменения среды
deploy/values/Наложения значений для конкретных окружений
scripts/Связывание рабочих каталогов и статические проверки

Код компонентов, Dockerfile, Helm-чарты и принадлежащие приложению манифесты хранятся в репозитории владельца. Репозиторий композиции не должен содержать их копии.

Закреплённые версии и локальные ссылки

Общие среды используют полные Git SHA. Коммит ap-deploy тем самым фиксирует совместимый состав исходных версий.

Локальная разработка использует соответствия действий рабочим каталогам:

python3 scripts/link_local_actions.py
garden get linked-repos --env dev-local

Garden читает текущие файлы рабочего каталога, включая незакоммиченные изменения. Исключение — immutable platform-lfx-wheel-image: он не линкуется на live checkout Langflow. Helper извлекает точно закреплённый коммит из локальной Git-базы в .garden/local-worktrees и линкует action на этот detached worktree. Скрипт не обновляет закреплённые SHA и не переносит Git-коммиты. Исходный Langflow commit в composition BOM всегда содержит закреплённый LFX commit в своей Git-истории, поэтому актуального develop достаточно для offline bootstrap.

Отключить локальные соответствия:

garden unlink action --all

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

Правила изменения среды

  • Выбирайте минимальную требуемую пользовательскую точку входа.
  • Не используйте голый garden deploy, если достаточно одного target.
  • Не изменяйте управляемые ресурсы через ручной Helm или kubectl.
  • Не публикуйте разрешённую конфигурацию Garden, если она может содержать секретные значения.
  • Не используйте локальные соответствия исходного кода для ST.
  • Повторный запуск после частичной ошибки является нормальным способом восстановления идемпотентного графа.

Локальный Registry артефактов

Run action dev-local-artifact-registry поддерживает один pinned OCI Distribution container в Docker network Kind и настраивает containerd каждой ноды. Publisher использует push endpoint http://ap-dev-local-registry:5000/agent-platform/low-code, а Kubernetes Image Volume — canonical digest-only reference с prefix localhost:5001/agent-platform/low-code. Оба адреса указывают на одни repository и blobs.

Garden application image Low-code Runtime сначала существует только в local Docker store. Поэтому перед Agent Platform deploy отдельный action dev-local-runtime-image публикует exact build в repository agent-platform/runtime/low-code, читает подтверждённый Registry digest и передаёт Control Plane только ссылку localhost:5001/...@sha256:.... Mutable Garden tag не сохраняется в publication contract и не попадает в Kubernetes workload.

После остановки и повторного запуска Kind выполните:

garden run dev-local-artifact-registry --env dev-local --yes
curl -fsS http://127.0.0.1:5001/v2/

Чтобы отдельно проверить сборку, публикацию и digest output Runtime:

garden run dev-local-runtime-image --env dev-local --yes

Container и named volume принадлежат композиции dev-local, а не Helm chart приложения. Volume намеренно переживает удаление Kind. Удалять его можно только при подтверждённом полном reset после проверки, что Control Plane не содержит live или retained AgentVersion references. Обычный cleanup Garden и digest GC не удаляют всё хранилище.

На этой странице