diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..c681ed5 --- /dev/null +++ b/.env.production @@ -0,0 +1,2 @@ +# 生产环境配置 +VITE_API_BASE_URL=https://qiyuan-rtc-api.airlabs.art diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index a45dba4..de2dfa6 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -49,9 +49,27 @@ jobs: - name: Update K8s Manifests run: | - sed -i "s|\${CI_REGISTRY_IMAGE}/web:latest|${{ secrets.SWR_SERVER }}/${{ secrets.SWR_ORG }}/rtc-web:latest|g" k8s/web-deployment.yaml + # 1. 判断分支 + if [[ "${{ github.ref_name }}" == "main" || "${{ github.ref_name }}" == "master" ]]; then + echo "Environment: Production" + DEPLOY_FILE="k8s/web-deployment-prod.yaml" + INGRESS_FILE="k8s/ingress.yaml" + else + echo "Environment: Development" + DEPLOY_FILE="k8s/web-deployment-dev.yaml" + INGRESS_FILE="k8s/ingress-dev.yaml" + fi + + # 2. 替换镜像地址 + sed -i "s|\${CI_REGISTRY_IMAGE}/web:latest|${{ secrets.SWR_SERVER }}/${{ secrets.SWR_ORG }}/rtc-web:latest|g" $DEPLOY_FILE - kubectl apply -f k8s/web-deployment.yaml - kubectl apply -f k8s/ingress.yaml + # 3. 应用配置 + kubectl apply -f $DEPLOY_FILE + kubectl apply -f $INGRESS_FILE - kubectl rollout restart deployment/rtc-web + # 4. 根据分支重启对应服务 + if [[ "${{ github.ref_name }}" == "main" || "${{ github.ref_name }}" == "master" ]]; then + kubectl rollout restart deployment/rtc-web + else + kubectl rollout restart deployment/rtc-web-dev + fi diff --git a/k8s/ingress-dev.yaml b/k8s/ingress-dev.yaml new file mode 100644 index 0000000..8240380 --- /dev/null +++ b/k8s/ingress-dev.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: rtc-web-ingress-dev + annotations: + kubernetes.io/ingress.class: "traefik" +spec: + rules: + - host: qiyuan-rtc-dev-web.airlabs.art + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: rtc-web-dev + port: + number: 80 diff --git a/k8s/ingress.yaml b/k8s/ingress.yaml index e329c3c..f7b6ec1 100644 --- a/k8s/ingress.yaml +++ b/k8s/ingress.yaml @@ -6,22 +6,9 @@ metadata: kubernetes.io/ingress.class: "traefik" spec: rules: - - http: + - host: qiyuan-rtc-web.airlabs.art + http: paths: - - path: /api - pathType: Prefix - backend: - service: - name: rtc-backend - port: - number: 8000 - - path: /admin - pathType: Prefix - backend: - service: - name: rtc-backend - port: - number: 8000 - path: / pathType: Prefix backend: @@ -29,3 +16,4 @@ spec: name: rtc-web port: number: 80 + diff --git a/k8s/web-deployment-dev.yaml b/k8s/web-deployment-dev.yaml new file mode 100644 index 0000000..736d260 --- /dev/null +++ b/k8s/web-deployment-dev.yaml @@ -0,0 +1,41 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: rtc-web-dev + labels: + app: rtc-web-dev +spec: + replicas: 1 # 测试环境 1 个副本 + selector: + matchLabels: + app: rtc-web-dev + template: + metadata: + labels: + app: rtc-web-dev + spec: + containers: + - name: rtc-web + image: ${CI_REGISTRY_IMAGE}/web:latest + imagePullPolicy: Always + ports: + - containerPort: 80 + resources: + requests: + memory: "64Mi" + cpu: "100m" + limits: + memory: "512Mi" + cpu: "500m" +--- +apiVersion: v1 +kind: Service +metadata: + name: rtc-web-dev +spec: + selector: + app: rtc-web-dev + ports: + - protocol: TCP + port: 80 + targetPort: 80 diff --git a/k8s/web-deployment.yaml b/k8s/web-deployment-prod.yaml similarity index 98% rename from k8s/web-deployment.yaml rename to k8s/web-deployment-prod.yaml index c9f1b5b..aca3bdc 100644 --- a/k8s/web-deployment.yaml +++ b/k8s/web-deployment-prod.yaml @@ -5,7 +5,7 @@ metadata: labels: app: rtc-web spec: - replicas: 1 + replicas: 2 selector: matchLabels: app: rtc-web