mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-16 09:52:54 +00:00
## Problem Safekeeper doesn't use TLS in wal service - Closes: https://github.com/neondatabase/cloud/issues/27302 ## Summary of changes - Add `enable_tls_wal_service_api` option to safekeeper's cmd arguments - Propagate `tls_server_config` to `wal_service` if the option is enabled - Create `BACKGROUND_RUNTIME` for small background tasks and offload SSL certificate reloader to it. No integration tests for now because support from compute side is required: https://github.com/neondatabase/cloud/issues/25823
46 lines
1.4 KiB
Rust
46 lines
1.4 KiB
Rust
pub mod routes;
|
|
use std::sync::Arc;
|
|
|
|
pub use routes::make_router;
|
|
pub use safekeeper_api::models;
|
|
use tokio_util::sync::CancellationToken;
|
|
|
|
use crate::{GlobalTimelines, SafeKeeperConf};
|
|
|
|
pub async fn task_main_http(
|
|
conf: Arc<SafeKeeperConf>,
|
|
http_listener: std::net::TcpListener,
|
|
global_timelines: Arc<GlobalTimelines>,
|
|
) -> anyhow::Result<()> {
|
|
let router = make_router(conf, global_timelines)
|
|
.build()
|
|
.map_err(|err| anyhow::anyhow!(err))?;
|
|
|
|
let service = Arc::new(
|
|
http_utils::RequestServiceBuilder::new(router).map_err(|err| anyhow::anyhow!(err))?,
|
|
);
|
|
let server = http_utils::server::Server::new(service, http_listener, None)?;
|
|
server.serve(CancellationToken::new()).await?;
|
|
Ok(()) // unreachable
|
|
}
|
|
|
|
pub async fn task_main_https(
|
|
conf: Arc<SafeKeeperConf>,
|
|
https_listener: std::net::TcpListener,
|
|
tls_config: Arc<rustls::ServerConfig>,
|
|
global_timelines: Arc<GlobalTimelines>,
|
|
) -> anyhow::Result<()> {
|
|
let tls_acceptor = tokio_rustls::TlsAcceptor::from(tls_config);
|
|
|
|
let router = make_router(conf, global_timelines)
|
|
.build()
|
|
.map_err(|err| anyhow::anyhow!(err))?;
|
|
|
|
let service = Arc::new(
|
|
http_utils::RequestServiceBuilder::new(router).map_err(|err| anyhow::anyhow!(err))?,
|
|
);
|
|
let server = http_utils::server::Server::new(service, https_listener, Some(tls_acceptor))?;
|
|
server.serve(CancellationToken::new()).await?;
|
|
Ok(()) // unreachable
|
|
}
|