meshtls: allow building without any TLS impls enabled#1359
Merged
Conversation
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
olix0r
reviewed
Nov 5, 2021
linkerd/meshtls/Cargo.toml
Outdated
|
|
||
| rustls = ["linkerd-meshtls-rustls", "has_any_tls_impls"] | ||
| # Enabled if *any* TLS impl is enabled. | ||
| has_any_tls_impls = [] |
Member
There was a problem hiding this comment.
tioli: wdyt about prefixing this like __has_any_tls_impls to show it's internal?
Contributor
Author
There was a problem hiding this comment.
i actually considered that but wasn't sure if it was necessary. i'll change it!
olix0r
approved these changes
Nov 5, 2021
Signed-off-by: Eliza Weisman <[email protected]>
hawkw
added a commit
that referenced
this pull request
Nov 5, 2021
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' ```
olix0r
added a commit
that referenced
this pull request
Nov 5, 2021
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 <[email protected]>
olix0r
added a commit
to linkerd/linkerd2
that referenced
this pull request
Nov 9, 2021
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)
olix0r
added a commit
to linkerd/linkerd2
that referenced
this pull request
Nov 9, 2021
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 file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.