Commit Graph

144 Commits

Author SHA1 Message Date
Alexey Lunev
30b929ece7
fsverity_test.go: fix major/minor device number resolving
Signed-off-by: Alexey Lunev <cheembox573@gmail.com>
(cherry picked from commit f9537ae126fc2be685cc32d5c98b4189a72e02e9)
Signed-off-by: Austin Vazquez <macedonv@amazon.com>
2024-11-09 10:27:46 -08:00
Alexey Lunev
10996a334b
fsverity_test.go: fix nil pointer dereference, fix test fail
Signed-off-by: Alexey Lunev <cheembox573@gmail.com>
(cherry picked from commit 8a8e50e6d7baf99ebe02e6ca04d9d842addcd36c)
Signed-off-by: Austin Vazquez <macedonv@amazon.com>
2024-11-09 10:27:26 -08:00
Akihiro Suda
0208cb58ca
go.mod: github.com/containerd/imgcrypt v2.0.0-rc-1
https://github.com/containerd/imgcrypt/compare/v1.2.0-rc1...v2.0.0-rc.1

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2024-10-29 01:21:57 +09:00
Maksym Pavlenko
651757761f
Merge pull request #10864 from djdongjin/dedup-cri-util
Deduplicate some cri util functions
2024-10-23 20:24:38 +00:00
Jin Dong
38ba7f2f7e dedup BuildLabels
Signed-off-by: Jin Dong <djdongjin95@gmail.com>
2024-10-21 13:23:25 -04:00
Jin Dong
a5cd0d0a5c dedup GetPassthroughAnnotations
Signed-off-by: Jin Dong <djdongjin95@gmail.com>
2024-10-21 11:35:00 -04:00
Jin Dong
269997ac5a dedup GetRepoDigestAndTag
Signed-off-by: Jin Dong <djdongjin95@gmail.com>
2024-10-21 11:24:31 -04:00
Jin Dong
f61dbc2d02 dedup ParseImageReferences
Signed-off-by: Jin Dong <djdongjin95@gmail.com>
2024-10-21 11:17:09 -04:00
Derek McGowan
2f24aa00a5
Update errdefs to 0.3.0
Uses the new github.com/containerd/errdefs/pkg module which is intended
to hold less stable utility functions separately from the stable
github.com/containerd/errdefs error types.

Includes temporary update to hcsshim until a release is cut there

Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-10-18 16:04:54 -07:00
Akihiro Suda
72e4db74d6
Merge pull request #9882 from abel-von/sandbox-controller-v2
sandbox: make podsandbox controller plugin type of PodSandboxPlugin
2024-10-17 10:34:38 +00:00
Akihiro Suda
6c386c343d
Merge pull request #10656 from djdongjin/remove-cri-SandboxInfo-RuntimeHandler
Remove deprecated cri SandboxInfo RuntimeHandler
2024-10-17 05:23:12 +00:00
Abel Feng
fc5086a74d cri: remove sandbox controller from client
cri will call sandbox controller from the sandboxService, remove the
dependency of client.

Signed-off-by: Abel Feng <fshb1988@gmail.com>
2024-10-16 17:37:07 +08:00
Abel Feng
e4df672ab8 sandbox: add sandbox controller v2
Signed-off-by: Abel Feng <fshb1988@gmail.com>
2024-10-16 17:37:05 +08:00
Matteo Pulcini
0742238cd6 Handle teardown failure to avoid blocking cleanup
Signed-off-by: Matteo Pulcini <Matteo.Pulcini@ibm.com>
2024-10-15 15:35:20 -07:00
Brian Goff
b85909cd4c shim: Move pprof server to plugin
Makes the pprof server a plugin and also gates by the `shim_tracing`
build tag (like otel is).
With this change, `net/http` is no longer a dependency in the shim.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2024-10-03 00:12:50 +00:00
Maksym Pavlenko
03db11c3f2
Merge pull request #10744 from sameersaeed/sandbox-cni-plugins
Add check for CNI plugins before tearing down pod network
2024-09-30 15:23:58 +00:00
jinda.ljd
ccb2a8d747 [cri] use 'UserSpecifiedImage' to set the image-name annotation
However, when an image has multiple tags, the image originally obtained may not be the one actually specified by the user.
Starting from cri-api v0.28.0, a UserSpecifiedImage field is added to ImageSpec.
It is more appropriate to use UserSpecifiedImage.

Signed-off-by: jinda.ljd <jinda.ljd@alibaba-inc.com>
2024-09-30 08:38:17 +08:00
Sameer
b7b6b324b8 Add check for CNI plugins before tearing down pod network
Signed-off-by: Sameer <sameer.saeed@live.ca>
2024-09-27 16:12:03 -04:00
zouyee
b5290726d2 Add timestamp to PodSandboxStatusResponse for kubernetes Evented PLEG
Signed-off-by: zouyee <zouyee1989@gmail.com>
2024-09-27 16:50:00 +08:00
Fu Wei
906c23218c
Merge pull request #10307 from henry118/uidmap
Support multiple uid/gid mappings [1/2]
2024-09-23 12:25:05 +00:00
Wei Fu
ee0ed75d64 internal/cri: simplify netns setup with pinned userns
Motivation:

For pod-level user namespaces, it's impossible to force the container runtime
to join an existing network namespace after creating a new user namespace.

According to the capabilities section in [user_namespaces(7)][1], a network
namespace created by containerd is owned by the root user namespace. When the
container runtime (like runc or crun) creates a new user namespace, it becomes
a child of the root user namespace. Processes within this child user namespace
are not permitted to access resources owned by the parent user namespace.

If the network namespace is not owned by the new user namespace, the container
runtime will fail to mount /sys due to the [sysfs: Restrict mounting sysfs][2]
patch.

Referencing the [cap_capable][3] function in Linux, a process can access a
resource if:

* The resource is owned by the process's user namespace, and the process has
the required capability.

* The resource is owned by a child of the process's user namespace, and the
owner's user namespace was created by the process's UID.

In the context of pod-level user namespaces, the CRI plugin delegates the
creation of the network namespace to the container runtime when running the
pause container. After the pause container is initialized, the CRI plugin pins
the pause container's network namespace into `/run/netns` and then executes
the `CNI_ADD` command over it.

However, if the pause container is terminated during the pinning process, the
CRI plugin might encounter a PID cycle, leading to the `CNI_ADD` command
operating on an incorrect network namespace.

Moreover, rolling back the `RunPodSandbox` API is complex due to the delegation
of network namespace creation. As highlighted in issue #10363, the CRI plugin
can lose IP information after a containerd restart, making it challenging to
maintain robustness in the RunPodSandbox API.

Solution:

Allow containerd to create a new user namespace and then create the network
namespace within that user namespace. This way, the CRI plugin can force the
container runtime to join both the user namespace and the network namespace.
Since the network namespace is owned by the newly created user namespace,
the container runtime will have the necessary permissions to mount `/sys` on
the container's root filesystem. As a result, delegation of network namespace
creation is no longer needed.

NOTE:

* The CRI plugin does not need to pin the newly created user namespace as it
does with the network namespace, because the kernel allows retrieving a user
namespace reference via [ioctl_ns(2)][4]. As a result, the podsandbox
implementation can obtain the user namespace using the `netnsPath` parameter.

[1]: <https://man7.org/linux/man-pages/man7/user_namespaces.7.html>
[2]: <7dc5dbc879>
[3]: <2c85ebc57b/security/commoncap.c (L65)>
[4]: <https://man7.org/linux/man-pages/man2/ioctl_ns.2.html>

Signed-off-by: Wei Fu <fuweid89@gmail.com>
2024-09-11 07:21:43 +08:00
Henry Wang
83aaa89b61 update ctr run to support multiple uid/gid mappings
Signed-off-by: Henry Wang <henwang@amazon.com>
2024-09-10 17:06:27 +00:00
Maksym Pavlenko
26b48a6b7a
Merge pull request #10594 from AkihiroSuda/cri-remove-disableCgroup
CRI: remove `disable_cgroup`
2024-09-03 18:25:42 +00:00
Jin Dong
6f43197c25 Remove cri SandboxInfo RuntimeHandler
Signed-off-by: Jin Dong <djdongjin95@gmail.com>
2024-08-29 15:50:14 -07:00
James Sturtevant
f6677a4ec5
Cumulative stats can't decrease
During removal of the container a stat value might be reported as zero; in this case the caluclation could end up with an extremely large number.  If the cumulative stat decreases report zero.

Signed-off-by: James Sturtevant <jstur@microsoft.com>
2024-08-28 23:23:30 +00:00
Jin Dong
35b0292572 remove sha256-simd
Signed-off-by: Jin Dong <djdongjin95@gmail.com>
2024-08-25 04:46:04 +00:00
Akihiro Suda
6f3833f258
CRI: remove disable_cgroup
`disable_cgroup` was implemenetd in containerd/cri PR 970 (Nov 2018)
for supporting very early version of Usernetes on cgroup v1 hosts,
when most distros were still not ready to support cgroup v2.

This configuration is no longer needed, as cgroup v2 delegation is
now supported on almost all distros.

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2024-08-15 06:08:30 +09:00
Akhil Mohan
ebc47359ea
use format string when using printf like commands
As per https://github.com/golang/go/issues/60529, printf like commands with
non-constant format strings and no args give an error in govet

Signed-off-by: Akhil Mohan <akhilerm@gmail.com>
2024-08-14 17:04:53 +05:30
Akhil Mohan
1027b314a6
ignore the static check when using anonymous struct in testing
Signed-off-by: Akhil Mohan <akhilerm@gmail.com>
2024-08-14 14:50:39 +05:30
Maksym Pavlenko
0b02e0c225
Merge pull request #7616 from swagatbora90/trace-cri-runtime
Add tracing spans to CRI runtime service apis
2024-08-09 18:24:47 +00:00
Sebastiaan van Stijn
9776047243
migrate to github.com/moby/sys/userns
Commit 8437c567d8 migrated the use of the
userns package to the github.com/moby/sys/user module.

After further discussion with maintainers, it was decided to move the
userns package to a separate module, as it has no direct relation with
"user" operations (other than having "user" in its name).

This patch migrates our code to use the new module.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-08-08 12:48:54 +02:00
Swagat Bora
83c26962c2 Remove extra span created in the instrumented service layer
Signed-off-by: Swagat Bora <sbora@amazon.com>
2024-08-05 02:34:27 +00:00
Swagat Bora
c0cdcb34f1 Add spans to CRI runtime service and related client methods
This adds otel spans to CRI service mainly targeting mutating apis which includes:
* Sandbox apis - RunPodSandbox, StopPodSandbox, RemovePodSandbox
* Container apis - CreateContainer, StartContainer, StopContainer, RemoveContainer
* Attach, Exec and Exec Sync
* Containerd client methods: container.go, client.go, process.go and task.go

Signed-off-by: Swagat Bora <sbora@amazon.com>
2024-08-05 02:34:20 +00:00
Maksym Pavlenko
fec24e209d
Merge pull request #10520 from saschagrunert/cri
Make `StopPodSandbox` RPC idempotent
2024-07-30 20:12:50 +00:00
Sascha Grunert
a97b11898a
Make StopContainer RPC idempotent
Similar to container removal, the stop of a container should be a noop if
the container has not been found.

Found during: https://github.com/kubernetes-sigs/cri-tools/pull/1536

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2024-07-30 11:47:25 +02:00
Sascha Grunert
c6cea95d95
Make StopPodSandbox RPC idempotent
Similar to sandbox removal, the stop of a sandbox should be a noop if
the sandbox has not been found.

Found during: https://github.com/kubernetes-sigs/cri-tools/pull/1535

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2024-07-30 10:40:16 +02:00
Sebastiaan van Stijn
8437c567d8
pkg/userns: deprecate and migrate to github.com/moby/sys/user/userns
The userns package in libcontainer was integrated into the moby/sys/user
module at commit [3778ae603c706494fd1e2c2faf83b406e38d687d][1].

This patch deprecates the containerd fork of that package, and adds it as
an alias for the moby/sys/user/userns package.

[1]: 3778ae603c

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-26 09:47:50 +02:00
Shingo Omura
ee2c0d9e74
KEP-3619: implement features.supplemental_groups_policy in RuntimeStatus
Signed-off-by: Shingo Omura <everpeace@gmail.com>
2024-07-23 01:01:36 +09:00
Samuel Karp
1e3c35bd0d
Merge pull request #10488 from dcantah/avoid-realloc
Avoid potential reallocs by pre-sizing some slices
2024-07-22 05:39:19 +00:00
Danny Canter
b41bb6df73 Avoid potential reallocs by pre-sizing some slices
There's a couple spots where we know exactly how large
the destination buffer should be, so pre-size these to
avoid any reallocs to a higher capacity.

Signed-off-by: Danny Canter <danny@dcantah.dev>
2024-07-19 13:05:49 -07:00
Maksym Pavlenko
63b4688175 Use grpc.NewClient instead of deprecated ones
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2024-07-18 15:26:02 -07:00
Eric Lin
807f32573f cri: optimize ListPodSandboxStats with parallelism
Signed-off-by: Eric Lin <linxiulei@gmail.com>
2024-07-12 09:02:33 +00:00
Maksym Pavlenko
ac0f34f0ec
Merge pull request #10378 from akhilerm/use-marshall-from-type-url
use typeurl funcs for marshalling anypb.Any
2024-07-11 16:15:20 +00:00
Davanum Srinivas
0772d0a37b
Fix for [cri] ttrpc: closed during ListPodSandboxStats
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-07-10 20:42:06 -04:00
Akhil Mohan
300fd770a0
use typeurl funcs for marshalling anypb.Any
Signed-off-by: Akhil Mohan <akhilerm@gmail.com>
2024-07-10 22:26:27 +05:30
Fu Wei
1fb1882c7d
Merge pull request #10375 from linxiulei/podstats
cri: get pid count from container metrics
2024-07-01 21:32:17 +00:00
Fu Wei
3b2a14bb4c
Merge pull request #10407 from dmcgowan/fsverity-internal
Move fsverity package to internal
2024-07-01 21:31:55 +00:00
Samuel Karp
ebcbbe5643
Merge pull request #10401 from samuelkarp/nri-panic
cri: ensure NRI API never has nil CRI
2024-07-01 16:37:46 +00:00
Derek McGowan
23170e20df
Move fsverity package to internal
This functionality is not directly related to containerd and could move
to external package at some point.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-07-01 09:21:24 -07:00
Eric Lin
f6e731c809 cri: get pid count from container metrics
This reduces latency of calling ListPodSandboxStats() by avoiding calling
shim API Task().

Signed-off-by: Eric Lin <linxiulei@gmail.com>
2024-07-01 15:34:47 +00:00