Commit Graph

39 Commits

Author SHA1 Message Date
Oliver Gould 612bf6779d
chore: bump dev from v44 to v45 (#3496)
Updates LLVM from 14 to 19.

We pin ubuntu to 24.04 to ensure compatibility.
2025-01-06 13:27:49 -05:00
Oliver Gould 81044772dc
build(deps): bump linkerd/dev from v43 to v44 (#3420)
* 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
2024-12-06 10:50:41 -05:00
katelyn martin 193dcaf818
feat(rt): expose tokio runtime metrics (#3177)
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>
2024-09-09 19:06:05 -07:00
Oliver Gould cf144058a2
Include the github CLI in the devcontainer (#2788) 2024-03-12 12:54:45 -07:00
Oliver Gould f1d55717e9
dev: v43 with Rust v1.76 (#2703)
76df6dc386
2024-02-21 13:55:19 -08:00
Oliver Gould c053aa8965
vscode: Move workspace settings to devcontainer (#2557)
Adds .vscode/settings.json to .gitignore.

This allows per-user workspace configurations.
2023-12-12 13:10:33 -08:00
Oliver Gould 8542ec7c79
dev: Disable nightly install for now (#2515)
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).
2023-11-14 12:18:58 -08:00
Loong Dai 048542ae77
dev: optimize image build (#2452)
- `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>
2023-11-13 15:43:19 -08:00
Oliver Gould f4f606555e
dev: v42 (#2501)
* 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
2023-11-03 13:22:10 -07:00
Oliver Gould c30d39f73e
dev: Update to Rust v1.69.0 (#2402)
Update dev to v40
2023-04-25 15:56:34 -07:00
Oliver Gould 29542cf4d1
dev: override CXX for rust-analyzer (#2270) 2023-02-26 17:56:10 -08:00
Oliver Gould 3c6c633b40
Bump v38 to v39 (#2269)
Fix the C++ compiler configuration
2023-02-26 12:56:59 -08:00
Oliver Gould 0a965fc1a0
dev: Remove docker config mount (#2246) 2023-02-17 15:59:20 -08:00
Oliver Gould c07e638c9e
test: Disable tap::rejects_incorrect_identity_when_identity_is_expected (#2231)
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.
2023-02-14 13:15:59 -08:00
Oliver Gould adf06c492d
release: Produce static binaries (#2057)
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.
2022-12-12 16:10:11 -08:00
Oliver Gould f9f02999fa
dev: v37 (#2048)
Reduce build boilerplate with `just-*` utils.
2022-12-08 07:19:44 -08:00
Oliver Gould aca78892fc
dev: Update to dev:v32 with Rust 1.64 (#1961)
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>
2022-10-21 10:21:12 -07:00
Oliver Gould e53e1a9eb6
dev: Update devcontainer to v30 (#1909)
* Fix yarn installation
* Add Rust MUSL toolchain
* Replace `json5-to-json` with friendlier `j5j`
* Add `step` CLI

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-09-07 07:51:10 -07:00
Oliver Gould 77b9875490
Update to Rust 1.63 (#1900)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-17 16:26:48 -07:00
Oliver Gould ab8aac3cf9
dev: Use a common action-dev-check (#1895)
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>
2022-08-17 07:18:42 -07:00
Oliver Gould c0f5bcb301
dev: Update markdowlint-cli2 to 5.0.1 (#1892)
* Update devcontainer to v26
* Add a `just markdownlint` recipe
* Add a `shellcheck` workflow
* Address lints

Signed-off-by: Oliver Gould <ver@buoyant.io>

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-15 13:42:18 -07:00
Oliver Gould 681d9e6ee9
dev: Use the kokakiwi.vscode-just (#1885)
`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>
2022-08-10 12:16:10 -07:00
Oliver Gould 59113205d7
dev: Update to fix protobuf includes (#1881)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-08 12:46:25 -07:00
Eliza Weisman f336b2a9d3
chore: update `tonic`, `prost`, and `proxy-api` (#1868)
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>
2022-08-05 10:00:40 -07:00
Oliver Gould e0f0169eaa
dev: Reuse the linkerd dev container (#1834)
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>
2022-07-29 11:54:31 -07:00
Oliver Gould a7dcf29516
dev: Update dev tooling (#1820)
* 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>
2022-07-11 09:51:58 -07:00
Oliver Gould 4ebb6ff2de
dev: Update memory contraints (#1770)
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>
2022-06-21 11:04:54 -07:00
Oliver Gould 82ce0ea9db
dev: Update build settings (#1765)
* 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>
2022-06-20 14:47:14 -07:00
Oliver Gould e96b516b72
ci: Lint markdown files (#1707)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-25 11:46:19 -07:00
Oliver Gould 6c261a7f2c
dev: Replace `Makefile` with `justfile` (#1691)
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>
2022-05-23 18:13:19 -07:00
Oliver Gould f288ac4c17
Update Rust to v1.60 (#1615)
- 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>
2022-04-19 13:59:54 -07:00
Oliver Gould a7bcfb26ab
dev: Limit devcontainer memory usage to 8GB (#1604)
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>
2022-04-11 14:24:35 -07:00
Oliver Gould fb4f44cd15
Update to linkerd2-proxy-api v0.5 and tonic v0.7 (#1596)
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>
2022-04-11 11:29:33 -07:00
Oliver Gould 346bc73a56
Fix inbound fuzzing build (#1594)
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>
2022-04-08 19:22:37 -07:00
Oliver Gould bc8fce92c9
Update Rust to v1.59.0 (#1519)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-25 07:44:15 -08:00
Oliver Gould 6661ad0df0
ci: Add a toolchain workflow (#1484) 2022-02-11 07:19:13 -08:00
Oliver Gould 1eb18f45e3
Update the devcontainer (#1474)
* 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
2022-02-09 08:06:48 -08:00
Oliver Gould 8f38eb31aa
devcontainer: Fix kubectl path (#1441)
* Adds `jq`.
* Adds a _devcontainer_ CI workflow

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-01-25 15:00:30 -08:00
Oliver Gould 85a02f1d0a
Add a devcontainer config (#1432)
GitHub supports [dev containers][dc] to describe reproducible
development environments (e.g. for use from VS code). This change
introduces a devcontainer.json and Dockerfile to support container-based
development. This setup configures docker-in-docker so that docker and
k3d can be run inside the dev container.

This base configuration can be amended with per-user personalizations
via a [dotfiles][df] repo. For example: github.com/olix0r/dotfiles.

[dc]: https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/configuring-codespaces-for-your-project
[df]: https://docs.github.com/en/codespaces/customizing-your-codespace/personalizing-codespaces-for-your-account

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-01-12 11:41:54 -08:00