-
Notifications
You must be signed in to change notification settings - Fork 284
meshtls: allow building without any TLS impls enabled #1359
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
linkerd/meshtls/Cargo.toml
Outdated
|
|
||
| rustls = ["linkerd-meshtls-rustls", "has_any_tls_impls"] | ||
| # Enabled if *any* TLS impl is enabled. | ||
| has_any_tls_impls = [] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tioli: wdyt about prefixing this like __has_any_tls_impls to show it's internal?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i actually considered that but wasn't sure if it was necessary. i'll change it!
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
PR #1359 changed how `linkerd-meshtls`' TLS implementation feature flags are enabled. After merging this PR, they should only be enabled by the top level `linkerd2-proxy` crate, `linkerd-app-integration`, and any dev dependencies that require a working TLS impl to be enabled for tests. However, the `linkerd-app-core` crate already had a default-on feature flag that enabled `meshtls-rustls`. I hadn't noticed this when working on #1359, so I forgot to remove it. This branch removes it. :) Before: ``` :# eliza at noctis in linkerd2-proxy on main [$] via ⚙️ v1.56.0 :; cargo tree -p linkerd2-proxy --no-default-features | rg 'rustls|boring' │ │ │ │ ├── linkerd-meshtls-rustls v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/meshtls/rustls) │ │ │ │ │ ├── tokio-rustls v0.22.0 │ │ │ │ │ │ ├── rustls v0.19.1 ``` After: ``` :# eliza at noctis in linkerd2-proxy on eliza/no-default-features-for-real [$+] via ⚙️ v1.56.0 :; cargo tree -p linkerd2-proxy --no-default-features | rg 'rustls|boring' ```
PR #1359 changed how `linkerd-meshtls`' TLS implementation feature flags are enabled. After merging this PR, they should only be enabled by the top level `linkerd2-proxy` crate, `linkerd-app-integration`, and any dev dependencies that require a working TLS impl to be enabled for tests. However, the `linkerd-app-core` crate already had a default-on feature flag that enabled `meshtls-rustls`. I hadn't noticed this when working on #1359, so I forgot to remove it. This branch removes it. Co-authored-by: Oliver Gould <ver@buoyant.io>
This release updates the proxy's `rustls`, `ring`, and `webpki` dependencies. Additionally, the proxy can now be built to use a `boringssl` backend instead of the default `rustls` backend, but this functionality is disabled in default builds. --- * meshtls: replace build script with `compile_error!` macro (linkerd/linkerd2-proxy#1357) * ci: Split actions into several workflows (linkerd/linkerd2-proxy#1356) * ci: Make job names uniform (linkerd/linkerd2-proxy#1358) * meshtls: allow building without any TLS impls enabled (linkerd/linkerd2-proxy#1359) * `app-core` should not enable `meshtls-rustls` (linkerd/linkerd2-proxy#1360) * Restore rustls credential tests (linkerd/linkerd2-proxy#1363) * build(deps): bump hex from 0.3 to 0.4 (linkerd/linkerd2-proxy#1364) * ci: Split jobs into 'fast' and 'slow' workflows (linkerd/linkerd2-proxy#1365) * meshtls: Move TLS e2e tests into the meshtls crate (linkerd/linkerd2-proxy#1366) * rustls: Tidy std::task imports (linkerd/linkerd2-proxy#1367) * build(deps): bump serde_json from 1.0.68 to 1.0.69 (linkerd/linkerd2-proxy#1368) * build(deps): bump libc from 0.2.106 to 0.2.107 (linkerd/linkerd2-proxy#1369) * meshtls: Add a `boring` backend (linkerd/linkerd2-proxy#1351) * meshtls-rustls: update to `rustls` 0.20 and `tokio-rustls` 0.23 (linkerd/linkerd2-proxy#1362)
This release updates the proxy's `rustls`, `ring`, and `webpki` dependencies. Additionally, the proxy can now be built to use a `boringssl` backend instead of the default `rustls` backend, but this functionality is disabled in default builds. --- * meshtls: replace build script with `compile_error!` macro (linkerd/linkerd2-proxy#1357) * ci: Split actions into several workflows (linkerd/linkerd2-proxy#1356) * ci: Make job names uniform (linkerd/linkerd2-proxy#1358) * meshtls: allow building without any TLS impls enabled (linkerd/linkerd2-proxy#1359) * `app-core` should not enable `meshtls-rustls` (linkerd/linkerd2-proxy#1360) * Restore rustls credential tests (linkerd/linkerd2-proxy#1363) * build(deps): bump hex from 0.3 to 0.4 (linkerd/linkerd2-proxy#1364) * ci: Split jobs into 'fast' and 'slow' workflows (linkerd/linkerd2-proxy#1365) * meshtls: Move TLS e2e tests into the meshtls crate (linkerd/linkerd2-proxy#1366) * rustls: Tidy std::task imports (linkerd/linkerd2-proxy#1367) * build(deps): bump serde_json from 1.0.68 to 1.0.69 (linkerd/linkerd2-proxy#1368) * build(deps): bump libc from 0.2.106 to 0.2.107 (linkerd/linkerd2-proxy#1369) * meshtls: Add a `boring` backend (linkerd/linkerd2-proxy#1351) * meshtls-rustls: update to `rustls` 0.20 and `tokio-rustls` 0.23 (linkerd/linkerd2-proxy#1362)
Currently, the
linkerd-meshtlscrate cannot be compiled when no TLSimplementation feature flags are enabled. This is an issue, since it
means the
rustlsimplementation must be enabled by default, requiringall crates that depend on
meshtls, or on a crate that depends on it,to expose feature flags for controlling what TLS implementation(s) are
enabled. This is not ideal.
This branch changes the
meshtlsso that it can compile even when noTLS implementations are enabled. The crates which actually need TLS
implementations to be enabled (the
linkerd2-proxyapplication crate,and
linkerd-app-integration) now depend on thelinkerd-meshtlscratefor the purposes of enabling feature flags. Other crates that depend on
meshtlscan do so without having to propagate its feature flags.The compile error when no TLS implementations are enabled is moved to
the
linkerd2-proxycrate.linkerd-meshtlswill now panic at runtime(rather than failing to compile) if built with all TLS features disabled
(so that dependent crates don't have to enable its features), but the
proxy crate statically ensures that this cannot happen when building a
proxy.