@@ -18,13 +18,14 @@ package ipwhitelist
1818
1919import (
2020 "errors"
21+ "strings"
2122
2223 "k8s.io/kubernetes/pkg/apis/extensions"
2324 "k8s.io/kubernetes/pkg/util/net/sets"
2425)
2526
2627const (
27- whitelist = "ingress.kubernetes.io/whitelist"
28+ whitelist = "ingress.kubernetes.io/whitelist-source-range "
2829)
2930
3031var (
3738 ErrInvalidCIDR = errors .New ("the annotation does not contains a valid IP address or network" )
3839)
3940
40- // Whitelist returns the CIDR
41- type Whitelist struct {
41+ // SourceRange returns the CIDR
42+ type SourceRange struct {
4243 CIDR []string
4344}
4445
@@ -50,30 +51,33 @@ func (a ingAnnotations) whitelist() ([]string, error) {
5051 return nil , ErrMissingWhitelist
5152 }
5253
53- ipnet , err := sets .ParseIPNets (val )
54+ values := strings .Split (val , "," )
55+ ipnets , err := sets .ParseIPNets (values ... )
5456 if err != nil {
5557 return nil , ErrInvalidCIDR
5658 }
5759
58- nets := make ([]string , 0 )
59- for k := range ipnet {
60- nets = append (nets , k )
60+ cidrs := make ([]string , 0 )
61+ for k := range ipnets {
62+ cidrs = append (cidrs , k )
6163 }
6264
63- return nets , nil
65+ return cidrs , nil
6466}
6567
6668// ParseAnnotations parses the annotations contained in the ingress
67- // rule used to configure upstream check parameters
68- func ParseAnnotations (whiteList []string , ing * extensions.Ingress ) (* Whitelist , error ) {
69+ // rule used to limit access to certain client addresses or networks.
70+ // Multiple ranges can specified using commas as separator
71+ // e.g. `18.0.0.0/8,56.0.0.0/8`
72+ func ParseAnnotations (whiteList []string , ing * extensions.Ingress ) (* SourceRange , error ) {
6973 if ing .GetAnnotations () == nil {
70- return & Whitelist {whiteList }, ErrMissingWhitelist
74+ return & SourceRange {whiteList }, ErrMissingWhitelist
7175 }
7276
7377 wl , err := ingAnnotations (ing .GetAnnotations ()).whitelist ()
7478 if err != nil {
7579 wl = whiteList
7680 }
7781
78- return & Whitelist {wl }, err
82+ return & SourceRange {wl }, err
7983}
0 commit comments