105 lines
3.5 KiB
Markdown
105 lines
3.5 KiB
Markdown
# 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/
|
||
```
|