-
Notifications
You must be signed in to change notification settings - Fork 347
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Using NodePort leaves proxy service externalIPs empty #1463
Comments
What is happening
What should happen
|
Doing internal routing doesn't feel very good when I actually know which nodes have Proxy running. Why can't we know the location? (This is mostly about using ExternalDNS to point to the relevant nodes directly.) |
As I learn more about k8s port management, here are some notes:
|
Dont append, just set/override the gw.Status.Addresses with the values from gw.Spec.Addresses (which eventually get set in svc.Spec.ExternalIPs) Relates to envoyproxy#1463 https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.Gateway Signed-off-by: Arko Dasgupta <arko@tetrate.io>
* only set gw.Spec.Addresses in gw.Status.Addresses Dont append, just set/override the gw.Status.Addresses with the values from gw.Spec.Addresses (which eventually get set in svc.Spec.ExternalIPs) Relates to #1463 https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.Gateway Signed-off-by: Arko Dasgupta <arko@tetrate.io> * lint Signed-off-by: Arko Dasgupta <arko@tetrate.io> --------- Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Description:
I'm trying to run Gateway on bare metal with just public-IP nodes.
I.e. no load balancer or floating IPs. Part of #1035.
When creating a Gateway without
spec.addresses
and using NodePort for proxy services, I would expect the rendered service to haveexternalIPs
set to the external IPs of the nodes where the pods are currently running. Right now, they are empty, likely because [1] and [2] means they are only set fromGatewaySpec.addresses
(this was recently added, as a start.) This should makeGatewayStatus.addresses
empty, but it's actually populated with all node addresses [3]? This leads to ExternalDNS adding nodes to RRs, that have nothing to do with the Gateway.Edit: If
GatewaySpec.addresses
are provided, the IP addresses inGatewayStatus.addresses
end up with duplicates, because of [3] and then also adding the Service externalIPs. But until I understand [3], I don't know what that function should look like.In the other direction, for NodePort, it would make sense if setting
GatewaySpec.addresses
caused the proxy pods to be scheduled on nodes that match those external IPs. Or rejecting that configuration.Repro steps:
EnvoyProxy
withNodePort
.spec.addresses
.gateway/internal/infrastructure/kubernetes/proxy/resource_provider.go
Line 100 in b1a7520
gateway/internal/gatewayapi/address.go
Line 30 in b1a7520
gateway/internal/status/gateway.go
Line 54 in b1a7520
The text was updated successfully, but these errors were encountered: