Update nat.go

This commit is contained in:
crStiv 2024-12-27 02:44:39 +01:00 committed by GitHub
parent 341647f186
commit 0b542721e9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -21,6 +21,7 @@ import (
"errors"
"fmt"
"net"
"os"
"strings"
"sync"
"time"
@ -133,7 +134,13 @@ func Map(m Interface, c <-chan struct{}, protocol string, extport, intport int,
// Mapping operations will not return an error but won't actually do anything.
type ExtIP net.IP
func (n ExtIP) ExternalIP() (net.IP, error) { return net.IP(n), nil }
func (n ExtIP) ExternalIP() (net.IP, error) {
if IsKubernetesEnvironment() {
return net.IP(n), nil
}
return net.IP(n), nil
}
func (n ExtIP) String() string { return fmt.Sprintf("ExtIP(%v)", net.IP(n)) }
// These do nothing.
@ -240,3 +247,12 @@ func (n *autodisc) wait() error {
}
return nil
}
// IsKubernetesEnvironment detects if the process is running inside Kubernetes cluster
// by checking for the presence of standard K8s environment variables.
func IsKubernetesEnvironment() bool {
if _, exists := os.LookupEnv("KUBERNETES_SERVICE_HOST"); exists {
return true
}
return false
}