游戏服务 (game)

game 类是 yldm 集群里的游戏服务器分组,所有工作负载部署在 game namespace,由 ArgoCD 微服务 ApplicationSet yldm-services(List generator)按列表元素生成 Application。当前列表中只有 dnf-server 处于启用状态,其余四个服务(boardserver / cardserver / pvpserver / rpgserver)的列表元素被注释掉了,但 manifest 仍保留在 applications/game/*

总览

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 host board.yldm.tech,开启 session-cookie 亲和(boardserver-session)。HPA 2–8 副本,PDB minAvailable: 1,带 VPA。secret 从 Vault yldm/production/boardserveryldm/production/commonyldm/database 经 ExternalSecret 注入到 boardserver-db-secret。当前在 ApplicationSet 中被注释停用。
  • Name
    cardserver
    Description
    镜像 ghcr.io/yldm-tech/cardserver:2.3.1,2 副本 Deployment,端口 8080 / 9090。ingress host card.yldm.tech,session-cookie cardserver-session。HPA 2–8,PDB minAvailable: 1,带 VPA。secret 来自 Vault yldm/production/cardserveryldm/production/commonyldm/database,注入到 cardserver-db-secret。当前停用。
  • Name
    pvpserver
    Description
    镜像 ghcr.io/yldm-tech/pvpserver:2.3.1,2 副本 Deployment,端口 8080 / 9090。ingress host pvp.yldm.tech,session-cookie pvpserver-session。HPA 2–8,PDB minAvailable: 1,带 VPA。secret 来自 Vault yldm/production/pvpserveryldm/production/commonyldm/database,注入到 pvpserver-db-secret。当前停用。
  • Name
    rpgserver
    Description
    镜像 ghcr.io/yldm-tech/rpgserver:2.3.1,2 副本 Deployment,端口 8080 / 9090。ingress host rpg.yldm.tech,session-cookie rpgserver-session。HPA 2–8,PDB minAvailable: 1,带 VPA。secret 来自 Vault yldm/production/rpgserveryldm/production/commonyldm/database,注入到 rpgserver-db-secret;环境变量同时提供 DB_*DATABASE_* 两套命名。当前停用。
  • Name
    dnf-server
    Description
    DNF 私服,game 类中唯一启用的服务。一个 Application 管理两个变体:dnf-weibian(微变,公网 IP 129.150.55.22,经 frps1)与 dnf-chaobian(超变,公网 IP 138.2.110.59,经 frps2),外加 FastAPI 管理后台 dnf-backend(ingress host api.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。

评论