Манифесты разворачивают corp-ui, PostgreSQL и MinIO для чтения legacy-вложений в namespace aegida-services. Новые загрузки идут в Aegida Gate Files API; локальный MinIO можно удалить только после миграции/retention всех строк с object_key и отдельного удаления bucket bootstrap из entrypoint.
До запуска должны существовать:
user-service.aegida-services.svc.cluster.local:8080;aegida-gate.aegida-services.svc.cluster.local:8080.Gate должен использовать JWT_ISSUER=corp-ui, JWT_AUDIENCE=aegida-gate и JWT_HS256_SECRET, совпадающий с JWT_SECRET из ai-control-chat-secrets. AEGIDA_TENANT_ID в ConfigMap определяет claim tenant_id.
minikube image build \
--build-opt build-arg=NEXT_PUBLIC_APP_URL=https://chat.aegida.test:8443 \
-t ai-control-chat-ui:minikube \
.
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/config.yaml
kubectl apply -f k8s/postgres.yaml
kubectl apply -f k8s/minio.yaml
kubectl apply -f k8s/app.yaml
При совместном развёртывании с aegida-admin-ui корпоративный интерфейс доступен по https://chat.aegida.test:8443. Общий Ingress и локальный TLS-мост управляются из соседнего репозитория aegida-admin-ui.
Его deploy-helper собирает этот образ с указанным выше build argument и изменяет только поле NEXT_PUBLIC_APP_URL в существующем ConfigMap. Он намеренно не применяет второй документ ai-control-chat-secrets из k8s/config.yaml, поэтому действующие значения Secret сохраняются.
UI остаётся приватным ClusterIP Service. На macOS с Docker-драйвером Minikube постоянный адрес http://127.0.0.1:3000 поддерживает per-user LaunchAgent:
mkdir -p "$HOME/Library/LaunchAgents"
install -m 0644 ops/macos/com.aegida.corp-ui-port-forward.plist \
"$HOME/Library/LaunchAgents/com.aegida.corp-ui-port-forward.plist"
launchctl bootstrap "gui/$(id -u)" \
"$HOME/Library/LaunchAgents/com.aegida.corp-ui-port-forward.plist"
launchctl kickstart -k "gui/$(id -u)/com.aegida.corp-ui-port-forward"
Статус и health-check:
launchctl print "gui/$(id -u)/com.aegida.corp-ui-port-forward"
curl --fail-with-body http://127.0.0.1:3000/api/health
Логи:
tail -n 100 /tmp/aegida-corp-ui-port-forward.stdout.log
tail -n 100 /tmp/aegida-corp-ui-port-forward.stderr.log
Перезапуск:
launchctl kickstart -k "gui/$(id -u)/com.aegida.corp-ui-port-forward"
Отключение и удаление установленного LaunchAgent:
launchctl bootout "gui/$(id -u)" \
"$HOME/Library/LaunchAgents/com.aegida.corp-ui-port-forward.plist"
rm "$HOME/Library/LaunchAgents/com.aegida.corp-ui-port-forward.plist"
Перед установкой освободите порт 3000 только после проверки владельца процесса. Не используйте pkill, killall или принудительный сигнал.
Checked-in Secret содержит только development-значения. Замените все секреты вне локального кластера и согласуйте JWT secret с Gate.
Проверка без изменения состояния кластера:
kubectl apply --dry-run=client -f k8s/namespace.yaml
kubectl apply --dry-run=client -f k8s/config.yaml
kubectl apply --dry-run=client -f k8s/postgres.yaml
kubectl apply --dry-run=client -f k8s/minio.yaml
kubectl apply --dry-run=client -f k8s/app.yaml