Commit Graph

439 Commits

Author SHA1 Message Date
Maksym Pavlenko
dac9721faf Drop outdated pb.txt files
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2026-01-08 16:51:57 -08:00
Maksym Pavlenko
6a6283193b Update pb files
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2026-01-08 16:47:41 -08:00
Maksym Pavlenko
57782b7175 Move buf configuration under api/
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2026-01-08 16:46:18 -08:00
Maksym Pavlenko
39991b6617 Use relative import intead of GOPATH style imports
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2026-01-08 16:41:46 -08:00
Maksym Pavlenko
eb586b5ef2 Regenerate proto files
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2026-01-08 15:13:02 -08:00
Derek McGowan
69c855bb54 Prepare release notes for api/v1.10.0
Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-11-04 19:06:06 -08:00
Akihiro Suda
4c7b94fce7 api/go.mod: golang.org/x/net v0.38.0
Silence a govulncheck noise:

```
Vulnerability #1: GO-2025-3595
    Incorrect Neutralization of Input During Web Page Generation in x/net in
    golang.org/x/net
  More info: https://pkg.go.dev/vuln/GO-2025-3595
  Module: golang.org/x/net
    Found in: golang.org/x/net@v0.37.0
    Fixed in: golang.org/x/net@v0.38.0

Your code is affected by 0 vulnerabilities.
This scan also found 0 vulnerabilities in packages you import and 1
vulnerability in modules you require, but your code doesn't appear to call these
vulnerabilities.
```

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2025-10-28 13:34:13 +09:00
Derek McGowan
fbc7848f23 Prepare release notes for api/v1.10.0-rc.0
Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-10-24 14:16:22 -07:00
Henry Wang
0198b87fcf Implement parallel unpack
Signed-off-by: Henry Wang <henwang@amazon.com>
2025-10-24 17:54:26 +00:00
Derek McGowan
aa571f63c6 Prepare release notes for api/v1.10.0-beta.0
Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-10-03 14:52:23 -07:00
Derek McGowan
8db3010865 Add mounts api service
Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-09-29 17:08:31 -07:00
Derek McGowan
67fbf9db9c Generate and vendor proto changes
Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-09-29 17:08:31 -07:00
Derek McGowan
c5097ac63f Add mount manager to protobuf services and types
Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-09-29 17:08:31 -07:00
Derek McGowan
145175bf4f Prepare release notes for api/v1.9.0
Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-05-06 22:52:16 -07:00
Derek McGowan
11524ef105 Merge pull request #11751 from dmcgowan/prepare-api-1.9.0-rc
Add release notes for api v1.9.0-rc.0
2025-04-25 05:59:43 +08:00
Maksym Pavlenko
17b6e1ef85 Allow streaming to client
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2025-04-23 18:03:29 -07:00
Maksym Pavlenko
40eb2fdbbb Fix protos
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2025-04-23 17:39:59 -07:00
Maksym Pavlenko
1d436803dc Add http debug fields to OCI registry protos
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2025-04-23 17:38:50 -07:00
Derek McGowan
c0ce618a10 Add release notes for api v1.9.0-rc.0
Signed-off-by: Derek McGowan <derek@mcg.dev>
(cherry picked from commit 7c955d41ce1d732c7ccb7037d9b05a29910a4f16)
Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-04-23 16:16:49 -07:00
Philip Laine
752914b5bf Add content create event to api
Signed-off-by: Philip Laine <philip.laine@gmail.com>
2025-04-11 09:39:54 +02:00
Jin Dong
7fe5c41237 go.mod: golang.org/x/net v0.37.0
Signed-off-by: Jin Dong <djdongjin95@gmail.com>
2025-03-19 18:50:20 +00:00
Adrian Reber
9e6beafd53 Support container restore through CRI/Kubernetes
This implements container restore as described in:

https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/#restore-checkpointed-container-standalone

For detailed step by step instruction also see contrib/checkpoint/checkpoint-restore-cri-test.sh

The code changes are based on changes I have done in Podman around 2018
and CRI-O around 2020.

The history behind restoring container via CRI/Kubernetes probably
requires some explanation. The initial proposal to bring
checkpoint/restore to Kubernetes was looking at pod checkpoint and
restoring and the corresponding CRI changes.

https://github.com/kubernetes-sigs/cri-tools/pull/662
https://github.com/kubernetes/kubernetes/pull/97194

After discussing this topic for about two years another approach was
implemented as described in KEP-2008:

https://github.com/kubernetes/enhancements/issues/2008

"Forensic Container Checkpointing" allowed us to separate checkpointing
from restoring. For the "Forensic Container Checkpointing" it is enough
to create a checkpoint of the container. Restoring is not necessary as
the analysis of the checkpoint archive can happen without restoring the
container.

While thinking about a way to restore a container it was by coincidence
that we started to look into restoring containers in Kubernetes via
Create and Start. The way it was done in CRI-O is to figure out during
Create if the container image is a checkpoint image and if that is true
we are using another code path. The same was implemented now with this
change in containerd.

With this change it is possible to restore the container from a
checkpoint tar archive that is created during checkpointing via CRI.

To restore a container via Kubernetes we convert the tar archive to an
OCI image as described in the kubernetes.io blog post from above. Using
this OCI image it is possible to restore a container in Kubernetes.

At this point I think it should be doable to restore containers in
CRI-O and containerd no matter if they have been created by containerd or
CRI-O. The biggest difference is the container metadata and that can
be adapted during restore.

Open items:

 * It is not clear to me why restoring a container in containerd goes
   through task/Create(). But as the restore code already exists this
   change extended the existing code path to restore a container in
   task/Create() to also restore a container through the CRI via
   Create and Start.
 * Automatic image pulling. containerd does not pull images
   automatically if created via the CRI. There is an option in
   crictl to pull images before starting, but that uses the CRI
   image pull interface. It is still a separate pull and create
   operation. Restoring containers from an OCI image is a bit
   different. The checkpoint OCI image does not include the base
   image, but just a reference to the image (NAME@DIGEST).
   Using crictl with pulling will enable the pulling of the
   checkpoint image, but not of the base image the checkpoint is
   based on. So during preparation of the checkpoint containerd
   will automatically pull the base image, but I was not able how
   to pull an image blockingly in containerd. So there is a for
   loop waiting for the container image to appear in the internal
   store. I think this probably can be implemented better.

Anyway, this is a first step towards container restored in Kubernetes
when using containerd.

Signed-off-by: Adrian Reber <areber@redhat.com>
2025-03-11 12:55:13 +01:00
Akihiro Suda
5bc44374e0 Merge pull request #11472 from containerd/dependabot/go_modules/api/golang.org/x/net-0.33.0
build(deps): bump golang.org/x/net from 0.23.0 to 0.33.0 in /api
2025-03-04 03:36:31 +00:00
dependabot[bot]
37fe1e8b42 build(deps): bump golang.org/x/net from 0.23.0 to 0.33.0 in /api
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.23.0 to 0.33.0.
- [Commits](https://github.com/golang/net/compare/v0.23.0...v0.33.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-04 01:42:25 +00:00
Davanum Srinivas
d37ea6977d Bump to newer opencontainers/image-spec @ v1.1.1
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2025-03-03 13:40:42 -05:00
Derek McGowan
d38911808a Prepare release notes for api/v1.8.0
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-11-03 00:08:54 -07:00
Brian Goff
2123855eeb Add build tag to omit grpc
This is needed so we can build the runc shim without grpc as a
transative dependency.
With this change the runc shim binary went from 14MB to 11MB.
The RSS from an idle shim went from about 17MB to 14MB (back around
where it was in in 1.7).

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2024-10-02 01:50:48 +00:00
Fu Wei
f5f11658c5 Merge pull request #9903 from abel-von/add-update-resource-only
sandbox: Add Update API for sandbox controller
2024-07-01 15:16:21 +00:00
Sebastiaan van Stijn
cb38b1e2be api: update github.com/containerd/ttrpc v1.2.5
Update the dependency and the indirect golang.org/x/net version to align
with containerd itself, and to prevent a vulnerability being detected.

We should keep the versions <= versions used by containerd 1.7 to prevent
forcing users of containerd 1.7 in combination with the latest version
of the API module from having to update all their dependencies, but
this update should likely be fine (and aligns with 1.7).

Before this:

    Scanning your code and 254 packages across 15 dependent modules for known vulnerabilities...

    === Symbol Results ===

    Vulnerability #1: GO-2024-2687
        HTTP/2 CONTINUATION flood in net/http
      More info: https://pkg.go.dev/vuln/GO-2024-2687
      Module: golang.org/x/net
        Found in: golang.org/x/net@v0.21.0
        Fixed in: golang.org/x/net@v0.23.0
        Example traces found:
          #1: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.ConnectionError.Error
          #2: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.ErrCode.String
          #3: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.FrameHeader.String
          #4: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.FrameType.String
          #5: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.Setting.String
          #6: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.SettingID.String
          #7: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.StreamError.Error
          #8: services/content/v1/content_ttrpc.pb.go:272:35: content.ttrpccontentClient.Write calls ttrpc.Client.NewStream, which eventually calls http2.chunkWriter.Write
          #9: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.connError.Error
          #10: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.duplicatePseudoHeaderError.Error
          #11: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.headerFieldNameError.Error
          #12: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.headerFieldValueError.Error
          #13: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.pseudoHeaderError.Error
          #14: events/task_fieldpath.pb.go:85:20: events.TaskIO.Field calls fmt.Sprint, which eventually calls http2.writeData.String

    Your code is affected by 1 vulnerability from 1 module.
    This scan also found 0 vulnerabilities in packages you import and 3
    vulnerabilities in modules you require, but your code doesn't appear to call
    these vulnerabilities.
    Use '-show verbose' for more details.

After this:

    govulncheck ./...
    Scanning your code and 251 packages across 13 dependent modules for known vulnerabilities...

    === Symbol Results ===

    No vulnerabilities found.

    Your code is affected by 0 vulnerabilities.
    This scan also found 0 vulnerabilities in packages you import and 3
    vulnerabilities in modules you require, but your code doesn't appear to call
    these vulnerabilities.
    Use '-show verbose' for more details.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-20 16:53:50 +02:00
Abel Feng
15887d7efc sandbox: add update api for controller
Signed-off-by: Abel Feng <fshb1988@gmail.com>
2024-06-14 02:31:51 +00:00
Maksym Pavlenko
080d35b9ea Merge pull request #10279 from dmcgowan/api-type-alias-envelope
Add type alias for event Envelope
2024-05-29 20:47:53 +00:00
Derek McGowan
3e71ccafc4 Add type alias for event Envelope
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-05-29 11:10:57 -07:00
Derek McGowan
359d84351d Update api minimum go version to 1.21
A higher go build version is not required for the API

Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-05-28 13:05:03 -07:00
Derek McGowan
55fcebffc7 Prepare release notes for api/v1.8.0
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-05-03 16:51:50 -07:00
Derek McGowan
2ac2b9c909 Make api a Go sub-module
Allow the api to stay at the same v1 go package name and keep using a
1.x version number. This indicates the API is still at 1.x and allows
sharing proto types with containerd 1.6 and 1.7 releases.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-05-02 11:03:00 -07:00
Derek McGowan
3e9cace720 Move runtimeoptions to api directory
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-05-02 10:52:02 -07:00
Derek McGowan
4a45507772 Move runc options to api directory
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-05-02 10:52:00 -07:00
Abel Feng
de38490ed6 sandbox: merge address and protocol to one url
Signed-off-by: Abel Feng <fshb1988@gmail.com>
2024-04-30 15:28:00 +08:00
Abel Feng
f6e0cf1894 sandbox: add address info in Start and Status response
Signed-off-by: Abel Feng <fshb1988@gmail.com>
2024-04-30 15:20:03 +08:00
Kohei Tokunaga
4332794384 Transfer: Registry: Enable plain HTTP
Currenlty transfer service doesn't handle plain HTTP connection.
This commit fixes this issue by propagating
`(core/remotes/docker/config).HostOptions.DefaultScheme` from client to the
transfer service.
This commit also fixes ctr to use this feature for "--plain-http" flag.

Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
2024-04-03 10:46:10 +09:00
Kohei Tokunaga
7a3b7fba59 Transfer: Registry: Enable to use registry configuration diretory
Currently transfer service isn't aware of configurations of hosts directory and
ctr's `--hosts-dir` doesn't work.
This commit fixes this issue by using `config.ConfigureHosts` instead of
`docker.ConfigureDefaultRegistries`.
This commit also fixes ctr to use this feature for "--hosts-dir" flag.

Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
2024-03-04 15:43:30 +09:00
Derek McGowan
f0e8749411 Add ttrpc generated services
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-02-21 14:22:25 -08:00
Derek McGowan
65031eadec Update protobuild to build ttrpc services
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-02-21 14:22:25 -08:00
kiashok
5aa05481dd Add OSVersion to platform protobuf
It also extends the functions in api/types/platform_helpers.go

Signed-off-by: kiashok <kiashok@microsoft.com>
2024-02-07 11:33:51 -08:00
Maksym Pavlenko
0facc85925 Fix proto formatting
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2024-02-02 10:35:23 -08:00
Maksym Pavlenko
7f2d2c4f44 Move Message proto to types
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2024-02-02 10:35:23 -08:00
Phil Estes
3d93add18b Merge pull request #9687 from akhilerm/refactor-protos
refactor: move plugin/fieldpath to api/types/
2024-01-26 15:05:39 +00:00
Akhil Mohan
b16e3572a3 refactor: move plugin/fieldpath to api/types/
Signed-off-by: Akhil Mohan <akhilerm@gmail.com>
2024-01-26 00:24:08 +05:30
Akihiro Suda
22d586e515 api/services/instrospection: add PluginInfo
The new `PlunginInfo()` call can be used for instrospecting the details
of the runtime plugin.

```console
$ ctr plugins inspect-runtime --runtime=io.containerd.runc.v2 --runc-binary=runc
{
    "Name": "io.containerd.runc.v2",
    "Version": {
        "Version": "v2.0.0-beta.0-XX-gXXXXXXXXX.m",
        "Revision": "v2.0.0-beta.0-XX-gXXXXXXXXX.m"
    },
    "Options": {
        "binary_name": "runc"
    },
    "Features": {
        "ociVersionMin": "1.0.0",
        "ociVersionMax": "1.1.0-rc.2",
        ...,
    },
    "Annotations": null
}
```

The shim binary has to support `-info` flag, see `runtime/v2/README.md`

Replaces PR 8509 (`api/services/task: add RuntimeInfo()`)

Co-authored-by: Derek McGowan <derek@mcg.dev>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2024-01-25 10:00:30 +09:00
Akihiro Suda
a2472c0b5a transfer: add OCI descriptors to Progress structure
The index media type and the digest are now shown in `ctr images pull --local=false`

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2024-01-11 23:56:13 +09:00