From f9391fcedc3301a181e5c4fe3b930537152fcade Mon Sep 17 00:00:00 2001 From: M00nF1sh Date: Tue, 5 Feb 2019 17:31:16 -0800 Subject: [PATCH] support multiple cidr vpc for nlb health check --- pkg/cloudprovider/providers/aws/aws_loadbalancer.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkg/cloudprovider/providers/aws/aws_loadbalancer.go b/pkg/cloudprovider/providers/aws/aws_loadbalancer.go index 6b7a41bff537..6f125f656ed5 100644 --- a/pkg/cloudprovider/providers/aws/aws_loadbalancer.go +++ b/pkg/cloudprovider/providers/aws/aws_loadbalancer.go @@ -582,7 +582,7 @@ func filterForIPRangeDescription(securityGroups []*ec2.SecurityGroup, lbName str return response } -func (c *Cloud) getVpcCidrBlock() (*string, error) { +func (c *Cloud) getVpcCidrBlocks() ([]string, error) { vpcs, err := c.ec2.DescribeVpcs(&ec2.DescribeVpcsInput{ VpcIds: []*string{aws.String(c.vpcID)}, }) @@ -592,7 +592,12 @@ func (c *Cloud) getVpcCidrBlock() (*string, error) { if len(vpcs.Vpcs) != 1 { return nil, fmt.Errorf("Error querying VPC for ELB, got %d vpcs for %s", len(vpcs.Vpcs), c.vpcID) } - return vpcs.Vpcs[0].CidrBlock, nil + + cidrBlocks := make([]string, 0, len(vpcs.Vpcs[0].CidrBlockAssociationSet)) + for _, cidr := range vpcs.Vpcs[0].CidrBlockAssociationSet { + cidrBlocks = append(cidrBlocks, aws.StringValue(cidr.CidrBlock)) + } + return cidrBlocks, nil } // abstraction for updating SG rules @@ -805,7 +810,7 @@ func (c *Cloud) updateInstanceSecurityGroupsForNLB(mappings []nlbPortMapping, in return nil } - vpcCidr, err := c.getVpcCidrBlock() + vpcCidrBlocks, err := c.getVpcCidrBlocks() if err != nil { return err } @@ -890,7 +895,7 @@ func (c *Cloud) updateInstanceSecurityGroupsForNLB(mappings []nlbPortMapping, in } // Run once for health check traffic - err = c.updateInstanceSecurityGroupsForNLBTraffic(actualGroups, desiredGroupIds, healthCheckPorts, lbName, []string{aws.StringValue(vpcCidr)}, false) + err = c.updateInstanceSecurityGroupsForNLBTraffic(actualGroups, desiredGroupIds, healthCheckPorts, lbName, vpcCidrBlocks, false) if err != nil { return err }