Архитектура 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 → ArgoCDGitOps с ArgoCD
ArgoCD Application (deploy/applications/isp-platform.yaml) следит за Helm-чартом.
ArgoCD:
- Следит за
infra/chart/на веткеmain - Рендерит Helm-чарт с
values.production.yaml - Применяет в 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: latestCI/CD: GitLab CI → K3s
Push → docker build → docker save | k3s ctr import → rollout restart → refresh-argoSelf-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 argocdRollback
argocd app rollback isp-platform