Commit 4b9b7ec2 authored by Justin Santa Barbara's avatar Justin Santa Barbara

Continue to support (deprecated) publicIPs

Not doing so breaks e2e tests and people that may be using them, even though we will eventually want to stop supporting this now that we have better alternatives for typical use cases (NodePort)
parent fe84643c
...@@ -44,6 +44,8 @@ type serviceInfo struct { ...@@ -44,6 +44,8 @@ type serviceInfo struct {
loadBalancerStatus api.LoadBalancerStatus loadBalancerStatus api.LoadBalancerStatus
sessionAffinityType api.ServiceAffinity sessionAffinityType api.ServiceAffinity
stickyMaxAgeMinutes int stickyMaxAgeMinutes int
// Deprecated, but required for back-compat (including e2e)
deprecatedPublicIPs []string
} }
func logTimeout(err error) bool { func logTimeout(err error) bool {
...@@ -287,6 +289,7 @@ func (proxier *Proxier) OnUpdate(services []api.Service) { ...@@ -287,6 +289,7 @@ func (proxier *Proxier) OnUpdate(services []api.Service) {
} }
info.portalIP = serviceIP info.portalIP = serviceIP
info.portalPort = servicePort.Port info.portalPort = servicePort.Port
info.deprecatedPublicIPs = service.Spec.DeprecatedPublicIPs
// Deep-copy in case the service instance changes // Deep-copy in case the service instance changes
info.loadBalancerStatus = *api.LoadBalancerStatusDeepCopy(&service.Status.LoadBalancer) info.loadBalancerStatus = *api.LoadBalancerStatusDeepCopy(&service.Status.LoadBalancer)
info.nodePort = servicePort.NodePort info.nodePort = servicePort.NodePort
...@@ -324,6 +327,9 @@ func sameConfig(info *serviceInfo, service *api.Service, port *api.ServicePort) ...@@ -324,6 +327,9 @@ func sameConfig(info *serviceInfo, service *api.Service, port *api.ServicePort)
if !info.portalIP.Equal(net.ParseIP(service.Spec.PortalIP)) { if !info.portalIP.Equal(net.ParseIP(service.Spec.PortalIP)) {
return false return false
} }
if !ipsEqual(info.deprecatedPublicIPs, service.Spec.DeprecatedPublicIPs) {
return false
}
if !api.LoadBalancerStatusEqual(&info.loadBalancerStatus, &service.Status.LoadBalancer) { if !api.LoadBalancerStatusEqual(&info.loadBalancerStatus, &service.Status.LoadBalancer) {
return false return false
} }
...@@ -350,6 +356,12 @@ func (proxier *Proxier) openPortal(service ServicePortName, info *serviceInfo) e ...@@ -350,6 +356,12 @@ func (proxier *Proxier) openPortal(service ServicePortName, info *serviceInfo) e
if err != nil { if err != nil {
return err return err
} }
for _, publicIP := range info.deprecatedPublicIPs {
err = proxier.openOnePortal(net.ParseIP(publicIP), info.portalPort, info.protocol, proxier.listenIP, info.proxyPort, service)
if err != nil {
return err
}
}
for _, ingress := range info.loadBalancerStatus.Ingress { for _, ingress := range info.loadBalancerStatus.Ingress {
if ingress.IP != "" { if ingress.IP != "" {
err = proxier.openOnePortal(net.ParseIP(ingress.IP), info.portalPort, info.protocol, proxier.listenIP, info.proxyPort, service) err = proxier.openOnePortal(net.ParseIP(ingress.IP), info.portalPort, info.protocol, proxier.listenIP, info.proxyPort, service)
...@@ -469,6 +481,9 @@ func (proxier *Proxier) openNodePort(nodePort int, protocol api.Protocol, proxyI ...@@ -469,6 +481,9 @@ func (proxier *Proxier) openNodePort(nodePort int, protocol api.Protocol, proxyI
func (proxier *Proxier) closePortal(service ServicePortName, info *serviceInfo) error { func (proxier *Proxier) closePortal(service ServicePortName, info *serviceInfo) error {
// Collect errors and report them all at the end. // Collect errors and report them all at the end.
el := proxier.closeOnePortal(info.portalIP, info.portalPort, info.protocol, proxier.listenIP, info.proxyPort, service) el := proxier.closeOnePortal(info.portalIP, info.portalPort, info.protocol, proxier.listenIP, info.proxyPort, service)
for _, publicIP := range info.deprecatedPublicIPs {
el = append(el, proxier.closeOnePortal(net.ParseIP(publicIP), info.portalPort, info.protocol, proxier.listenIP, info.proxyPort, service)...)
}
for _, ingress := range info.loadBalancerStatus.Ingress { for _, ingress := range info.loadBalancerStatus.Ingress {
if ingress.IP != "" { if ingress.IP != "" {
el = append(el, proxier.closeOnePortal(net.ParseIP(ingress.IP), info.portalPort, info.protocol, proxier.listenIP, info.proxyPort, service)...) el = append(el, proxier.closeOnePortal(net.ParseIP(ingress.IP), info.portalPort, info.protocol, proxier.listenIP, info.proxyPort, service)...)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment