Серверная инфраструктура: edu-dmitry-zavyalov

Учебное окружение для второго урока по Kubernetes из курса Девмана.

С чего начать

Ресурсы

K8s Namespace: edu-dmitry-zavyalov

В кластере K8s создан отдельный namespace edu-dmitry-zavyalov. К нему выдан полный доступ: можно создавать конфиги и секреты, запускать поды — делать всё, что потребуется для настройки и запуска веб-сервиса.

В кластере Kubernetes вам также открыт доступ на чтение к чужим окружениям и веб-сервисам. Вы можете заглянуть в их манифесты ConfigMap, Deployment, Service и скопировать к себе всё, что считаете полезным. Вам закрыт доступ только к содержимому Secret.

Установите себе Lens Desktop, чтобы быстро переключаться между проектами, читать их конфигурацию, копировать и тестировать внутри своего K8s namespace. У Lens Desktop есть несколько версий — вам нужна бесплатная.

Кластер K8s, веб-консоль Как подключиться к K8s в Яндекс Облаке Lens Desktop k9s
PostgreSQL DB: edu-dmitry-zavyalov

В Yandex Managed Service for PostgreSQL создана база данных edu-dmitry-zavyalov.

В БД создан RW пользователь edu-dmitry-zavyalov.

Доступы лежат в секрете K8s postgres.

Максимальное количество открытых соединений для RW пользователя: 10.

Настроены автоматические бекапы.

В секрете postgres для подключения к БД лежат:

  • name — имя БД
  • port — порт
  • root.crt — SSL-сертификат
  • dsn — RW DSN
  • host — RW хост
  • username — имя RW пользователя
  • password — пароль RW пользователя
Веб-консоль
ALB-роутер (Ingress)

Настроена обработка входящих HTTP-запросов. Запросы последовательно обрабатывают два веб-сервера: сначала Application Load Balancer (ALB), затем Nginx.

Первый веб-сервер — ALB — настроен через Ingress. Им управляет системный администратор, поэтому самостоятельно менять конфиги Ingress нельзя — все правки будут утеряны при следующем запуске админских скриптов. Свяжитесь с администратором, если хотите перенастроить ALB.

Второй веб-сервер — Nginx — запущен непосредственно в кластере k8s внутри неймспейса и предназначен для самостоятельной настройки пользователем инсталляции.

Для работы Nginx в кластере уже созданы:

- Deployment main-nginx

- ConfigMap main-nginx-config

- Service main-nginx

Чтобы изменить настройки Nginx отредактируйте его конфигурационный файл в ConfigMap и переразверните Deployment:

kubectl rollout restart deployment main-nginx -n edu-dmitry-zavyalov

Адреса спрятаны от поисковых роботов Google, Yandex и пр. с помощью заголовка X-Robots-Tag в HTTP-ответе.

Схема роутинга на уровне ALB:

Настройка Nginx
Корзина в Yandex Object Storage (S3)
S3 Bucket: edu-dmitry-zavyalov

Храним в корзине и статику, и медиа-файлы. Пользователю даём прямые ссылки для скачивания файлов из Object Storage, чтобы не усложнять схему дополнительным веб-сервером Nginx. Пример прямой ссылки: https://storage.yandexcloud.net/edu-dmitry-zavyalov/test.txt.

Object Storage предлагает удобный веб-интерфейс, через который можно заливать и удалять файлы, проверять содержимое корзины. Это сильно упрощает отладку cкриптов, делает процесс наглядным. Ссылка на веб-интерфейс указана ниже.

Токены и прочие настройки доступа к Object Storage API лежат в секрете K8s bucket. Настроен доступ через K8s Persistent Volume Claim bucket.

Веб-интерфейс корзины Как работать с Yandex S3 с помощью boto3 и boto

Доступ

Доступ к серверной инфраструктуре имеют:

  • Дмитрий Завьялов

Полезные инструменты и статьи