func (dr *DependencyResolver) ResolveOperatorConfig() (*Config, error) {
	var recognizedDNSTypes []EdgeDNSType
	dr.onceConfig.Do(func() {
		dr.config = &Config{}
		dr.errorConfig = env.Bind(dr.config)
		if dr.errorConfig != nil {
			return
		}
		fallbackDNS := fmt.Sprintf("%s:%v", dr.config.fallbackEdgeDNSServerName, dr.config.fallbackEdgeDNSServerPort)
		edgeDNSServerList := env.GetEnvAsArrayOfStringsOrFallback(EdgeDNSServersKey, []string{fallbackDNS})
		dr.config.EdgeDNSServers = parseEdgeDNSServers(edgeDNSServerList)
		dr.config.Log.Level, _ = zerolog.ParseLevel(strings.ToLower(dr.config.Log.level))
		dr.config.Log.Format = parseLogOutputFormat(strings.ToLower(dr.config.Log.format))
		dr.config.EdgeDNSType, recognizedDNSTypes = getEdgeDNSType(dr.config)
		dr.errorConfig = dr.validateConfig(dr.config, recognizedDNSTypes)
	})
	return dr.config, dr.errorConfig
}
ResolveOperatorConfig executes once. It reads operator's configuration
from environment variables into &Config and validates
package depresolver
import (
	"fmt"
	"net"
	"os"
	"strconv"
	"strings"
	"github.com/AbsaOSS/env-binder/env"
	"github.com/k8gb-io/k8gb/controllers/internal/utils"
	"github.com/rs/zerolog"
)
const (
	ReconcileRequeueSecondsKey = "RECONCILE_REQUEUE_SECONDS"
	ClusterGeoTagKey           = "CLUSTER_GEO_TAG"
	ExtClustersGeoTagsKey      = "EXT_GSLB_CLUSTERS_GEO_TAGS"
	Route53EnabledKey          = "ROUTE53_ENABLED"
	NS1EnabledKey              = "NS1_ENABLED"
	EdgeDNSServersKey          = "EDGE_DNS_SERVERS"
	EdgeDNSZoneKey             = "EDGE_DNS_ZONE"
	DNSZoneKey                 = "DNS_ZONE"
	InfobloxGridHostKey        = "INFOBLOX_GRID_HOST"
	InfobloxVersionKey         = "INFOBLOX_WAPI_VERSION"
	InfobloxPortKey            = "INFOBLOX_WAPI_PORT"
	InfobloxUsernameKey        = "INFOBLOX_WAPI_USERNAME"
	InfobloxPasswordKey            = "INFOBLOX_WAPI_PASSWORD"
	InfobloxHTTPRequestTimeoutKey  = "INFOBLOX_HTTP_REQUEST_TIMEOUT"
	InfobloxHTTPPoolConnectionsKey = "INFOBLOX_HTTP_POOL_CONNECTIONS"
	K8gbNamespaceKey               = "POD_NAMESPACE"
	CoreDNSExposedKey              = "COREDNS_EXPOSED"
	LogLevelKey                    = "LOG_LEVEL"
	LogFormatKey                   = "LOG_FORMAT"
	LogNoColorKey                  = "NO_COLOR"
	SplitBrainCheckKey             = "SPLIT_BRAIN_CHECK"
	MetricsAddressKey              = "METRICS_ADDRESS"
)
const (
	EdgeDNSServerKey = "EDGE_DNS_SERVER"
	EdgeDNSServerPortKey = "EDGE_DNS_SERVER_PORT"
)