Admin Telegram Bot
Сервис Telegram-бота для уведомлений в Medikt.
Версия чарта: 260717.173.1600
OCI-репозиторий: cr.yandex/crpt9c7igqasaqddbg0p/backend/admin.api/charts/admin-telegram-bot
Ingress: N/A
Необходимые Secret'ы
Для развертывания необходимы следующие Secret'ы:
ConfigMap'ы генерируются автоматически из шаблонов чарта.
Получение чарта из OCI-репозитория
Команда для скачивания чарта
helm pull oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/admin.api/charts/admin-telegram-bot \
--version 260717.173.1600 \
--untar --untardir ./charts
Развертывание с помощью Helm
Установка
helm install medikt-admin-telegram-bot ./charts/admin-telegram-bot \
--namespace prod \
--create-namespace \
-f .values/admin-telegram-bot_prod.yaml \
--version 260717.173.1600
Обновление
helm upgrade medikt-admin-telegram-bot ./charts/admin-telegram-bot \
--namespace prod \
-f .values/admin-telegram-bot_prod.yaml \
--version 260717.173.1600
Удаление
helm uninstall medikt-admin-telegram-bot --namespace prod
Конфигурация
values.yaml (базовые параметры)
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
dotnet_environment | Staging | Среда выполнения (.NET) |
yc.publicBucketName | public | Имя S3 bucket |
replicaCount | 0 | Количество реплик |
notificationApiGrpcAddress | http://medikt-notification-api:8081 | Адрес gRPC нотификационного API |
featureFlags.eventUri | https://els-featuremgr.medikt.net | URI для событий Feature Flags |
featureFlags.streamUri | wss://els-featuremgr.medikt.net | URI для стриминга Feature Flags |
Конфигурация Telegram
| Параметр | Описание | Secret |
|---|---|---|
telegram.accessList | Список разрешенных Telegram имен пользователей (username), которым разрешено использовать функционал бота | - |
telegram.secretNameRef | Ссылка на Secret с токеном | telegram-bot-token |
Конфигурация образа
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
image.repository | cr.yandex/crpt9c7igqasaqddbg0p/backend/admin.api/telegram | Репозиторий образа |
image.pullPolicy | IfNotPresent | Политика загрузки образа |
image.tag | null | Тег образа (по умолчанию: версия чарта) |
imagePullSecrets[0].name | yc-cr-puller | Secret для доступа к OCI-репозиторию |
Конфигурация сервиса
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
serviceAccount.create | true | Создать service account |
serviceAccount.automount | true | Автоматически монтировать учетные данные API |
Конфигурация health probes
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
livenessProbe.exec.command[0] | find | Команда для проверки alive |
readinessProbe.exec.command[0] | cat | Команда для проверки ready |
Конфигурация affinity
| Параметр | Значение | Описание |
|---|---|---|
affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].key | api_affinity | Узел должен иметь label api_affinity=true |
affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[1].key | yandex.cloud/preemptible | Узел не должен быть preemptible |
Конфигурация autoscaling
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
autoscaling.enabled | false | Включить autoscaling |
Конфигурация приложения (appsettings.json)
Формируется из шаблона templates/configmap.yaml:
{
"TelegramBot": {
"AccessList": [
"andreygruen",
[...],
"yourlongway"
]
},
"PublicBucketName": "public.medikt.net",
"NotificationApiGrpcAddress": "http://medikt-notification-api:8081",
"FeatureFlags": {
"EventUri": "https://els-featuremgr.medikt.net",
"StreamUri": "wss://els-featuremgr.medikt.net"
},
"Serilog": {
"Properties": {
"Environment": "prod"
}
}
}
Проверка развертывания
Проверка статуса релиза
helm list -n prod
Проверка подов
kubectl get pods -n prod -l app.kubernetes.io/name=admin-telegram-bot
Проверка ConfigMap
kubectl get configmap -n prod admin-telegram-bot -o yaml
Проверка логов
kubectl logs -n prod -l app.kubernetes.io/name=admin-telegram-bot -f
Примечания
Feature Flags
API-ключ (featureFlags.apiKey) считывается из Secret featbit-appsettings (ключ server_secret).
Telegram Bot Access
Список разрешенных Telegram пользователей (telegram.accessList) настраивается в values.yaml и монтируется в appsettings.json.
Примечание по telegram.accessList:
- Это список Telegram имен пользователей (username), которым разрешено использовать функционал бота
- Значения должны быть указаны без символа
@ - Пример:
["andreygruen", "AntonHT", "arinariumm"]- это пользователи с Telegram@andreygruen,@AntonHT,@arinariumm - При попытке взаимодействия с ботом пользователи из этого списка будут получать ответы, остальные - нет