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

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_environmentStagingСреда выполнения (.NET)
yc.publicBucketNamepublicИмя S3 bucket
replicaCount0Количество реплик
notificationApiGrpcAddresshttp://medikt-notification-api:8081Адрес gRPC нотификационного API
featureFlags.eventUrihttps://els-featuremgr.medikt.netURI для событий Feature Flags
featureFlags.streamUriwss://els-featuremgr.medikt.netURI для стриминга Feature Flags

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

ПараметрОписаниеSecret
telegram.accessListСписок разрешенных Telegram имен пользователей (username), которым разрешено использовать функционал бота-
telegram.secretNameRefСсылка на Secret с токеномtelegram-bot-token

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

ПараметрЗначение по умолчаниюОписание
image.repositorycr.yandex/crpt9c7igqasaqddbg0p/backend/admin.api/telegramРепозиторий образа
image.pullPolicyIfNotPresentПолитика загрузки образа
image.tagnullТег образа (по умолчанию: версия чарта)
imagePullSecrets[0].nameyc-cr-pullerSecret для доступа к OCI-репозиторию

Конфигурация сервиса

ПараметрЗначение по умолчаниюОписание
serviceAccount.createtrueСоздать service account
serviceAccount.automounttrueАвтоматически монтировать учетные данные API

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

ПараметрЗначение по умолчаниюОписание
livenessProbe.exec.command[0]findКоманда для проверки alive
readinessProbe.exec.command[0]catКоманда для проверки ready

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

ПараметрЗначениеОписание
affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].keyapi_affinityУзел должен иметь label api_affinity=true
affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[1].keyyandex.cloud/preemptibleУзел не должен быть preemptible

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

ПараметрЗначение по умолчаниюОписание
autoscaling.enabledfalseВключить 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
  • При попытке взаимодействия с ботом пользователи из этого списка будут получать ответы, остальные - нет