Согласование на уровне Kubernetes с базами данных

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

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

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

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

0 ответов

Другие вопросы по тегам