CI / CD для сборки облака и файлы k8s

Я использую облачную сборку и кластер GKE k8s, и у меня есть настройка CI / CD с github на облачную сборку.

Я хочу знать, хорошо ли добавлять файл сборки CI и Dockerfile в репозиторий или управлять файлом конфигурации отдельно в другом репозитории?

Можно ли добавлять файлы конфигурации Ci & k8s в репозиторий бизнес-логики?

Как лучше всего реализовать сборку облака CI / CD в GKE с управлением файлами yaml CI / k8


person Harsh Manvar    schedule 21.05.2019    source источник
comment
Это руководство по CI / CD в стиле GitOps с Cloud Build может быть полезным (файлы декларативной инфраструктуры хранятся в отдельном репозитории, а dockerfile или cloudbuild.yaml - в том же проекте репозитория sas): cloud.google.com/kubernetes-engine/docs/tutorials/   -  person chriscross    schedule 23.05.2019
comment
@chriscross, спасибо за то, что поделился ссылкой, за которой я следил, но меня беспокоит то, что я не могу добавить один файл облачной сборки и все yaml-файл развертывания k8s с репозиторием кода приложения вместо создания двух разных репо для CI / CD   -  person Harsh Manvar    schedule 23.05.2019
comment
Я предполагаю, что идея состоит в том, чтобы отделить (k8s yamls в одном репо от dockerfile / cloudbuild вместе с кодом приложения в другом), потому что репозиторий приложения необходим для создания образа, и только после его успешного применения yamls следует применять. также вы можете не захотеть запускать новую сборку только из-за изменений, внесенных в yamls.   -  person chriscross    schedule 23.05.2019
comment
также у вас может быть несколько веток в репозитории k8s yaml, которые соответствуют вашим инфраструктурным средам, таким как dev, qa, stage, production.   -  person chriscross    schedule 23.05.2019
comment
@chriscross Спасибо, ты понял причину моего ответа. Большое спасибо за помощь.   -  person Harsh Manvar    schedule 23.05.2019


Ответы (2)


Да, вы можете добавить директивы развертывания, как правило, в выделенную папку вашего проекта, которая, в свою очередь, может использовать репозиторий cicd

См. Пример "kelseyhightower/pipeline-application", где:

Изменения, отправленные в любую ветку, кроме master, должны вызывать следующие действия:

  • создать образ контейнера, помеченный идентификатором сборки, подходящий для развертывания в промежуточном кластере
  • клонировать репозиторий конвейерной инфраструктуры
  • исправьте файл конфигурации развертывания конвейера с помощью образа промежуточного контейнера и зафиксируйте изменения в репозитории промежуточного развертывания конвейера

Репозиторий конвейерной инфраструктуры будет развертывать любые обновления, зафиксированные в основной ветке.

person VonC    schedule 21.05.2019
comment
Спасибо, что поделились ответом. получил четкое представление о CI / CD, наверное, мне нужно создать только два репо. - person Harsh Manvar; 21.05.2019

Учтите, что:

Лучшим решением для хранения файла Dockerfile или файла конфигурации сборки должен быть удаленный репозиторий. Для файлов докеров это поддерживается в gcloud как «Встроенная поддержка Docker».

Вы можете использовать разные репозитории хоста, например:

  • Облачное хранилище исходного кода
  • Bitbucket
  • GitHub

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

person Mark    schedule 21.05.2019