in agent/config/agent_config.go [432:537]
func (config *AgentConfig) SetDefaults() {
config.CommandPath = "/usr/bin/envoy"
dumpAllEnvVariables()
// Ensure port value is > 1024 if uid != 0. Ensure port is less than 65535
config.AgentHttpPort = getEnvValueAsInt("APPNET_AGENT_HTTP_PORT", AGENT_PORT_DEFAULT)
if config.AgentHttpPort > 65535 || (os.Geteuid() != 0 && config.AgentHttpPort < 1024) {
log.Warnf("Invalid value [%d] for the Agent Management port value. Using the default [%d]",
config.AgentHttpPort,
AGENT_PORT_DEFAULT)
config.AgentHttpPort = AGENT_PORT_DEFAULT
}
// xDS Relay
config.EnableRelayModeForXds = getEnvValueAsBool("APPNET_ENABLE_RELAY_MODE_FOR_XDS", ENABLE_RELAY_MODE_FOR_XDS_DEFAULT)
if config.EnableRelayModeForXds {
config.AppNetRelayListenerUdsPath = getEnvValueAsString("APPNET_RELAY_LISTENER_UDS_PATH", APPNET_RELAY_LISTENER_UDS_PATH_DEFAULT)
config.AppNetManagementPort = getEnvValueAsInt("APPNET_MANAGEMENT_PORT", APPNET_MANAGEMENT_PORT_DEFAULT)
config.RelayStreamIdleTimeout = getEnvValueAsString("RELAY_STREAM_IDLE_TIMEOUT", RELAY_STREAM_IDLE_TIMEOUT_DEFAULT)
config.RelayBufferLimitBytes = getEnvValueAsInt("RELAY_BUFFER_LIMIT_BYTES", RELAY_BUFFER_LIMIT_BYTES_DEFAULT)
xdsDomain := getEnvValueAsString("APPMESH_XDS_ENDPOINT", "")
if strings.HasPrefix(xdsDomain, URL_HTTP_SCHEME) {
config.AppNetManagementDomainName = strings.Replace(xdsDomain, URL_HTTP_SCHEME, "", 1)
} else if strings.HasPrefix(xdsDomain, URL_HTTPS_SCHEME) {
config.AppNetManagementDomainName = strings.Replace(xdsDomain, URL_HTTPS_SCHEME, "", 1)
} else {
config.AppNetManagementDomainName = xdsDomain
}
}
// Libcurl deprecation Envoy reloadable feature flag
config.EnvoyUseHttpClientToFetchAwsCredentials = getEnvValueAsBool("ENVOY_USE_HTTP_CLIENT_TO_FETCH_AWS_CREDENTIALS", ENVOY_USE_HTTP_CLIENT_TO_FETCH_AWS_CREDENTIALS_DEFAULT)
config.AgentAdminMode = getAdminModeFromEnv("APPNET_AGENT_ADMIN_MODE", AGENT_ADMIN_MODE_DEFAULT)
if config.AgentAdminMode == UDS {
config.AgentAdminUdsPath = getEnvValueAsString("APPNET_AGENT_ADMIN_UDS_PATH", AGENT_ADMIN_UDS_PATH_DEFAULT)
}
config.EnvoyAdminMode = getAdminModeFromEnv("ENVOY_ADMIN_MODE", ENVOY_ADMIN_MODE_DEFAULT)
config.AgentPollEnvoyReadinessInterval = getEnvValueAsInt("APPNET_AGENT_POLL_ENVOY_READINESS_INTERVAL_S", AGENT_POLL_ENVOY_READINESS_INTERVAL_S_DEFAULT)
config.AgentPollEnvoyReadinessTimeout = getEnvValueAsInt("APPNET_AGENT_POLL_ENVOY_READINESS_TIMEOUT_S", AGENT_POLL_ENVOY_READINESS_TIMEOUT_S_DEFAULT)
// TODO: Ensure that configured address exists on hosts if it is not "0.0.0.0" or "127.0.0.1"
config.AgentHttpAddress = getEnvValueAsString("APPNET_AGENT_HTTP_BIND_ADDRESS", AGENT_ADDRESS_DEFAULT)
config.EnvoyRestartCount = getEnvValueAsInt("APPNET_ENVOY_RESTART_COUNT", ENVOY_RESTART_COUNT_DEFAULT)
config.AgentLoglevelReset = time.Duration(
getEnvValueAsInt("APPNET_AGENT_LOGGING_RESET_TIMEOUT", AGENT_LOGGING_RESET_TIMEOUT_S_DEFAULT)) * time.Second
config.EnvoyServerScheme = ENVOY_SERVER_SCHEME
config.EnvoyServerHostName = ENVOY_SERVER_HOSTNAME
config.EnvoyServerAdminPort = getEnvValueAsInt("ENVOY_ADMIN_ACCESS_PORT", ENVOY_ADMIN_PORT_DEFAULT)
config.EnvoyReadyUrl = ENVOY_READY_ENDPOINT_URL
config.EnvoyServerStatsUrl = ENVOY_STATS_ENDPOINT_URL
config.EnvoyLoggingUrl = ENVOY_LOGGING_ENDPOINT_URL
config.EnvoyListenerDrainUrl = ENVOY_LISTENER_DRAINING_ENDPOINT_URL
if config.EnvoyAdminMode == UDS {
config.EnvoyServerAdminUdsPath = ENVOY_ADMIN_UDS_PATH
}
config.EnableStatsSnapshot = getEnvValueAsBool("ENABLE_STATS_SNAPSHOT", ENABLE_STATS_SNAPSHOT_DEFAULT)
xdsEndpoint := getEnvValueAsString("APPMESH_XDS_ENDPOINT", "")
if strings.HasPrefix(xdsEndpoint, URI_UNIX_PREFIX) {
config.XdsEndpointUdsPath = xdsEndpoint
// verify that the uds path specified exists
xdsUnixPath := strings.Replace(xdsEndpoint, URI_UNIX_PREFIX, "", -1)
if _, err := os.Stat(xdsUnixPath); err != nil {
log.Warnf("xDS endpoint UDS path does not exist: %v", err)
}
}
// Logging
config.EnvoyLoggingDestination = getEnvValueAsString("APPNET_ENVOY_LOG_DESTINATION", ENVOY_LOG_DESTINATION_DEFAULT)
config.EnvoyLogFileName = getEnvValueAsString("APPNET_ENVOY_LOG_NAME", ENVOY_LOG_FILE_NAME_DEFAULT)
config.MaxLogFileSizeMB = getEnvValueAsFloat("APPNET_AGENT_MAX_LOG_FILE_SIZE", AGENT_MAX_LOG_FILE_SIZE_DEFAULT)
config.MaxLogCount = getEnvValueAsInt("APPNET_AGENT_MAX_RETENTION_COUNT", AGENT_MAX_LOG_RETENTION_DEFAULT)
if config.EnvoyConfigPath == "" {
config.EnvoyConfigPath = getEnvValueAsString("ENVOY_CONFIG_FILE", getDefaultBootstrapFilePath())
}
config.EnvoyConcurrency = getEnvValueAsInt("ENVOY_CONCURRENCY", ENVOY_CONCURRENCY_DEFAULT)
config.DisableHotRestart = getEnvValueAsBool("DISABLE_HOT_RESTART", DISABLE_HOT_RESTART_DEFAULT)
validateEnvoyLogLevel(&config.EnvoyLogLevel)
// We expect this to be populated with a json string
config.ClusterIPMapping = getEnvValueAsString("APPNET_CONTAINER_IP_MAPPING", "")
config.ListenerPortMapping = getEnvValueAsString("APPNET_LISTENER_PORT_MAPPING", "")
// Timers
config.PidPollInterval = time.Duration(
getEnvValueAsInt("PID_POLL_INTERVAL_MS", PID_POLL_INTERVAL_MS_DEFAULT)) * time.Millisecond
config.HcPollInterval = getHcPollInterval()
config.ListenerDrainWaitTime = time.Duration(
getEnvValueAsInt("LISTENER_DRAIN_WAIT_TIME_S", LISTENER_DRAIN_WAIT_TIME_SEC_DEFAULT)) * time.Second
config.HcDisconnectedTimeout = time.Duration(
getEnvValueAsInt("HC_DISCONNECTED_TIMEOUT_S", HC_DISCONNECTED_TIMEOUT_S_DEFAULT)) * time.Second
validateTimers(config)
}