diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml index 9e15309..8e355fe 100644 --- a/.gitea/workflows/kub-deploy.yml +++ b/.gitea/workflows/kub-deploy.yml @@ -67,8 +67,15 @@ jobs: - name: Deploy to Kubernetes run: | export SSHPASS="${{ secrets.SERVER_PASSWORD }}" + + # Copy K8s manifests to server + sshpass -e scp -o StrictHostKeyChecking=no k8s/staging/backoffice-deployment.yaml root@${{ env.K8S_SERVER }}:/tmp/backoffice-deployment.yaml + + # Apply manifests and restart sshpass -e ssh -o StrictHostKeyChecking=no root@${{ env.K8S_SERVER }} " - kubectl rollout restart deployment/backoffice - kubectl rollout status deployment/backoffice --timeout=180s + kubectl apply -f /tmp/backoffice-deployment.yaml && + kubectl rollout restart deployment/backoffice && + kubectl rollout status deployment/backoffice --timeout=180s && + rm -f /tmp/backoffice-deployment.yaml " echo "✅ Deployed!" diff --git a/k8s/staging/backoffice-deployment.yaml b/k8s/staging/backoffice-deployment.yaml new file mode 100644 index 0000000..811cbd7 --- /dev/null +++ b/k8s/staging/backoffice-deployment.yaml @@ -0,0 +1,84 @@ +--- +# BackOffice UI Deployment (Blazor WASM + nginx) +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backoffice + namespace: default + labels: + app: backoffice +spec: + replicas: 1 + selector: + matchLabels: + app: backoffice + template: + metadata: + labels: + app: backoffice + spec: + containers: + - name: backoffice + image: 194.5.195.53:30080/admin/backoffice:latest + imagePullPolicy: Always + ports: + - containerPort: 80 + name: http + env: + - name: BLAZOR_ENVIRONMENT + value: "Staging" + - name: GW_URL + value: "https://cms.se.kbs1.ir" + resources: + requests: + memory: "128Mi" + cpu: "100m" + limits: + memory: "512Mi" + cpu: "500m" + imagePullSecrets: + - name: gitea-registry-secret + +--- +# BackOffice UI Service +apiVersion: v1 +kind: Service +metadata: + name: backoffice-svc + namespace: default +spec: + selector: + app: backoffice + ports: + - port: 80 + targetPort: 80 + type: ClusterIP + +--- +# BackOffice UI Ingress +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: backoffice-ingress + namespace: default + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" + nginx.ingress.kubernetes.io/ssl-redirect: "true" + nginx.ingress.kubernetes.io/service-upstream: "true" +spec: + ingressClassName: nginx + tls: + - hosts: + - backoffice.se.kbs1.ir + secretName: backoffice-tls + rules: + - host: backoffice.se.kbs1.ir + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: backoffice-svc + port: + number: 80