Согласование на уровне Kubernetes с базами данных - PullRequest
0 голосов
/ 08 марта 2019

Я реализовал пользовательский контроллер kubernetes, который следит за моим пользовательским ресурсом (CR) и выполняет действия.Я хочу добавить базу данных (MySQL), чтобы я мог сделать резервную копию настроек для отслеживания истории.

Я немного запутался с реализацией баз данных в пользовательском контроллере.Философия примирения контролера Kubernetes верит в возможную последовательность, когда фактическое состояние переходит в желаемое состояниеКогда происходит изменение состояния ресурса CR, вызывается функция Reconcile, в результате чего мы предпринимаем действия, чтобы убедиться, что фактическое состояние соответствует желаемому состоянию.Никогда не гарантируется, что запрос в функции согласования является последним состоянием и может быть устаревшим (сервер API имеет более новую запись) или может быть дубликатом.Следовательно, рекомендуется иметь уровень реализации контроллера.

Однако я не уверен, как реализовать согласование на уровне уровней с приложениями с состоянием, такими как базы данных, где важен порядок запросов.Например: В MySQL мы должны создать запись с помощью CREATE и обновить с помощью команды UPDATE.Это означает, что ОБНОВЛЕНИЕ без предыдущего СОЗДАНИЯ потерпит неудачу.При записи записей в БД с контроллера kubernetes мне нужно каждый раз проверять, существует ли уже запись?Однако ни одна из таблиц и записей не является огромной, и этот метод не масштабируется.

Есть ли лучший способ обработки согласования на основе уровня с базами данных?

...