Перейти к содержанию

CLI (dataflow-cli)

Командная строка для DataFlow: работа с API Web GUI или локальный запуск манифеста DataFlow без Kubernetes.

Когда читать: скрипты против web API, локальный smoke-тест пайплайна или day-2 операции без правки YAML через kubectl.

См. также: Web GUI · Начало работы · Справочник Spec

Установка

Сборка из исходников (Go 1.25+):

cd dataflow-cli
go build -o dataflow-cli .

В монорепозитории в go.mod уже есть replace github.com/dataflow-operator/dataflow => ../dataflow для локальной разработки.

Готовые бинарники (когда публикуются): GitHub Releases.

Исходники: dataflow-cli/.

Глобальные флаги

Флаг / env Описание По умолчанию
--api-url / DATAFLOW_API_URL Базовый URL API dataflow-web http://localhost:8080/api
--namespace Kubernetes namespace для ресурсов DataFlow default

Укажите --api-url на port-forward или Ingress GUI, например:

kubectl port-forward svc/dataflow-operator-gui 8080:8080 -n dataflow-system
export DATAFLOW_API_URL=http://localhost:8080/api

Команды Web API

Те же действия, что в браузерном UI:

# Namespaces
dataflow-cli namespaces

# DataFlows
dataflow-cli dataflows list
dataflow-cli dataflows list --namespace=my-ns
dataflow-cli dataflows get my-dataflow
dataflow-cli dataflows create --file=manifest.yaml
dataflow-cli dataflows update my-dataflow --file=manifest.yaml
dataflow-cli dataflows delete my-dataflow

# Логи (--follow / -f — поток в реальном времени)
dataflow-cli logs my-dataflow --tail=200
dataflow-cli logs my-dataflow -f

# Статус и метрики
dataflow-cli status my-dataflow
dataflow-cli metrics my-dataflow

Во всех командах можно указать --namespace (по умолчанию default).

Локальный запуск (без Kubernetes)

Пайплайн выполняется внутри процесса CLI. Кластер и оператор не нужны; source и sink должны быть доступны (Kafka, PostgreSQL и т.д.).

dataflow-cli run manifest.yaml
dataflow-cli run manifest.yaml --log-level=debug

Остановка: Ctrl+C.

Учётные данные в локальных манифестах

В local-dev примерах допустимы plaintext connection strings. Для всего shared/prod-подобного используйте SecretRef. См. Best Practices.

Пример манифеста

Стандартный YAML CR DataFlow:

apiVersion: dataflow.dataflow.io/v1
kind: DataFlow
metadata:
  name: kafka-to-postgres
spec:
  source:
    type: kafka
    config:
      brokers:
        - localhost:9092
      topic: input-topic
      consumerGroup: dataflow-group
  sink:
    type: postgresql
    config:
      connectionString: "postgres://user:pass@localhost:5432/db?sslmode=disable"
      table: output_table

Эталонные samples: config/samples (для apply в кластер предпочитайте паттерны *-secrets.yaml).

Когда CLI, GUI или kubectl

Цель Предпочтительнее
Просмотр / правка в браузере Web GUI
Скрипты, CI, быстрые вызовы API dataflow-cli
Полный контроль кластера, status CRD, events kubectl
Черновик/валидация YAML с AI MCP + Agent Skills