Skip to content

Deploy architektūra

Infrastruktūra

GPAIS veikia K3s klasteryje ant ARM64 (Orange Pi 5+) nodų.

KomponentasAprašymas
KlasterisK3s v1.34, 3x OPi5+ (control-plane) + 1x orion (worker)
IngressTraefik su Let's Encrypt TLS per cert-manager
DBCloudNativePG operatorius, PostgreSQL 16.8, Longhorn storage
Registryregistry.smala.lt (GitLab Container Registry)
DNSCloudflare (smala.lt zona)

CI/CD pipeline

K8s resursai (gpais namespace)

ResursasFailasPaskirtis
Namespacek8s/namespace.yamlgpais namespace
CNPG Clusterk8s/postgres.yamlPostgreSQL 16.8, 2Gi Longhorn
Backend Deploymentk8s/backend.yamlFastAPI, 256-512Mi RAM
Frontend Deploymentk8s/frontend.yamlNginx + React SPA, 64-128Mi RAM
Docs Deploymentk8s/docs.yamlVitePress static, 32-64Mi RAM
IngressRoutek8s/ingress.yamlgpais.smala.lt
Redirectsk8s/redirects.yamlgii/giiorg → gpais redirect
NetworkPolicyk8s/network-policy.yamlDefault-deny + selective allow

Secrets

SecretRaktaiKaip sukurti
gpais-pg-authusername, passwordkubectl create secret generic
gpais-secretsSECRET_KEYkubectl create secret generic
gitlab-registry.dockerconfigjsonkubectl create secret docker-registry

Rankinis deploy

bash
# Build ant orion (ARM64)
rsync -az app/backend/ arunas@192.168.50.50:/tmp/gpais-build/backend/
rsync -az app/frontend/ arunas@192.168.50.50:/tmp/gpais-build/frontend/ --exclude node_modules

ssh arunas@192.168.50.50 "cd /tmp/gpais-build && \
  docker build -t registry.smala.lt/arunas/gpais/backend:latest -f backend/Dockerfile.prod backend/ && \
  docker push registry.smala.lt/arunas/gpais/backend:latest && \
  docker build -t registry.smala.lt/arunas/gpais/frontend:latest -f frontend/Dockerfile.prod frontend/ && \
  docker push registry.smala.lt/arunas/gpais/frontend:latest"

# Deploy
ssh arunas@192.168.50.51 "kubectl -n gpais rollout restart deployment/backend deployment/frontend"