Ctrl K
ComunidadGuías…

pkg/k8score/portscheme.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package k8score

import "strings"

// InferPortScheme guesses the URL scheme for a Kubernetes Service or
// Container port from the strongest available signal:
//
//  1. appProtocol — the K8s-native, authoritative hint when set
//  2. port name   — common conventions (https, https-web, tls, http, h2c)
//  3. port number — well-known web ports (443/8443/… vs 80/8080/…)
//
// Returns "https", "http", or "" when no signal is strong enough to guess.
// Callers that need a default should treat "" as http.
func InferPortScheme(name, appProtocol string, port int32) string {
	switch strings.ToLower(strings.TrimSpace(appProtocol)) {
	case "https", "tls":
		return "https"
	case "http", "http2", "h2c", "grpc", "grpc-web":
		return "http"
	}

	lname := strings.ToLower(strings.TrimSpace(name))
	switch {
	case lname == "":
		// fall through
	case strings.Contains(lname, "https"), strings.Contains(lname, "tls"):
		return "https"
	case strings.Contains(lname, "http"), strings.Contains(lname, "h2c"):
		return "http"
	}

	switch port {
	case 443, 6443, 8443, 9443:
		return "https"
	case 80, 8000, 8080, 3000, 5000, 5001:
		return "http"
	}

	return ""
}