Commit Graph

2224 Commits

Author SHA1 Message Date
Peng Tao
171eb70564 qemu: use govmm vhost user device types directly
For one thing, we should not make kata's internal device type
exactly as govmm string by string.

For another thing, latest govmm changes the device driver strings
and it breaks kata in such a way but the fault is on kata side IMHO.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-02-26 00:33:55 -08:00
Peng Tao
46392945c6 qemu: pass guest image file readonly
So that we fobid guest from making changes to it.

Fixes: #2476
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-02-25 18:46:26 -08:00
Peng Tao
63fdf5328f vendor: update govmm dependency
To include block readonly capability. Included commits:

3700c55 qemu: add block device readonly support
88a25a2 Refactor code to support multiple virtio transports at runtime
2ee53b0 qemu: Don't set ".cache-size=" when CacheSize is 0

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-02-25 18:46:26 -08:00
GabyCT
18b21eb6ca
Merge pull request #2490 from jcvenegas/fix-2489
clh: Fix version check
2020-02-25 14:53:58 -06:00
GabyCT
d9d4820684
Merge pull request #2441 from devimc/topic/virtcontainers/cgroupsV2
Implement cgroup manager
2020-02-21 15:01:39 -06:00
Xu Wang
e66dce1bc7
Merge pull request #2475 from bergwolf/umount
vc: do not follow symlink when umounting contanier host path
2020-02-21 18:09:32 +08:00
Julio Montes
ea82922a54 virtcontainers/pkg/cgroups: implement cgroup manager
cgroup manager is in charge to create and setup cgroups for
virtual containers, for example it adds /dev/kvm and
/dev/vhost-net to the list of cgroup devices in order to have
virtual containers working.

fixes #2438
fixes #2419

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-21 02:54:34 +00:00
Julio Montes
03cdf6c4a9 virtcontainers: add new package for cgroups
virtcontainers/pkg/cgroups contains functions and structures needed to deal
with cgroups and virtual containers

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-21 02:28:02 +00:00
Jose Carlos Venegas Munoz
d54723a5c4
Merge pull request #2487 from likebreath/update-clh-openapi-yaml
clh: update CLH to stable/v0.5.x
2020-02-20 15:19:28 -06:00
Jose Carlos Venegas Munoz
33459779c4 clh: update minimal supported version to check.
Kata now uses v0.5.0 and is not compatible with old versions.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-20 20:45:42 +00:00
Jose Carlos Venegas Munoz
20332298ab clh: Fix version check
Add support for new version format from clh.

Fixes: #2489

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-20 20:10:38 +00:00
Bo Chen
12d10eb2dc clh: Update clh driver to use the latest openAPI knobs
We leverage the new openAPI knobs from CLH to set readonly for disk image
and we also pass kernel cmd to set guest root filesystem readonly.

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-02-20 11:44:41 -08:00
Bo Chen
de8fe25dd5 clh: Update CLH to stable/v0.5.x
Use CLH branch stable/v0.5.x, and also re-generate the openAPI client
code with the new 'cloud-hypervisor.yaml'.

Fixes: #2488

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-02-20 11:44:33 -08:00
Julio Montes
feac6648fa
Merge pull request #2482 from jcvenegas/fix-2481
clh: Do not find vsock context ID
2020-02-20 08:20:39 -06:00
Peng Tao
5f9a77cccc vc: validate container path when cleaning up
A malicious can trick us with a crafted container
rootfs symlink and make runtime umount other mountpoints.
Make sure we do not walk through symlinks when umounting.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-02-19 19:14:06 -08:00
Archana Shinde
23625681d4
Merge pull request #2472 from amshinde/1.11.0-alpha0-branch-bump
# Kata Containers 1.11.0-alpha0
2020-02-19 18:37:17 -08:00
Jose Carlos Venegas Munoz
32196ff750 clh: Do not find vsock context ID
cloud-hypervisor uses `hybrid vsocks`, it is not needed to find a
context ID.

Fixes: #2481

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-19 22:32:40 +00:00
Archana Shinde
9f240b241a
Merge pull request #2480 from jcvenegas/fix-ldflags
makefile: Fix missing LDFLAGS references
2020-02-19 13:20:59 -08:00
Jose Carlos Venegas Munoz
db5cfebd09 makefile: Fix missing LDFLAGS references
KATA_LDFLAGS should be applied to all golang calls.

Fixes: #2478

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-19 19:53:59 +00:00
Salvador Fuentes
2c0e8ff499
Merge pull request #2479 from jcvenegas/fix-2478
makefile: do not use LDFLAGS for extra kata flags.
2020-02-19 12:15:53 -06:00
Jose Carlos Venegas Munoz
b74cda0243 makefile: do not use LDFLAGS for extra kata flags.
Some flags defined by the host may not be compatible with golang,
not use LDFLAGS but use our own variable.

Fixes: #2478

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-19 16:49:40 +00:00
Peng Tao
5bf3231213 vc: do not follow symlink when umounting contanier host path
So that if a guest changes it, we do not end up
propergating the error.

Fixes: #2474
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-02-19 05:37:41 -08:00
Archana Shinde
44b09670b2
Merge pull request #2376 from Pennyzct/version_compatibility
kata-check: Add version consistency check
2020-02-18 19:32:31 -08:00
Archana Shinde
c2462e7e43 release: Kata Containers 1.11.0-alpha0
- Fix typos in sandbox and persist/fs
- AArch64: change image rootfs from fedora to ubuntu
- build: Add support to strip the binary
- kernel: Update kernel to latest stable 5.4.15
- selinux: Disable selinux
- rootless: implement rootless fs and support --rootless option
- ci: Do not setup virtcontainers while using podman
- CI: update yq to 3.1.0
- dep: Fix dep check
- Update Cloud Hypervisor to v0.5.0
- docs: README: Minor grammatical updates
- FC: Update Firecracker to v0.20.0
- Support hotplug PCIe in q35
- virtcontainers: clh: Set the serial to NULL instead of OFF
- s390x: fix refactoring
- AArch64: fix golint error on ARM CI.
- versions: bump conmon version to v2.0.5
- virtcontainers: Fix error message in mockHypervisor
- rootless: use libcontainer API to detect rootless
- Add Ipv6 support
- vendor: update agent client
- qemu: Add virtio-mem support
- virtcontainers: constrain docker container when sandbox_cgroup_only=true
- Fix typo in 'sandbox'
- vc: Detach device when unable to store sandbox device
- unit-test: cleaning up stale files under /tmp
- support systemd cgroups and cgroupsV2
- Land experimental "newstore" as formal feature
- versions: update qemu to 4.1.1
- FC: jailer failed when importing new flag "--config-file"
- ut: fix make test failures
- qemu: add disable_image_nvdimm option
- clh: Increase unit test using mock testing
- versions: Update cloud hypervisor url
- rootless: fix rootless for case net=none
- vendor: Update github.com/kata-containers/agent
- shimv2: support runtime config path via annotation
- shimv2: clean up properly if vmm quits unexpectedly
- vendor: Update golang.org/x/sys
- clh: update to latest master
- cache-factory: a few bug fix
- FC: introduce `--config-file` to bypass API ready state
- clh: client: update acording to versions.yaml
- vc: Check error return from storeState
- makefile: honor virtiofs config for default config
- virtiofs: add default value for virtioFsCache type.

0f720e6f virtcontainers: fix typo in sandbox
78bb6c0f virtcontainers/persist: fix typo in fs
2c3b4657 build: Add support to strip the binary
a45cf62e virtcontainers/pkg/rootless: fix comment on exported var
c36c667b cli: implement --rootless option
11bd456a virtcontainers: support new persist API
9585bc92 virtcontainers/hypervisors: support new persist API
00307a70 virtcontainers/sandbox: support new persist API
4b9ab557 virtcontainers/factory: support new persist API
71f48a33 virtcontainers/persist: update `GetDriver` to support rootless fs
dd2762fd virtcontainers/persist: introduce mock fs driver
ea8fb96c virtcontainers/persist: introduce rootless fs driver
768db1bd virtcontainers/persist: update API and interface
6be74811 virtcontainers: remove getVMPath method from agent
658f7797 rootless: move pkg/rootless to virtcontainers
83561c4c ci: Do not setup virtcontainers while using podman
22c486aa CI: update yq to 3.1.0
a8dcff5b AArch64: change image rootfs from fedora to ubuntu
de7383b2 kernel: Update kernel to latest stable 5.4.15
5c3bcd88 dep: Fix dep check
836e3c21 clh: update to v0.5.0
055f3171 selinux: Disable selinux
7498978c Vendor: update agent client
27d9e433 FC: update Firecracker to v0.20.0
bb41b724 qemu: Support PCIe device hotplug for q35
fa7d00ec vendor: update github.com/intel/govmm
b2fb86f3 virtcontainers: clh: Set the serial to NULL instead of OFF
96a49a89 AArch64: arm ci failed on stale Gopkg.lock.
9bf4b859 AArch64: fix golint error on ARM CI.
2560e65e versions: bump conmon version to v2.0.5
693ad238 virtcontainers: Fix error message in mockHypervisor
c5d79eb2 ipv6: Add support for ipv6 for netmon as well.
b169476b ipv6: Add support for ipv6
4a77b0f8 rootless: use libcontainer API to detect rootless
b602e62a docs: README: Minor grammatical updates
c26ce186 vendor: update agent client
01a12b00 qemu: Add virtio-mem support
c3cf98ac virtcontainers: constrain docker container when sandbox_cgroup_only=true
54482f18 virtcontainers: remove json cgroups struct tag
b3374289 vendor: Update github.com/intel/govmm
316b5f2b virtcontainers: Fix typo in logger message
1f957e1b vc: Detach device when unable to store sandbox device
7186c01d unit-test: delete what ioutil.TempFile creates
0244d95e unit-test: delete what ioutil.TempDir() creates
aa62781a unit-test: reconstuct TestMain
d042d5c0 virtcontainers: fix unit tests
776da087 virtcontainers/hook: fix HookState
f372b858 virtcontainers: reimplement setupSandboxCgroup
9949daf4 virtcontainers: move validCgroupPath
ce2795e9 virtcontainers: remove systemd paramenter from constraintGRPCSpec
8c63c180 virtcontainers: add function to create a new cgroup manager
8057cd72 virtcontainers: add function to identify systemd cgroup path
4126968b virtcontainers: save CgroupPaths and Cgroups in sandbox
a170d00b vendor: update agent
112f90b7 vendor: update golang/x/sys
4a1dc1ee vendor: update libcontainer
908a42a4 vendor: update logrus
0af48197 versions: update qemu to 4.1.1
35948550 s390x: fix refactoring
290339da compatibility: keep oldstore for compatibility
4a298cb9 persist: address comments
d33b154d persist: add interface for global read/write
ed4a1954 persist: remove unused struct
8e88859e persist: remove all usage of VCStore
01b4a64b persist: remove VCStore from sandbox/apis
b63e517f persist: replace sandbox lock with newstore.Lock
508101bc persist: fix vmtemplate storage leak
29b55ab8 persist: remove VCStore from container
633748aa persist: remove VCStore from hypervisor
687f2dbe persist: move "newstore" out of experimental
3ed472dc store: UT tmp path should be random
56171206 nsenter: skip ut on non-root
e5b04a5b ut: fs test should set RunStoragePath
9bf0d67f ut: direct factory needs to set VCStorePrefix
4c35d091 vc: set store RunVMStoragePath for ut
3deb24e5 cli: flush coverage report in defer function
f56d70cc vc: UT should set VCStorePrefix
7c7a4a3b annotations: add disable_image_nvdimm
652bb76d cli: syscall return value check is wrong
a8717286 qemu: add disalbe_image_nvdimm option
dd5b4469 qemu: refactor appendImage
a2d3f9f3 vitiofsd: Add virtiofsd interaface
2a085ee6 clh: virtiofsd: check path is not empty
af5c9c23 clh: hypervisor: Do not set 9p values for virtiofs
6a10cd96 clh: test: add unit test
8a439eab clh: add Client Interface and bootVM test
09198eed FC: jailer failed when importing new flag "--config-file"
661956f5 versions: Update cloud hypervisor url
b96c7e5a rootless: fix rootless for case net=none
a215f87e vendor: Update github.com/kata-containers/agent to handle hvsock issue
1c11fe20 shimv2: support runtime config path via annotation
6cd9b3b0 vendor: Update golang.org/x/sys
9c3151e5 clh: remove not requried values
e9a852dd clh: update api calls for latest master
1a7539c1 clh: update client
55323788 versions: update clh to v0.4.0
6eae033f shimv2: cleanup container if not found
743309cd vc: stop container should change container state at last
efb611aa clh: client: update acording to versions.yaml
ab2088f7 makefile: honor virtiofs config for default config
9a154570 vc: Check error return from storeState
8f6d0ab1 FC: introduce `--config-file` to replace API configure request
f2d8d715 FC: func checkVersion should be more independent
9ce21135 FC: remove API Ready state
cc25216b virtiofs: add default value for virtioFsCache type.
837a0ee0 cache-factory: set bridge info when creating vm
3d8ffe41 cache-factory: fix nil pointer runtime panic

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-18 19:37:33 +00:00
Salvador Fuentes
1efcd038ee
Merge pull request #2466 from dong-liuliu/xliu2/spell-typo
Fix typos in sandbox and persist/fs
2020-02-18 07:30:18 -06:00
Liu Xiaodong
0f720e6f37 virtcontainers: fix typo in sandbox
There is a typo 'emtpy' instead of 'empty' in a error message

Fixes: #2465

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-02-17 23:21:37 -05:00
Liu Xiaodong
78bb6c0f66 virtcontainers/persist: fix typo in fs
There is a typo 'writting' instead of 'writing' in a logger error.

Fixes: #2465

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-02-17 23:21:19 -05:00
Salvador Fuentes
ab260e4706
Merge pull request #2450 from Pennyzct/ubuntu_rootfs_on_aarch64
AArch64: change image rootfs from fedora to ubuntu
2020-02-17 07:25:46 -06:00
Penny
01bc98de57
Merge pull request #2456 from justin-he/ldflags
build: Add support to strip the binary
2020-02-17 17:15:15 +08:00
Penny Zheng
1c1e7cc137 unit-test: refine unit tests
we need to refine unit tests due to previous two commits and
add new test for new func checkVersionConsistencyInComponents.

Fixes: #2375

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-02-17 10:13:30 +08:00
Penny Zheng
1ad927d4e8 kata-check: use "--strict" to perform version consistency check
Use `kata-runtime kata-check --strict/-s` to perform version
consistency check.
Only if major version number, minor version number and Patch
number are all the same, we determine those two kata components
are version-consistent.

Fixes: #2375

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-02-17 10:13:19 +08:00
Penny Zheng
a4b3c65c16 kata-env: import new struct VersionInfo
We import new struct VersionInfo for better organizing version info of
kata components, in order to follow Semantic Versioning Specification.

Fixes: #2375

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-02-17 10:13:06 +08:00
Jose Carlos Venegas Munoz
0c3b2c0972
Merge pull request #2422 from amshinde/update-stable-kernel-version
kernel: Update kernel to latest stable 5.4.15
2020-02-14 16:36:21 -06:00
Julio Montes
efb975e4d0
Merge pull request #2443 from amshinde/disable-selinux
selinux: Disable selinux
2020-02-14 07:43:34 -06:00
Jia He
2c3b4657f5 build: Add support to strip the binary
This provides a flag "STRIP=yes" to strip the golang binary

After this patch, the binary size is reduced a lot:
19356680 containerd-shim-kata-v2*
25980728 containerd-shim-kata-v2.nostip*
 4021784 kata-netmon*
 5093992 kata-netmon.nostrip*
26339392 kata-runtime*
33097344 kata-runtime.nostrip*

Fixes: #2455
Signed-off-by: Jia He <justin.he@arm.com>
2020-02-14 16:10:49 +08:00
Julio Montes
f8e52544bf
Merge pull request #2429 from devimc/topic/virtcontainers/rootlessStore
rootless: implement rootless fs and support --rootless option
2020-02-13 15:33:01 -06:00
Julio Montes
a45cf62e75 virtcontainers/pkg/rootless: fix comment on exported var
Fix comment on exported var `IsRootless` should be of the form
`IsRootless ...` (golint)

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
c36c667b10 cli: implement --rootless option
By default virtcontainer auto-detects if the current process is running
rootless or not, but this behavior can change from commandline with the
--rootless option

fixes #2417

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
11bd456a89 virtcontainers: support new persist API
Fix API, container and kata implementations and unit tests to support
the new persist API

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
9585bc929a virtcontainers/hypervisors: support new persist API
Fix hypervisor implementations and unit tests to support the new persist API

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
00307a70ee virtcontainers/sandbox: support new persist API
Fix sandbox implementation and unit tests to support the new persist API

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
4b9ab557c8 virtcontainers/factory: support new persist API
Fix factory implementation and unit tests to support the new persist API

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
71f48a3364 virtcontainers/persist: update GetDriver to support rootless fs
GetDriver returns new PersistDriver according to current needs, a mock fs
driver is returned when mockTesting is enabled, a rootless fs is returned when
rootless is detected, otherwise a fs driver is used.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
dd2762fdad virtcontainers/persist: introduce mock fs driver
Mock FS driver can be used in unit testing to allow

Mock fs driver inherits from FS and may overwrite its methods. All files
and directories created by this driver are under a path accessible for all
users, this path is created under the system temporal directory.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
ea8fb96c3e virtcontainers/persist: introduce rootless fs driver
Rootless fs driver inherits from FS and may overwrite its methods. All files
and directories created by this driver are under a path accessible for the
current user, typically this path is defined by the environment variable
`XDG_RUNTIME_DIR`, if this variable is not defined, the default path
`/run/user/$UID` is used instead, where $UID is the current user ID.

fixes #2416

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
768db1bdc4 virtcontainers/persist: update API and interface
Update persist FS API and interface to support rootless and mock filesystem
implementations. `RunStoragePath` and `RunVMStoragePath` are part of FS
object and may change their path depending on the driver (rootless/mock/fs)

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
6be74811dc virtcontainers: remove getVMPath method from agent
`agent.getVMPath()` is an almost useless method that can be easily replaced
with `filepath.Join()`

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
Julio Montes
658f77979c rootless: move pkg/rootless to virtcontainers
rootless is used in katautils, cli and virtcontainers. It makes more sense
if it's part of virtcontainer, this way virtcontainers won't depend on other
runtime subpackages

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-12 19:09:32 +00:00
GabyCT
645dfc81f6
Merge pull request #2452 from GabyCT/topic/skipvirtcontainers
ci: Do not setup virtcontainers while using podman
2020-02-11 16:14:56 -06:00
Gabriela Cervantes
83561c4ce3 ci: Do not setup virtcontainers while using podman
Skip the setup and installation of virtcontainers as it is using docker,
when we try to setup podman CI.

Depends-on: github.com/kata-containers/tests#2299

Fixes #2451

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-02-11 13:15:09 -06:00