From 1e04655003a009f509b592a34218f4ec2bbaa5fd Mon Sep 17 00:00:00 2001 From: Fam Zheng Date: Tue, 5 May 2026 10:38:38 +0100 Subject: [PATCH] =?UTF-8?q?ci:=20=E7=BB=9F=E4=B8=80=20k8s=20manifest=20?= =?UTF-8?q?=E4=B8=BA=20apps/*/k8s/all.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 三个 app 的 5 个独立 yaml 合成单文件 all.yaml,多 doc 内显式排序,apply 不再受目录字母序影响(这是 piano-sheet run #49 NotFound 的根因) - simpleasm/cube workflow 补 Initialize K8s resources 步骤,跟 piano-sheet 对齐;今后 manifest 改动 CI 自动 apply - cube 的 _registry-ingress.yaml 不再需要前缀绕排序,去掉 _ --- .gitea/workflows/deploy-cube.yml | 6 +- .gitea/workflows/deploy-piano-sheet.yml | 2 +- .gitea/workflows/deploy-simpleasm.yml | 4 ++ apps/cube/k8s/{deployment.yaml => all.yaml} | 37 +++++++++++ apps/cube/k8s/ingress.yaml | 18 ------ apps/cube/k8s/namespace.yaml | 4 -- ...try-ingress.yaml => registry-ingress.yaml} | 0 apps/cube/k8s/service.yaml | 12 ---- .../k8s/{deployment.yaml => all.yaml} | 63 +++++++++++++++++++ apps/piano-sheet/k8s/ingress.yaml | 30 --------- apps/piano-sheet/k8s/namespace.yaml | 4 -- apps/piano-sheet/k8s/pvc.yaml | 13 ---- apps/piano-sheet/k8s/service.yaml | 12 ---- .../k8s/{deployment.yaml => all.yaml} | 50 +++++++++++++++ apps/simpleasm/k8s/ingress.yaml | 18 ------ apps/simpleasm/k8s/namespace.yaml | 4 -- apps/simpleasm/k8s/pvc.yaml | 12 ---- apps/simpleasm/k8s/service.yaml | 12 ---- 18 files changed, 160 insertions(+), 141 deletions(-) rename apps/cube/k8s/{deployment.yaml => all.yaml} (64%) delete mode 100644 apps/cube/k8s/ingress.yaml delete mode 100644 apps/cube/k8s/namespace.yaml rename apps/cube/k8s/{_registry-ingress.yaml => registry-ingress.yaml} (100%) delete mode 100644 apps/cube/k8s/service.yaml rename apps/piano-sheet/k8s/{deployment.yaml => all.yaml} (52%) delete mode 100644 apps/piano-sheet/k8s/ingress.yaml delete mode 100644 apps/piano-sheet/k8s/namespace.yaml delete mode 100644 apps/piano-sheet/k8s/pvc.yaml delete mode 100644 apps/piano-sheet/k8s/service.yaml rename apps/simpleasm/k8s/{deployment.yaml => all.yaml} (60%) delete mode 100644 apps/simpleasm/k8s/ingress.yaml delete mode 100644 apps/simpleasm/k8s/namespace.yaml delete mode 100644 apps/simpleasm/k8s/pvc.yaml delete mode 100644 apps/simpleasm/k8s/service.yaml 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