in pkg/resolvers/endpoints.go [81:102]
func (r *defaultEndpointsResolver) computeEgressEndpoints(ctx context.Context, policy *networking.NetworkPolicy) ([]policyinfo.EndpointInfo, error) {
var egressEndpoints []policyinfo.EndpointInfo
for _, rule := range policy.Spec.Egress {
r.logger.V(1).Info("computing egress addresses", "peers", rule.To)
if rule.To == nil {
egressEndpoints = append(egressEndpoints, r.getAllowAllNetworkPeers(ctx, policy, rule.Ports, networking.PolicyTypeEgress)...)
continue
}
resolvedPeers, err := r.resolveNetworkPeers(ctx, policy, rule.To, rule.Ports, networking.PolicyTypeEgress)
if err != nil {
return nil, errors.Wrap(err, "unable to resolve egress network peers")
}
resolvedClusterIPs, err := r.resolveServiceClusterIPs(ctx, rule.To, policy.Namespace, rule.Ports)
if err != nil {
return nil, errors.Wrap(err, "unable to resolve service cluster IPs for egress")
}
egressEndpoints = append(egressEndpoints, resolvedPeers...)
egressEndpoints = append(egressEndpoints, resolvedClusterIPs...)
}
r.logger.V(1).Info("Resolved egress rules", "policy", k8s.NamespacedName(policy), "addresses", egressEndpoints)
return egressEndpoints, nil
}