G-SERVICE Docs
Архитектура ISP (OSS/BSS)

Деплой и GitOps

GitLab CI + ArgoCD + K3s, Helm chart

Архитектура

Dev:  bun dev (нативно, без Docker/K8s)
Prod: Push → GitLab CI → docker build → k3s import → rollout restart → ArgoCD

GitOps с ArgoCD

ArgoCD Application (deploy/applications/isp-platform.yaml) следит за Helm-чартом.

ArgoCD:

  1. Следит за infra/chart/ на ветке main
  2. Рендерит Helm-чарт с values.production.yaml
  3. Применяет в K3s кластер + self-heal

Helm Chart

DRY defaults — каждое приложение задаёт image.repository + image.tag:

defaults:
  image:
    pullPolicy: IfNotPresent

apps:
  docs:
    image:
      repository: isp-platform/docs
      tag: latest
  web:
    image:
      repository: isp-platform/web
      tag: latest

CI/CD: GitLab CI → K3s

Push → docker build → docker save | k3s ctr import → rollout restart → refresh-argo

Self-hosted GitLab, Runner на ноде с K3s. Образы импортируются прямо в containerd — без registry.

Сборка только для изменённых приложений (.rules-<app> + changes:):

# .gitlab-ci.yml (упрощённо)
.build:
  script:
    - docker build -t ${IMAGE}:latest -f ${DOCKERFILE} .
    - docker save ${IMAGE}:latest | sudo k3s ctr -n k8s.io images import -

.deploy:
  script:
    - sudo kubectl rollout restart deployment ${DEPLOYMENT}

build-web:
  extends: [.build, .rules-web]
  variables:
    IMAGE: ${WEB_IMAGE}
    DOCKERFILE: apps/web/Dockerfile

deploy-web:
  extends: [.deploy, .rules-web]
  variables:
    DEPLOYMENT: web
  needs: [build-web]

Установка ArgoCD

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl apply -f deploy/argocd/argocd-cm.yaml
kubectl apply -f deploy/argocd/argocd-cmd-params-cm.yaml
kubectl apply -f deploy/applications/isp-platform.yaml
argocd admin initial-password -n argocd

Rollback

argocd app rollback isp-platform

On this page