Commit Graph

18800 Commits

Author SHA1 Message Date
stevenhorsman
d5411e00f6 workflows: Fix version on pinned action
docker/build-push-action@bcafcacb16
seemed to be given the wrong version in the comment, so
update this to be correct

Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-28 13:10:36 +01:00
stevenhorsman
063a13ccd0 workflows: Bump zizmor to 1.22
Bump zizmor to the 1.22 version to pick up new rule updates.
Later bumps to follow once this has proven stable

Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-28 13:10:36 +01:00
stevenhorsman
92ded7ff98 workflows: Add timeouts
Recently I've seen a couple of occasions where
jobs have seemed to run infinitely. Add timeouts
for these jobs to stop this from happening if things
get into a bad state.

Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-28 13:10:36 +01:00
stevenhorsman
af4ced32f4 workflows: Add concurrency limits
It is good practice to add concurrency limits to automatically
cancel jobs that have been superceded and potentially stop
race conditions if we try and get artifacts by workflows and job id
rather than run id.

See https://docs.zizmor.sh/audits/#concurrency-limits

Assisted-by: IBM Bob

Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-28 13:10:36 +01:00
Fabiano Fidêncio
5eefbbafb3 Merge pull request #12899 from kata-containers/topic/runtime-rs-docker-qemu
runtime-rs: qemu: Add docker support and tests
2026-04-28 13:23:22 +02:00
Fabiano Fidêncio
2aa09df780 Merge pull request #12860 from Xynnn007/release/slsa-for-artifacts
ci: enforce SLSA provenance for published artifacts
2026-04-28 12:36:38 +02:00
Xynnn007
f4a9847877 ci: enforce SLSA provenance for published artifacts
Published artifacts are consumed as security-critical runtime inputs, so
they need verifiable provenance that binds each binary back to the exact
source and build context.

Without provenance, downstream users cannot reliably distinguish trusted
CI outputs from repackaged or substituted artifacts.

Recording provenance in Sigstore's immutable transparency infrastructure
provides auditable evidence that survives mirror/registry movement and
strengthens supply-chain forensics and policy enforcement.

This also aligns artifact publication with a zero-trust verification
model expected by confidential-computing consumers and automated
admission controls.

Remove workflow-level attestation gating so published artifacts are
consistently accompanied by build provenance.

Signed-off-by: Xynnn007 <xynnn@linux.alibaba.com>
2026-04-28 11:40:15 +02:00
Fabiano Fidêncio
3ef2c5db65 docs: docker: Update docs to mention runtime-rs and what's tested
Now that we're adding support for the rust runtime, let's also update
the docs.

We may also need to update the docs again once we start testing with
different VMMs, but that's not in the scope for this PR.

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
2026-04-28 10:22:21 +02:00
Fabiano Fidêncio
58a2cc0baf ci: enable Docker smoke tests for runtime-rs (qemu-runtime-rs)
Add qemu-runtime-rs to the Docker test matrix on amd64 and s390x
so that the runtime-rs shim is exercised with Docker + QEMU
networking in CI.

Fixes: #9340

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
Made-with: Cursor
2026-04-28 10:20:18 +02:00
Fabiano Fidêncio
19bb8746f8 runtime-rs: rescan network at Start RPC for Docker 26+
Docker 26+ configures the container's veth pair between the Create
and Start RPCs by bind-mounting `/proc/<vmm_pid>/ns/net`.  The Rust
shim's network scan during sandbox creation finds no interfaces
because they don't exist yet.

The Go shim (commit f7878cc) solves this with `detectHypervisorNetns`
inside `addAllEndpoints`: when the placeholder netns is empty, it
switches to the hypervisor's network namespace and rescans there.

Port this approach to the Rust shim:

- Add `rescan_network()` to the `Sandbox` trait
- Implement it on `VirtSandbox`: build a rescan config that always
  targets the hypervisor's netns (`/proc/<vmm_pid>/ns/net`),
  bypassing the placeholder netns and the `network_created` flag
- Call `sandbox.rescan_network()` synchronously in the `StartProcess`
  handler, before `cm.start_process()`, so interfaces are wired
  before the container process runs

Fixes: #9340

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
Made-with: Cursor
2026-04-28 10:20:18 +02:00
Fabiano Fidêncio
0da2f00488 runtime-rs: resource: add network rescan polling for Docker 26+
Docker 26+ configures veth pairs in the hypervisor's network
namespace between the Create and Start RPCs.  The initial network
scan during sandbox creation finds no interfaces because they do
not exist yet.

Add `rescan_network_if_unconfigured` which polls the network
namespace (50ms intervals, 5s timeout) until interfaces appear,
then pushes the configuration to the guest agent.  This mirrors
the Go runtime's `RescanNetwork` (commit f7878cc).

Supporting changes:
- Derive `Clone` on `NetworkWithNetNsConfig` so it can be reused
  across poll iterations
- Add `tokio/time` feature to the resource crate
- Add `apply_network_to_agent` helper to push interfaces, routes,
  and neighbors to the guest

Fixes: #9340

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
Made-with: Cursor
2026-04-28 10:20:18 +02:00
Fabiano Fidêncio
67679ddd15 runtime-rs: detect Docker 26+ netns from hook args and filter /proc/0/
Docker 26+ with `runtimeType` may not publish the network namespace
in `linux.namespaces` at create time.  Instead, the netns path can
be discovered from `libnetwork-setkey` hook arguments.

Additionally, filter out the invalid `/proc/0/ns/net` placeholder
that appears when the task PID is not yet known.

This mirrors the Go runtime's `DockerNetnsPath` fallback logic.

Fixes: #9340

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
Made-with: Cursor
2026-04-28 10:20:18 +02:00
Fabiano Fidêncio
3ad2de584f runtime-rs: return hypervisor PID from container manager methods
Docker and containerd use the PID returned by the shim to construct
`/proc/<pid>/ns/net` for network namespace operations.  The Rust shim
was returning the shim's own PID instead of the hypervisor's PID,
which meant Docker would look at the wrong network namespace.

Update `create_container`, `start_process`, `state_process`, `pid`,
and `connect_container` to return the VMM master thread/process ID
(`vmm_master_tid`) instead of `self.pid`.  For QEMU this is the QEMU
process PID; for Dragonball this is the VMM thread ID — both are
valid for `/proc/<id>/ns/net` on Linux.

Fixes: #9340

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
Made-with: Cursor
2026-04-28 10:20:18 +02:00
Fabiano Fidêncio
b1393f03c4 runtime-rs: fix ConnectResponse to set both shim_pid and task_pid
The containerd runtime v2 `shimTask.Create()` discards the
`CreateTaskResponse.Pid` and instead retrieves the task PID by
calling the shim's Connect RPC, reading `ConnectResponse.task_pid`.

The Rust shim only set `shim_pid` in the ConnectResponse, leaving
`task_pid` at its default zero value.  This caused Docker to call
`sb.SetKey("/proc/0/ns/net", ...)` which fails with "no such file
or directory".

Set `shim_pid` to the actual shim process ID and `task_pid` to the
hypervisor PID (vmm_master_tid), matching the Go shim's Connect
handler behavior.

Fixes: #9340

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
Made-with: Cursor
2026-04-28 10:20:18 +02:00
Fabiano Fidêncio
cbd71f534e kata-sys-util: add oci_docker module for Docker netns detection
Docker 26+ with `runtimeType` shims may not include a network
namespace in the OCI spec's `linux.namespaces` and instead uses
`libnetwork-setkey` hooks to communicate the sandbox ID.  Add helpers
to detect Docker containers and resolve the netns path from hook
arguments, matching the Go runtime's `DockerNetnsPath` and
`IsDockerContainer` utilities.

Fixes: #9340

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
Made-with: Cursor
2026-04-28 10:20:18 +02:00
Saul Paredes
03796a1126 Merge pull request #12909 from microsoft/saul/fix_failing_aks_check
tests: describe pods deployment when testing deployment output
2026-04-27 14:40:20 -07:00
Saul Paredes
dc658a0551 Merge pull request #12917 from sespiros/darwin-libc-mode
genpolicy: make FileType::from portable across Darwin
2026-04-27 14:36:51 -07:00
Fabiano Fidêncio
7820877de5 Merge pull request #12368 from alextibbles/docker-howto
docs: add a simple how-to on using kata from docker
2026-04-27 19:21:11 +02:00
Saul Paredes
7c8df3b9e6 Revert "test: temp skip failing tests on AKS"
This reverts commit 90e94ab305.
2026-04-27 09:36:51 -07:00
Alex Tibbles
90286d3072 docs: add a simple how-to on using kata from docker
Create a new how-to covering simple installation and configuration of
kata as a docker daemon runtime.

Signed-off-by: Alex Tibbles <alex@bleg.org>
2026-04-27 17:51:13 +02:00
Saul Paredes
3273c4e1cc Revert "ci: Skip tests not working with k8s 1.36.0"
This reverts commit df68536cd6.
2026-04-27 08:08:27 -07:00
Saul Paredes
51f234cb56 tests: describe pods deployment when testing deployment output
For k8s 1.36.0, the events of a pod are no longer included in the "kubectl describe pod"
output when describing a deployment. Describe using the "app" label instead.

Signed-off-by: Saul Paredes <saulparedes@microsoft.com>
2026-04-27 08:07:58 -07:00
Spyros Seimenis
d7385eee99 genpolicy: make FileType::from portable across Darwin
libc::S_IF* are u16 on Darwin/BSD and u32 on Linux. The match in
FileType::from and its tests mix both widths and don't compile on
Darwin. Cast everything to u32; on Linux that's a no-op, hence the
clippy::unnecessary_cast allow (rust-lang/rust-clippy#6466).

Fixes: #12916

Signed-off-by: Spyros Seimenis <sse@edgeless.systems>
2026-04-27 12:14:04 +03:00
Steve Horsman
d5785b4eba Merge pull request #12872 from stevenhorsman/bump-rust-to-1.93
Bump rust to 1.93
2026-04-27 09:01:00 +01:00
Steve Horsman
63e50dd946 Merge pull request #12817 from burgerdev/regorus-bump
genpolicy: update regorus to 0.9.1
2026-04-26 13:58:40 +01:00
Fabiano Fidêncio
120d895d60 Merge pull request #12918 from mythi/no-ita
tests: align qemu-tdx kbs tests to use Trustee AS
2026-04-26 13:13:59 +02:00
Fabiano Fidêncio
74d9d043f0 agent: raise regorus policy length limits
regorus 0.9.0 introduced a hard, per-engine ceiling on parsed-policy
size (1024 columns / 1 MiB / 20 000 lines, see lexer.rs:30 in
microsoft/regorus). The 1024-column cap rejects realistic policies
emitted by `genpolicy`: the `NVIDIA_REQUIRE_CUDA` environment variable
on `nvcr.io/nvidia/k8s/cuda-sample` is roughly 1.3 KiB on a single line,
so the agent's `set_policy()` returns an error, the agent (PID 1) exits,
the guest kernel reboots, and the runtime eventually times out
connecting to the agent's vsock.

regorus PR #624 ("feat: make policy length limits configurable per
engine") adds `Engine::set_policy_length_config`, but it has not been
released yet -- the latest published version is still 0.9.1, which
predates that change.

Pin `regorus` to the upstream commit that includes #624 and call the
new setter from `AgentPolicy::new_engine()` with values that comfortably
fit any policy we expect to evaluate (64 KiB per line, 16 MiB per file,
200 000 lines) while still rejecting pathological/minified input. Once
a regorus release > 0.9.1 ships with #624, the dependency can be moved
back to crates.io.

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
2026-04-26 10:18:26 +02:00
Markus Rudy
c8fe6a60d0 genpolicy: update regorus to 0.9.1
The version we used before was released in 2024, it's about time to use
a newer version. The new version of the crate comes with a license,
which addresses a `cargo deny` finding.

Signed-off-by: Markus Rudy <mr@edgeless.systems>
2026-04-26 10:18:26 +02:00
Fabiano Fidêncio
815db4a1df Merge pull request #12920 from zvonkok/driver-bump
cuda: Bump Driver Version
2026-04-26 00:00:00 +02:00
Mikko Ylinen
9cccfb5cb5 tests: align qemu-tdx kbs tests to use Trustee AS
No need to deviate from how other CoCo targets use Trustee and
enables us to add more tests (e.g., RVPS) that ITA Trustee implemention
does not support.

Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2026-04-25 22:53:15 +02:00
Fabiano Fidêncio
749d4713e8 Merge pull request #12897 from kata-containers/dependabot/cargo/src/tools/trace-forwarder/rand-0.8.6
build(deps): bump rand from 0.8.5 to 0.8.6 in /src/tools/trace-forwarder
2026-04-25 22:49:59 +02:00
Steve Horsman
fc359d2140 Merge pull request #12901 from kata-containers/dependabot/cargo/openssl-0.10.78
build(deps): bump openssl from 0.10.76 to 0.10.78
2026-04-25 20:59:51 +01:00
Zvonko Kaiser
150e3ab4b8 cuda: Bump Driver Version
For HGX B300 systems we need the 595 driver branch, bump
the guest fs driver to support those systems.

Signed-off-by: Zvonko Kaiser <zkaiser@nvidia.com>
2026-04-25 19:28:31 +02:00
Fabiano Fidêncio
28d9043d4c build: Add driver version to artefact cache
Add the nvidia driver version to the artefact cache keys so that
a driver bump triggers image and initrd rebuilds.

Also rename the helper functions to follow a consistent
get_latest_nvidia_* naming convention.

Signed-off-by: Fabiano Fidêncio <ffidencio@nvidia.com>
2026-04-25 19:28:31 +02:00
Fabiano Fidêncio
b3ed669d16 Merge pull request #12913 from pmores/fix-exec
runtime-rs: fix exec when selinux is disabled on guest
2026-04-25 17:34:46 +02:00
Fabiano Fidêncio
3d94620df5 Merge pull request #12900 from kata-containers/dependabot/cargo/src/tools/kata-ctl/openssl-0.10.78
build(deps): bump openssl from 0.10.73 to 0.10.78 in /src/tools/kata-ctl
2026-04-25 17:13:01 +02:00
Steve Horsman
db51842229 Merge pull request #12923 from stevenhorsman/bump-webpki-to-0.103.13
versions: Update rustls-webpki to 0.103.13
2026-04-25 16:09:47 +01:00
Fabiano Fidêncio
0a4fb4f11b Merge pull request #12891 from fidencio/topic/networking-handle-device-type-interfaces
runtimes: network: handle "device" type interfaces (mlx5 SFs)
2026-04-25 16:46:37 +02:00
dependabot[bot]
151a797fc0 build(deps): bump openssl from 0.10.76 to 0.10.78
Bumps [openssl](https://github.com/rust-openssl/rust-openssl) from 0.10.76 to 0.10.78.
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.76...openssl-v0.10.78)

---
updated-dependencies:
- dependency-name: openssl
  dependency-version: 0.10.78
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-25 10:28:48 +00:00
dependabot[bot]
365f6c1efa build(deps): bump openssl from 0.10.73 to 0.10.78 in /src/tools/kata-ctl
Bumps [openssl](https://github.com/rust-openssl/rust-openssl) from 0.10.73 to 0.10.78.
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.73...openssl-v0.10.78)

---
updated-dependencies:
- dependency-name: openssl
  dependency-version: 0.10.78
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-25 10:27:45 +00:00
stevenhorsman
913ee79aa1 versions: Bump rust to 1.93
Now that 1.95 has been released, in compliance with our toolchain guidance
we should bump to rust 1.93

Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00
stevenhorsman
9d2bb4518f kata-deloy: Update MSRV to match workspace
Update the kata-deploy Cargo.toml to use the
workspace wide MSRV, so it's easy to track and bump
as and when necessary.

Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00
stevenhorsman
3492e456c1 trace-forwarder: Fix unnecessary_unwrap warnings in macro
Replace is_ok() check followed by unwrap()/unwrap_err() with if let
Ok()/Err() patterns in assert_result macro to fix clippy warnings in
Rust 1.93.

Assisted-by: IBM Bob
Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00
stevenhorsman
a700ed5bff kata-ctl: Fix unnecessary_unwrap warnings
Replace is_ok() check followed by unwrap() with if let Ok() pattern
to avoid unnecessary unwrap calls and fix clippy warnings in Rust 1.93.

Assisted-by: IBM Bob
Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00
stevenhorsman
d1a20b1887 agent: Fix let_unit_value warning in pipestream tests
Remove unnecessary let binding for unit value expression to fix clippy
warning in Rust 1.93.

Assisted-by: IBM Bob
Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00
stevenhorsman
7ab2f0eeb6 agent: Fix needless_borrow warning in container tests
Remove unnecessary reference operator from expression that is
immediately dereferenced by the compiler to fix clippy warning in
Rust 1.93.

Assisted-by: IBM Bob
Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00
stevenhorsman
f6b694eac3 agent: Fix bool_assert_comparison warnings in rustjail tests
Replace assert_eq! with literal bool values with assert! or assert!
with negation for more idiomatic assertions to fix clippy warnings in
Rust 1.93.

Assisted-by: IBM Bob
Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00
stevenhorsman
d6adb912d9 agent: Fix unnecessary_cast warnings
Replace 'as u8' casts with type suffix literals (_u8) for binary
literals to fix clippy warnings in Rust 1.93.

Assisted-by: IBM Bob
Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00
stevenhorsman
dd9cca74e7 agent: Fix search_is_some warning in rustjail tests
Replace .iter().any(|&ap| ap == p) with .contains(&p) for more
idiomatic code to fix clippy warning in Rust 1.93.

Assisted-by: IBM Bob
Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00
stevenhorsman
395804cc98 agent: Fix needless_borrow warnings in rustjail tests
Remove unnecessary reference operators from format!() calls passed to
Command::arg() to fix clippy warnings in Rust 1.93.

Assisted-by: IBM Bob
Signed-off-by: stevenhorsman <steven@uk.ibm.com>
2026-04-25 11:27:39 +01:00