5.1 KiB
Под с ChartDB
ChatBD (chartdb.io) - это визуальный редактор структуры базы данных и инструмент проектирования схем (ER-диаграмм), мини-конструктор для работы с локальной псевдо-БД. Все это доступно в веб-интерфейсе. Пока ChatBD не позволяет подключаться к реальным базам данных, но в будущем планируется поддержка. Зато в нее можно импортировать схемы рабочих баз данных из PostgreSQL, MySQL, MariaDB, SQLite, MSSQL, ClickHouse и CockroachDB. Так же поддерживается экспорт из JSON и DBML. Импорт готовых схем возможен в любую из поддерживаемых СУБД (плюс JSON и DBML).
Можно работать с таблицами, колонками, индексами, ключами... и здесь нет аутентификации, но при этом нельзя одновременно работать нескольким пользователем в режиме "живой доски" (live board). Но самое печальное, в нем нет никаких инструментов для создания запросов.
Из интересных фишек ChatDB -- к нему можно подключить LLM (через API OpenAI или локальный Ollama) и тогда он, похоже, сможет генерировать SQL-запросы по текстовым описаниям. Но это я пока пока не проверил (ждите обновления этой инструкции).
Манифест для развертывания пода с ChartDB в k3s, который предоставляет веб-интерфейс по адресу http://chartdb.local
:
# ~/k3s/chartdb/chartdb.yaml
# Все манифесты для ChartDB
# 1. Манифест создания пространства имён `chartdb`. Если оно уже есть — kubectl apply ничего не изменит
apiVersion: v1
kind: Namespace
metadata:
name: chartdb
---
# 2. Манифест PVC (Longhorn) -- том в блочном хранилище, в котором будут храниться данные ChartDB.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: chartdb-data
namespace: chartdb
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 720Mi
---
# 3. Deployment: развёртывание ChartDB
apiVersion: apps/v1
kind: Deployment
metadata:
name: chartdb
namespace: chartdb
spec:
replicas: 1
selector:
matchLabels:
app: chartdb
template:
metadata:
labels:
app: chartdb
spec:
containers:
- name: chartdb
image: ghcr.io/chartdb/chartdb:latest
ports:
- containerPort: 80
env:
- name: TZ # Часовой пояс, который будет в поде
value: Europe/Moscow
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
volumeMounts: # Монтируем том:
- name: chartdb-storage # ... имя PVC-тома
mountPath: /data # ...путь внутри контейнера, куда будет смонтирован PVC-том
volumes: # Используемые том:
- name: chartdb-storage # ... c именем
persistentVolumeClaim: # ... PVC (Longhorn)
claimName: chartdb-data
---
# 4. Service: внутренний доступ к контейнеру ChartDB
apiVersion: v1
kind: Service
metadata:
name: chartdb
namespace: chartdb
spec:
selector:
app: chartdb
ports:
- port: 80
targetPort: 80
type: ClusterIP
---
# 5. IngressRoute для Traefik (под твою конфигурацию)
# Это публикует ChartDB по адресу http://chartdb.local (заменить на свой домен)
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: chartdb
namespace: chartdb
spec:
entryPoints:
- web # это должен быть один из entrypoints в Traefik (обычно "web" = порт 80)
routes:
- match: Host("chartdb.local") # доменное имя, по которому будет доступен сервис
kind: Rule
services:
- name: chartdb
port: 80
Применим манифесты командой:
kubectl apply -f ~/k3s/chartdb/chartdb.yaml
После этого ChartDB будет доступен по адресу http://chartdb.local
. и в нем можно будет создавать и редактировать
схемы, например: