# Kubernetes манифесты для Demo SPA App ## Структура манифестов ``` k8s/ ├── namespace.yaml # Namespace для приложения ├── deployment.yaml # React SPA приложение ├── service.yaml # Внутренний сервис ├── dex-authenticator.yaml # DexAuthenticator для аутентификации ├── ingress.yaml # Внешний доступ с SSL └── kustomization.yaml # Kustomize конфигурация ``` ## Развертывание ### 1. Подготовка образа ```bash # Сборка образа docker build -t demo-spa-app:latest . # Размещение в registry (замените на ваш registry) docker tag demo-spa-app:latest your-registry.com/demo-spa-app:latest docker push your-registry.com/demo-spa-app:latest ``` ### 2. Настройка конфигурации Перед развертыванием обновите следующие параметры: - **Домен**: `demo-spa.example.com` → ваш домен - **SSL сертификат**: убедитесь что cert-manager настроен - **Dex**: должен быть развернут в кластере (обычно в namespace `d8-user-authn`) ### 3. Развертывание в Kubernetes ```bash # Применение всех манифестов kubectl apply -k k8s/ # Или по отдельности kubectl apply -f k8s/namespace.yaml kubectl apply -f k8s/deployment.yaml kubectl apply -f k8s/service.yaml kubectl apply -f k8s/dex-authenticator.yaml kubectl apply -f k8s/ingress.yaml ``` ### 4. Проверка развертывания ```bash # Проверка подов kubectl get pods -n demo-spa # Проверка сервисов kubectl get svc -n demo-spa # Проверка ingress kubectl get ingress -n demo-spa # Логи приложения kubectl logs -f deployment/demo-spa-app -n demo-spa # Логи DexAuthenticator kubectl logs -f deployment/demo-spa-auth -n demo-spa ``` ## Конфигурация DexAuthenticator ### Настройка Dex DexAuthenticator автоматически интегрируется с Dex, развернутым в кластере. Дополнительная настройка OAuth2 клиентов не требуется - Deckhouse управляет этим автоматически. ### Основные параметры DexAuthenticator - **applicationDomain**: домен вашего приложения - **sendAuthorizationHeader**: отправка заголовков авторизации в приложение - **keepUsersLoggedInFor**: время жизни сессии (по умолчанию 24h) - **allowedGroups**: список разрешенных групп (пустой = все группы) - **cookieConfig**: настройки безопасности куки ## Архитектура ``` Internet → Ingress → DexAuthenticator → React SPA ↓ Dex (аутентификация) ``` - **Ingress**: Внешний доступ с SSL - **DexAuthenticator**: Нативная аутентификация через Dex - **React SPA**: Основное приложение - **Dex**: OIDC провайдер ## Мониторинг ```bash # Проверка health check curl https://demo-spa.example.com/health # Проверка аутентификации curl -I https://demo-spa.example.com/ ```