Dev/Test/Prod окружения #6

Open
opened 2025-06-30 00:17:52 +04:00 by itc1205 · 1 comment
Owner

Необходимо в рамках задачи создать различные окружения для микросервисов:

Требования (будут дополнятся):

  • Различные базы данных
  • разные ветки для разных окружений (т.е. dev -> dev env, master -> test, master -> prod (manual release))
  • различные окружения и репозиторий с .env файлами для разных окружений
Необходимо в рамках задачи создать различные окружения для микросервисов: Требования (будут дополнятся): - Различные базы данных - разные ветки для разных окружений (т.е. dev -> dev env, master -> test, master -> prod (manual release)) - различные окружения и репозиторий с .env файлами для разных окружений
coma was assigned by itc1205 2025-06-30 00:17:52 +04:00
itc1205 added this to the shop.58team.ru project 2025-06-30 00:26:11 +04:00
Owner

Кароче, есть одна идея, поскольку мы прям упарываемся в хардкорщину. С моей стороны предлагаю поставить ArgoCD.

Cхема с арго будет примерно такая:
app.diagrams.net/#G1kdmkGrg__5yXRXgtURke5EJdRR_EH0QE#{"pageId"%3A"Hm0XZzOS3xogNmkAsBhN"}

В моей башке выглядит так:

   dev
 
    Разраб пушит код в ветку dev микросервиса.
    Forgejo CI билдит Docker-образ, пушит его в registry.local.
    CI делает коммит в GitOps-репозиторий: обновляет тег образа в apps/my-service/dev/kustomization.yaml.
    ArgoCD видит, что в dev/ что-то поменялось, и автоматически синхронизирует это окружение (deployment, config, secrets).
    Kubernetes запускает/обновляет dev-экземпляр.

    test
    
    Код проходит ревью и мержится в master.
    CI снова билдит образ (может быть повторно), пушит, обновляет тег в apps/my-service/test/kustomization.yaml.
    ArgoCD auto-sync применяет изменения в namespace test.

    prod

    Создаётся тег v1.2.3 или ветка release-1.2.
    CI билдит образ и обновляет apps/some-service/prod/ с новым тегом образа.
    ArgoCD видит изменения, но не применяет их автоматически.
    вручную жму “Sync” в ArgoCD UI
    Прод обновляется.

Вопрос остается в том, насколько это имеет смысл и надо ли оно вообще

Кароче, есть одна идея, поскольку мы прям упарываемся в хардкорщину. С моей стороны предлагаю поставить ArgoCD. Cхема с арго будет примерно такая: app.diagrams.net/#G1kdmkGrg__5yXRXgtURke5EJdRR_EH0QE#{"pageId"%3A"Hm0XZzOS3xogNmkAsBhN"} В моей башке выглядит так: ``` dev Разраб пушит код в ветку dev микросервиса. Forgejo CI билдит Docker-образ, пушит его в registry.local. CI делает коммит в GitOps-репозиторий: обновляет тег образа в apps/my-service/dev/kustomization.yaml. ArgoCD видит, что в dev/ что-то поменялось, и автоматически синхронизирует это окружение (deployment, config, secrets). Kubernetes запускает/обновляет dev-экземпляр. test Код проходит ревью и мержится в master. CI снова билдит образ (может быть повторно), пушит, обновляет тег в apps/my-service/test/kustomization.yaml. ArgoCD auto-sync применяет изменения в namespace test. prod Создаётся тег v1.2.3 или ветка release-1.2. CI билдит образ и обновляет apps/some-service/prod/ с новым тегом образа. ArgoCD видит изменения, но не применяет их автоматически. вручную жму “Sync” в ArgoCD UI Прод обновляется. ``` Вопрос остается в том, насколько это имеет смысл и надо ли оно вообще
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Shop/DevOps#6
No description provided.