diff --git a/src/rpc/consul.rs b/src/rpc/consul.rs index 53e92f42..cf5ae2dd 100644 --- a/src/rpc/consul.rs +++ b/src/rpc/consul.rs @@ -80,7 +80,10 @@ pub struct ConsulDiscovery { impl ConsulDiscovery { pub fn new(config: ConsulDiscoveryConfig) -> Result { - _ = rustls::crypto::ring::default_provider().install_default(); + if rustls::crypto::CryptoProvider::get_default().is_none() { + _ = rustls::crypto::ring::default_provider().install_default(); + } + let mut builder: reqwest::ClientBuilder = reqwest::Client::builder().use_rustls_tls(); if config.tls_skip_verify { builder = builder.danger_accept_invalid_certs(true); diff --git a/src/rpc/kubernetes.rs b/src/rpc/kubernetes.rs index f15afae0..75856fc5 100644 --- a/src/rpc/kubernetes.rs +++ b/src/rpc/kubernetes.rs @@ -29,8 +29,15 @@ pub struct Node { port: u16, } +pub async fn get_client() -> Result { + if rustls::crypto::CryptoProvider::get_default().is_none() { + _ = rustls::crypto::ring::default_provider().install_default(); + } + Client::try_default().await +} + pub async fn create_kubernetes_crd() -> Result<(), kube::Error> { - let client = Client::try_default().await?; + let client = get_client().await?; let crds: Api = Api::all(client.clone()); let params = PatchParams::apply(&format!("garage.{}", K8S_GROUP)); @@ -45,7 +52,7 @@ pub async fn create_kubernetes_crd() -> Result<(), kube::Error> { pub async fn get_kubernetes_nodes( kubernetes_config: &KubernetesDiscoveryConfig, ) -> Result, kube::Error> { - let client = Client::try_default().await?; + let client = get_client().await?; let nodes: Api = Api::namespaced(client.clone(), &kubernetes_config.namespace); let lp = ListParams::default().labels(&format!( @@ -98,7 +105,7 @@ pub async fn publish_kubernetes_node( debug!("Node object to be applied: {:#?}", node); - let client = Client::try_default().await?; + let client = get_client().await?; let nodes: Api = Api::namespaced(client.clone(), &kubernetes_config.namespace); if let Ok(old_node) = nodes.get(&node_pubkey).await {