Конфликт двух одинаковых приложений #7
Labels
No labels
api-component
bug
catalogue
complex-pipeline
consistency
databox
documentation
duplicate
experiment-pipeline
files
invalid
ml-component
platform-app
question
security
status: fixed
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: mlops_platform/documentation#7
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Описание ошибки
Если создать два приложения, связанных с одним и тем же репозиторием и веткой, mlcmp пересоздаются каждые несколько секунд. Возможно нужна защита от такой ситуации.
Насколько я знаю, имеются в виду две копии фреймворка. Например, на интеграционном стенде и production.
В случае, если по одному репозиторию создано два разных приложения, одним и тем же разработчиком или разными разработчиками, то правильное поведение следующее
Для прояснения причины указанного в ошибке поведения нужно
В текущей реализации два приложения могут использовать один и тот же Repository (ссылка на Repository указывается в манифесте PlatformApp). Это сделано осознанно - переиспользование реестров пакетов, реестров образов.
Принципиальная проблема в том, что пространство имен MLComponent (и любого другого ресурса) может отличаться от имени приложения (=пространства имен приложения).
Наблюдаемое поведение, вероятно, возникает из-за работы argocd. Один экземпляр MLComponent синхронизируются двумя приложениями argocd. В процессе синхронизации приложения argocd устанавливает метки, которые инициируют синхронизацию другого приложения argocd, что приводит к пересозданию ресурсов фреймворком.
В текущей реализации имя приложения PlatformApp уже включает в себя имя PlatformUser. Изменение этого соглашения не решило бы описанную проблему.
Первое. Пр-во имен должно задаваться при развертывании, а не в манифестах в git. Если оно задано неверно, должна быть ошибка развертывания.
Второе. Сервис развертывания (сейчас это ArgoCD) должен работать с ограниченными правами и только в пр-ве имен разворачиваемого приложения. Для двух разных приложений два разных аккаунта.
Права для сервиса развертывания
При этом предполагается, что сервис может отличить свои CRD от созданных разработчиком вручную, например, по меткам.
Все остальное запрещено
Запланировано к реализации:
Что, по текущему представлению, в ближайшее время сделать не получится: