diff --git a/README.md b/README.md index c27eb93..65d2519 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,10 @@ - 修当前平台的发版链路 - 让应用仓库在发版时推送自己的 release 结果 - 按固定 nginx + `NodePort` 代理模型组织前后端对外暴露 +- 按用户或平台已分配的 `NodePort` 配置 nginx 对外入口 +- 在必填私有配置缺失时先逐项询问,再保留未解决的缺失警告 +- 在应用依赖平台 shared 之外的私有服务时,补齐对应资源或明确外部依赖来源,而不是只写连接参数 +- 对应用自带私有依赖的内部口令优先自动生成,对外部集成凭据再向用户逐项索取 不适合处理: diff --git a/gitops-app-onboarding/SKILL.md b/gitops-app-onboarding/SKILL.md index e938c9a..34791ba 100644 --- a/gitops-app-onboarding/SKILL.md +++ b/gitops-app-onboarding/SKILL.md @@ -218,6 +218,8 @@ deploy/helm// - 所有 Service 暴露方式都从 values 读取 - nginx 对外 Service 固定使用 `NodePort` - 后端 Service 默认使用集群内访问类型,不对外暴露 `NodePort` +- 如果应用运行时依赖某个不属于平台 shared 的私有服务,Chart / release bundle 必须把该依赖的来源表达清楚:要么生成应用自带资源,要么明确引用用户已提供的外部地址;不要只留下一个指向不存在服务的 host +- `NodePort` 必须来自用户或平台已分配值,agent 不得自行猜测或默认分配端口 - 不要生成 Ingress 模板或 Ingress values - 设置 `enableServiceLinks: false` - 支持 `imagePullSecrets` @@ -241,11 +243,19 @@ deploy/helm// - 固定使用 nginx 作为统一入口,代理前端与后端路径 - 对外只暴露 nginx 入口,并通过 `NodePort` 提供入口访问 - 后端服务默认只在集群内通信 +- 每个应用对外只保留一个 nginx `NodePort` 入口 - 不生成 Ingress 资源,也不要在 values 中保留 Ingress 开关 - 不要因为应用有多个内部服务,就擅自发明多个公网 host 如果项目当前没有现成的前端代理层,也应按这个固定模型为对外入口预留 nginx 代理方案,而不是改成 Ingress。 +`NodePort` 处理规则: + +- 如果用户或项目文档已经提供了分配好的 `NodePort`,直接使用 +- 如果没有提供,先完成所有非阻塞工作,最后只问用户一个最小必要问题来索取该端口 +- 不要擅自写入示例端口或看起来顺手的默认值,例如 `30080`、`30081` +- 如果用户暂时没有提供,最终输出中必须明确说明 nginx 对外 `NodePort` 尚未分配,因此外部访问配置未完成 + ## Release Bundle 规则 应用仓库中的 `deploy/release/` 是导出给当前 GitOps 仓库的标准模板。 @@ -274,6 +284,7 @@ deploy/helm// - 私有镜像拉取时包含 `imagePullSecrets` - 与 Chart schema 保持一致 - nginx 对外入口使用 `NodePort` +- `NodePort` 值来自用户或平台已分配结果,而不是模板内置默认值 - 不包含 Ingress 配置项 ### `secret.yaml` @@ -283,8 +294,12 @@ deploy/helm// 规则: - 不要为了“看起来完整”而伪造假的生产值 -- 如果这些值是接入该应用所必需的,应在完成所有非阻塞工作后向用户索取 +- 先区分“外部集成凭据”和“应用自带私有依赖的内部口令” +- 如果是外部集成凭据,应在完成所有非阻塞工作后主动向用户索取,而不是只在最后留警告 +- 如果是应用自带私有依赖的内部口令,优先由生成流程一次性生成并写入 release secret,而不是要求用户手填 - 如果用户暂时没有提供,不要造占位内容冒充可部署配置 +- 对部署阻塞项,按最小必要粒度逐项提问,优先直接问“这一项应填什么” +- 只有当用户明确暂不提供、或本轮对话结束时仍未补齐,才在最终输出中保留缺失项警告 - 可以只保留结构,或暂不生成具体 secret 内容,但必须在最终输出中明确警告缺失项与影响 release bundle 只负责导出当前应用自己的发布结果,不负责维护 GitOps 仓库中的其他对象。 @@ -317,6 +332,7 @@ shared 边界: - shared 只负责共享基础设施和通用运行时地址 - `Neo4j` 不再作为平台共享基础设施提供;如应用需要图数据库,应由应用自己部署和维护 +- 只要应用运行时配置仍引用某个应用私有依赖,就应在应用 Chart / release bundle 中把它一并表达出来,而不是只在 values 里保留连接参数 - 不要把某个厂商的客户端证书、私钥、应用专属 `app_id`、tenant id、client id、namespace id、应用独有 webhook 签名密钥放进 `shared/` - 镜像拉取默认使用 `registry-pull-secret`,不要随便为每个应用再造一个 pull secret,除非平台模型发生变化 @@ -340,6 +356,8 @@ shared 边界: - 只在真正阻塞最终可部署结果时才问 - 先做完不依赖这些值的工作 - 先确认是否启用百智云用户鉴权,再按固定顺序逐项索取必填材料 +- 对外部集成字段,应在非阻塞工作完成后逐项索取,而不是直接跳到最终缺失项警告 +- 对应用自带私有依赖内部口令,优先自动生成;只有用户明确要求自定义时才向用户索取 - 不要用“把需要的都给我”这种模糊问法 - 缺少任一必填项时,要明确指出当前卡在哪一项