// ConstructFirewallForLBService returns the expected GCE firewall rule for a loadbalancer type service func ConstructFirewallForLBService(svc *v1.Service, nodesTags []string) *compute.Firewall { if svc.Spec.Type != v1.ServiceTypeLoadBalancer { Failf("can not construct firewall rule for non-loadbalancer type service") } fw := compute.Firewall{} fw.Name = MakeFirewallNameForLBService(cloudprovider.GetLoadBalancerName(svc)) fw.TargetTags = nodesTags if svc.Spec.LoadBalancerSourceRanges == nil { fw.SourceRanges = []string{"0.0.0.0/0"} } else { fw.SourceRanges = svc.Spec.LoadBalancerSourceRanges } for _, sp := range svc.Spec.Ports { fw.Allowed = append(fw.Allowed, &compute.FirewallAllowed{ IPProtocol: strings.ToLower(string(sp.Protocol)), Ports: []string{strconv.Itoa(int(sp.Port))}, }) } return &fw }
// constructFirewallForIngress returns the expected GCE firewall rule for the ingress resource func (j *testJig) constructFirewallForIngress(gceController *GCEIngressController) *compute.Firewall { nodeTags := framework.GetNodeTags(j.client, gceController.cloud) nodePorts := j.getIngressNodePorts() fw := compute.Firewall{} fw.Name = gceController.getFirewallRuleName() fw.SourceRanges = []string{GCEL7SrcRange} fw.TargetTags = nodeTags.Items fw.Allowed = []*compute.FirewallAllowed{ { IPProtocol: "tcp", Ports: nodePorts, }, } return &fw }