@@ -17,6 +17,8 @@ const (
1717 AppHealthcheckChecksToPass = "servers.com/app-healthcheck-checks-to-pass"
1818 AppHealthcheckInterval = "servers.com/app-healthcheck-interval"
1919 AppHealthcheckJitter = "servers.com/app-healthcheck-jitter"
20+ LBIPHeader = "servers.com/load-balancer-ip-header"
21+ LBIPSubnets = "servers.com/load-balancer-ip-subnets"
2022)
2123
2224// FillLBVHostZoneWithServiceAnnotations prepares the LB vhost zone input based on annotations.
@@ -28,6 +30,16 @@ func FillLBVHostZoneWithServiceAnnotations(vZInput *serverscom.L7VHostZoneInput,
2830 }
2931 }
3032
33+ // LBIPHeader & LBIPSubnets annotations
34+ if value , ok := annotations [LBIPHeader ]; ok {
35+ vZInput .RealIPHeader = new (serverscom.RealIPHeader )
36+ vZInput .RealIPHeader .Name = ParseRealIPHeaderName (value )
37+ if subnets , ok := annotations [LBIPSubnets ]; ok {
38+ s := strings .Split (strings .ReplaceAll (subnets , " " , "" ), "," )
39+ vZInput .RealIPHeader .Networks = s
40+ }
41+ }
42+
3143 return vZInput
3244}
3345
@@ -83,3 +95,15 @@ func FillLBUpstreamZoneWithServiceAnnotations(uZInput *serverscom.L7UpstreamZone
8395
8496 return uZInput
8597}
98+
99+ // ParseRealIPHeaderName parses the Real IP Header Name from annotation
100+ func ParseRealIPHeaderName (input string ) serverscom.RealIPHeaderName {
101+ switch input {
102+ case string (serverscom .RealIP ):
103+ return serverscom .RealIP
104+ case string (serverscom .ForwardedFor ):
105+ return serverscom .ForwardedFor
106+ default :
107+ return ""
108+ }
109+ }
0 commit comments