100 Commits
Author SHA1 Message Date
Samuel Karp 79e23749d4 Merge pull request #14502 from samuelkarp/shim-tty-stdin-close
shim: keep console open when stdin closes
2026-11-04 23:49:55 +00:00
Samuel Karp 46b8a2c93c shim: keep console open when stdin closes
On a terminal process, a single PTY master file descriptor carries both
stdin and stdout/stderr. The stdin FIFO can reach EOF while the process
is still running, either when a client calls CloseIO to close stdin or
when an empty client stdin stream closes before openStdin's background
writer opens in the kernel. Shutting down and closing the PTY master
when the stdin copy goroutine returns hangs up the terminal, which
sends SIGHUP to the process, causes writes to the slave to fail with
EIO, and causes stdout reads from the master to fail with EBADF.

Close only the stdin FIFO reader when the stdin copy goroutine finishes.
Closing stdin via CloseIO on a terminal process leaves the PTY master
open and the process running without sending SIGHUP.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-11-03 16:14:09 -08:00
Samuel Karp 842119a779 Merge pull request #14481 from mikebrow/remove-old-TODO-question
remove old TODO question- where is close run?
2026-10-28 23:57:23 +00:00
Samuel Karp 82d0ef9573 Merge pull request #14439 from vvoland/update-go
Update to go1.27.3
2026-10-20 20:35:11 +00:00
Samuel Karp 5284371f05 Merge pull request #14381 from thaJeztah/fix_copy_util
core/content: Copy: restore support for "-1" as unknown size
2026-10-20 00:19:30 +00:00
Samuel Karp 678b387365 cri: record pull progress on request events
pullProgressReporter samples activeReqs and totalBytesRead on a periodic
ticker. A response with an empty body, such as a manifest Resolve HEAD
request, does not increment totalBytesRead. In addition, an activeReqs
transition to zero and back to one between ticker ticks is not observed
by the ticker. In both cases, lastSeenTimestamp is not updated and a
subsequent request can be cancelled before it has run for timeout.

Record the timestamp of the most recent request start, response header
receipt, or body byte read in pullRequestReporter, and advance
lastSeenTimestamp from that timestamp on each tick.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-10-15 16:33:27 -07:00
Samuel Karp 79ab376d30 Merge pull request #14372 from samuelkarp/fix_release_workflow_warnings
workflows: pin runner to ubuntu-24.04
2026-10-15 20:52:10 +00:00
Samuel Karp 96d26d2476 docs: fix broken documentation links
Exclude the core/runtime/v2/README.md symlink in the links workflow so
lychee does not fail resolving relative links from the symlink path.
docs/runtime-v2.md is already validated directly.

Update broken, moved, and rate-limited links across markdown documents:
- Replace moved Kubernetes cgroup driver and GCP registry docs.
- Replace retired RHEL 6 devmapper docs with kernel.org reference.
- Point NSSM, CRIU, and Ansible references to GitHub repositories.
- Fix relative paths in remote-snapshotter.md and root-relative paths.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-10-15 11:53:28 -07:00
Samuel Karp f0e5cfae13 workflows: pin runner to ubuntu-24.04
Pin workflow runners to ubuntu-24.04 to avoid deprecation warnings and
breaking changes when ubuntu-latest migrates to Ubuntu 26.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-10-14 15:50:33 -07:00
Samuel Karp 41d81d0828 ci: retry limactl start on VM boot failure
limactl start creates the default instance directory before downloading
the guest image. Delete the stopped instance before retrying so the
second limactl start invocation does not fail on an existing instance.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-10-14 15:10:11 -07:00
Samuel Karp 2b46e32d7c Merge commit from fork 2026-10-13 11:44:56 -07:00
Samuel Karp 93ba9dece9 Merge commit from fork 2026-10-13 11:44:42 -07:00
Samuel Karp 22aa0aaf08 Merge commit from fork 2026-10-13 11:44:24 -07:00
Samuel Karp 034a51e040 Merge pull request #14346 from thaJeztah/bump_golangci
ci: update to golangci-lint v2.14.0 (go1.27.2 compatibility)
2026-10-13 17:29:36 +00:00
Samuel Karp 6565bbff7a remotes/docker: bound parallel fetch readers
Stream chunks through a chunkReader backed by a channel of capacity
parallelism so at most parallelism pipes are allocated at any time.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-10-12 23:27:18 -07:00
Samuel Karp 8c451c9ce5 Merge pull request #14311 from mxpv/fetcher
remotes/docker: throttle worker chunk buffers
2026-10-13 00:29:47 +00:00
Samuel Karp eb0413e046 releases: add 2.5 planned date
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-10-09 15:22:53 -07:00
Samuel Karp 91ca8d3ab4 script/vm: mask systemd-tmpfiles-clean.timer
systemd-tmpfiles-clean.timer runs 15 minutes after boot and removes
empty directories under /tmp with mtimes older than 10 days. Some
integration tests place containerd's root in t.TempDir() and unpack
image layers with older directory timestamps under /tmp. If the timer
fires during extraction, systemd-tmpfiles removes newly created empty
directories before the final directory timestamp pass.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-10-09 13:49:41 -07:00
Samuel Karp 91f62bdd77 content, remotes: bound reads to expected size
Reject negative sizes in content.Copy, remotes.Fetch,
dockerFetcher.Fetch, and newHTTPReadSeeker.

Bound reads in content.Copy and httpReadSeeker.Read to the remaining
expected size from the current offset, returning
errdefs.ErrFailedPrecondition if the source yields extra bytes.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-10-08 16:55:37 -07:00
Samuel Karp e851c87063 Merge pull request #14293 from fuweid/no-follow-on-log
cri: should not follow log file
2026-10-06 18:22:28 +00:00
Samuel Karp ebefff91ad Merge pull request #14284 from containerd/dependabot/go_modules/k8s-09aab42a12
build(deps): bump the k8s group with 4 updates
2026-10-05 17:07:22 +00:00
Samuel Karp 7b48098d64 Merge pull request #13781 from abdul-khaliq-khalid/reference-reject-dotdot-path
reference: reject `..` path components that rewrite the host
2026-10-01 15:57:50 +00:00
Samuel Karp 6e3030a6f2 releases: 1.7 EOL, update the rest to current
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-30 16:33:37 -07:00
Samuel Karp df742f8d7e Merge pull request #14258 from vvoland/apparmor-sockets
contrib/apparmor: Deny AF_ALG and AF_VSOCK sockets in default container profile
2026-09-30 18:08:34 +00:00
Samuel Karp cf413d5d96 Merge pull request #14245 from vvoland/seccomp-allowlist
seccomp: Use an allow-list for socket domains
2026-09-28 21:06:03 +00:00
Samuel Karp bb12c26a17 Merge pull request #14234 from containerd/dependabot/go_modules/k8s-809a0ec50e
build(deps): bump the k8s group with 2 updates
2026-09-28 17:04:41 +00:00
Samuel Karp 59829d6050 Merge pull request #14233 from containerd/dependabot/github_actions/docker-actions-b530e7f9d1
build(deps): bump docker/setup-buildx-action from 4.3.0 to 4.4.1 in the docker-actions group
2026-09-28 17:04:21 +00:00
Samuel Karp 3343c9c74a Makefile: remove go mod download from integration
Commit 192168038e removed the separate integration/client Go module
and merged its dependencies into the root module and vendor directory.
Running `go mod download` before `go test` in integration/client is
unnecessary because `go test` uses the root vendor directory.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-25 15:37:45 -07:00
Samuel Karp 798aacc485 ci: skip linters steps in private repositories
Skip the linters steps when running in private repositories while
allowing the job itself to succeed so downstream jobs with
`needs: [..., linters, ...]` still run. Exclude macos-latest and
windows-latest from the linters matrix on private repositories to
avoid starting unnecessary runners.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-25 15:37:34 -07:00
Samuel Karp 2e10f3195b workflows: skip non-CI jobs in private forks
Private forks of containerd are used for validating security patches
ahead of public disclosure. Some jobs should not run in that context.

Guard pull_request and push jobs with !github.event.repository.private
so they continue to run on containerd/containerd and public forks.
Because schedule events do not populate github.event.repository, guard
scheduled runs in nightly.yml and scorecards.yml with
github.repository == 'containerd/containerd'.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-25 15:36:19 -07:00
Samuel Karp 82f33ce76d Merge commit from fork 2026-09-24 14:44:56 -07:00
Samuel Karp 72c741e0a8 ctr: preserve args after "-" in images export
urfave/cli/v3 breaks out of its flag parsing loop when it encounters a
"-" positional argument without appending the remaining arguments,
causing "ctr images export - <image>" to drop all image references and
flags following "-".

When <out> is "-", recover the un-truncated arguments from the parent
"images" command lineage and re-parse the tail starting at "-" with a
sentinel placeholder so trailing image references and flags are
preserved.

This workaround can be removed after the bug is fixed upstream:

* https://github.com/urfave/cli/issues/2418
* https://github.com/urfave/cli/pull/2419

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-23 16:51:47 -07:00
Samuel Karp 5c4dc96e8e Merge pull request #14209 from samuelkarp/ctr-stop-on-nth-arg
ctr: fix flag parsing issues in run, containers create, tasks exec, and oci-hook
2026-09-23 20:29:41 +00:00
Samuel Karp 0250b9312f cmd/containerd: stop flag parsing on oci-hook
"containerd oci-hook" defines no flags of its own and passes all
arguments directly to the target hook binary via syscall.Exec. Set
StopOnNthArg to 1 so urfave/cli/v3 stops flag parsing after the hook
binary path while still stripping an optional "--" separator.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-23 10:23:29 -07:00
Samuel Karp 334d6daceb ctr: stop flag parsing before container command
urfave/cli/v3 scans for flags across all positional arguments by
default, which causes flags meant for the container process to be
parsed as ctr flags.

Configure StopOnNthArg to stop flag parsing before the container
command and its arguments:
- "ctr run" and "ctr containers create": after Image|RootFS and
  CONTAINER (2 args)
- "ctr tasks exec": after CONTAINER (1 arg)

Fixes #14208

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-23 10:23:17 -07:00
Samuel Karp 5152cb5d53 Merge pull request #13855 from aysha-afrah26/unpack-strip-idmap-labels
core/unpack: don't honor id-mapping labels from image annotations
2026-09-21 19:25:10 +00:00
Samuel Karp 00a8ed4447 Merge pull request #13980 from chrishenzie/agents-md
Add AGENTS.md guidance for AI coding agents
2026-09-17 20:15:55 +00:00
Samuel Karp cc0bb26773 Merge pull request #14185 from samuelkarp/fix_cli_flag_separator
ctr: disable slice flag separator on commands
2026-09-17 18:50:23 +00:00
Samuel Karp ef85c8fd11 ctr: disable slice flag separator on commands
In urfave/cli/v3, child commands do not inherit
DisableSliceFlagSeparator from the root command, unlike in
urfave/cli/v2. When containerd migrated to v3 in commit f72829f36,
subcommands inadvertently reverted to splitting slice flags on commas,
breaking flags that expect comma-separated values such as
--mount type=bind,src=/tmp,dst=/host,options=rbind:ro.

Explicitly set DisableSliceFlagSeparator on all cli.Command structs in
cmd/ctr/commands, restoring the behavior where slice flags are not
split on commas.

Fixes #14181

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-17 10:20:21 -07:00
Samuel Karp 7a233f3894 Merge pull request #13300 from mikebrow/minimal-v2-shim-example-with-sandbox
minimal in-memory sandbox shim
2026-09-17 00:34:38 +00:00
Samuel Karp fe4ef048ad Merge pull request #14174 from thaJeztah/bump_cbor
vendor: github.com/fxamacker/cbor/v2 v2.9.4
2026-09-16 20:58:52 +00:00
Samuel Karp a7fe631d96 Merge pull request #14169 from samuelkarp/prepare-release-2.4.0
Prepare release notes for v2.4.0
2026-09-16 18:09:46 +00:00
Samuel Karp 647fafa847 Prepare release notes for v2.4.0
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-16 09:45:27 -07:00
Samuel Karp c6d0192ebb Merge pull request #14170 from samuelkarp/prepare-api-v1.12.0
Prepare release notes for api/v1.12.0
2026-09-16 15:44:46 +00:00
Samuel Karp 5c4ea21de3 Prepare release notes for api/v1.12.0
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-15 20:49:20 -07:00
Samuel Karp 610d8d896e Merge pull request #14166 from samuelkarp/deprecations-and-removals-for-2.4
Deprecations and removals for 2.4
2026-09-15 23:07:20 +00:00
Samuel Karp 531b3a37b9 tracing: remove deprecated tracing config options
Remove support for service_name and sampling_ratio in the
io.containerd.internal.v1.tracing plugin configuration, which was
previously deprecated in v1.6.29. Users should use standard OTel
environment variables instead (OTEL_SERVICE_NAME, OTEL_TRACES_SAMPLER,
etc.).

Re-add unit tests in pkg/tracing/plugin/otlp_test.go to verify
OTel environment variable configuration for service name, sampling,
exporters, and SDK disabling.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-15 15:08:04 -07:00
Samuel Karp ca8579a334 tracing: add tests for otlp exporter and env vars
Add unit tests in pkg/tracing/plugin/otlp_test.go to verify newExporter,
checkDisabled, and newTracer with the OpenTelemetry environment
variables that replaced the deprecated OTLP plugin configuration fields.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-15 15:07:58 -07:00
Samuel Karp ee024b7c99 tracing: remove deprecated otlp configs
Remove the deprecated endpoint, protocol, and insecure configuration
options for the io.containerd.tracing.processor.v1.otlp plugin.
These were deprecated in v1.6.29 and replaced by standard OTLP
environment variables.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-15 15:07:51 -07:00
Samuel Karp f7c654fb4f cri: remove deprecated cni bin_dir
The `bin_dir` property of `[plugins."io.containerd.cri.v1.runtime".cni]`
was deprecated in containerd v2.1 in favor of `bin_dirs` and was
scheduled for removal in v2.4.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-15 15:07:43 -07:00
Samuel Karp 4f7de25abb cri: remove enable_cdi config option
Remove the `enable_cdi` configuration option in
`[plugins."io.containerd.cri.v1.runtime"]`, which was deprecated in
v2.2. CDI support is now always enabled.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-15 15:07:38 -07:00
Samuel Karp 830b48d3fd cri: delay registry config removal to 2.7
Delay the removal of the auths, configs, and mirrors properties in
[plugins."io.containerd.grpc.v1.cri".registry] until containerd 2.7.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-15 15:07:31 -07:00
Samuel Karp 100a9b6890 Merge pull request #14107 from dmcgowan/erofs-blob-source
Update erofs snapshotter to record blob source
2026-09-14 18:53:33 +00:00
Samuel Karp ee41a78643 Merge pull request #14150 from containerd/dependabot/go_modules/golang-x-e7a3917753
build(deps): bump the golang-x group with 4 updates
2026-09-14 16:49:29 +00:00
Samuel Karp dcb2d4519e Merge pull request #14153 from containerd/dependabot/go_modules/github.com/klauspost/compress-1.20.0
build(deps): bump github.com/klauspost/compress from 1.19.2 to 1.20.0
2026-09-14 16:48:26 +00:00
Samuel Karp f6132dbe1f Merge pull request #14090 from samuelkarp/mask-interrupts
pkg/oci: mask thermal interrupt info
2026-09-10 17:03:31 +00:00
Samuel Karp c176f185b0 pkg/oci: mask thermal interrupt info
Mask /proc/interrupts and /sys/devices/system/cpu/cpu<x>/thermal_throttle
inside Linux containers by default, matching moby, kubernetes, podman,
buildah, and cri-o.

See also: https://github.com/kubernetes/kubernetes/issues/138512#issuecomment-4473867774

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-09-09 17:03:16 -07:00
Samuel Karp afa152450b Merge pull request #13966 from chrishenzie/unpack-shared-config
core/unpack: fetch layers of every config-sharing manifest
2026-09-09 22:38:51 +00:00
Samuel Karp 8dd0970b3c Merge commit from fork 2026-09-04 10:59:37 -07:00
Samuel Karp 65dcc83dad Merge commit from fork 2026-09-04 10:58:38 -07:00
Samuel Karp e6ca378dcf archive: skip redundant opaque whiteout walks
When unpacking a layer changeset in applyNaive, encountering an opaque
whiteout (.wh..wh..opq) triggers a directory walk to remove files
belonging to lower layers. Since files unpacked earlier in the current
layer are recorded in unpackedPaths and preserved, interleaved files and
opaque whiteouts in the same directory cause repeated walks over the
same growing directory, leading to superlinear execution time.

Once a directory has been purged of lower-layer files by an opaque
whiteout, all existing and subsequent entries in that directory are
guaranteed to be in unpackedPaths. Tracking directories that have
already processed an opaque whiteout allows subsequent opaque whiteouts
for the same directory to return early, restoring linear unpack time.

Benchmark results (n=1,000):

| Metric | Pre-change | Post-change | Delta |
| :--- | :--- | :--- | :--- |
| Execution Time | 2,578.8 ms/op | 135.3 ms/op | ~19.1x faster (94.8% reduction) |
| Allocated Memory | 200.5 MB/op | 2.3 MB/op | ~86.9x less memory (98.8% reduction) |
| Allocs / op | 2,068,820 allocs/op | 48,060 allocs/op | ~43.0x fewer allocs (97.7% reduction) |

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-08-28 14:50:34 -07:00
Samuel Karp 716cbaf512 Merge pull request #13972 from thaJeztah/no_spew
internal/cri/server: avoid debug log formatting for container spec
2026-08-28 19:17:22 +00:00
Samuel Karp c2171cb918 Merge pull request #14042 from thaJeztah/bump_grpc
vendor: google.golang.org/grpc v1.83.2
2026-08-26 22:52:27 +00:00
Samuel Karp 33f2278e41 Merge pull request #14043 from thaJeztah/bump_cdi
vendor: tags.cncf.io/container-device-interface 04278701a635
2026-08-26 22:50:18 +00:00
Samuel Karp aeb8f4e52a Merge pull request #13965 from containerd/dependabot/github_actions/actions/attest-build-provenance-4.2.2
build(deps): bump actions/attest-build-provenance from 4.1.1 to 4.2.2
2026-08-21 18:40:24 +00:00
Samuel Karp 4c4f1766cb Merge pull request #13996 from thaJeztah/rm_bandwidth
internal/cri/bandwidth: remove dead code
2026-08-20 18:31:12 +00:00
Samuel Karp 4d4d8b0ed2 Merge pull request #13940 from phillebaba/feature/cri-plugin-export
Export config in CRI plugin
2026-08-18 20:44:48 +00:00
Samuel Karp 675f21d00a Merge pull request #13957 from vvoland/update-go
Update Go to 1.26.6
2026-08-13 22:11:14 +00:00
Samuel Karp 76bcc3f9a8 Merge pull request #13916 from klihub/devel/record-nri-deprecations
nri,deprecation: record and emit warnings for NRI deprecations.
2026-08-07 19:57:24 +00:00
Samuel Karp dd67b6b189 Merge pull request #13162 from HirazawaUi/implement-UserNamespacesHostNetwork
Set the default of runtimeFeatures.UserNamespacesHostNetwork to true
2026-08-07 07:19:56 +00:00
Samuel Karp 56bc534e7e Merge pull request #13871 from samuelkarp/remove_deprecated_checkpoint_restore
cri: remove restore in CreateContainer
2026-07-31 15:50:29 +00:00
Samuel Karp e3692f42d2 Merge pull request #13873 from samuelkarp/vuln-reporting-guidelines
docs/security: update security report triage criteria
2026-07-30 23:56:21 +00:00
Samuel Karp fdf814c21a docs/security: update security report triage criteria
Add proof-of-concept (PoC) execution requirements against a running
daemon to the triage guide and threat model.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-07-29 21:35:42 -07:00
Samuel Karp 91be73ba62 cri: remove restore in CreateContainer
Remove support for restoring checkpoint data during CreateContainer,
which was previously deprecated in v2.3.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-07-29 09:32:24 -07:00
Samuel Karp 3845698976 Merge pull request #13869 from samuelkarp/update_stale_workflow_labels
workflows/stale: exempt priority and status labels
2026-07-28 20:28:59 +00:00
Samuel Karp 565606decf workflows/stale: exempt priority and status labels
Exclude priority/*, status/accepted, status/needs-major-release, and
status/roadmapped labels from being marked as stale and closed.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-07-28 11:29:53 -07:00
Samuel Karp fda8a90116 Merge pull request #13838 from samuelkarp/deprecate-cri-checkpoint
cri: deprecate restore in CreateContainer
2026-07-28 17:36:14 +00:00
Samuel Karp a3f99ba690 cri: deprecate restore in CreateContainer
Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-07-27 22:11:29 -07:00
Samuel Karp 0d368095b6 Merge pull request #13864 from containerd/dependabot/github_actions/codeql-actions-d0435be077
build(deps): bump the codeql-actions group with 3 updates
2026-07-28 05:01:43 +00:00
Samuel Karp e8e0b8b356 Merge pull request #13847 from thaJeztah/dependabot_group
ci: dependabot: group docker/* and codeql action updates
2026-07-27 23:39:28 +00:00
Samuel Karp f1d1d9293d Merge pull request #13837 from samuelkarp/hcsshim-scrub-logs
Use ScrubLogs by default on Windows
2026-07-27 18:21:32 +00:00
Samuel Karp f75a4ba0bb Merge pull request #13817 from nikolauspschuetz/test-epoch-reject-negative-source-date-epoch
pkg/epoch: reject negative SOURCE_DATE_EPOCH values
2026-07-25 21:22:59 +00:00
Samuel Karp 18a01c0020 ctr: add --scrub-logs flag for Windows
Adds a new --scrub-logs flag to ctr run on Windows. This flag enables
the ScrubLogs option for the io.containerd.runhcs.v1 shim.

Assisted-by: gemini-cli
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-07-24 00:07:43 -07:00
Samuel Karp f4e7944625 cri/config: use ScrubLogs by default on Windows
The io.containerd.runhcs.v1 shim can scrub sensitive information from
logs it emits. Since v0.15.0-rc.2 this is done by default, but older
branches still require the option to be explicitly enabled. Explicitly
enable the scrubbing by default for the CRI configuration.

See also: https://github.com/microsoft/hcsshim/pull/2725

Google-Bug-Id: 481375460
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-07-24 00:06:30 -07:00
Samuel Karp 55e47e129a Merge pull request #13812 from ningmingxiao/bump_nri
build: bump github.com/containerd/nri
2026-07-22 05:52:20 +00:00
Samuel Karp 49084c3a03 Merge pull request #12942 from samuelkarp/threat-model
docs: add threat model and triage guide
2026-07-21 19:34:33 +00:00
Samuel Karp 1a7d78e0b9 docs: correct default for [debug] address
The debug server plugin returns ErrSkipPlugin when its address is empty
and the default configuration emitted by 'containerd config default'
sets the address to an empty string.

Assisted-by: Claude Code (Opus 4.8)
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-07-20 22:39:09 -07:00
Samuel KarpandVinayak Goyal 3a3eddcbf9 docs: add threat model and triage guide
This commit introduces a comprehensive threat model, and security
triage guide, and operator guidelines based on the code, documentation
and a review of the published GitHub Security Advisories (GHSAs)

Assisted-by: gemini-cli
Assisted-by: Antigravity
Assisted-by: Claude Code (Opus 4.8)
Co-authored-by: Vinayak Goyal <vinayakankugoyal@gmail.com>
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-07-20 22:13:03 -07:00
Samuel Karp 10b42e4ed5 Merge pull request #13806 from containerd/dependabot/go_modules/golang-x-017d72eac4
build(deps): bump golang.org/x/mod from 0.37.0 to 0.38.0 in the golang-x group
2026-07-20 22:11:17 +00:00
Samuel Karp 4796c7b9d2 Merge pull request #13748 from mxpv/dev
Run CI against dev branches
2026-07-16 17:15:38 +00:00
Samuel Karp 1ab181cb64 Merge pull request #13780 from mxpv/stale
Raise stale bot limits
2026-07-15 08:04:44 +00:00
Samuel Karp 4a5b0733f5 Merge pull request #13469 from anmaxvl/blockcim-pull-fix
blockcim config and plugin initialization changes
2026-07-14 18:06:28 +00:00
Samuel Karp cb66686cbb Merge pull request #13664 from samuelkarp/criu-check-fail-fast
Disable checkpoint restore codepath when CRIU is not installed
2026-07-08 06:10:01 +00:00
Samuel Karp 7cf8e7f6a1 Merge pull request #13725 from chrishenzie/go1.26.5
Update go to 1.26.5
2026-07-07 23:45:58 +00:00
Samuel Karp 5708e836c1 Merge pull request #13704 from henry118/whiteout-img
Add dockerfile for the whiteout-test test image
2026-07-06 17:26:41 +00:00
Samuel Karp 84112c78c1 ci: pin fog-json to resolve gem conflict
Vagrant 2.4.x bundles an embedded Ruby 3.3.0 runtime that loads the
default specification json-2.7.2 during initialization. When installing
vagrant-libvirt, RubyGems resolves the newly released fog-json 1.4.0,
which requires json (~> 2.19). Because json-2.7.2 is already active in
memory when Vagrant starts up, RubyGems raises a Gem::ConflictError.

To avoid this conflict, pin fog-json to version 1.2.0 before installing
vagrant-libvirt. Since CI caches /root/.vagrant.d across runs, also
uninstall fog-json first to remove any conflicting version left in cache
by a previous job.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-07-01 23:19:06 -07:00
Samuel Karp 2294496cdc Merge pull request #13597 from thaJeztah/harden_actions
gha: pin remaining actions and apply hardening from zizmor
2026-07-01 18:18:59 +00:00
Samuel Karp 81350a5d9a github/workflows: install criu in node-e2e
The Kubernetes E2E CI workflow was failing on tests requiring container
checkpointing because criu was not installed on the GitHub Actions
runner.

Add a step to install criu via ppa:criu/ppa before building and
installing containerd, matching the existing setup in ci.yml.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-06-30 12:47:52 -07:00
Samuel Karp 06495733b2 cri: add enable_criu configuration option
Add a new `enable_criu` configuration option under CRI plugin runtime
settings. When set to false, any checkpoint or restore request will fail
fast with an error indicating that CRIU support is disabled by
configuration. `enable_criu` currently defaults to true.

Add an integration test script to verify that setting `enable_criu` to
false in containerd configuration successfully disables checkpoint and
restore operations and fails fast.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-06-30 12:47:48 -07:00
Samuel Karp 186397511b cri: validate CRIU availability and version early
Perform an early validation check on both container checkpoint and
restore paths to fail-fast if the CRIU binary is missing or is older
than the minimum required version (3.16.0).

To support runtime-configured environments, the validation respects the
custom PATH from the shim manager environment if configured, skipping
any relative paths to avoid incorrect daemon-relative resolution. If not
configured, it falls back to a standard system PATH lookup. The check
result is cached using sync.Once to prevent redundant process spawning.

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-06-30 12:35:16 -07:00