Commit Graph

8923 Commits

Author SHA1 Message Date
Michael Crosby
41e3057cc6
Merge pull request #5025 from jeremyje/win20h2
Add references to Windows 20H2 test images.
2021-02-12 11:58:49 -05:00
Maksym Pavlenko
88d97362b3
Merge pull request #5027 from kevpar/config-check
Improve error detection when loading config
2021-02-10 14:37:31 -08:00
Phil Estes
2adb2ea64c
Merge pull request #4973 from lorenz/move-netns-into-statedir
Allow moving netns directory into StateDir
2021-02-10 13:08:50 -05:00
Lorenz Brun
36d0bc1f2b Allow moving netns directory into StateDir
Signed-off-by: Lorenz Brun <lorenz@nexantic.com>
2021-02-10 18:33:14 +01:00
Mike Brown
e288feacf3
Merge pull request #5026 from crosbymichael/cni-anno
[cri] add pod annotations to CNI call
2021-02-10 09:21:58 -06:00
Akihiro Suda
51f985cb1f
oci: move cap UT to _linux_test.go
No substantial code change

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2021-02-10 17:42:18 +09:00
Iceber Gu
d08aa4b681
oci: fix the file mode of the device
Signed-off-by: Iceber Gu <wei.cai-nat@daocloud.io>
2021-02-10 16:37:12 +08:00
Akihiro Suda
a2d1a8a865
oci.WithPrivileged: set the current caps, not the known caps
This change is needed for running the latest containerd inside Docker
that is not aware of the recently added caps (BPF, PERFMON, CHECKPOINT_RESTORE).

Without this change, containerd inside Docker fails to run containers with
"apply caps: operation not permitted" error.

See kubernetes-sigs/kind 2058

NOTE: The caller process of this function is now assumed to be as
privileged as possible.

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2021-02-10 17:14:17 +09:00
Kevin Parsons
5f051c1d71 Improve error detection when loading config
Previously we simply ignored any not found error when loading the
containerd config. This created unintuitive behavior:

- If the user specified a path that didn't exist via --config, we would
  silently ignore the error.
- If a config specified an import that didn't exist, we would silently
  ignore the error.

In either of these cases, it appears we would end up using a potentially
corrupted config, as it would contain any files that were merged into it
before the not found error was hit.

However, we can't just remove the check for !os.IsNotExist(err),
as we shouldn't throw an error when --config is not passed, but the
default config doesn't exist.

This change updates the logic to only attempt to load the config if
we know it exists, or the user passed --config.

Signed-off-by: Kevin Parsons <kevpar@microsoft.com>
2021-02-09 16:21:32 -08:00
Michael Crosby
e874e2597e [cri] add pod annotations to CNI call
Signed-off-by: Michael Crosby <michael@thepasture.io>
2021-02-09 13:24:01 -05:00
Jeremy Edwards
1c81071d39 Add references to Windows 20H2 test images.
Signed-off-by: Jeremy Edwards <1312331+jeremyje@users.noreply.github.com>
2021-02-09 16:25:36 +00:00
Derek McGowan
ddcc431c11
Merge pull request #5016 from thaJeztah/bump_cgroups
go.mod: containerd/cgroups 8a68de567b68b30602948417a7a8e99ccf00ee9b
2021-02-07 18:09:40 -08:00
Sebastiaan van Stijn
6be7c9f4e2
go.mod: containerd/cgroups 8a68de567b68b30602948417a7a8e99ccf00ee9b
full diff: 0b889c03f1...8a68de567b

- utils: export RunningInUserNS()
- Support updates for net_cls (adds netclsController.Update())
- Only append Hugetlb in Subsystems list when available
- dependency updates (for compatibility with recent Go versions):
    - go.mod: github.com/cilium/ebpf v0.2.0
    - go.mod: github.com/coreos/go-systemd v22.1.0
    - go.mod: sirupsen/logrus v1.7.0

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-06 13:10:35 +01:00
Derek McGowan
cfa842c278
Merge pull request #5003 from dmcgowan/prepare-1.5.0-beta.1
Prepare release notes for 1.5.0-beta.1
2021-02-05 13:51:32 -08:00
Derek McGowan
a2973c70a5
Prepare release notes for 1.5.0-beta.1
Signed-off-by: Derek McGowan <derek@mcg.dev>
2021-02-05 08:28:54 -08:00
Derek McGowan
b3f2402062
Merge pull request #5002 from crosbymichael/anno-image-name
[cri] add image-name annotation
2021-02-05 08:27:41 -08:00
Akihiro Suda
e908be5b58
Merge pull request #5001 from kzys/no-lint-upgrade 2021-02-06 00:40:38 +09:00
Akihiro Suda
d05f7bdf02
Merge pull request #5011 from thaJeztah/setup_go_v2 2021-02-06 00:39:31 +09:00
Akihiro Suda
25e42e702c
Merge pull request #5004 from thaJeztah/bump_golang 2021-02-06 00:38:48 +09:00
Sebastiaan van Stijn
129c67dc85
GHA: use setup-go@v2
https://github.com/actions/setup-go/tree/v2.1.3#v2

The V2 offers:

- Adds GOBIN to the PATH
- Proxy Support
- stable input
- Bug Fixes (including issues around version matching and semver)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-05 15:39:07 +01:00
Fabiano Fidêncio
d80dbdae68 v2, util: Take the full binary path when starting the shimv2 process
The current code simply ignores the full binary path when starting the
shimv2 process, and instead fallbacks to a binary in the path, and this
is problematic (and confusing) for those using CRI-O, which has this
bits vendored.

The reason it's problematic with CRI-O is because the user can simply
set the full binary path and, instead of having that executed, CRI-O
will simply fail to create the container unless that binary is part of
the path, which may not be case in a few different scenarios (testing
being the most common one).

Fixes: #5006

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-05 13:35:22 +01:00
Sebastiaan van Stijn
ec7d905f4e
Update to go 1.15.8
go1.15.8 (released 2021/02/04) includes fixes to the compiler, linker, runtime,
the go command, and the net/http package. See the Go 1.15.8 milestone on the
issue tracker for details.

https://github.com/golang/go/issues?q=milestone%3AGo1.15.8+label%3ACherryPickApproved

full diff: https://github.com/golang/go/compare/go1.15.7...go1.15.8

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-05 12:53:25 +01:00
Akihiro Suda
5f2d02adc5
Merge pull request #4717 from thaJeztah/reduce_libcontainer_use 2021-02-05 14:28:05 +09:00
Derek McGowan
ccbeb550ba
Merge pull request #4991 from kzys/no-auto-clear
mount: setupLoop() doesn't work with with Autoclear
2021-02-04 15:00:52 -08:00
Michael Crosby
e9e3b1d6fd
Merge pull request #5000 from kzys/fix-assert-check
test: fix assert.Check's argumets to show its parameters correctly
2021-02-04 16:11:24 -05:00
Kazuyoshi Kato
07db46ee23 lint: update nolint syntax for golangci-lint
Newer golangci-lint needs explicit `//` separator. Otherwise it treats
the entire line (`staticcheck deprecated ... yet`) as a name.

https://golangci-lint.run/usage/false-positives/#nolint

Signed-off-by: Kazuyoshi Kato <katokazu@amazon.com>
2021-02-04 11:59:55 -08:00
Kazuyoshi Kato
b14ccd2053 ci/gha: upgrade golangci-lint from v1.29.0 to v1.36.0
Signed-off-by: Kazuyoshi Kato <katokazu@amazon.com>
2021-02-04 11:59:51 -08:00
Phil Estes
aa5e55ad98
Merge pull request #4980 from thaJeztah/prevent_cio_npe
cio: prevent NPE when closing, and fix pipes potentially not being closed on Windows
2021-02-04 14:24:10 -05:00
Phil Estes
e178af2d36
Merge pull request #4999 from thaJeztah/retry_fedora
ci/gha/fedora: retry vagrant up
2021-02-04 14:11:36 -05:00
Kazuyoshi Kato
05a2e280ac mount: make setupLoop() work with with Autoclear
setupLoop()'s Autoclear (LO_FLAGS_AUTOCLEAR) will destruct the
loopback device when all associated file descriptors are closed.

However this behavior didn't work before since setupLoop() was
returning a file name. The looppack device was destructed at
the end of the function when LoopParams had Autoclear = true.

Fixes #4969.

Signed-off-by: Kazuyoshi Kato <katokazu@amazon.com>
2021-02-04 11:04:04 -08:00
Kazuyoshi Kato
2ac33d79fe test: fix assert.Check's argumets to show its parameters correctly
The change I made at db6075fc2 didn't show its parameters correctly.

Signed-off-by: Kazuyoshi Kato <katokazu@amazon.com>
2021-02-04 10:56:58 -08:00
Sebastiaan van Stijn
f101c8ac6c
ci/gha/fedora: retry vagrant up
download.fedoraproject.org gives HTTP 404 at times,
breaking the CI. Let's give it another chance.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-04 18:21:49 +01:00
Sebastiaan van Stijn
04d061fa6a
update runc to v1.0.0-rc93
full diff: https://github.com/opencontainers/runc/compare/v1.0.0-rc92...v1.0.0-rc93

also removes dependency on libcontainer/configs

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-04 16:13:30 +01:00
Sebastiaan van Stijn
54cc3483ff
pkg/cri/server: don't import libcontainer/configs
Looks like this import was not needed for the test; simplified the test
by just using the device-path (a counter would work, but for debugging,
having the list of paths can be useful).

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-04 16:08:39 +01:00
Michael Crosby
99cb62f233 [cri] add image-name annotation
For some tools having the actual image name in the annotations is helpful for
debugging and auditing the workload.

Signed-off-by: Michael Crosby <michael@thepasture.io>
2021-02-04 07:05:11 -05:00
Phil Estes
ccde82da2b
Merge pull request #4987 from Random-Liu/fix-auth-config-conversion
Fix deprecated registry auth conversion.
2021-02-03 23:29:13 -05:00
Lantao Liu
b5bf1fd5d8 Fix deprecated registry auth conversion.
Signed-off-by: Lantao Liu <lantaol@google.com>
2021-02-03 19:22:26 -08:00
Derek McGowan
40542305bf
Merge pull request #4994 from kzys/kill-before-buf
test: stop containerd before accessing the stdout
2021-02-03 15:05:41 -08:00
Kazuyoshi Kato
310e59073c test: stop containerd before accessing the stdout
The variable `buf` is connected to containerd's stdout. So, accessing
the variable before killing containerd can cause a race condition.

Signed-off-by: Kazuyoshi Kato <katokazu@amazon.com>
2021-02-03 10:02:32 -08:00
Phil Estes
f07e1811ef
Merge pull request #4988 from Iceber/fix-runc-v2-service
runtime: fix shutdown runc v2 service
2021-02-02 09:05:26 -05:00
IceberGu
b458583b76
runtime: fix shutdown runc v2 service
Signed-off-by: IceberGu <wei.cai-nat@daocloud.io>
2021-02-02 15:36:49 +08:00
Maksym Pavlenko
a39478ab9a
Merge pull request #4986 from kzys/devmapper-log
snapshot/devmapper: log actual values to investigate #4965
2021-02-01 18:13:07 -08:00
Kazuyoshi Kato
db6075fc24 snapshot/devmapper: log actual values to investigate #4965
This test has been flaky in GitHub Actions. This change logs the
values from devmapper to further investigate the issue.

Signed-off-by: Kazuyoshi Kato <katokazu@amazon.com>
2021-02-01 16:27:59 -08:00
Phil Estes
49c5c14879
Merge pull request #4906 from payall4u/bugfix/fix-open-shim-fifo
bugfix: change the flag of open log fifo to avoid containerd hang on syscall open
2021-02-01 09:01:38 -05:00
Sebastiaan van Stijn
7a468a3f3f
cio.copyIO: refactor to use cio.Close() (windows)
Use the existing `.Close()` method instead of implementing the same
logic in this function.

The defer sets `cios` to `nil` if an error occurred to preserve the
existing behavior.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-01 11:22:08 +01:00
Sebastiaan van Stijn
219fa3d0a5
cio.copyIO: fix pipes potentially not being closed (Windows)
The defer functions were checking the local variable, and would therefore
not be executed, as the function returned if an error occurred.

Perhaps best illustrated when renaming the local variables;

    if fifos.Stdin != "" {
        l, err1 := winio.ListenPipe(fifos.Stdin, nil)
        if err1 != nil {
            return nil, errors.Wrapf(err1, "failed to create stdin pipe %s", fifos.Stdin)
        }
        defer func(l net.Listener) {
            if err1 != nil {
                l.Close()
            }
        }(l)
        // ...
    }

    if fifos.Stdout != "" {
        l, err2 := winio.ListenPipe(fifos.Stdout, nil)
        if err2 != nil {
            return nil, errors.Wrapf(err2, "failed to create stdout pipe %s", fifos.Stdout)
        }
        defer func(l net.Listener) {
            if err2 != nil {
                l.Close()
            }
        }(l)
        // ....
    }

This patch changes the function to use a named return variable, and to use
a single `defer()` that closes all pipes.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-01 11:19:50 +01:00
Sebastiaan van Stijn
baf6c1d5e2
cio: openFifos() use named return variables to use in defer()
This change is mostly defensive; when checking for the returned
error, it's easy to make a mistake, and check for a "local" error,
not the actual returned error.

This patch changes the function to use a named return variable,
which is checked in the defer.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-01 11:17:54 +01:00
Sebastiaan van Stijn
6a2d3990d1
cio: FIFOSet.Close() check if FIFOSet is nill to prevent NPE
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-02-01 11:17:51 +01:00
payall4u
957fa3379d change flag from RDONLY to RDWR and close the fifo correct
Signed-off-by: Zhiyu Li <payall4u@qq.com>
2021-01-31 19:00:42 +08:00
Aleksa Sarai
d8572b6ca6
apparmor: handle signal mediation
On newer kernels and systems, AppArmor will block sending signals in
many scenarios by default resulting in strange behaviours (container
programs cannot signal each other, or host processes like containerd
cannot signal containers).

The reason this happens only on some distributions (and is not a kernel
regression) is that the kernel doesn't enforce signal mediation unless
the profile contains signal rules. However because our profies #include
the distribution-managed <abstractions/base>, some distributions added
signal rules -- which results in AppArmor enforcing signal mediation and
thus a regression. On these systems, containers cannot send and receive
signals at all -- meaning they cannot signal each other and the
container runtime cannot kill them either.

This issue was fixed in Docker in 2018[1] but this code was copied
before then and thus the patches weren't carried. It also contains a new
fix for a more esoteric case[2]. Ideally this code should live in a
project like "containerd/apparmor" so that Docker, libpod, and
containerd can share it, but that's probably something to do separately.

In addition, the copyright header is updated to reference that the code
is copied from Docker (and thus was not written entirely by the
containerd authors).

[1]: https://github.com/docker/docker/pull/37831
[2]: https://github.com/docker/docker/pull/41337

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2021-01-30 07:59:00 +11:00