Skip to content

Add additionalServices to the UDP ping service for a separate IPv6 LoadBalancer - #4808

Open
lazy-slackoth wants to merge 4 commits into
agones-dev:mainfrom
lazy-slackoth:ping-udp-additional-services
Open

lazy-slackoth wants to merge 4 commits into
agones-dev:mainfrom
lazy-slackoth:ping-udp-additional-services

Conversation

@lazy-slackoth

Copy link
Copy Markdown
Contributor

What type of PR is this?

/kind feature

What this PR does / Why we need it:

Adds agones.ping.udp.additionalServices, a list of extra UDP Services in front of the ping pods. Each entry takes its own name, annotations, ipFamilyPolicy, ipFamilies, loadBalancerIP, loadBalancerSourceRanges, externalTrafficPolicy, serviceType, port and nodePort; unset port, serviceType and externalTrafficPolicy fall back to agones.ping.udp.

Use case: on GKE, IPv6 external passthrough load balancers require Premium network tier, while existing IPv4 ping endpoints can be on Standard tier with a reserved static address. One dual-stack Service can't carry both, so an extra IPv6-only Service with its own annotations is needed. The ping server already listens dual-stack (udp :8080), so no binary change is required.

Default is []; the rendered chart is unchanged. Docs row added under publishVersion="1.62.0", schema updated.

Which issue(s) this PR fixes:

N/A

Special notes for your reviewer:

Tested with helm lint and helm template (default render identical apart from generated certs; LoadBalancer IPv6 and NodePort entries render as expected; schema rejects a non-integer port).

@github-actions github-actions Bot added kind/feature New features for Agones size/M labels Oct 28, 2026
@lazy-slackoth
lazy-slackoth marked this pull request as ready for review October 28, 2026 15:09
@lazy-slackoth
lazy-slackoth force-pushed the ping-udp-additional-services branch 2 times, most recently from 631ddc0 to fc7a526 Compare October 28, 2026 15:17
Lets the chart create extra UDP Services in front of the ping pods,
e.g. a separate IPv6-only LoadBalancer when IPv4 and IPv6 need different
annotations, network tiers or static addresses. Defaults to [], so the
rendered chart is unchanged.

Signed-off-by: Alexander Taran <137988972+lazy-slackoth@users.noreply.github.com>
@lazy-slackoth
lazy-slackoth force-pushed the ping-udp-additional-services branch from fc7a526 to 24c9594 Compare October 28, 2026 15:18
@lazy-slackoth lazy-slackoth changed the title Add additionalServices option for the UDP ping service Add additionalServices to the UDP ping service for a separate IPv6 LoadBalancer Oct 28, 2026
@markmandel

Copy link
Copy Markdown
Member

/gcbrun

@markmandel

Copy link
Copy Markdown
Member

@igooch - in case you want to look - you're most familiar with GKE these days 😄

@agones-bot

Copy link
Copy Markdown
Collaborator

Build Succeeded 🥳

Build Id: 53e385fc-ad61-426a-83d4-3d0a76bd440b

The following development artifacts have been built, and will exist for the next 30 days:

A preview of the website (the last 30 builds are retained):

To install this version:

git fetch https://github.com/googleforgames/agones.git pull/4808/head:pr_4808 && git checkout pr_4808
helm install agones ./install/helm/agones --namespace agones-system --set agones.image.registry=us-docker.pkg.dev/agones-images/ci --set agones.image.tag=1.62.0-dev-24c9594

@lazy-slackoth

Copy link
Copy Markdown
Contributor Author

An alternative to this implementation: a root-level additionalResources value (VictoriaMetrics charts call it extraObjects) that renders any manifests users pass in. It would cover this IPv6 Service and other one-off cases without a dedicated option each time.

@lazy-slackoth

Copy link
Copy Markdown
Contributor Author

This isn't specific to GKE. The number of IPv6 users keeps growing, so on any cloud provider it should be possible to expose allocator or ping service endpoints for IPv6 clients.

@markmandel

Copy link
Copy Markdown
Member

Sounds legit 👍🏻

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The Helm template drops explicit LoadBalancer node ports and ignores NodePort traffic policies, risking broken firewall rules and lost source-IP preservation, while misleading inheritance guidance can leave additional load balancers unrestricted.

3 open issues
What changed in this PR

Adds optional UDP ping Services to the Agones Helm chart, allowing separate IPv4 and IPv6 load balancers with independent annotations and addresses.

Changes:

  • Renders additional Services targeting the existing ping pods.
  • Adds configuration schema and an empty-list default, leaving default rendering unchanged.
  • Documents supported fields and fallback behavior for version 1.62.0.
File Description
site/​content/​en/​docs/​Installation/​Install Agones/​helm.md Documents additional UDP Services and inherited settings.
install/​helm/​agones/​values.yaml Adds the default empty list and an IPv6 configuration example.
install/​helm/​agones/​values.schema.json Defines validation for additional Service entries.
install/​helm/​agones/​templates/​ping.yaml Renders additional UDP Services with per-entry configuration.

Review effort: Balanced

Comment thread install/helm/agones/templates/ping.yaml Resolved
Comment thread install/helm/agones/templates/ping.yaml Resolved
Comment thread install/helm/agones/values.yaml Resolved
Render nodePort for LoadBalancer as well as NodePort, render
externalTrafficPolicy for both types, and name the inherited fields in
the values.yaml comment.

Signed-off-by: Alexander Taran <137988972+lazy-slackoth@users.noreply.github.com>
@lazy-slackoth

Copy link
Copy Markdown
Contributor Author

Copilot recommendations applied

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The optional UDP ping Services change has no active review issues.

No open issues 🎉

3 resolved since last review

Review effort: Balanced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/feature New features for Agones size/M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants