Commit Graph

1506 Commits

Author SHA1 Message Date
Akihiro Suda
86b8a88241 Remove pkg/seed
Since Go 1.20, math/rand does not need explicit seeding:
https://go.dev/doc/go1.20#minor_library_changes

Go <= 1.19 is no longer supported due to EOL.

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2024-06-13 08:50:28 +09:00
Kohei Tokunaga
df7f6ba5b9 ctr: return explicit errors for flags unsupported by transfer service
ctr currently silently ignores several flags by default (without --local) and
the user can't know which flags are supported until they see the code.
This commit fixes ctr to return an explicit error when it finds an unsupported
flag.

Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
2024-06-11 12:08:47 +09:00
Maksym Pavlenko
34d3c17ae2 Merge pull request #10291 from ktock/push-platform-conf
Transfer: Push: Enable to specify platforms
2024-06-05 21:28:09 +00:00
Kohei Tokunaga
cde2527fce ctr: pull: Do not ignore labels when transfer service is used
Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
2024-06-05 12:26:00 +09:00
Kohei Tokunaga
5611fdd4af Transfer: Push: Enable to specify platforms
Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
2024-06-04 10:02:13 +09:00
Derek McGowan
2788604e49 Update ctr image pull all platforms
Allows supporting fetching of all platforms while unpacking for a subset
of platforms.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-05-09 20:48:38 -07:00
Maksym Pavlenko
b6ffa2794e Merge pull request #10164 from henry118/shim-fix
Update ctr shim subcommand to task v3
2024-05-03 19:37:36 +00:00
Akihiro Suda
ef12da25e2 Merge pull request #9781 from kinvolk/rata/userns-use-pluginInfo
core/runtime: Check shim PluginInfo to enforce idmap support
2024-05-03 16:07:50 +00:00
Henry Wang
b8060d641d Update ctr shim subcommand to task v3
Signed-off-by: Henry Wang <henwang@amazon.com>
2024-05-03 15:25:48 +00:00
Rodrigo Campos
f1e265b138 core/runtime: Check shim PluginInfo to enforce idmap support
This commit gets rid of the TODO by moving the check to use the
pluginInfo() infrastructure.

The check is only enforced for shims that return info that can be read
as type runtime.Features. For shims that don't provide that, we just
ignore it, as those shims might not be affected by this.

Signed-off-by: Rodrigo Campos <rodrigoca@microsoft.com>
2024-05-03 15:00:59 +02: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
e1b94c0e7d Move protobuf package under pkg
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-05-02 10:52:03 -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
Maksym Pavlenko
444679c883 Merge pull request #10109 from dmcgowan/fix-fallback-explicit-tls
Update HTTP fallback to better account for TLS timeout and previous attempts
2024-04-23 04:10:39 +00:00
ChengenH
4a31bd606d chore: use errors.New to replace fmt.Errorf with no parameters will much better
Signed-off-by: ChengenH <hce19970702@gmail.com>
2024-04-21 21:49:31 +08:00
Evan Lezar
1b62224181 Bump tags.cncf.io/container-device-interface to v0.7.1
This includes migrating from cdi.GetRegistry() to cdi.Configure() and
using top-level cdi Refresh and InjectDevices functions as applicable.

Signed-off-by: Evan Lezar <elezar@nvidia.com>
2024-04-10 15:25:11 +02:00
Derek McGowan
7c50784591 Remove empty default tls configuration in ctr
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-04-09 15:40:09 -07:00
Phil Estes
ac8f7698cf Merge pull request #9999 from laurazard/fix-exec-concurrent-shim
runc-shim: only defer init process exits
2024-04-05 09:27:35 -04: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
Derek McGowan
3a8c27dff8 Merge pull request #9908 from ktock/transfer-host-dir
Transfer: Registry: Enable to use registry configuration diretory
2024-04-02 18:59:43 +00:00
baijia
ab2c569fb2 ctr: fix parsing mount options
Set 'DisableSliceFlagSeparator = true'

urfave/cli/v2 uses ',' as default string slice separator.
That means '--mount type=bind,src=/src,des=/des,options=rbind:rw'
will be token as four bind mount options.

Fixes: #10003

Signed-off-by: baijia <baijia.wr@antgroup.com>
2024-03-27 17:50:39 +08:00
Laura Brehm
6d00c3ada8 runc-shim: only defer init process exits
In order to make sure that we don't publish task exit events for init
processes before we do for execs in that container, we added logic to
`processExits` in 892dc54bd2 to skip these
and let the pending exec's `handleStarted` closure process them.

However, the conditional logic in `processExits` added was faulty - we
should only defer processing of exit events related to init processes,
not other execs. Due to this missing condition,
892dc54bd2 introduced a bug where, if
there are many concurrent execs for the same container/init pid, exec
exits are skipped and then never published, resulting in hanging
clients.

This commit adds the missing logic to `processExits`.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
2024-03-26 13:39:11 +00:00
Maksym Pavlenko
6a96e45012 Move shim package to pkg
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2024-03-07 10:05:26 -08:00
Maksym Pavlenko
7d2bc0620b Merge pull request #9911 from dmcgowan/introspection-split
Cleanup introspection interface
2024-03-05 03:20:45 +00:00
Maksym Pavlenko
c3dc7209f4 Merge pull request #9892 from dmcgowan/move-nri-packages
Move nri packages to plugin and internal
2024-03-05 01:31:52 +00:00
Akihiro Suda
580ae05986 Merge pull request #9910 from dmcgowan/ttrpc-proxy-interfaces
Add ttrpc to proxy interfaces
2024-03-05 01:01:22 +00: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
1bf781d8eb Cleanup introspection interface
Split service proxy from service plugin.
Make introspection service easier for clients to use.
Update service proxy to support grpc and ttrpc.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-03-01 23:07:42 -08:00
Derek McGowan
347346e3cf Add ttrpc support to content proxy
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-03-01 14:27:27 -08:00
Laura Brehm
892dc54bd2 runc-shim: process exec exits before init
For a given container, as long as the init process is the init process
of that PID namespace, we always receive the exits for execs before we
receive them for the init process.

It's important that we uphold this invariant for the outside world by
always emitting a TastExit event for a container's exec before we emit
one for the init process because this is the expected behavior from
callers, and changing this creates issues - such as Docker, which will
delete the container after receiving a TaskExit for the init process,
and then not be able to handle the exec's exit after having deleted
the container (see: https://github.com/containerd/containerd/issues/9719).

Since 5cd6210ad0, if an exec is starting
at the same time that an init exits, if the exec is an "early exit"
i.e. we haven't emitted a TaskStart for it/put it in `s.running` by the
time we receive it's exit, we notify concurrent calls to `s.Start()` of
the exit and continue processing exits, which will cause us to process
the Init's exit before the exec, and emit it, which we don't want to do.

This commit introduces a map `s.pendingExecs` to keep track of the
number of pending execs keyed by container, which allows us to skip
processing exits for inits if there are pending execs, and instead
have the closure returned by `s.preStart` handle the init exit after
emitting the exec's exit.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
2024-03-01 16:43:19 +00:00
Derek McGowan
9128ee0a91 Move nri packages to plugin and internal
NRI is still newer and mostly used by CRI plugin. Keep the package in
internal to allow for interfaces as the project matures.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-02-29 21:37:36 -08:00
Derek McGowan
72f21833b1 Move events to plugins and core
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-02-27 22:09:20 -08:00
Maksym Pavlenko
464319b3ab Remove pause package from runc shim
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2024-02-22 11:42:16 -08:00
Danny Canter
6a21c96b55 Replace go-grpc-prometheus with go-grpc-middleware/providers/prometheus
Fixes #9806

go-grpc-prometheus is deprecated. The new location it was moved to also introduced
an entirely new api, but afaict this matches what we have at the moment.

Signed-off-by: Danny Canter <danny@dcantah.dev>
2024-02-20 02:01:57 -08:00
Phil Estes
1641c7571f Merge pull request #9809 from dereknola/urfave_v2
Migrate Urfave CLI from v1 to v2
2024-02-16 16:13:37 +00:00
Derek McGowan
d346aeebdf Merge pull request #9746 from neoaggelos/fix/config-glob
Fix config import relative path glob
2024-02-16 06:08:17 +00:00
Derek Nola
132485adb0 Convert CLI to urfave v2
Followed the Migration Guide at https://cli.urfave.org/migrate-v1-to-v2/
The major changes not pointed out in the migration guide are:
- context.Args() no longer produces a []slice, so context.Args().Slice()
  in substitued
- All cli.Global***** are deprecated (the migration guide is somewhat
  unclear on this)

Signed-off-by: Derek Nola <derek.nola@suse.com>

Vendor in urfave cli/v2

Signed-off-by: Derek Nola <derek.nola@suse.com>

Fix NewStringSlice calls

Signed-off-by: Derek Nola <derek.nola@suse.com>
2024-02-15 09:48:04 -08:00
Phil Estes
00fe7a4974 Merge pull request #9827 from dmcgowan/move-config-version
Move config version to version package
2024-02-15 14:58:04 +00:00
Derek McGowan
a086125ae3 Move config version to version package
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-02-14 21:09:44 -08:00
Akihiro Suda
468bee9a79 ctr: print deprecation warnings on every invocation
Print deprecation warnings on any ctr command, as users won't notice the
deprecations until we actually remove the deprecated features.

The warnings can be suppressed by setting
`CONTAINERD_SUPPRESS_DEPRECATION_WARNINGS=1`.

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2024-02-13 02:51:02 +09:00
Derek McGowan
f46aea6187 Move transfer and unpack packages
Packages related to transfer and unpacking provide core interfaces which
use other core interfaces and part of common functionality.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-02-07 22:40:15 -08:00
Zechun Chen
5cbe92e88e Clean up repeated package import
Signed-off-by: Zechun Chen <zechun.chen@daocloud.io>
2024-02-06 11:06:33 +08:00
Angelos Kolaitis
256637249b Fix config import relative path glob
Previously, resolveImports would apply a glob filter if
the path contained any '*', or otherwise convert relative
paths to absolute. This meant that it was impossible to
specify globs with paths relative to the main config file.

This commit first resolves relative to absolute paths, then
applies the glob filter (if any). A test case is added to ensure
that this now works as expected.

Signed-off-by: Angelos Kolaitis <neoaggelos@gmail.com>
2024-02-03 21:03:11 +02:00
Maksym Pavlenko
bbac058cf3 Move CRI from pkg/ to internal/
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2024-02-02 10:12:08 -08:00
Derek McGowan
58ff9d368d Move cri plugin to plugins subpackage
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-01-28 20:57:19 -08:00
Derek McGowan
9795677fe9 Move cri base plugin to CRI runtime service
Create new plugin type for CRI runtime and image services.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-01-28 20:57:18 -08:00
yanggang
e15f191a2d Fix func (m manager) Info in containerd-shim-runc-v2
Signed-off-by: yanggang <gang.yang@daocloud.io>
2024-01-28 02:19:41 +00:00
Derek McGowan
fb9b59a843 Switch to new errdefs package
Signed-off-by: Derek McGowan <derek@mcg.dev>
2024-01-25 22:18:45 -08:00
Maksym Pavlenko
7516bb915c Merge pull request #9442 from AkihiroSuda/runtime-info2
api/services/instrospection: add PluginInfo
2024-01-25 17:50:42 +00:00