diff --git a/.gitea/workflows/deploy-cube.yml b/.gitea/workflows/deploy-cube.yml index 18a8eb0..9a638ad 100644 --- a/.gitea/workflows/deploy-cube.yml +++ b/.gitea/workflows/deploy-cube.yml @@ -45,8 +45,12 @@ jobs: docker build -f "apps/$APP/Dockerfile" -t "$IMAGE:${{ steps.tag.outputs.sha }}" . docker push "$IMAGE:${{ steps.tag.outputs.sha }}" + - name: Initialize K8s resources + run: | + kubectl apply -f apps/cube/k8s/all.yaml + kubectl apply -f apps/cube/k8s/registry-ingress.yaml + - name: Roll out to k3s - # runner 是 gnoc 用户 host shell 模式,直接用 ~/.kube/config(已配好),无需 secret run: | kubectl -n "cube-$APP" set image "deploy/$APP" "$APP=$IMAGE:${{ steps.tag.outputs.sha }}" kubectl -n "cube-$APP" rollout status "deploy/$APP" --timeout=120s diff --git a/.gitea/workflows/deploy-piano-sheet.yml b/.gitea/workflows/deploy-piano-sheet.yml index e7b6e79..4b8f38e 100644 --- a/.gitea/workflows/deploy-piano-sheet.yml +++ b/.gitea/workflows/deploy-piano-sheet.yml @@ -48,7 +48,7 @@ jobs: - name: Initialize K8s resources run: | - kubectl apply -f apps/piano-sheet/k8s/ + kubectl apply -f apps/piano-sheet/k8s/all.yaml - name: Roll out to k3s run: | diff --git a/.gitea/workflows/deploy-simpleasm.yml b/.gitea/workflows/deploy-simpleasm.yml index 099eaf0..6d34070 100644 --- a/.gitea/workflows/deploy-simpleasm.yml +++ b/.gitea/workflows/deploy-simpleasm.yml @@ -45,6 +45,10 @@ jobs: docker build -f "apps/$APP/Dockerfile" -t "$IMAGE:${{ steps.tag.outputs.sha }}" . docker push "$IMAGE:${{ steps.tag.outputs.sha }}" + - name: Initialize K8s resources + run: | + kubectl apply -f apps/simpleasm/k8s/all.yaml + - name: Roll out to k3s run: | kubectl -n "cube-$APP" set image "deploy/$APP" "$APP=$IMAGE:${{ steps.tag.outputs.sha }}" diff --git a/apps/cube/k8s/deployment.yaml b/apps/cube/k8s/all.yaml similarity index 64% rename from apps/cube/k8s/deployment.yaml rename to apps/cube/k8s/all.yaml index 45ffb66..4fcc49c 100644 --- a/apps/cube/k8s/deployment.yaml +++ b/apps/cube/k8s/all.yaml @@ -1,3 +1,8 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: cube-cube +--- apiVersion: apps/v1 kind: Deployment metadata: @@ -44,3 +49,35 @@ spec: limits: cpu: 200m memory: 64Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: cube + namespace: cube-cube +spec: + selector: + app: cube + ports: + - name: http + port: 80 + targetPort: 8080 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: cube + namespace: cube-cube +spec: + ingressClassName: traefik + rules: + - host: cube.famzheng.me + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: cube + port: + number: 80 diff --git a/apps/cube/k8s/ingress.yaml b/apps/cube/k8s/ingress.yaml deleted file mode 100644 index e9367cc..0000000 --- a/apps/cube/k8s/ingress.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: cube - namespace: cube-cube -spec: - ingressClassName: traefik - rules: - - host: cube.famzheng.me - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: cube - port: - number: 80 diff --git a/apps/cube/k8s/namespace.yaml b/apps/cube/k8s/namespace.yaml deleted file mode 100644 index 81c1f45..0000000 --- a/apps/cube/k8s/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: cube-cube diff --git a/apps/cube/k8s/_registry-ingress.yaml b/apps/cube/k8s/registry-ingress.yaml similarity index 100% rename from apps/cube/k8s/_registry-ingress.yaml rename to apps/cube/k8s/registry-ingress.yaml diff --git a/apps/cube/k8s/service.yaml b/apps/cube/k8s/service.yaml deleted file mode 100644 index 9544113..0000000 --- a/apps/cube/k8s/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: cube - namespace: cube-cube -spec: - selector: - app: cube - ports: - - name: http - port: 80 - targetPort: 8080 diff --git a/apps/piano-sheet/k8s/deployment.yaml b/apps/piano-sheet/k8s/all.yaml similarity index 52% rename from apps/piano-sheet/k8s/deployment.yaml rename to apps/piano-sheet/k8s/all.yaml index 9e04783..47c12f6 100644 --- a/apps/piano-sheet/k8s/deployment.yaml +++ b/apps/piano-sheet/k8s/all.yaml @@ -1,3 +1,22 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: cube-piano +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: piano-sheet-data + namespace: cube-piano +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + # 图片直存 sqlite,留出宽裕空间 + storage: 10Gi + # storageClassName 留空 → 走 k3s 默认 local-path(hostPath,单节点足够) +--- apiVersion: apps/v1 kind: Deployment metadata: @@ -56,3 +75,47 @@ spec: - name: data persistentVolumeClaim: claimName: piano-sheet-data +--- +apiVersion: v1 +kind: Service +metadata: + name: piano-sheet + namespace: cube-piano +spec: + selector: + app: piano-sheet + ports: + - name: http + port: 80 + targetPort: 8080 +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: bodylimit + namespace: cube-piano +spec: + buffering: + maxRequestBodyBytes: 700000000 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: piano-sheet + namespace: cube-piano + annotations: + # 上传整组图片可能 ~600MB,调高 traefik 默认上限 + traefik.ingress.kubernetes.io/router.middlewares: cube-piano-bodylimit@kubernetescrd +spec: + ingressClassName: traefik + rules: + - host: piano.famzheng.me + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: piano-sheet + port: + number: 80 diff --git a/apps/piano-sheet/k8s/ingress.yaml b/apps/piano-sheet/k8s/ingress.yaml deleted file mode 100644 index fd44714..0000000 --- a/apps/piano-sheet/k8s/ingress.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: piano-sheet - namespace: cube-piano - annotations: - # 上传整组图片可能 ~600MB,调高 traefik 默认上限 - traefik.ingress.kubernetes.io/router.middlewares: cube-piano-bodylimit@kubernetescrd -spec: - ingressClassName: traefik - rules: - - host: piano.famzheng.me - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: piano-sheet - port: - number: 80 ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: bodylimit - namespace: cube-piano -spec: - buffering: - maxRequestBodyBytes: 700000000 diff --git a/apps/piano-sheet/k8s/namespace.yaml b/apps/piano-sheet/k8s/namespace.yaml deleted file mode 100644 index cbe25d0..0000000 --- a/apps/piano-sheet/k8s/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: cube-piano diff --git a/apps/piano-sheet/k8s/pvc.yaml b/apps/piano-sheet/k8s/pvc.yaml deleted file mode 100644 index be06840..0000000 --- a/apps/piano-sheet/k8s/pvc.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: piano-sheet-data - namespace: cube-piano -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - # 图片直存 sqlite,留出宽裕空间 - storage: 10Gi - # storageClassName 留空 → 走 k3s 默认 local-path(hostPath,单节点足够) diff --git a/apps/piano-sheet/k8s/service.yaml b/apps/piano-sheet/k8s/service.yaml deleted file mode 100644 index 68cea61..0000000 --- a/apps/piano-sheet/k8s/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: piano-sheet - namespace: cube-piano -spec: - selector: - app: piano-sheet - ports: - - name: http - port: 80 - targetPort: 8080 diff --git a/apps/simpleasm/k8s/deployment.yaml b/apps/simpleasm/k8s/all.yaml similarity index 60% rename from apps/simpleasm/k8s/deployment.yaml rename to apps/simpleasm/k8s/all.yaml index 72f94cc..552a8bd 100644 --- a/apps/simpleasm/k8s/deployment.yaml +++ b/apps/simpleasm/k8s/all.yaml @@ -1,3 +1,21 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: cube-simpleasm +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: simpleasm-data + namespace: cube-simpleasm +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + # storageClassName 留空 → 走 k3s 默认 local-path(hostPath,单节点足够) +--- apiVersion: apps/v1 kind: Deployment metadata: @@ -56,3 +74,35 @@ spec: - name: data persistentVolumeClaim: claimName: simpleasm-data +--- +apiVersion: v1 +kind: Service +metadata: + name: simpleasm + namespace: cube-simpleasm +spec: + selector: + app: simpleasm + ports: + - name: http + port: 80 + targetPort: 8080 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: simpleasm + namespace: cube-simpleasm +spec: + ingressClassName: traefik + rules: + - host: asm.famzheng.me + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: simpleasm + port: + number: 80 diff --git a/apps/simpleasm/k8s/ingress.yaml b/apps/simpleasm/k8s/ingress.yaml deleted file mode 100644 index dc56a58..0000000 --- a/apps/simpleasm/k8s/ingress.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: simpleasm - namespace: cube-simpleasm -spec: - ingressClassName: traefik - rules: - - host: asm.famzheng.me - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: simpleasm - port: - number: 80 diff --git a/apps/simpleasm/k8s/namespace.yaml b/apps/simpleasm/k8s/namespace.yaml deleted file mode 100644 index ecf9665..0000000 --- a/apps/simpleasm/k8s/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: cube-simpleasm diff --git a/apps/simpleasm/k8s/pvc.yaml b/apps/simpleasm/k8s/pvc.yaml deleted file mode 100644 index f8ad702..0000000 --- a/apps/simpleasm/k8s/pvc.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: simpleasm-data - namespace: cube-simpleasm -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - # storageClassName 留空 → 走 k3s 默认 local-path(hostPath,单节点足够) diff --git a/apps/simpleasm/k8s/service.yaml b/apps/simpleasm/k8s/service.yaml deleted file mode 100644 index 0694226..0000000 --- a/apps/simpleasm/k8s/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: simpleasm - namespace: cube-simpleasm -spec: - selector: - app: simpleasm - ports: - - name: http - port: 80 - targetPort: 8080