diff --git a/Cargo.lock b/Cargo.lock index 2b4631ba9..2c0db06af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1229,6 +1229,24 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-openssl" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ee5d7a8f718585d1c3c61dfde28ef5b0bb14734b4db13f5ada856cdc6c612b" +dependencies = [ + "http", + "hyper", + "linked_hash_set", + "once_cell", + "openssl", + "openssl-sys", + "parking_lot", + "tokio", + "tokio-openssl", + "tower-layer", +] + [[package]] name = "hyper-rustls" version = "0.23.0" @@ -1237,7 +1255,9 @@ checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" dependencies = [ "http", "hyper", + "log", "rustls 0.20.4", + "rustls-native-certs", "tokio", "tokio-rustls 0.23.3", ] @@ -1510,6 +1530,8 @@ dependencies = [ "http", "http-body", "hyper", + "hyper-openssl", + "hyper-rustls", "hyper-timeout", "hyper-tls", "jsonpath_lib", @@ -1518,6 +1540,8 @@ dependencies = [ "openssl", "pem", "pin-project", + "rustls 0.20.4", + "rustls-pemfile 0.2.1", "serde", "serde_json", "serde_yaml", @@ -1564,6 +1588,15 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +[[package]] +name = "linked_hash_set" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" +dependencies = [ + "linked-hash-map", +] + [[package]] name = "lock_api" version = "0.4.7" @@ -2522,7 +2555,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustls 0.20.4", - "rustls-pemfile", + "rustls-pemfile 1.0.0", "serde", "serde_json", "serde_urlencoded", @@ -2583,6 +2616,27 @@ dependencies = [ "webpki 0.22.0", ] +[[package]] +name = "rustls-native-certs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.0", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +dependencies = [ + "base64", +] + [[package]] name = "rustls-pemfile" version = "1.0.0" @@ -3196,6 +3250,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-openssl" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08f9ffb7809f1b20c1b398d92acf4cc719874b3b2b2d9ea2f09b4a80350878a" +dependencies = [ + "futures-util", + "openssl", + "openssl-sys", + "tokio", +] + [[package]] name = "tokio-postgres" version = "0.7.6" diff --git a/Dockerfile b/Dockerfile index e808c7262..36c01ef6f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM rust:1.62.0-alpine as builder ARG BINARY=aggregator -RUN apk add libc-dev +RUN apk add libc-dev openssl-dev WORKDIR /src COPY Cargo.toml /src/Cargo.toml diff --git a/janus_server/Cargo.toml b/janus_server/Cargo.toml index 3c5adc559..efab53da8 100644 --- a/janus_server/Cargo.toml +++ b/janus_server/Cargo.toml @@ -7,11 +7,14 @@ publish = false rust-version = "1.60" [features] +default = ["kube-rustls"] tokio-console = ["dep:console-subscriber"] jaeger = ["dep:tracing-opentelemetry", "dep:opentelemetry-jaeger"] otlp = ["dep:tracing-opentelemetry", "dep:opentelemetry-otlp", "dep:opentelemetry-semantic-conventions", "dep:tonic"] prometheus = ["dep:opentelemetry-prometheus", "dep:prometheus"] test-util = ["janus_core/test-util", "dep:lazy_static", "dep:testcontainers"] +kube-rustls = ["kube/rustls-tls"] +kube-openssl = ["kube/openssl-tls"] [dependencies] anyhow = "1" @@ -30,7 +33,7 @@ hyper = "0.14.19" itertools = "0.10.3" janus_core = { path = "../janus_core", features = ["database"] } k8s-openapi = { version = "*", features = ["v1_20"] } -kube = "0.65.0" +kube = { version = "0.65.0", default-features = false, features = ["client"] } lazy_static = { version = "1", optional = true } num_enum = "0.5.6" opentelemetry = { version = "0.17.0", features = ["metrics", "rt-tokio"] } @@ -67,7 +70,7 @@ warp = { version = "^0.3", features = ["tls"] } assert_matches = "1" hex = { version = "0.4.3", features = ["serde"] } hyper = "0.14.19" -janus_server = { path = ".", features = ["test-util"] } +janus_server = { path = ".", default-features = false, features = ["kube-openssl", "test-util"] } libc = "0.2.126" mockito = "0.31.0" serde_test = "1.0.139"