游戏服务 (game)
game 类是 yldm 集群里的游戏服务器分组,所有工作负载部署在 game namespace,由 ArgoCD 微服务 ApplicationSet yldm-services(List generator)按列表元素生成 Application。当前列表中只有 dnf-server 处于启用状态,其余四个服务(boardserver / cardserver / pvpserver / rpgserver)的列表元素被注释掉了,但 manifest 仍保留在 applications/game/*。
namespace: game 与 namePrefix: game-,所以生成的资源名形如 game-boardserver-*。这一组服务都没有 ServiceMonitor。总览
game 类内部分两种形态。一种是基于 ghcr.io/yldm-tech 镜像的 Go 服务(boardserver / cardserver / pvpserver / rpgserver),都是无状态 Deployment,通过 nginx ingress 暴露在 *.yldm.tech 子域,外部数据库与 Redis 连接信息从 Vault 经 ExternalSecret 注入。另一种是自托管的 DNF 私服 dnf-server,每个变体自带 mysql StatefulSet 与持久化存储,不走集群 ingress,而是经 frpc 隧道到 Oracle VPS 上的 frps 暴露公网。
DNF 私服的故障排查(节点重启后"连不上"、middleware 不重连 mysql 等)有独立的深度页面,见 DNF 私服。
服务清单
- Name
- boardserver
- Description
- 镜像
ghcr.io/yldm-tech/boardserver:2.3.1,2 副本 Deployment,容器端口 8080(http)/ 9090(metrics)。ingress hostboard.yldm.tech,开启 session-cookie 亲和(boardserver-session)。HPA 2–8 副本,PDBminAvailable: 1,带 VPA。secret 从 Vaultyldm/production/boardserver、yldm/production/common、yldm/database经 ExternalSecret 注入到boardserver-db-secret。当前在 ApplicationSet 中被注释停用。
- Name
- cardserver
- Description
- 镜像
ghcr.io/yldm-tech/cardserver:2.3.1,2 副本 Deployment,端口 8080 / 9090。ingress hostcard.yldm.tech,session-cookiecardserver-session。HPA 2–8,PDBminAvailable: 1,带 VPA。secret 来自 Vaultyldm/production/cardserver、yldm/production/common、yldm/database,注入到cardserver-db-secret。当前停用。
- Name
- pvpserver
- Description
- 镜像
ghcr.io/yldm-tech/pvpserver:2.3.1,2 副本 Deployment,端口 8080 / 9090。ingress hostpvp.yldm.tech,session-cookiepvpserver-session。HPA 2–8,PDBminAvailable: 1,带 VPA。secret 来自 Vaultyldm/production/pvpserver、yldm/production/common、yldm/database,注入到pvpserver-db-secret。当前停用。
- Name
- rpgserver
- Description
- 镜像
ghcr.io/yldm-tech/rpgserver:2.3.1,2 副本 Deployment,端口 8080 / 9090。ingress hostrpg.yldm.tech,session-cookierpgserver-session。HPA 2–8,PDBminAvailable: 1,带 VPA。secret 来自 Vaultyldm/production/rpgserver、yldm/production/common、yldm/database,注入到rpgserver-db-secret;环境变量同时提供DB_*与DATABASE_*两套命名。当前停用。
- Name
- dnf-server
- Description
- DNF 私服,game 类中唯一启用的服务。一个 Application 管理两个变体:
dnf-weibian(微变,公网 IP129.150.55.22,经 frps1)与dnf-chaobian(超变,公网 IP138.2.110.59,经 frps2),外加 FastAPI 管理后台dnf-backend(ingress hostapi.dunaifen.games)与 mysql 备份 CronJob。两个变体共享镜像registry.dunaifen.games/dnf:2.1.6,各自带独立 mysql StatefulSet 与 PVC。详见 DNF 私服深度页。
frp 公网暴露
DNF 私服不依赖集群 ingress,而是通过 Oracle VPS 上的 frp 隧道暴露公网:客户端 → <public-ip>:881(gate)/7600(launcher)→ frps → 集群内 frpc pod → dnf-<srv>-tcp/udp Service → 游戏 pod。两个变体对外暴露相同的端口(881、7600、7001 等会相互冲突),因此分别挂在不同的公网 IP 与 frps 实例上,不能共用一个 frps。基于 ghcr.io/yldm-tech 的四个服务则相反,走标准 nginx ingress 暴露在 *.yldm.tech。
运行状态与上线开关
是否在集群里实际运行,由 ApplicationSet yldm-services 的 List generator 决定,而不是看目录是否存在。boardserver / cardserver / pvpserver / rpgserver 的列表元素因近乎零流量被注释掉,manifest 保留待用;要重新上线,取消注释对应列表元素即可(applicationsSync: sync 会重新生成 Application)。镜像 tag 由 argocd-image-updater 按 semver 策略回写到各服务的 kustomization images: 块,不要手动 pin。