* docker.io/library/golang from 1.22 to 1.23
* gotestsum from 0.4.2 to 1.12.0
* protoc-gen-go from 1.28.1 to 1.35.2
* protoc-gen-go-grpc from 1.2 to 1.5.1
* docker.io/library/rust from 1.76.0 to 1.83.0
* cargo-deny from 0.14.11 to 0.16.3
* cargo-nextest from 0.9.67 to 0.9.85
* cargo-tarpaulin from 0.27.3 to 0.31.3
* just from 1.24.0 to 1.37.0
* yq from 4.33.3 to 4.44.5
* markdownlint-cli2 from 0.10.0 to 0.15.0
* shellcheck from 0.9.0 to 0.10.0
* actionlint from 1.6.26 to 1.7.4
* protoc from 3.20.3 to 29.0
* step from 0.25.2 to 0.28.2
* kubectl from 1.29.2 to 1.31.3
* k3d from 5.6.0 to 5.7.5
* k3s image shas
* helm from 3.14.1 to 3.16.3
* helm-docs from 1.12.0 to 1.14.2
Tokio has an unstable feature supporting runtime metrics.
This allows service operators to export metrics to systems like
Prometheus, so that they can observe how their workloads are performing
on the tokio runtime. This exposes information like the number of worker
threads, queue depth, the number of tasks polled, and so on.
`linkerd2-proxy` should expose these metrics.
This uses the `kubert-prometheus-tokio` crate to register a `Runtime`
metrics worker, and spawn a task to probe these metrics at a fixed,
regular interval.
see: <https://github.com/olix0r/kubert/tree/main/kubert-prometheus-tokio>
if the `tokio_unstable` feature is not enabled, this will emit a debug
event and do nothing.
Signed-off-by: katelyn martin <kate@buoyant.io>
The devcontainer nightly install leaves cargo in a bad state due to
permissions issues in the docker setup. Let's just disable nightly for
now (it can always be added at runtime).
- `on-create` uses much time to download and install without cache, any changes about devcontainer will make it run again. If we put those into Dockerfile, we will have cache and speed up this process.
- Add proxy settings for development behind a proxy server
Signed-off-by: Loong <loong.dai@intel.com>
Signed-off-by: Loong <loong.dai@intel.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
* Update dev to v42
* Update Rust to 1.73.0
* Address new clippy & check warnings
* Update debian from bullseye to bookworm
* Update K3d to v5.6.0
* Update CI from k3s 1.26 to 1.28
* Fix `just linkerd-install` to specify k8s context
* Update markdownlint-cli2 to 0.10.0
* Update Dockerfile to use a debian base image for easier debugging
* Update proc-macro2 to fix rust-nightly build failures
The `tap::rejects_incorrect_identity_when_identity_is_expected` test
passes incorrectly. This change updates the test to assert the expected
condition; and then the test is skipped (like the other tap integration
tests). These tests all need discovery configuration to operate as
intended.
This change also updates the devcontainer.json spec with an increased
memory limit. This is necessary to run tests.
This change adds release targets for static binaries (using musl).
Expected checksec outputs are split per platform, to account
for cross-compiled MUSL binaries.
With this change, we retain debug symbols in an separate file. So
they can be loaded in a debugger.
This change bumps the devcontainer to v38 to include just-cargo fixes.
Use the new `dev:v32-rust-cross` image variant to support releases.
This change removes the checksec.sh helper script, moving that logic
into the justfile.
Signed-off-by: Oliver Gould <ver@buoyant.io>
This change updates to the v28 devcontainer, which includes an extracted
`action-dev-check` script that replaces the inlined just recipe. This
change also renames some recipes (like action-lint, md-lint, and
sh-lint) to be uniform with the recipes in other repos.
Signed-off-by: Oliver Gould <ver@buoyant.io>
Signed-off-by: Oliver Gould <ver@buoyant.io>
`skellock.just` is unmaintained and has syntax highlighting bugs.
`kokakiwi.vscode-just` fixes those bugs!
Signed-off-by: Oliver Gould <ver@buoyant.io>
Signed-off-by: Oliver Gould <ver@buoyant.io>
This branch updates `tonic` (and `tonic-build`) to v0.8, `prost` (and
`prost-types`) to v0.11, and `linkerd2-proxy-api` to v0.7.
Unfortunately, the current approach of regenerating protobuf generated
code in tests does not work in cases where there's a breaking change in
`tonic` that breaks compatibility with protos compiled by the previous
version. The crate itself needs to be compiled before its tests are
compiled, and if the crate doesn't build, the tests won't run.
Therefore, I've also added a little script in a crate *outside* the
`opencensus-proto` crate that can be run to manually rebuild the
generated code, for cases like this.
Closes#1873
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
The proxy repo maintains a nearly identical devcontainer configuration
to that used in the main linkerd2 repo (minus some Go tooling). This
means that we have to pull the same sets of tools redundantly, and that
it's easy for the tool versions to diverge needlessly.
This change updates the proxy to use the published linkerd dev, adding
a rust nightly toolchain for cargo-fuzz (which is only used in this repo
currently) on creation.
Signed-off-by: Oliver Gould <ver@buoyant.io>
* Update Rust to v1.62, with new lints
* Update k3d to v5.4.4
* Update just to 1.2.0
* Update kubectl to v1.24.2
* Update cargo-nextest to v0.9.24
Signed-off-by: Oliver Gould <ver@buoyant.io>
I see OOM kills when trying to build/test the proxy (my guess is
rust-analyzer has gotten more memory-hungry). This change updates the
devcontainer memory constraint to 12GB, which seems to work.
Signed-off-by: Oliver Gould <ver@buoyant.io>
* Stop setting a default RUSTFLAGS so that warnings are allowed during dev.
* Support `features=all` to enable all features.
* Update test targets to use nextest if it is available.
* Add `clippy-dir` and `test-dir` directives that accept a path instead
of a crate name.
Signed-off-by: Oliver Gould <ver@buoyant.io>
Other projects in the ecosystem (like kube-rs) are ditching Make's
obtuse syntax for a newer tool called [`just`][just].
This change removes our `Makefile` with a simpler `justfile`. The
release workflow is updated to use `just`. We also remove our local
`package` action, as it's not reused.
While doing this, a new version of the devcontainer has been published
with `just`, `cargo-nextest`, and various dependency updates.
[just]: https://just.systems/man/
Signed-off-by: Oliver Gould <ver@buoyant.io>
- Updates the debian base from `buster` to `bullseye`;
- Bumps the devcontainer version;
- Removes the `update-rust-version.sh` script, since it's too brittle
and isn't necessary any longer (since we check rust versions in CI);
- Updates checksec to v2.5.;
- Acknowledges that releases no longer produces binaries with
`FORTIFY_SOURCE`
Signed-off-by: Oliver Gould <ver@buoyant.io>
Devconatiner memory usage is currently unbounded. This allows runaway
processes (like rust-analyzer) to monopolize system resources, causing
memory exhaustion for the host OS.
This change adds a limit so that the oomkiller reaps devcontainer
processes when they exceed 8GB.
Signed-off-by: Oliver Gould <ver@buoyant.io>
With tonic v0.7, we now have the ability to provide a fixed PROTOC
binary (rather than building/fetching a protoc implementation at
build-time).
This change updates the `linkerd-transport-header` and
`opencensus-proto` crates to use statically-generated sources,
eliminating the need for a `protoc` binary at build-time. Each crate
includes a `bootstrap` test that fails if the generated sources differ
from what is checked into git. These tests can also be used to
regenerate sources when the protobuf (or tonic generation) changes.
A local `install-protoc` action is added that fetches a protoc binary
and configures the `PROTOC_NO_VENDOR` and `PROTOC` environment
variables. This action is used by the check-all, check-each, and test
workflows.
Signed-off-by: Oliver Gould <ver@buoyant.io>
Nightly builds were broken when the fuzzer change landed, so we missed
the regression. This change fixes the inbound fuzzer build. It also
updates the devcontainer build to include a nightly toolchain with
cargo-fuzz.
Signed-off-by: Oliver Gould <ver@buoyant.io>
* Set a default locale (en_US.UTF-8)
* Use multi-stage docker builds and install tools into /usr/local/bin
* Drop needless extensions
* Use a `RUST_VERSION` build-arg instead of inline version strings