diff --git a/README.md b/README.md index 63533c7..718c679 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ | 开发 | `platform-dev/dev` | 18080 | `demo-test.5dev.cn` | Supervisor 管理 `go run .` | | 正式 | `platform-release/release` | 28080 | `demo.5dev.cn` | Supervisor 管理已发布的二进制 | -两个环境都按项目共享容器,不再为 Demo 单独保留运行 Deployment。正式端口等于开发端口加 10000;开发范围 18000–18999,正式范围 28000–28999。Service/Ingress 仍归各项目自身;正式入口配置在 `config/prod/`,选择共享 release 并转发到 28080。 +两个环境都按项目共享容器,不再为 Demo 单独保留运行 Deployment。正式端口等于开发端口加 10000;开发范围 18000–18999,正式范围 28000–28999。Service 仍归项目自身;`config/prod/` 选择共享 release 并转发到 28080。开发与正式域名、路由在 Higress Console 管理,应用配置不再带 Ingress YAML。 `GET /` 返回 `hello world` 和换行;未知路径 404,不支持的方法 405,`HEAD /` 无响应体。程序从 `PORT` 读取监听端口。入口不叠加平台登录,鉴权由项目自行实现。 @@ -27,8 +27,9 @@ kubectl exec -n platform-release deployment/release -c release -- supervisorctl - `.gitea/workflows/ci.yaml`:推送 main 或手动触发,固定提交清洁检出,运行格式检查、`go test`、`go vet` 和编译;不发布生产。 - `.gitea/workflows/release.yaml`:手动选择 Git ref 和 `operation=release`,构建版本化二进制,不再为项目推送运行镜像。 +- `config/prod/release.json` 不再保存域名,仅保留项目、端口和预期健康响应。历史记录的 `host` 不重写,读取时忽略。公网域名在网关后台管理;独立验收使用 `python3 service/infra/higress/scripts/state.py check-route demo --project-config service/project/demo/config/prod/release.json`,不由公网结果决定业务回滚。 - 发布配置在 `config/prod/release.json`,流水线校验项目名、开发/正式端口对应关系与当前开发配置,并拒绝与其他已发布项目冲突的正式端口。 -- 候选二进制先在临时 Job 中使用实际 release 基础镜像运行并验证 HTTP,再原子切换该项目的 `current`,仅重启其 Supervisor 进程,验证内部 HTTP 与正式 HTTPS。 +- 候选二进制先在临时 Job 中使用实际 release 基础镜像运行并验证 HTTP,再原子切换该项目的 `current`,仅重启其 Supervisor 进程,验证正式进程的内部 HTTP;公网检查独立执行。 - `operation=rollback` 配合 `target_revision=<完整40位提交>`,只能回退到曾通过验证的二进制版本。复用校验过的产物,不重新编译。失败发布会尝试恢复之前的项目版本,并保留失败记录。 - 二进制归档为 `/dm/service/platform/release/artifacts/demo//app`、`app.sha256`、`release.json`;正式运行副本为 `/dm/runtime/platform/release/programs/demo/versions//`,`current` 指向选定版本。它们不进入源码 Git。 - 2026-10-09 切换前的旧项目镜像仍保留在 `images/`,仅用于历史恢复。新流水线的回退目标是新二进制发行,不把旧镜像记录冒充新发行。 @@ -41,6 +42,6 @@ kubectl exec -n platform-release deployment/release -c release -- supervisorctl 构建 Pod 不挂 Kubernetes 令牌和正式运行目录;部署 Pod 可以写共享程序目录并 exec 到共享 release,因此是可信平台发布权限,而不是项目间安全隔离。release 不挂源码、开发缓存、集群令牌或宿主机 socket,程序目录只读;整个 release Pod 重启影响其中所有项目。 -新增项目只需自己的源码、工作流、端口/健康检查配置及 Service/Ingress,不增加项目运行 Deployment。首次新增入口仍需经过平台授权部署,发布流水线本身不修改集群入口。 +新增项目只需自己的源码、工作流、端口/健康检查配置及 Service,不增加项目运行 Deployment;域名与路由在网关后台创建。首次新增入口仍需经过平台授权部署,发布流水线本身不修改集群入口。 2026-10-09 已实测共享运行方案:Actions #8 的 CI 与 #9 的首次二进制发布均通过,正式域名在原独立 Demo Pod 停止后仍返回 `hello world`;运行程序位于共享 release 的 28080 端口,dev 保持原样。各次后续发布与回退结果以 Actions 和对应发行记录为准。 diff --git a/config/dev/ingress.yaml b/config/dev/ingress.yaml deleted file mode 100644 index 2679e44..0000000 --- a/config/dev/ingress.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: demo-dev - namespace: platform-dev - annotations: - traefik.ingress.kubernetes.io/router.entrypoints: web -spec: - ingressClassName: traefik - rules: - - host: demo-test.5dev.cn - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: demo-dev - port: - name: http diff --git a/config/dev/kustomization.yaml b/config/dev/kustomization.yaml index ab2ea8d..9bb4d07 100644 --- a/config/dev/kustomization.yaml +++ b/config/dev/kustomization.yaml @@ -2,4 +2,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - service.yaml - - ingress.yaml diff --git a/config/prod/ingress.yaml b/config/prod/ingress.yaml deleted file mode 100644 index 063f86c..0000000 --- a/config/prod/ingress.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: demo - namespace: platform-release - annotations: - traefik.ingress.kubernetes.io/router.entrypoints: web - traefik.ingress.kubernetes.io/router.priority: '100' -spec: - ingressClassName: traefik - rules: - - host: demo.5dev.cn - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: demo - port: - name: http diff --git a/config/prod/kustomization.yaml b/config/prod/kustomization.yaml index ab2ea8d..9bb4d07 100644 --- a/config/prod/kustomization.yaml +++ b/config/prod/kustomization.yaml @@ -2,4 +2,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - service.yaml - - ingress.yaml diff --git a/config/prod/release.json b/config/prod/release.json index b5ee680..b9dd2db 100644 --- a/config/prod/release.json +++ b/config/prod/release.json @@ -2,6 +2,5 @@ "project": "demo", "development_port": 18080, "production_port": 28080, - "host": "demo.5dev.cn", "expected_body": "hello world\n" }