Deployment of Services
После развёртки базовой инфраструктуры можно приступить к развёртке всех остальных сервисов. Helmfile автоматически учтёт зависимости между сервисами и развернёт их в правильном порядке.
Порядок развёртывания
Благодаря зависимостям в kubernetes/apps/_others.yaml, сервисы развернутся в следующем порядке:
- Базы данных (PostgreSQL, MongoDB, ValKey, MinIO)
- Инфраструктурные сервисы (Monitoring, Glance, Harbor, Bytebase, Devtron)
- Сервисы авторизации (Authentik)
- Сервисы продуктивности (Notesnook, Excalidraw, Penpot)
- Сервисы разработки (GitLab, TeamCity, YouTrack, JetBrains Hub)
- Социальные сервисы (Stoat, Stalwart)
- Сервисы данных (Vaultwarden, Syncthing, Nextcloud)
Deployment всех of Services
Выполнение развёртки
Navigate to директорию с Kubernetes конфигурацией:
cd kubernetes
Run развёртку всех сервисов:
helmfile -e k8s apply
Эта команда развернёт все сервисы, учитывая зависимости. Процесс может занять 30-60 минут в зависимости от количества сервисов и скорости загрузки образов.
Verification статуса
Check статус всех релизов:
helmfile -e k8s list
Check статус подов по namespace:
kubectl get pods -n db
kubectl get pods -n service
kubectl get pods -n infrastructure
kubectl get pods -n productivity
kubectl get pods -n code
kubectl get pods -n social
kubectl get pods -n data
Базы данных
PostgreSQL
PostgreSQL используется большинством сервисов для хранения данных.
Проверка:
kubectl get pods -n db -l app=postgres
kubectl get svc -n db -l app=postgres
Подключение:
kubectl exec -it -n db deployment/postgres -- psql -U postgres
MongoDB
MongoDB используется Notesnook и Stoat.
Проверка:
kubectl get pods -n db -l app=mongodb
Проверка replica set:
kubectl exec -it -n db deployment/mongodb -- mongosh --eval "rs.status()"
ValKey
ValKey (Redis-compatible) используется для кэширования и сессий.
Проверка:
kubectl get pods -n db -l app=valkey
kubectl exec -it -n db deployment/valkey-master -- valkey-cli ping
MinIO
MinIO используется для S3-совместимого объектного хранилища.
Проверка:
kubectl get pods -n db -l app=minio
kubectl get ingress -n db -l app=minio
Инфраструктурные сервисы
Monitoring (Prometheus, Grafana, Loki)
Мониторинг включает Prometheus для сбора метрик, Grafana для визуализации и Loki для логов.
Проверка:
kubectl get pods -n service -l app=prometheus
kubectl get pods -n service -l app=grafana
kubectl get pods -n service -l app=loki
Доступ к Grafana:
kubectl get ingress -n service -l app=grafana
Обычно доступен по адресу grafana.local. Пароль администратора находится в секретах.
Glance
Glance - централизованный дашборд со ссылками на все сервисы.
Проверка:
kubectl get pods -n infrastructure -l app=glance
kubectl get ingress -n infrastructure -l app=glance
Доступ: glance.local
Harbor
Harbor - container registry для хранения Docker образов.
Проверка:
kubectl get pods -n infrastructure -l app=harbor
kubectl get ingress -n infrastructure -l app=harbor
Доступ: harbor.local
Bytebase
Bytebase - система управления схемами баз данных.
Проверка:
kubectl get pods -n infrastructure -l app=bytebase
kubectl get ingress -n infrastructure -l app=bytebase
Доступ: bytebase.local
Devtron
Devtron - Kubernetes dashboard и CI/CD платформа.
Проверка:
kubectl get pods -n devtroncd -l app=devtron
kubectl get ingress -n devtroncd -l app=devtron
Доступ: devtron.local
Сервисы авторизации
Authentik
Authentik - SSO (Single Sign-On) решение для авторизации во всех сервисах.
Проверка:
kubectl get pods -n service -l app=authentik
kubectl get ingress -n service -l app=authentik
Доступ: authentik.local
Начальная настройка: После первого запуска выполните настройку через веб-интерфейс (см. Настройка сервисов).
Сервисы продуктивности
Notesnook
Notesnook - система для ведения заметок с синхронизацией.
Проверка:
kubectl get pods -n productivity -l app=notesnook
kubectl get ingress -n productivity -l app=notesnook
Доступ: notesnook.local, identity.notesnook.local
Excalidraw
Excalidraw - инструмент для создания диаграмм.
Проверка:
kubectl get pods -n productivity -l app=excalidraw
kubectl get ingress -n productivity -l app=excalidraw
Доступ: excalidraw.local
Penpot
Penpot - инструмент для дизайна (аналог Figma).
Проверка:
kubectl get pods -n productivity -l app=penpot
kubectl get ingress -n productivity -l app=penpot
Доступ: penpot.local
Сервисы разработки
GitLab
GitLab - система контроля версий и CI/CD.
Проверка:
kubectl get pods -n code -l app=gitlab
kubectl get ingress -n code -l app=gitlab
Доступ: gitlab.local
Начальная настройка: После первого запуска войдите с root пользователем (пароль в секретах).
TeamCity
TeamCity - CI/CD сервер от JetBrains.
Проверка:
kubectl get pods -n code -l app=teamcity
kubectl get ingress -n code -l app=teamcity
Доступ: teamcity.local
Начальная настройка: Выполните первоначальную настройку через веб-интерфейс.
YouTrack
YouTrack - система управления проектами от JetBrains.
Проверка:
kubectl get pods -n code -l app=youtrack
kubectl get ingress -n code -l app=youtrack
Доступ: youtrack.local
JetBrains Hub
JetBrains Hub - центр управления сервисами JetBrains.
Проверка:
kubectl get pods -n code -l app=hub
kubectl get ingress -n code -l app=hub
Доступ: hub.local
Социальные сервисы
Stoat
Stoat (ранее Revolt) - чат-сервер (аналог Discord).
Проверка:
kubectl get pods -n social -l app=stoat
kubectl get ingress -n social -l app=stoat
Доступ: stoat.local
Stalwart
Stalwart - почтовый сервер.
Проверка:
kubectl get pods -n social -l app=stalwart
kubectl get ingress -n social -l app=stalwart
Доступ: stalwart.local
Настройка: Требует настройки DNS записей (MX, SPF, DKIM, DMARC).
Сервисы данных
Vaultwarden
Vaultwarden - self-hosted сервер для Bitwarden.
Проверка:
kubectl get pods -n data -l app=vaultwarden
kubectl get ingress -n data -l app=vaultwarden
Доступ: vaultwarden.local
Начальная настройка: Зарегистрируйте первого пользователя через клиент Bitwarden.
Syncthing
Syncthing - система синхронизации файлов.
Проверка:
kubectl get pods -n data -l app=syncthing
kubectl get ingress -n data -l app=syncthing
Доступ: syncthing.local
Nextcloud
Nextcloud - система облачного хранения файлов.
Проверка:
kubectl get pods -n data -l app=nextcloud
kubectl get ingress -n data -l app=nextcloud
Доступ: nextcloud.local
Начальная настройка: Войдите с администратором (пароль в секретах).
Мониторинг процесса развёртки
Во время развёртки можно мониторить процесс:
# Следить за статусом подов
watch kubectl get pods --all-namespaces
# Следить за событиями
kubectl get events --all-namespaces --sort-by='.lastTimestamp'
# Проверять логи конкретного сервиса
kubectl logs -n <namespace> -l app=<app-name> -f
Troubleshooting
Issue: Поды не запускаются
Check события:
kubectl describe pod <pod-name> -n <namespace>
kubectl get events -n <namespace> --sort-by='.lastTimestamp'
Check логи:
kubectl logs <pod-name> -n <namespace>
Issue: Ошибки инициализации баз данных
Check статус баз данных:
kubectl get pods -n db
kubectl logs -n db <database-pod>
Make sure, что базы данных полностью запущены перед развёрткой зависимых сервисов.
Issue: Недостаточно ресурсов
Check использование ресурсов:
kubectl top nodes
kubectl top pods --all-namespaces
При необходимости добавьте ресурсы на узлы или уменьшите количество реплик в values.yaml.
Issue: Ошибки загрузки образов
Check статус подов:
kubectl get pods --all-namespaces | grep ImagePullBackOff
Make sure, что узлы могут загружать образы из registry.
Next Steps
После успешной развёртки всех сервисов:
- Настройка Pangolin и Wireguard туннеля - настройка VPN туннеля для доступа к сервисам
- Настройка сервисов - первоначальная настройка каждого сервиса