Skip to content

fix(discovery): fall back to the pod when Agones publishes no PodIP#62

Merged
hbrombeer merged 1 commit into
mainfrom
worktree-podip-fallback
Jul 13, 2026
Merged

fix(discovery): fall back to the pod when Agones publishes no PodIP#62
hbrombeer merged 1 commit into
mainfrom
worktree-podip-fallback

Conversation

@hbrombeer

Copy link
Copy Markdown
Member

The proxy threw away every pushed gamemode:

[plugin-agones] Failed to register Agones GameServer
  (serverName=duel-6mtd4-h9pqp, reason=missing_address, addressType=PodIP)

Why

Agones does not always publish the pod's address in the GameServer's status. Verified live in vcluster-dahendriik:

GameServer status.addresses
minestom-lobby-… (bundle chart) Hostname, InternalIP, PodIP
duel-… (forge Fleet, pushed gamemode) Hostname, InternalIP — no PodIP

A proxy that insists on PodIP therefore registers no backend for a pushed gamemode. The server builds, deploys, reports Ready, sits there healthy — and no player can ever reach it. From the outside that is indistinguishable from a broken game. It is also why /queue "did not work": the command lives on the duel server, and there was no route to it.

The fix

The pod is where that address comes from anyway, and Agones names the pod after the GameServer — so read it directly when the status does not carry it.

Never the node's InternalIP: that would route players to a machine instead of to their server, which is worse than failing.

Same bug and same fix as service-match#12, which hit it from the allocator's side.

Needs pods: get on the proxy's Role — forge side follows.

The proxy threw away every pushed gamemode:

  Failed to register Agones GameServer (serverName=duel-…, reason=missing_address,
  addressType=PodIP)

Agones does not always publish the pod's address in the GameServer's status.
The bundle's lobby fleets carry Hostname, InternalIP and PodIP; the fleets
forge renders for a pushed gamemode carry only the first two. A proxy that
insists on PodIP therefore registers no backend for them at all — the server
builds, deploys, reports Ready, and no player can ever reach it. From the
outside that is indistinguishable from a broken game.

The pod is where that address comes from anyway, and Agones names it after the
GameServer, so read it directly when the status does not carry it. Never the
node's InternalIP: that would route players to a machine instead of to their
server.

Needs pods:get on the proxy's Role (forge side follows).
@sonarqubecloud

Copy link
Copy Markdown

@hbrombeer hbrombeer merged commit 5923dc5 into main Jul 13, 2026
3 checks passed
@hbrombeer hbrombeer deleted the worktree-podip-fallback branch July 13, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant