feat: add native Azure support and configurable ingress for livekit-server chart#154
Open
fajarhide wants to merge 2 commits intolivekit:masterfrom
Open
feat: add native Azure support and configurable ingress for livekit-server chart#154fajarhide wants to merge 2 commits intolivekit:masterfrom
fajarhide wants to merge 2 commits intolivekit:masterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add Native Azure LoadBalancer Support for LiveKit Server
Problem Statement
On Azure AKS, using
HostNetworkorClusterIPfor LiveKit often leads to WebRTC connection failures due to Azure's strict Outbound NAT restrictions. Standard Ingress Controllers (like Nginx) also face challenges routing high-volume UDP traffic in a way that remains compatible with LiveKit's ICE candidate discovery.Proposed Changes
This PR introduces a new
loadBalancer.type: azureto thelivekit-serverHelm chart, making it "Azure Native."Key Enhancements:
loadBalancer.type: azureautomatically configures a Service of typeLoadBalancerand correctly exposes the necessary multiplexed ports (rtc-tcp,rtc-udp, andturn-udp/tcp).loadBalancer.ingress.enabled(default:true). This allow users to disable the chart-generated Ingress while still using a LoadBalancer for Media traffic. This is a Best Practice for Azure, where SSL is often handled by a manual/separate Ingress while Media goes through a dedicated LB IP.3478(UDP/TCP) when the Azure LoadBalancer is active to ensure reliable fallback connectivity.Why this is needed
Azure's LoadBalancer doesn't support massive UDP port ranges easily. By providing a native type that focuses on multiplexed ports and allowing users to decouple Ingress from the Service, we enable a stable, production-ready LiveKit deployment on Azure with minimal manual overrides.
Design Decisions & Best Practices
loadBalancer.ingress.enabledtoggle, this chart remains beginner-friendly (default:true) while empowering enterprise users to disable the automatic Ingress and use their own manual/centralized Ingress setup.How to Test:
Validate Helm Template Output:
Run
helm template . -f values.yamland verify:Serviceshould havetype: LoadBalancer.7881(RTC TCP) and3478(TURN UDP/TCP) should be present in the Service spec.Ingressresource should be generated ifloadBalancer.ingress.enabledis set tofalse.Verify on Azure AKS:
Deploy the chart to an Azure cluster with the following values:
End-to-End Connectivity:
Run the LiveKit Connection Test using the server's domain (via a manual Ingress) and verify that: