Мне передали кластер 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
- Что касается того, следует ли вам сохранять их в любой системе контроля версий или просто вносить изменения на лету, то это полностью ваше решение; любая попытка обсудить это, скорее всего, вызовет бурю негодования.