# 🚀 Deployment Guide > **آخرین بروزرسانی**: January 3, 2026 > **Environment**: Kubernetes on Stage > **Domain**: `*.se.kbs1.ir` --- ## 🌐 آدرس‌های سرویس‌ها | سرویس | آدرس Stage | |-------|------------| | BackOffice UI | `https://backoffice.se.kbs1.ir` | | BackOffice BFF | `https://backoffice-bff.se.kbs1.ir` | | FrontOffice UI | `https://frontoffice.se.kbs1.ir` | | FrontOffice BFF | `https://frontoffice-bff.se.kbs1.ir` | | CMS | `https://cms.se.kbs1.ir` | | Git Registry | `git.se.kbs1.ir` | --- ## 📦 Git Repositories | Repo | Remote | URL | |------|--------|-----| | BackOffice | kub-stage | `https://git.se.kbs1.ir/admin/BackOffice.git` | | BackOffice.BFF | kub-stage | `https://git.se.kbs1.ir/admin/BackOffice.BFF.git` | | FrontOffice | kub-stage | `https://git.se.kbs1.ir/admin/FrontOffice.git` | | FrontOffice.BFF | kub-stage | `https://git.se.kbs1.ir/admin/FrontOffice.BFF.git` | | CMS | gitea | `https://git.se.kbs1.ir/admin/CMS.git` | | Docs | foursatDocs | `https://git.se.kbs1.ir/FourSat/docs.git` | --- ## 🔄 CI/CD Workflow ### Gitea Actions هر ریپو دارای workflow در `.gitea/workflows/` است: ```yaml # kub-deploy.yml - Deploy to Stage # prod-deploy.yml - Deploy to Production ``` ### مراحل Deploy: ``` 1. Push to branch → Trigger workflow 2. Build Docker image 3. Push to Registry (git.se.kbs1.ir) 4. Deploy to Kubernetes ``` --- ## 🐳 Docker Registry ### تنظیمات: ```yaml env: EXTERNAL_REGISTRY: git.se.kbs1.ir IMAGE: backoffice # or backoffice-bff, cms, etc. # Docker daemon config daemon.json: | { "insecure-registries": ["git.se.kbs1.ir", "gitea-svc:3000"] } ``` ### Image Names: | سرویس | Image | |-------|-------| | BackOffice | `git.se.kbs1.ir/admin/backoffice:latest` | | BackOffice.BFF | `git.se.kbs1.ir/admin/backoffice-bff:latest` | | FrontOffice | `git.se.kbs1.ir/admin/frontoffice:latest` | | FrontOffice.BFF | `git.se.kbs1.ir/admin/frontoffice-bff:latest` | | CMS | `git.se.kbs1.ir/admin/cms:latest` | --- ## 📋 BackOffice Deployment ### Prerequisites: ```bash # 1. Build proto DLLs cd BackOffice ./build-deps.sh # 2. Verify DLLs ls libs/*.dll | wc -l # Should be 24 ``` ### Build & Publish: ```bash cd BackOffice/src dotnet publish BackOffice/BackOffice.csproj -c Release -o ./publish ``` ### Docker Build: ```bash cd BackOffice docker build -t backoffice:latest . ``` ### Dockerfile: ```dockerfile FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src # Copy pre-built proto DLLs COPY ["libs/", "libs/"] COPY ["src/BackOffice/", "BackOffice/"] RUN dotnet publish "BackOffice/BackOffice.csproj" -c Release -o /app/publish FROM nginx:alpine COPY --from=build /app/publish/wwwroot /usr/share/nginx/html EXPOSE 80 ``` --- ## 📋 BFF & CMS Deployment ### Standard .NET Web API: ```bash # Build cd BackOffice.BFF/src dotnet publish BackOffice.BFF.WebApi/BackOffice.BFF.WebApi.csproj -c Release -o ./publish # Docker docker build -t backoffice-bff:latest . ``` ### Dockerfile Template: ```dockerfile FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src COPY . . RUN dotnet publish -c Release -o /app FROM runtime WORKDIR /app COPY --from=build /app . EXPOSE 80 ENTRYPOINT ["dotnet", "BackOffice.BFF.WebApi.dll"] ``` --- ## ⚙️ Configuration ### appsettings.Staging.json (BackOffice): ```json { "Environment": "Staging", "GwUrl": "https://backoffice-bff.se.kbs1.ir", "AllowedHosts": "*" } ``` ### appsettings.Staging.json (FrontOffice): ```json { "GwUrl": "https://frontoffice-bff.se.kbs1.ir", "AllowedHosts": "*" } ``` ### appsettings.json (BFF): ```json { "ConnectionStrings": { "DefaultConnection": "Host=postgres;Database=cms;Username=xxx;Password=xxx" }, "CMSMSAddress": "https://cms.se.kbs1.ir", "Jwt": { "Secret": "xxx", "Issuer": "FourSat", "Audience": "FourSat" } } ``` --- ## 🔧 Kubernetes Resources ### Deployment Template: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: backoffice spec: replicas: 2 selector: matchLabels: app: backoffice template: spec: containers: - name: backoffice image: git.se.kbs1.ir/admin/backoffice:latest ports: - containerPort: 80 env: - name: ASPNETCORE_ENVIRONMENT value: "Staging" ``` ### Service Template: ```yaml apiVersion: v1 kind: Service metadata: name: backoffice-svc spec: selector: app: backoffice ports: - port: 80 targetPort: 80 ``` ### Ingress Template: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: backoffice-ingress spec: rules: - host: backoffice.se.kbs1.ir http: paths: - path: / pathType: Prefix backend: service: name: backoffice-svc port: number: 80 ``` --- ## 🏥 Health Checks ### CMS Health Endpoints: | Endpoint | استفاده | |----------|---------| | `/health` | وضعیت کلی | | `/health/ready` | Readiness probe | | `/health/live` | Liveness probe | ### Kubernetes Probes: ```yaml livenessProbe: httpGet: path: /health/live port: 80 initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: httpGet: path: /health/ready port: 80 initialDelaySeconds: 5 periodSeconds: 5 ``` --- ## 📊 Monitoring ### Hangfire Dashboard: ``` https://cms.se.kbs1.ir/hangfire ``` ### Logs: ```bash # Kubernetes logs kubectl logs -f deployment/cms -n foursat # Docker logs docker logs -f cms ``` --- ## 🔄 Deploy Process ### 1. Manual Deploy: ```bash # BackOffice cd BackOffice ./build-deps.sh git add . git commit -m "Deploy: v1.x.x" git push kub-stage main # BFF/CMS cd BackOffice.BFF git add . git commit -m "Deploy: v1.x.x" git push kub-stage main ``` ### 2. Verify Deployment: ```bash # Check pods kubectl get pods -n foursat # Check services kubectl get svc -n foursat # Check ingress kubectl get ingress -n foursat ``` ### 3. Rollback: ```bash # Rollback to previous version kubectl rollout undo deployment/backoffice -n foursat ``` --- ## 🛠️ Troubleshooting ### Build Failed: ```bash # Check proto DLLs ls BackOffice/libs/*.dll | wc -l # Should be 24 # Rebuild ./build-deps.sh ``` ### Image Push Failed: ```bash # Login to registry docker login git.se.kbs1.ir # Check daemon.json cat /etc/docker/daemon.json ``` ### Pod CrashLoopBackOff: ```bash # Check logs kubectl logs pod-name -n foursat # Check events kubectl describe pod pod-name -n foursat ``` --- ## 📚 مستندات مرتبط - [BackOffice Documentation](./01-BACKOFFICE.md) - [Proto Guide](./02-PROTO-GUIDE.md) - [CMS Documentation](./04-CMS.md)