Skip to content

Prototype of booking system, adopted for high loads

Notifications You must be signed in to change notification settings

squeakbug/dscoursework

Repository files navigation

dscoursework

В дверь постучали n раз. "Византия победила" - подумал Штирлиц

GitHub Classroom Workflow

Предварительные требования

Должен быть отдельно поднят сервер с инфр-ой из compose файла исключая flight-, gateway-, bonus-, ticket-service. В helm чарте должен быть указан адрес этого хоста.

Проверка подписей

cosign verify $IMAGE_NAME --certificate-oidc-issuer https://accounts.google.com  --certificate-identity [email protected]

Конфигурация

Для тестовой сборки:

cd deployment
export $(cat .env.template | xargs)

В кластере определяется hpa ресурс, поэтому должны быть выполнены соответствующие требования. Если используется minikube с уже установленным metrics-server, то следует изменить спеку контейнера:

kubectl edit deployments.apps metrics-server

# Найти:
spec:
containers:
- args:
- --cert-dir=/tmp
- --secure-port=10250
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-use-node-status-port
- --metric-resolution=15s

# Добавить/заменить на:
- --secure-port=4443
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP

Сборка

Тестовая сборка:

cd deployment
docker-compose -f docker-compose.test.yml build

Запуск

Docker compose:

cd deployment
docker-compose -f docker-compose.test.yml up -d

Helm:

cd deployment
helm install dsc ./k8s-homelab

Приложения разворачиваются в пространстве имен rsoi. Для удобства смените текущее пространство имен k8s:

kubectl config set-context --current --namespace=rsoi

TODO

  • Настроить ноды на кластере под Spin runtime
  • Добавить .hcl для opentofu

Ссылки

Выводы

  • Прежде чем использовать чарт для СУБД, очередей, хранилищ секретов, логов, метрик подумайте об аренде виртуальной машины под инфраструктуру (~10 рублей за 24 часа). Это сэкономит силы и время + позволит подумать об IaaS (OpenTofu, Ansible, Terraform), как обеспечить безопасность (где хранить секреты) + покажет зачем нужен LXC/LXD, когда есть Docker + как настроить VPN сервер + узнаете про Kinsing и Fail2Bun. Это практичный, безопасный и надежный подход.
  • Создавайте make-файлы для operations команд (docker build бла-бла-бла)
  • Лучше использовать один большой чарт с большим value файлом, чем несколько подчартов со своими value файлами в тех случаях, когда эти подчарты широко разделяют одни и те же конфигурационные параметры. Создание чартов это больше про хранение переменных окружения в одном месте, чем про конфигурацию кластера k8s: в этом проекте больше конф-х параметров приложения, чем кластера.
  • Для уменьшение размера образа стоит использовать cargo-chef
  • Axum будет поприятней actix засчет интеграции с tower стеком
  • Под WASM можно собрать контейнер < 5 MB
  • Как же долго стартует zookeper и kafka...

About

Prototype of booking system, adopted for high loads

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published