in agent/agent.go [420:451]
func setupUdsForEnvoyAdmin(agentConfig config.AgentConfig, messageSources *messagesources.MessageSources) {
if agentConfig.EnvoyAdminMode == config.UDS {
// create the envoy admin uds file to avoid failure of starting health check
// in uds mode, health check http client is connecting to envoy admin uds
if fileInfo, err := os.Stat(agentConfig.EnvoyServerAdminUdsPath); !os.IsNotExist(err) {
log.Debugf("Envoy Admin UDS [%s] already created", agentConfig.EnvoyServerAdminUdsPath)
if fileInfo.Mode().Perm() != os.FileMode(config.ENVOY_ADMIN_UDS_FILE_MODE_DEFAULT) {
if err := os.Chmod(agentConfig.EnvoyServerAdminUdsPath, config.ENVOY_ADMIN_UDS_FILE_MODE_DEFAULT); err != nil {
log.Errorf("Failed to change Envoy Admin UDS [%s] file permission to [%d]: %v. Exiting Agent",
agentConfig.EnvoyServerAdminUdsPath, config.ENVOY_ADMIN_UDS_FILE_MODE_DEFAULT, err)
messageSources.SetAgentExit()
}
}
return
}
unixAddr := net.UnixAddr{Name: agentConfig.EnvoyServerAdminUdsPath}
listener, err := net.ListenUnix(config.NETWORK_SOCKET_UNIX, &unixAddr)
if err != nil {
log.Errorf("Failed to create Envoy Admin UDS [%s]: %v. Exiting Agent",
agentConfig.EnvoyServerAdminUdsPath, err)
messageSources.SetAgentExit()
}
// keep uds file, when envoy starts it will re-link/re-use this uds
listener.SetUnlinkOnClose(false)
listener.Close()
if err := os.Chmod(agentConfig.EnvoyServerAdminUdsPath, config.ENVOY_ADMIN_UDS_FILE_MODE_DEFAULT); err != nil {
log.Errorf("Failed to change Envoy Admin UDS [%s] file permission to [%d]: %v. Exiting Agent",
agentConfig.EnvoyServerAdminUdsPath, config.ENVOY_ADMIN_UDS_FILE_MODE_DEFAULT, err)
messageSources.SetAgentExit()
}
}
}