Как безопасно обновить существующий сервер Kubernetes без исходных конфигураций

Как безопасно обновить существующий сервер Kubernetes без исходных конфигураций

Мне передали кластер Kubernetes без файлов конфигурации, и он не был настроен с помощью Helm. Автор сказал, что они просто создали все из строки cmd. Это небольшой/новый кластер для одного сервера API с контроллером Ingress nginx. Я достаточно хорошо знаю Kubernetes, чтобы разобраться, и смог добавить новый веб-сервер, но теперь мне нужно углубиться и обновить существующие конфигурации. В частности, я хочу включить метрики Prometheus на контроллере nginx, но не хочу ничего сломать.

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

Я понимаю, что текущую конфигурацию можно получить примерно так:

kubectl get services -n nginx -o yaml

В этом выводе есть дополнительные поля, такие как creationTimestamp, uid и т. д., которые, как я полагаю, мне нужно удалить. Или я могу просто сохранить вывод в точности как есть в файле yaml, внести изменения, чтобы включить prometheus, а затем применить конфигурацию обратно к контроллеру? Будет ли он игнорировать поля, созданные kube? Есть ли другой подход, который мне следует рассмотреть?

Во-вторых, следует ли хранить эти конфигурации в репозитории или это просто так принято?

решение1

Кажется, у вас есть почти все, что вам нужно; остались только некоторые незначительные замечания:

  • kubectl -n <ns> get <CRD> -o yamlвыдаст вам вывод с некоторыми идентификаторами, доступными только для чтения, которые вы не сможете переопределить, даже если они сохранят свои значения, поэтому они не подходят для хранения их в виде простых файлов.
  • использоватьkubectl edit instead
  • Что касается того, следует ли вам сохранять их в любой системе контроля версий или просто вносить изменения на лету, то это полностью ваше решение; любая попытка обсудить это, скорее всего, вызовет бурю негодования.

Связанный контент