func()

in pkg/loadbalancers/l7.go [142:194]


func (l *L7) edgeHop() error {
	sslConfigured := l.runtimeInfo.TLS != nil || l.runtimeInfo.TLSName != ""
	// Return an error if user configuration species that both HTTP & HTTPS are not to be configured.
	if !l.runtimeInfo.AllowHTTP && !sslConfigured {
		return errAllProtocolsDisabled
	}

	// Check for invalid L7-ILB HTTPS config before attempting sync
	if utils.IsGCEL7ILBIngress(l.runtimeInfo.Ingress) && sslConfigured && l.runtimeInfo.AllowHTTP {
		l.recorder.Eventf(l.runtimeInfo.Ingress, corev1.EventTypeWarning, "WillNotConfigureFrontend", "gce-internal Ingress class does not currently support both HTTP and HTTPS served on the same IP (kubernetes.io/ingress.allow-http must be false when using HTTPS).")
		return fmt.Errorf("error invalid internal ingress https config")
	}

	if err := l.ensureComputeURLMap(); err != nil {
		return err
	}

	if flags.F.EnableFrontendConfig {
		if err := l.ensureRedirectURLMap(); err != nil {
			return fmt.Errorf("ensureRedirectUrlMap() = %v", err)
		}
	}

	if l.runtimeInfo.AllowHTTP {
		if err := l.edgeHopHttp(); err != nil {
			return err
		}
	} else if flags.F.EnableDeleteUnusedFrontends && requireDeleteFrontend(l.ingress, namer.HTTPProtocol) {
		if err := l.deleteHttp(features.VersionsFromIngress(&l.ingress)); err != nil {
			return err
		}
		klog.V(2).Infof("Successfully deleted unused HTTP frontend resources for load-balancer %s", l)
	}
	// Defer promoting an ephemeral to a static IP until it's really needed.
	if l.runtimeInfo.AllowHTTP && sslConfigured {
		klog.V(3).Infof("checking static ip for %v", l)
		if err := l.checkStaticIP(); err != nil {
			return err
		}
	}
	if sslConfigured {
		klog.V(3).Infof("validating https for %v", l)
		if err := l.edgeHopHttps(); err != nil {
			return err
		}
	} else if flags.F.EnableDeleteUnusedFrontends && requireDeleteFrontend(l.ingress, namer.HTTPSProtocol) {
		if err := l.deleteHttps(features.VersionsFromIngress(&l.ingress)); err != nil {
			return err
		}
		klog.V(2).Infof("Successfully deleted unused HTTPS frontend resources for load-balancer %s", l)
	}
	return nil
}