Удаление kubernetes yaml: как предотвратить смещение старых объектов? - PullRequest
1 голос
/ 25 февраля 2020

Я работаю над процедурой непрерывного развертывания для приложения kubernetes: каждый раз, когда я пу sh тег git, активируется действие github, которое вызывает kubectl apply -f kubernetes для применения набора определений yaml kubernetes

скажем, я добавляю yaml для новой службы и развертываю ее - kubectl добавит ее

, но позже я просто удаляю yaml для этой службы, и повторное развертывание - kubectl НЕ удалит это

существует ли способ, которым kubectl может распознать, что yaml службы отсутствует, и ответить путем автоматического удаления службы во время непрерывного развертывания? в моем локальном тесте служба продолжает работать в районе

. Должен ли разработчик знать, чтобы подключить kubectl к производственному кластеру и удалить службу вручную, в дополнение к удалению определения yaml?

Есть ли механизм для kubernetes, чтобы "знать, чего не хватает"?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Вам нужно использовать инструмент CI / CD для Kubernetes, чтобы достичь того, что вам нужно. Как упомянуто Sithroo Helm - это очень хороший вариант.

Helm позволяет извлекать, развертывать и управлять жизненным циклом приложений, как сторонних, так и собственных.

Больше не нужно поддерживать случайные группы файлов YAML (или очень длинные) описание модулей, наборов реплик, сервисов, настроек RBA C и др. c. В helm существует структура и соглашение для пакета программного обеспечения, который определяет слой YAML templates и другой слой, который изменяет шаблоны, называемые values. Значения внедряются в шаблоны, таким образом позволяет разделить конфигурацию и определяет, где изменения разрешены. Весь этот пакет называется Шлем Диаграмма .

По сути, вы создаете пакеты структурированных приложений, которые содержат все необходимое для работы в кластере Kubernetes; включая зависимости , необходимые для приложения. Источник

Прежде чем начать, я рекомендую вам эти статьи, объясняющие его особенности и особенности.

Отсутствующий компонент CI / CD Kubernetes: пакет Helm менеджер

Непрерывная интеграция и доставка (CI / CD) для Kubernetes с использованием CircleCI & Helm

0 голосов
/ 26 февраля 2020

Такого пути нет. Вы можете развернуть ресурсы из файла yaml из любого места, если сможете добраться до узла и настроить конфигурацию kube. Таким образом, kubernetes не будет знать, как ответить на удаление файла. Если вы все еще хотите это сделать, вы можете написать программу (код go), которая проверяет наличие файлов в одном месте и удаляет соответствующий ресурс всякий раз, когда файл удаляется.

Существует один способ через kubernetes - это использование оператора kubernetes, и при любых изменениях в ваших файлах вы можете обновлять crd, используемый для развертывания ресурсов через оператора.

...