Skip to main content
Version: 1.12-grodno (current)

Directory.DB

Введение

Данный чарт развертывает базу данных MongoDB (directory-db) в Kubernetes-кластере. Чарт используется для хранения справочников и базы данных каталога.

Версия чарта: 260618.62.385 OCI-репозиторий: cr.yandex/crpt9c7igqasaqddbg0p/backend/directory.db/charts/directory-db Примечание по Ingress: Для этого сервиса Ingress не используется, так как MongoDB работает как внутренняя база данных и не требует внешнего доступа через HTTP/HTTPS.

Подготовка к развертыванию

Secret'ы

Для развертывания требуется Secret с паролем MongoDB:

Переменные окружения в Deployment:

ПеременнаяЗначениеНазначение
MONGO_INITDB_DATABASEdirectorydbИмя базы данных MongoDB
MONGO_INITDB_ROOT_USERNAMEdirectorydbИмя пользователя MongoDB
MONGO_INITDB_ROOT_PASSWORD(из Secret)Пароль пользователя MongoDB

Получение чарта

Из OCI-репозитория

helm pull oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/directory.db/charts/directory-db \
--version 260618.62.385 \
--untar --untardir ./charts

Развертывание

Установка

helm install medikt-directory-db ./charts/directory-db \
--namespace prod \
--create-namespace \
-f ./charts/.values/directory-db_prod.yaml

Обновление

helm upgrade medikt-directory-db ./charts/directory-db \
--namespace prod \
-f ./charts/.values/directory-db_prod.yaml

Удаление

helm uninstall medikt-directory-db --namespace prod

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

Основные параметры values.yaml

ПараметрТипЗначение по умолчаниюОписание
replicaCountint1Количество реплик Deployment
image.repositorystringcr.yandex/crpt9c7igqasaqddbg0p/backend/directory.dbРепозиторий Docker-образа
image.pullPolicystringAlwaysПолитика pulls образа
image.tagstring(appVersion)Тег образа (по умолчанию appVersion)
imagePullSecretsarray[{name: "yc-cr-puller"}]Secret для доступа к OCI-репозиторию

Секреты и конфиденциальные данные

Пароль MongoDB хранится в Kubernetes Secret. Имя Secretа: directory-db-pwd. Ключ с паролем: password.

Node affinity

По умолчанию чарт настроен на развертывание на нодах с метками:

  • api_affinity: true
  • yandex.cloud/preemptible: false

Проверка развертывания

Проверка статуса релиза

helm list --namespace prod | grep directory-db

Проверка Pod'ов

kubectl get pods -n prod -l app.kubernetes.io/name=directory-db

Проверка Service

kubectl get service medikt-directory-db -n prod

Проверка Deployment

kubectl get deployment medikt-directory-db -n prod

Проверка логов

kubectl logs -n prod -l app.kubernetes.io/name=directory-db --tail=100

Проверка подключения к MongoDB

Так как сервис не имеет Ingress, для проверки можно использовать порт-форвардинг: В терминале A:

kubectl port-forward -n prod service/medikt-directory-db 27017:27017

В терминале B:

mongo --host localhost -u directorydb -p <пароль>
test> use directorydb
switched to db directorydb
directorydb> db.getCollectionNames()
[
'universities',
'cities',
'categories',
'utc',
'emailTemplates',
'operationCodes',
'specialities',
'questionsAndAnswers'
]

После проверки завершить выполнение формвардинга в терминале A.