Compare commits

...

5960 Commits

Author SHA1 Message Date
Eric Ernst
3b1e5cbe9b Merge pull request #1569 from bergwolf/2.1-alpha1-branch-bump
# Kata Containers 2.1-alpha1
2021-03-30 06:05:54 -07:00
Peng Tao
75f9963872 release: Kata Containers 2.1-alpha1
- test: install mock hook binary before test
- cgroups: fix the issue of get wrong online cpus
- build: remove unused variables from Makefile
- container: on cleanup, rm container directory for mounts path
- runtime: add support for QEMU 6
- agent: Enable clean shutdown
- runtime: fix virtiofsd RO volume sharing
- runtime: update virtcontainers API documentation
- runtime: Fix trace span ordering and static checks
- fix runtime UTs and enable static check
- kata-deploy: Use the correct tag for 2.1-alpha1 release
- ci: fix virtiofs-experimental build
- Verify container ID
- rustjail: rework execute_hook
- agent: Allow server address to be specified on kernel command-line
- agent: disconnect rpc get_oom_event when destroy_sandbox.
- docs: Update QAT instructions to work with Kata 2.0 repos
- agent: Update Cargo.lock for earlier dependency change
- osbuiler: fixing USE_DOCKER for ppc64le
- agent: Fix unused import warning in unit tests
- [forwardport] Fixup systemd cgroup handling
- runtime: Fix ordering of trace spans
- runtime: add support for readonly sandbox bindmounts
- Bump to QEMU 5.2.0 - respin
- runtime: return hypervisor Pid in TaskExit event
- agent: makefile: Add codecov target
- Bump to QEMU 5.2.0
- exec: ensure sup groups are added to agent request
- rustjail: fix the issue of home_dir function
- osbuilder: Port QAT Dockerfile to 2.0 repo
- agent-ctl: Unbreak build
- rustjail: fix the issue of bind mount device file from guest
- musl/arm64: decompression before use the tarball.
- osbuilder/arm64: build musl toolchain from source code if needed
- runtime: Fix missing 'name' field on containerd-shim-v2 logs
- agent: don't error of virtiofs share is already mounted
- shimv2: return the hypervisor's pid as the container pid
- runtime: check if error loading runtime config
- agent: fix clippy for rustc 1.5
- agent: Upgrade tokio to 1.2.0
- rustjail: fix blkio conversion
- agent: Agent invokes OCI hooks with wrong PID
- kata-deploy: stop mentioning qemu-virtiofsd, as the default qemu supports virtiofsd already (plus some cleanups)
- agent: Stop receive message from Receiver if got None
- Remove "Docker" & "[kata] runtime" references from the release scripts & process documentation
- kata-deploy: Ensure CRI-O uses shimv2 & the "vm" runtime type
- makefile: agent: Add self documented help
- runtime: connect guest debug console bypass kata-monitor
- Clean up PCI path handling
- runtime: Create tracer later in shimv2
- Agent: OCI hooks return malformed json
- osbuilder: Allow image registry to be customizable
- docs: Update licensing strategy to use kata 2.0 repository
- runtime: clh-config: add runtime hooks to the clh toml
- Fix Snap CI
- runtime: cpuset: when creating container, don't pass cpuset details
- agent: Remove bogus check from list_interfaces() unit test
- cli: Add aliases for `kata-` options
- github: Only run kata-deploy-test on pull-requests
- docs: Fix the installation directory of virtiofsd
- osbuilder: Fix USE_DOCKER on s390x
- Add katacontainers end-to-end arch image
- Build for glibc on s390x
- packaging: Fix vmlinux kernel install on s390x
- ci: Upgrade to yq 3.4.1
- kernel: Don't fail if "experimental" dir doesn't exist
- kata-deploy: Remove kata-deploy-docker.sh
- runtime: migrate from opentracing to opentelemetry
- rustjail: use rlimit crate
- rustjail: get all capabilities dynamically
- agent: README update to install protoc for ppc64le
- qemu: Add security fixes for CVE-2020-35517
- Fix lints and remove allow attributes which silence these warnings
- arm64: enable acpi for qemu/virt.
- osbuilder: Enforcing LIBC=gnu to rootfs build for ppc64le
- Fix async problems
- kata-monitor: set buildmode to exe to avoid build failing
- osbuilder: add description for how to use DISTRO variable
- kata-monitor: allow for building for alpine
- shimv2: log a warning and continue on post-stop hook failure
- kernel: Updates to kernel config for ppc64le
- agent: add secure_join to prevent softlink escape
- rustjail: fix the issue of container's cgroup root path
- osbuilder: remove traces of cmake
- versions: Update cloud-hypervisor to release v0.12.0
- clh: Use vanilla kernel.
- osbuilder: miscelaneous fixes/improvements
- branch: change 2.0-dev to main
- snap: Don't release Kata Alpha/RC in snap store
- Migrate to rtnetlink
- agent: Add underscore for constants
- github: Update ubuntu version to 20.04
- agent: implement NVDIMM/PMEM block driver
- rustjail: fix the issue of missing destroy contaienr cgroups
- agent: switch to async runtime

9a4e866 container: on cleanup, rm container directory for mounts path
48e5e4f test: install mock hook binary before test
1d44881 uevent: Add shutdown channel for task
d8d5b4c signal: Move to a new module
011f7d7 logging: Rework for shutdown
7d5f88c agent: Enable clean shutdown
dcb39c6 main: Create logger task
2cf2897 main: Use task list for stopping tasks
039df1d main: Refactor main logic into new async function
2a648fa logging: Use guard to make threaded logging safe
38f0d8d config: Fix assert_error testing macro
3f46e63 cgroups: fix the issue of getting wrong online cpus
e349244 runtime: fix virtiofsd RO volume sharing
532ff7c runtime: update virtcontainers API documentation
6fcfea8 runtime: Fix static check errors
f3ebbb1 runtime: Fix trace span ordering
5a3ee7d snap: Use qemu.version to build snap
0f78a5d kernel: rename exeperimental kernel symlink.
f791052 qemu: Build experimental qemu.
1555bfd runtime: add support for QEMU 6
fc0f93a actions: enable unit tests in PR check
74192d1 runtime: fix static check errors
a2dee1f runtime: fix vm factory UT failure
076bc50 agent-ctl: update Cargo.lock
0153f76 runtime: gofmt code
60f6315 kata-deploy: Use the correct tag for 2.1-alpha1 release
b0e51e5 qemu: Improve cache build
bc587da qemu: Add suffix for qemu binaries.
5493517 qemu: add CACHE_TIMEOUT
98d01ce qemu: Apply patches for specific versions.
190f813 runtime/katautils: PFlash should be initialized
b2ec5a4 runtime: fix cleanupSandboxBindMounts panic
9b689ea runtime/cli: fix TestMainBeforeSubCommandsLoadConfigurationFail failure
8e71c4f runtime: fix missing context argument in mocked sandbox APIs
8ff62be runtime: fix vcmock build failure
0e4b28e rustjail: rework execute_hook
a09e58f packaging: Use local file for assets.
451b45f agent: Make use of test consts for error messages
8c4d334 agent: disconnect rpc get_oom_event when destroy_sandbox.
07cfa4c qemu: patches: Fail if not patches directory
e221c45 versions: Update qemu database
5abdd2a qemu: move 5.0.0 patches to its own dir.
259c179 docs: Update QAT instructions to work with Kata 2.0 repos
34e7d5e agent: Validate CID
b265870 runtime: Validate CID
12e9f7f runtime: Add missing test mock function
ea51c17 agent: Allow server address to be specified on kernel command-line
4bf84b4 runtime: Add contexts to calls in unit tests
9e4932a runtime: use root span for shimv2 tracing
6b0dc60 runtime: Fix ordering of trace spans
3a77e4e build: remove unused variables from Makefile
d7cb3df cgroups: Add systemd detection when creating cgroup manager
f659871 cgroups: remove unused SystemdCgroup variable and accessor/mutators
b0e966c agent: Fix unused import warning in unit tests
d5a9d56 agent: Update Cargo.lock for earlier dependency change
0f7950f packaging: configure QEMU with -O2
224c50f snap: Package virtiofsd and fix path
f0d4985 exec: ensure sup groups are added to agent request
b034458 runtime: return hypervisor Pid in TaskExit event
81607e3 rustjail: fix the issue of home_dir function
c258ea2 agent-ctl: Function parameter cleanup
fcd45de agent-ctl: Unbreak build
efe625d build: Remove whitespace
48ed8f3 runtime: add support for readonly sandbox bindmounts
7ae349c agent: makefile: Add codecov target
f580d33 musl/arm64: decompression before use the tarball.
2da058e osbuild: build musl toolchain from source if needed
6417067 osbuilder: Port QAT Dockerfile to 2.0 repo
85601cd snap: Update for QEMU 5.2.0
88cef33 versions: update QEMU to 5.2.0
21bdaaf runtime: Fix missing 'name' field on containerd-shim-v2 logs
74a893f packaging: Refactor version comparisons on configure-hypervisor.sh
34dc861 rustjail: fix the issue of bind mount device file from guest
0f70983 runtime: check if error loading runtime config
6f72076 agent: fix clippy for rustc 1.5
4a21472 agent: Fix test
02079db agent: upgrade tokio to 1.0
a42dc74 agent: Agent invokes OCI hooks with wrong PID
17e9a2c agent: don't error of virtiofs share is already mounted
947913f agent/protocols: Remove cargo:rerun-if-changed in build.rs
bc0ac52 shimv2: return the hypervisor's pid as the container pid
10ed3da release: Rename runtime-release-notes to release-notes
f5dab6a release: We're not compatible with Docker.
2c8ea0a kata-deploy: Add copyright to the kata-deploy's Dockerfile
4e494e3 packaging: Remove NEMU mentions
f21c54a kata-deploy: QEMU, for 2.x, already includes virtiofs
657bd78 kata-deploy: Get rid of references to the docker script
dcea086 rustjail: fix blkio conversion
bc34cbb agent: Stop receive message from Receiver if got None
01481d6 kata-deploy: Ensure CRI-O uses the VM runtime type
d1c7173 kata-deploy: Move the containerd workarounds to their own functions
5013634 kata-deploy: Stop shipping kata-{clh,fc,qemu,qemu-virtiofs} binaries
2270f19 kata-deploy: Update README to reflect the current distributed artifacts
a494c4d makefile: agent: Add self documented help
72cb928 vhost-user-blk: Use PciPath type for vhost user devices
74f5b5f runtime/block: Use PciPath type through block code
32b40f5 runtime/network: Use PciPath type through network handling
87c5823 agent/device: Add unit test for pcipath_to_sysfs()
066ce7a agent/device: Pass root bus sysfs path to pcipath_to_sysfs()
fda48a9 agent/device: Use pci::Path type, name things consistently
c12b86d agent/device: Generalize PCI path resolution to any number of bridges
3715c57 agent/device: Rename and clarify semantics of get_pci_device_address()
7e92831 protocols: Update PCI path names / terminology in agent protocol def
8e5fd8e runtime: Introduce PciSlot and PciPath types
7464d05 agent: PCI path type
b22259a agent: PCI slot type
8c2f9e6 gitignore: Ignore *~ editor backup files
b412e15 osbuilder: Port QAT Dockerfile to 2.0 repo
5096103 osbuiler: fixing USE_DOCKER for ppc64le
a44b272 runtime: Create tracer later in shimv2
49bdbac osbuilder: Allow image registry to be customizable
fdc573d docs: Update licensing strategy to use kata 2.0 repository
2e2749a runtime: clh-config: add runtime hooks to the clh toml
ef72926 ci: snap: run snap CI on every pull request
919d512 snap: fix kernel setup
d054841 ci: snap: build targets that not need sudo first
a115338 ci: snap: define proxy variables
df14d38 Agent: OCI hooks return malformed json
3721351 runtime: cpuset: when creating container, don't pass cpuset details
c9c7c12 agent: Remove bogus check from list_interfaces() unit test
cb6d2f3 osbuilder: alphabetize fields
056d742 docs: Update documentation with new prefixless config options
fdcde79 cli: use new prefixless config options in tools scripts
02ee8b0 cli: Add aliases for kata- options
c6bc43b docs: Fix broken link to fluentbit.io docs
20b27a1 docs: Fix the installation directory of virtiofsd
11fe6a3 osbuilder: Fix USE_DOCKER on s390x
10f1c30 kata-runtime: use filepath.Join() to compose file path
f4ae9c8 docs: Update Developer-Guide.md
9963428 docs: update document for using debug console
44cde6e runtime: connect guest debug console bypass kata-monitor
3406502 runtime: add jaeger configuration items
fbab262 kernel: Don't fail if "experimental" dir doesn't exist
e1dce3a rustjail: use rlimit crate
8045104 ci: Upgrade to yq 3.4.1
3d3e4dc packaging: Fix vmlinux kernel install on s390x
a252d86 rustjail: get all capabilities dynamically
62cbaf4 kata-deploy: Remove kata-deploy-docker.sh
50fea9f github: Only run kata-deploy-test on pull-requests
b548114 qemu: Add security fixes for CVE-2020-35517
11680ef agent: README update to install protoc for ppc64le
f16ab49 agent: fix non_camel_case_types lint and stop hiding the warning
8ffe4d6 agent: fix unused_parens lint and stop hiding the warning
f70ca69 agent: remove #![allow(unused_unsafe)]
e28bf7a agent: fix dead_code lint
05da23a agent: fix non_snake_case lint and remove ![allow(non_snake_case)]
afb4197 osbuilder: Build for glibc on s390x
a1cedc5 agent: Build for glibc on s390x
9f237aa docs: add katacontainers end-to-end arch image
254b98d rustjail: fix unit test test_process
b25575b agent: remove crate signal-hook which are no longer used
b1880b3 rustjail: remove unnecessary #[async_trait]
83e9414 rustjail: add unittest test_execute_hook
d204100 rustjail: close stdin in execute_hook after it was sent
bb08131 rustjail: fix fork/child in execute_hook
17df9b1 runtime: migrate from opentracing to opentelemetry
71aeb92 osbuilder: updates for feedback
8e2b19a osbuilder: add description for how to use DISTRO variable
b6c2a60 kata-monitor: set buildmode to exe to avoid build failing
9f7a7a4 osbuilder: Enforcing LIBC=gnu to rootfs build for ppc64le
a88b896 kernel: Updates to kernel config for ppc64le
b7a1f75 arm64: enable acpi for qemu/virt.
448771f rustjail: fix the issue of container's cgroup root path
fd39f0f osbuilder: Add "Agent init" on terms glossary
e111093 agent: add secure_join to prevent softlink escape
1273e48 osbuilder: Fix urls to repositories
ba9fa49 osbuilder: Use Fedora and CentOS registries
c2d14cd versions: Update cloud-hypervisor to release v0.12.0
0e57393 shimv2: log a warning and continue on post-start hook failure
e7043fe shimv2: log a warning and continue on post-stop hook failure
3718df6 osbuilder: Remove leftover pieces related to cmake
d1bf829 kernel: ACPI: Always build evged for stable kernel
6f3d591 clh: Use vanilla kernel.
fd5592d branch: change 2.0-dev to main
2b880d2 snap: Don't release Kata Alpha/RC in snap store
14a63cc agent: Add underscore for constants
fa93831 agent: Address linter and tests
96762ab agent: Remove old netlink crate
0ea8243 github: Update ubuntu version to 20.04
33367be agent: Integrate netlink
23f3aef agent: Implement new netlink module
12551de agent: implement NVDIMM/PMEM block driver
6abb1be rustjail: fix the issue of missing destroy contaienr cgroups
fe67f57 agent: set edition = "2018" in .rustfmt.toml to fix rustfmt about async fn
df68771 agent-ctl: Update ttrpc to 0.4.14 for agent-ctl
37e285b agent: Make debug console async
f3bd439 agent: fix tests for async functions
9f79ddb agent: use tokio Notify instead of epoll to fix #1160
332fa4c agent: switch to async runtime
5561755 agent: Initial switch to async runtime
2f1cb79 kata-monitor: allow for building for alpine

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-30 07:36:36 +00:00
Tim Zhang
b58fb25d88 Merge pull request #1555 from liubin/fix/1554-install-hook-before-test
test: install mock hook binary before test
2021-03-30 14:01:56 +08:00
Eric Ernst
05680b86c4 Merge pull request #1537 from lifupan/main
cgroups: fix the issue of get wrong online cpus
2021-03-29 15:56:03 -07:00
Eric Ernst
460117a1a6 Merge pull request #1510 from littlejawa/issue_1003
build: remove unused variables from Makefile
2021-03-29 14:54:09 -07:00
Eric Ernst
24214a536a Merge pull request #1560 from egernst/fix-1559
container: on cleanup, rm container directory for mounts path
2021-03-29 14:14:52 -07:00
GabyCT
17840cb573 Merge pull request #1546 from devimc/2021-03-24/supportQEMU6
runtime: add support for QEMU 6
2021-03-29 14:33:16 -06:00
Eric Ernst
6dfe3acf93 Merge pull request #1535 from jodh-intel/agent-shutdown
agent: Enable clean shutdown
2021-03-29 12:26:01 -07:00
Eric Ernst
9a4e866654 container: on cleanup, rm container directory for mounts path
A wrong path was being used for container directory when
virtiofs is utilized. This resulted in a warning message in
logs when a container is killed, or completes:

level=warning msg="Could not remove container share dir"

Without proper removal, they'd later be cleaned up when the shared
path is removed as part of stopping the sandbox.

Fixes: #1559

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-03-29 11:39:39 -07:00
bin
48e5e4f2f3 test: install mock hook binary before test
`make test` depends mock hook in virtcontainers directory,
before test, install it first.

And also run test as normal user and root in GitHub actions.

Fixes: #1554

Signed-off-by: bin <bin@hyper.sh>
2021-03-29 22:40:45 +08:00
James O. D. Hunt
1d448813a1 uevent: Add shutdown channel for task
Allow the uevent task to shutdown on request.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-29 14:32:12 +01:00
James O. D. Hunt
d8d5b4cd1d signal: Move to a new module
Move the signal handling code into a new module and refactor into the
main handler and a new SIGCHLD handling function to make the code
simpler and easier to understand.

Also added a unit test for shutdown.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-29 14:32:12 +01:00
James O. D. Hunt
011f7d785a logging: Rework for shutdown
Make changes to logger thread to allow the logger to be replaced with
a NOP logger (required for agent shutdown).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-29 14:32:12 +01:00
James O. D. Hunt
7d5f88c0ad agent: Enable clean shutdown
The agent doesn't normally shutdown: it doesn't need to be as it is
killed *after* the workload has finished. However, a clean and ordered
shutdown sequence is required to support agent tracing, since all trace
spans need to be completed to ensure a valid trace transaction.

Enable a controlled shutdown by allowing the main threads (tasks) to be
stopped.

To allow this to happen, each thread is now passed a shutdown channel
which it must listen to asynchronously, and shut down the thread if
activity is detected on that channel.

Since some threads are created for I/O and since the standard `io::copy`
cannot be stopped, added a new `interruptable_io_copier()` function
which shares the same semantics as `io::copy()`, but which is also
passed a shutdown channel to allow asynchronous I/O operations to be
stopped cleanly.

Fixes: #1531.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-29 14:32:12 +01:00
James O. D. Hunt
dcb39c61f1 main: Create logger task
Encapsulate the logic for handling the task that displays logger output
into a new function to simplify the code and remove another anonymous
async block.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-29 14:32:11 +01:00
James O. D. Hunt
2cf2897d31 main: Use task list for stopping tasks
Maintain a list of tasks and wait on them all before main returns.

This is preparatory work for the agent shutdown: all tasks that are
started need to be added to the list. This aggregation makes it easier
to identify what needs to stop before the agent can exit cleanly.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-29 14:32:11 +01:00
James O. D. Hunt
039df1d727 main: Refactor main logic into new async function
Move most of the main logic into a separate async function. This makes
the code clearer and avoids the anonymous async block.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-29 14:32:11 +01:00
James O. D. Hunt
2a648fa760 logging: Use guard to make threaded logging safe
Return a guard variable from `create_logger()` which the caller can
implicitly drop to guarantee that all threads started by the async log
drain are stopped.

This fixes a long-standing bug [1] whereby the agent could panic with
the following error, generated by the `slog` logging crate:

```
slog::Fuse Drain: Custom { kind: Other, error: "serde serialization error: Bad file descriptor (os error 9)" }
```

[1] - See https://github.com/kata-containers/kata-containers/issues/171.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-29 14:32:11 +01:00
James O. D. Hunt
38f0d8d3ce config: Fix assert_error testing macro
Fixed the `assert_error!()` test macro so that it correctly handles the
scenario where the test expects an error, but the actual result was `Ok`
(no error).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-29 14:32:11 +01:00
Bin Liu
594c47ab6c Merge pull request #1553 from bergwolf/ro-volumes
runtime: fix virtiofsd RO volume sharing
2021-03-29 20:43:34 +08:00
fupan.lfp
3f46e6379d cgroups: fix the issue of getting wrong online cpus
It's better to get the online cpus from
"/sys/devices/system/cpu/online" instead of from
cpuset cgroup, cause there would be an latency
between one cpu online and present in the root
cpuset cgroup.

Fixes: #1536

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2021-03-29 15:49:15 +08:00
Fupan Li
6932ac6522 Merge pull request #1460 from liubin/fix/1455
runtime: update virtcontainers API documentation
2021-03-29 15:24:41 +08:00
Peng Tao
e34924488b runtime: fix virtiofsd RO volume sharing
Right now we rely heavily on mount propagation to share host
files/directories to the guest. However, because virtiofsd
pivots and moves itself to a separate mount namespace, the remount
mount is not present in virtiofsd's mount. And it causes guest to be
able to write to the host RO volume.

To fix it, create a private RO mount and then move it to the host mounts
dir so that it will be present readonly in the host-guest shared dir.

Fixes: #1552
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-29 13:54:25 +08:00
bin
532ff7c909 runtime: update virtcontainers API documentation
Virtcontainers API documentation is outdated, update documentation from the latest
source.

Fixes: #1455

Signed-off-by: bin <bin@hyper.sh>
2021-03-29 11:50:53 +08:00
Chelsea Mafrica
b9489e6c6e Merge pull request #1551 from cmaf/fix-span-ordering-static-check
runtime: Fix trace span ordering and static checks
2021-03-26 16:35:23 -07:00
Chelsea Mafrica
6fcfea8dcf runtime: Fix static check errors
Fix comment formatting and unused variable to make static checks pass.

Fixes #1550

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2021-03-25 12:59:01 -07:00
Chelsea Mafrica
f3ebbb1f1a runtime: Fix trace span ordering
Return ctx in trace() functions to correct span ordering.

Fixes #1550

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2021-03-25 11:43:04 -07:00
Bin Liu
5b5b5cc611 Merge pull request #1539 from bergwolf/ut
fix runtime UTs and enable static check
2021-03-25 16:29:45 +08:00
Fabiano Fidêncio
deca207608 Merge pull request #1542 from fidencio/wip/kata-deploy-use-the-correct-image-for-alpha
kata-deploy: Use the correct tag for 2.1-alpha1 release
2021-03-25 08:32:06 +01:00
Carlos Venegas
753c7270ed Merge pull request #1422 from jcvenegas/2021-02-17/experimental-virtiofs
ci: fix virtiofs-experimental build
2021-03-24 14:47:27 -06:00
Carlos Venegas
5a3ee7d7e9 snap: Use qemu.version to build snap
Use only one key to refer the version used by kata.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-24 17:52:52 +00:00
Carlos Venegas
0f78a5dc96 kernel: rename exeperimental kernel symlink.
use -experimental suffix instead of virtiofs

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-24 17:52:52 +00:00
Carlos Venegas
f79105231c qemu: Build experimental qemu.
Split qemu script to build qemu experimental using
same dockerfile.

Fixes: #1421

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

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-24 17:52:07 +00:00
Julio Montes
1555bfd8b5 runtime: add support for QEMU 6
Use `on` and `off` to enable or disable features,
`no` prefix is deprecated

fixes #1545

Signed-off-by: Julio Montes <julio.montes@intel.com>
2021-03-24 10:55:35 -06:00
James O. D. Hunt
2fc7f75724 Merge pull request #1521 from jodh-intel/verify-cid
Verify container ID
2021-03-24 13:27:58 +00:00
Peng Tao
fc0f93aef9 actions: enable unit tests in PR check
Right now we only run UTs for agent. We need to run it for *ALL*
components.

Fixes: #1538
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-24 20:12:14 +08:00
Peng Tao
74192d179d runtime: fix static check errors
It turns out we have managed to break the static checker in many
difference places with the absence of static checker in github action.
Let's fix them while enabling static checker in github actions...

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-24 20:10:19 +08:00
Peng Tao
a2dee1f6a0 runtime: fix vm factory UT failure
We need to use different mocked socket otherwise they conflict with each
other.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-24 18:21:21 +08:00
Peng Tao
076bc5075f agent-ctl: update Cargo.lock
Just build would result in these diffs. Let's include them in git.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-24 15:03:52 +08:00
Peng Tao
0153f76b07 runtime: gofmt code
Looks like we have merged a lot of code that is not properly formated.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-24 14:37:46 +08:00
Bin Liu
018454be44 Merge pull request #1534 from Tim-Zhang/rework-execute_hook
rustjail: rework execute_hook
2021-03-24 14:09:09 +08:00
Fabiano Fidêncio
60f6315b2d kata-deploy: Use the correct tag for 2.1-alpha1 release
Let's ensure we use the appropriate tag for the release, even before it
was actually created.

Fixes: #1493

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-03-24 00:29:03 +01:00
Carlos Venegas
b0e51e59fa qemu: Improve cache build
Add arguments and files as needed, if only of them
changes the build will start from the change and
not from scratch.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-23 20:52:39 +00:00
Carlos Venegas
bc587da9f5 qemu: Add suffix for qemu binaries.
To build different qemu versions with the
same qemu code add a prefix on install.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-23 20:52:39 +00:00
Carlos Venegas
5493517b4f qemu: add CACHE_TIMEOUT
Add docker ARG to provide a date to invalid cache, if the date changes
the image will be rebuild. This is required to keep build dependencies
with security fixes, but still take advantage of build qemu faster using
docker cache.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-23 20:52:39 +00:00
Carlos Venegas
98d01ce6b9 qemu: Apply patches for specific versions.
Today we apply patches per base branch. Having
two qemu versions in a similar base version can make
can have problems if one of the trees already has a patch.
If a patch is needed only for one specific tag/commit
add only the patch to that version.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-23 20:52:39 +00:00
Tim Zhang
40861fbab5 Merge pull request #1517 from jodh-intel/agent-server-address-cmdline
agent: Allow server address to be specified on kernel command-line
2021-03-23 19:33:25 +08:00
Peng Tao
190f813427 runtime/katautils: PFlash should be initialized
newQemuHypervisorConfig() sets it to an empty slice. We have to set the
same in the test config otherwise it is nil and reflect DeepEqual would
fail.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-23 17:49:47 +08:00
Peng Tao
b2ec5a43d5 runtime: fix cleanupSandboxBindMounts panic
Found in UT:
--- FAIL: TestKataCleanupSandbox (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-23 16:44:47 +08:00
Peng Tao
9b689ea1d7 runtime/cli: fix TestMainBeforeSubCommandsLoadConfigurationFail failure
Now that it is `kata-config`...

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-23 16:40:38 +08:00
Peng Tao
8e71c4fc7a runtime: fix missing context argument in mocked sandbox APIs
Missing context.Context in several APIs.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-23 16:19:46 +08:00
Peng Tao
8ff62beeb4 runtime: fix vcmock build failure
github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/vcmock
virtcontainers/pkg/vcmock/container.go:19:10: cannot use c.MockSandbox
(type *Sandbox) as type virtcontainers.VCSandbox in return argument:
        *Sandbox does not implement virtcontainers.VCSandbox (missing
	GetHypervisorPid method)
github.com/kata-containers/kata-containers/src/runtime/pkg/katautils

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-03-23 15:57:07 +08:00
Tim Zhang
0e4b28e838 rustjail: rework execute_hook
Fixes: #1532

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-03-22 20:20:30 +08:00
Bin Liu
dd6da22a11 Merge pull request #1525 from Tim-Zhang/disconnect-get-oom
agent: disconnect rpc get_oom_event when destroy_sandbox.
2021-03-22 15:19:31 +08:00
Chelsea Mafrica
7da3bdc68e Merge pull request #1363 from eadamsintel/qat-docs
docs: Update QAT instructions to work with Kata 2.0 repos
2021-03-19 18:33:19 -07:00
David Gibson
89e5fa7a2f Merge pull request #1506 from dgibson/bug1505
agent: Update Cargo.lock for earlier dependency change
2021-03-20 11:34:32 +11:00
Chelsea Mafrica
8c1abc3b57 Merge pull request #1418 from Amulyam24/fix-docker-ppc64le
osbuiler: fixing USE_DOCKER for ppc64le
2021-03-19 17:22:12 -07:00
Chelsea Mafrica
f26db684c8 Merge pull request #1508 from dgibson/bug1507
agent: Fix unused import warning in unit tests
2021-03-19 14:20:00 -07:00
Chelsea Mafrica
3369fc8b4b Merge pull request #1514 from fgiudici/port_cgroup_fix
[forwardport] Fixup systemd cgroup handling
2021-03-19 14:18:03 -07:00
Chelsea Mafrica
16c6c1e272 Merge pull request #1389 from cmaf/fix-span-ordering
runtime: Fix ordering of trace spans
2021-03-19 13:07:42 -07:00
Carlos Venegas
a09e58fa80 packaging: Use local file for assets.
When kata used multiple repositories, versions file was
downloaded. This is not needed anymore as the file is part
of the same repository.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-19 15:50:41 +00:00
James O. D. Hunt
451b45f9d7 agent: Make use of test consts for error messages
Make use of the `const` values for error messages that were previously
only used for the unit tests. This guarantees consistency.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-19 09:17:31 +00:00
Tim Zhang
8c4d3346d4 agent: disconnect rpc get_oom_event when destroy_sandbox.
Otherwise it would block the shutdown of ttrpc.

Fixes: #1524

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-03-19 16:42:37 +08:00
Carlos Venegas
07cfa4ce22 qemu: patches: Fail if not patches directory
Fail if not patches directory is found.  Help to prevent
build a new qemu version with missing patches.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-18 20:07:40 +00:00
Carlos Venegas
e221c45d7a versions: Update qemu database
Only use 'version' key to build qemu..

The version could be used as any valid target:
branch, tag or commit.

Using different keys to build is confusing.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-18 19:37:35 +00:00
Carlos Venegas
5abdd2aaf0 qemu: move 5.0.0 patches to its own dir.
Some patches has conflicts with old experimental kernel. Move patches to its own specific version.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-18 19:25:55 +00:00
Adams, Eric
259c179162 docs: Update QAT instructions to work with Kata 2.0 repos
This fixes the guide to work with the Kata 2.0 repos and provide more
details on how to verify with ctr and kubernetes.

Fixes: #1362

Signed-off-by: Adams, Eric <eric.adams@intel.com>
2021-03-18 11:19:46 -07:00
James O. D. Hunt
34e7d5ed97 agent: Validate CID
Validate the container ID as we cannot / should not rely on the
container manager / runtime to do this.

Fixes: #1520.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-18 11:19:34 +00:00
James O. D. Hunt
b265870997 runtime: Validate CID
Validate the container ID as we cannot rely on the container manager
doing this.

Fixes: #1520.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-18 11:19:32 +00:00
James O. D. Hunt
12e9f7f82c runtime: Add missing test mock function
Added a missing `vcmock.Sandbox.GetHypervisorPid()` function.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-17 10:37:47 +00:00
James O. D. Hunt
ea51c17b64 agent: Allow server address to be specified on kernel command-line
To make debugging and testing easier, allow the ttRPC server address to
be specified via `/proc/cmdline` as `agent.server_addr=`.

Fixes: #1516.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-17 08:22:03 +00:00
Chelsea Mafrica
4bf84b4b2f runtime: Add contexts to calls in unit tests
Modify calls in unit tests to use context since many functions were
updated to accept local context to fix trace span ordering.

Fixes #1355

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2021-03-16 17:39:28 -07:00
Chelsea Mafrica
9e4932a6e2 runtime: use root span for shimv2 tracing
Add rootCtx to service struct in shimv2 to use as parent of spans
created in shimv2 for a more organized trace ouput.

Fixes #1355

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2021-03-16 17:39:28 -07:00
Chelsea Mafrica
6b0dc60dda runtime: Fix ordering of trace spans
A significant number of trace calls did not use a parent context that
would create proper span ordering in trace output. Add local context to
functions for use in trace calls to facilitate proper span ordering.
Additionally, change whether trace function returns context in some
functions in virtcontainers and use existing context rather than
background context in bindMount() so that span exists as a child of a
parent span.

Fixes #1355

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2021-03-16 17:39:28 -07:00
Fabiano Fidêncio
50f317dcff Merge pull request #1463 from egernst/bindmount-infra
runtime: add support for readonly sandbox bindmounts
2021-03-16 11:34:53 +01:00
Julien Ropé
3a77e4eb8c build: remove unused variables from Makefile
Some variable are initialized in the Makefile, but never used.
Removing them to clean up the Makefile.

Fixes: #1003

Signed-off-by: Julien Ropé <jrope@redhat.com>
2021-03-16 08:51:16 +01:00
Eric Ernsteernst
d7cb3df0d2 cgroups: Add systemd detection when creating cgroup manager
Look at the provided cgroup path to determine whether systemd is being
used to manage the cgroups. With this, systemd cgroups are being detected
and created appropriately for the sandbox.

Fixes: #599

Signed-off-by: Eric Ernsteernst <eric@amperecomputing.com>

(forward port of https://github.com/kata-containers/runtime/pull/2817)
Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
2021-03-16 08:27:14 +01:00
Eric Ernsteernst
f659871f55 cgroups: remove unused SystemdCgroup variable and accessor/mutators
Since we are now detecting, no longer to keep this state.

Signed-off-by: Eric Ernsteernst <eric@amperecomputing.com>

(forward port of https://github.com/kata-containers/runtime/pull/2817)
Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
2021-03-16 08:26:15 +01:00
Wainer Moschetta
943a7553be Merge pull request #1496 from wainersm/qemu_5_2-respin
Bump to QEMU 5.2.0 - respin
2021-03-12 09:48:14 -03:00
David Gibson
b0e966c3bd agent: Fix unused import warning in unit tests
This unneeded import was accidentally introduced by 81607e34.

fixes #1507

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-03-12 17:25:13 +11:00
David Gibson
d5a9d56e79 agent: Update Cargo.lock for earlier dependency change
Commit 81607e34 updated src/agent/rustjail/Cargo.toml, to remove an
unneeded dependency.  That causes cargo to update src/agent/Cargo.lock
on each build.  However, the change to Cargo.lock wasn't checked in
meaning anyone working on the agent code will get bogus diffs with every
build.  Check in the missing file to fix this.

fixes #1505

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-03-12 16:51:30 +11:00
Fupan Li
62d30ca2b6 Merge pull request #1498 from liubin/fix/1497-task-exit-pid
runtime: return hypervisor Pid in TaskExit event
2021-03-11 12:58:28 +08:00
Bo Chen
396565fa56 Merge pull request #1489 from jcvenegas/2021-03-03/codecov
agent: makefile: Add codecov target
2021-03-10 11:21:33 -08:00
Wainer dos Santos Moschetta
0f7950fb2a packaging: configure QEMU with -O2
Currently the the configure-hypervisor.sh doesn't set any optimization flag when
compiling QEMU >= 5.2.0 since the configure script will implicitly set -O2 on Ubuntu. But
on other environments, for example CentOS 7, it won't be set any optimization and this
results on the compiler warn:

  # warning _FORTIFY_SOURCE requires compiling with optimization (-O)

To avoid this inconsistent behavior across different build environments, let's explicitly
set the -O2 flag.

Reported-by: Eric Ernst <eric.g.ernst@gmail.com>
Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2021-03-10 11:16:52 -03:00
Wainer dos Santos Moschetta
224c50f420 snap: Package virtiofsd and fix path
This contain to fixes for the virtiofsd on snap:
 * removed the "-/usr/libexec" so that virtiofsd is copied to prime
 * The configuration.toml expects virtiofsd in /usr/libexec/kata-qemu so it should be passed "kata-qemu"
   to configure_hypervisor.sh script and it wil configure to install the executable onto the right directory.

Fixes #1238
Depends-on: github.com/kata-containers/kata-containers#1349
Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2021-03-10 11:16:52 -03:00
Wainer Moschetta
6e496941a5 Merge pull request #1349 from wainersm/qemu_5_2
Bump to QEMU 5.2.0
2021-03-10 11:14:45 -03:00
Peng Tao
e0f191fbbc Merge pull request #1501 from egernst/fix-exec-groups
exec: ensure sup groups are added to agent request
2021-03-10 10:18:24 +08:00
Eric Ernst
f0d49851db exec: ensure sup groups are added to agent request
Extra groups were not being handled when exec'ing. Ensure
that these are handled.

Before this, running a pod with:
```
 ...snippet...
 securityContext:
   fsGroup: 266
   runAsGroup: 51020
   runAsUser: 264
```

And then exec'ing would not supply the fsGroup:
```
$ kubectl exec -it kata-bb  -- sh -c id
uid=264 gid=51020
```

Fixes: #1500

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-03-09 17:17:55 -08:00
Fabiano Fidêncio
9e90105092 Merge pull request #1495 from lifupan/fix_homedir
rustjail: fix the issue of home_dir function
2021-03-09 14:36:45 +01:00
bin
b034458960 runtime: return hypervisor Pid in TaskExit event
Other RPC calls return Pid of hypervisor, the TaskExit should
return the same Pid.

Fixes: #1497

Signed-off-by: bin <bin@hyper.sh>
2021-03-09 17:41:44 +08:00
GabyCT
856ffb85fc Merge pull request #1420 from eadamsintel/qat-dockerfile
osbuilder: Port QAT Dockerfile to 2.0 repo
2021-03-08 11:34:28 -06:00
fupan.lfp
81607e348e rustjail: fix the issue of home_dir function
Since the crate dirs::home_dir function depends on the
libc's api: getpwuid_r, but this api function wouldn't
be static linked on glibc, thus we'd better to figure
out an alternative way to get the home dir from /etc/passwd.
For much more info about this glibc's issue, please see:
https://sourceware.org/bugzilla/show_bug.cgi?id=19341.

This commit read and parse the "/etc/passwd" directly and
fetch the corresponding uid's home dir.

Fixes: #675

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2021-03-08 21:51:23 +08:00
James O. D. Hunt
83d5a49941 Merge pull request #1472 from jodh-intel/unbreak-agent-ctl
agent-ctl: Unbreak build
2021-03-08 10:32:22 +00:00
Fupan Li
f6630ddd49 Merge pull request #1478 from lifupan/fix_device
rustjail: fix the issue of bind mount device file from guest
2021-03-08 09:55:00 +08:00
James O. D. Hunt
c258ea25d4 agent-ctl: Function parameter cleanup
Remove unused function parameters from the following types:

- `AgentCmdFp`: Removed the config parameter and made
  the context parameter the first (à la golang).

- `BuiltinCmdFp`: Removed the config and options parameters.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-05 09:54:50 +00:00
James O. D. Hunt
fcd45def53 agent-ctl: Unbreak build
The recent switch to an async rust agent broke the `agent-ctl` tool.
However, we didn't notice because that isn't being built by the CI.

Fix the breakage by passing a ttRPC context to all ttRPC API calls and
also build the tool as part of the static checks CI.

Fixes: #1471.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-05 09:54:50 +00:00
James O. D. Hunt
efe625dfc1 build: Remove whitespace
Zap trailing whitespace.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-03-05 09:54:50 +00:00
Eric Ernst
48ed8f3c4a runtime: add support for readonly sandbox bindmounts
If specified, sandbox_bind_mounts identifies host paths to be
mounted (ro) into the sandboxes shared path. This is only valid
if filesystem sharing is utilized.

The provided path(s) will be bindmounted (ro) into the shared fs directory on
the host, and thus mapped into the guest. If defaults are utilized,
these mounts should be available in the guest at
`/var/run/kata-containers/shared/containers/sandbox-mounts`

These will not be exposed to the container workloads, and are only
added for potential guest-services to consume (example: expose certs
into the guest that are available on the host).

Fixes: #1464

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-03-04 10:04:25 -08:00
Carlos Venegas
7ae349c511 agent: makefile: Add codecov target
Add target to run codecov report locally.

Useful to identify what are the missing lines
to be covered by unit test.

Fixes: #1487

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-03-04 16:32:52 +00:00
Fabiano Fidêncio
acc4bc57f4 Merge pull request #1491 from jongwu/musl_tar
musl/arm64: decompression before use the tarball.
2021-03-04 08:58:03 +01:00
Jianyong Wu
f580d33cc9 musl/arm64: decompression before use the tarball.
In the last fix, the decompression ops is deleted by mistake and need
add it back.

Fixes: #1490
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2021-03-04 10:12:29 +08:00
GabyCT
ed3cb9bfa8 Merge pull request #1482 from jongwu/musl
osbuilder/arm64: build musl toolchain from source code if needed
2021-03-03 16:49:31 -06:00
Jianyong Wu
2da058ed7b osbuild: build musl toolchain from source if needed
Currently, musl toolchain installation on arm64 is just downloading from
a website. It's unsafe in case the website corrupts. So build musl
toolchain from source if it can't be downloaded.

Fixes: #1481
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2021-03-03 17:22:39 +08:00
Eric Ernst
6e1ef809e1 Merge pull request #1480 from wainersm/fix_shim_log
runtime: Fix missing 'name' field on containerd-shim-v2 logs
2021-03-02 11:46:09 -08:00
Adams, Eric
6417067d62 osbuilder: Port QAT Dockerfile to 2.0 repo
Update the Intel QAT Dockerfile to work with the 2.0 repos, fix some
bugs with building Debian/Ubuntu rootfs, and update the latest QAT
driver. Updated copyright.

Fixes: #1419

Signed-off-by: Adams, Eric <eric.adams@intel.com>
2021-03-01 17:34:04 -08:00
Wainer dos Santos Moschetta
85601cd360 snap: Update for QEMU 5.2.0
QEMU 5.2.0 needs ninja-build package installed on the build environment.

The default-configs were copied to $QEMU_SRC/default-configs but that does
take any effect, so instead it is now copied to $QEMU_SRC/default-configs/devices
and the configs for i386 were updated.

Also it had to change some arguments being passed to configure as Meson was failing
due inconsistent paths:

  ./meson.build:1:0: ERROR: The value of the 'libdir' option is '/usr/lib/qemu' which must be a subdir of the prefix '/snap/kata-containers/current/usr'.
  Note that if you pass a relative path, it is assumed to be a subdir of prefix.

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2021-03-01 16:57:58 -05:00
Wainer dos Santos Moschetta
88cef33b76 versions: update QEMU to 5.2.0
This change the version of QEMU used in the tests and CI.

The scripts/configure-hypervisor.sh was changed so that:
  - Passing the `--enable-virtiofsd` flag
  - Do not compiling with -O3 to avoid the warning:

    Program python3 found: YES (/usr/bin/python3)
    ../meson.build:104: WARNING: Consider using the built-in optimization level instead of using "-O3".
    ../meson.build:108: WARNING: Consider using the built-in optimization level instead of using "-O3".

The qemu.blacklist files was changed so that new and uneeded firmware files are removed from the
final tarball. Except for qboot.rom which is new but kept, since it can be used with microvm
machine type (in case we want to enable microvm in the future).

The patches which are applied on QEMU sources:
 - 0001-virtiofsd-Allow-to-build-it-without-the-tools.patch
   (Build fix for Meson - allows passing `--disable-tools --enable-virtiofsd`)
 - 0002-virtiofsd-extract-lo_do_open-from-lo_open.patch
   0003-virtiofsd-optionally-return-inode-pointer-from-lo_do.patch
   0004-virtiofsd-prevent-opening-of-special-files-CVE-2020-.patch
   0005-virtiofsd-Add-_llseek-to-the-seccomp-whitelist.patch
   0006-virtiofsd-Add-restart_syscall-to-the-seccomp-whiteli.patch
   (Security fixes for virtiofsd)
 - 0007-9p-removing-coroutines-of-9p-to-increase-the-I-O-per.patch
   (Performance improvement for 9p driver)
 - 0008-hw-s390x-fix-build-for-virtio-9p-ccw.patch
   (Build fix for virtio-9p-ccw machine type)

Fixes: #1238

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2021-03-01 16:57:50 -05:00
Wainer dos Santos Moschetta
21bdaaf84f runtime: Fix missing 'name' field on containerd-shim-v2 logs
Each Kata Containers application should generate log records with a specified
structure. Currently on containerd-shim-v2's logs, the required 'name' field
is missing. This changed its logger to append the application name on each
and every emitted entries.

Fixes #1479
Related-to: github.com/kata-containers/tests/issues/3260
Suggested-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2021-03-01 16:52:24 -05:00
Wainer dos Santos Moschetta
74a893f732 packaging: Refactor version comparisons on configure-hypervisor.sh
The scripts/configure-hypervisor.sh split the QEMU and GCC version
in major and minor versions then use those values on shell conditionals
to compare versions. This is error prone, so instead this change the script
to use the `sort -V -C ` command for version comparisons.

Fixes: #1349
Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2021-03-01 14:46:24 -05:00
Eric Ernst
90a18e228b Merge pull request #1457 from mxpv/shared
agent: don't error of virtiofs share is already mounted
2021-03-01 11:16:18 -08:00
fupan.lfp
34dc861cde rustjail: fix the issue of bind mount device file from guest
When do pass guest device files to container, the source
file wouldn't be a regular file, but we also need to create
a corresponding destination file to bind mount source file
to it. Thus it's better to check whether the source file
was a directory instead of regular file.

Fixes: #1477

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2021-03-01 21:20:01 +08:00
Bin Liu
61f0291d63 Merge pull request #1452 from lifupan/main
shimv2: return the hypervisor's pid as the container pid
2021-03-01 15:48:01 +08:00
Eric Ernst
ddb283dd43 Merge pull request #1475 from egernst/yiiiiikes
runtime: check if error loading runtime config
2021-02-26 15:01:22 -08:00
Eric Ernst
0f7098339b runtime: check if error loading runtime config
Looks like we inadvertantly removed the check on the loadRuntimeConfig
error return value. Adding back...

Fixes: #1474

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-02-26 10:51:38 -08:00
Bin Liu
7587d2a8d6 Merge pull request #1462 from Tim-Zhang/fix-clippy-for-rust1.5
agent: fix clippy for rustc 1.5
2021-02-26 15:52:03 +08:00
Fupan Li
b5282fa224 Merge pull request #1305 from Tim-Zhang/upgrade-tokio-to-1.0
agent: Upgrade tokio to 1.2.0
2021-02-26 13:33:24 +08:00
Tim Zhang
6f720761ed agent: fix clippy for rustc 1.5
Fixes: #1461

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-25 17:04:54 +08:00
Bin Liu
735fe3f94a Merge pull request #1444 from ManaSugi/fix-blkio-weight
rustjail: fix blkio conversion
2021-02-25 15:20:20 +08:00
Tim Zhang
4a214720e8 agent: Fix test
Struct TtrpcContext has been changed in ttrpc@0.5

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-25 14:38:38 +08:00
Tim Zhang
02079dbb4f agent: upgrade tokio to 1.0
Fixes: #1257

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-25 14:38:32 +08:00
Eric Ernst
2f591f5642 Merge pull request #1459 from mxpv/pid
agent: Agent invokes OCI hooks with wrong PID
2021-02-24 20:08:56 -08:00
Maksym Pavlenko
a42dc74898 agent: Agent invokes OCI hooks with wrong PID
Agent sends -1 PID when invoking OCI hooks.

OCI state struct is initialized before obtaining PID, so this PR moves
`oci_state` call down, right after we get the id.

Fixes: #1458

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2021-02-24 18:16:17 -08:00
Fupan Li
91ad176a06 Merge pull request #1434 from fidencio/wip/kata-deploy-cleanups
kata-deploy: stop mentioning qemu-virtiofsd, as the default qemu supports virtiofsd already (plus some cleanups)
2021-02-25 09:50:10 +08:00
Maksym Pavlenko
17e9a2cff5 agent: don't error of virtiofs share is already mounted
Port kata-containers/agent#883 to the Rust Agent.

In the event that the virtiofs device is already mounted at the
requested destination, don't error out. We'll check before attempting to
mount to see if the destination is already a mount point. If so, skip
doing the mount in the agent.

This facilitates mounting the sharedfs automatically in the guest before
the agent service starts.

Signed-off-by: Eric Ernst eric.g.ernst@gmail.com

Fixes: #1398

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2021-02-24 17:05:59 -08:00
Tim Zhang
947913f6e5 agent/protocols: Remove cargo:rerun-if-changed in build.rs
So that the build.rs will be re-runed if any file
within the package is changed.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-24 21:50:47 +08:00
Tim Zhang
2c42be0ca6 Merge pull request #1447 from liubin/liubin/fix-1369
agent: Stop receive message from Receiver if got None
2021-02-24 16:48:24 +08:00
Bin Liu
974f926292 Merge pull request #1450 from fidencio/wip/release-notes-script-still-mentions-docker
Remove "Docker" & "[kata] runtime" references from the release scripts & process documentation
2021-02-24 15:59:36 +08:00
fupan.lfp
bc0ac526a2 shimv2: return the hypervisor's pid as the container pid
Since the kata's hypervisor process is in the network namespace,
which is close to container's process, and some host metrics
such as cadvisor can use this pid to access the network namespace
to get some network metrics. Thus this commit replace the shim's
pid with the hypervisor's pid.

Fixes: #1451

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2021-02-24 13:26:05 +08:00
Fabiano Fidêncio
10ed3da4eb release: Rename runtime-release-notes to release-notes
There's no runtime repo anymore, let's avoid making a reference to it,
which may end up confusing people reading the Release-Process file.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-23 17:25:40 +01:00
Fabiano Fidêncio
f5dab6af2e release: We're not compatible with Docker.
We don't support Docker as part of 2.x repository.

Fixes: #1449

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-23 17:25:40 +01:00
Fabiano Fidêncio
2c8ea0a8d1 kata-deploy: Add copyright to the kata-deploy's Dockerfile
All the work done on this file, apart from merging the 2.x repo, and now
removing unused lines, comes from Intel.

The reason it's being added is to silent a complaint from the static
checker.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-23 14:25:00 +01:00
Fabiano Fidêncio
4e494e34c9 packaging: Remove NEMU mentions
There's no more NEMU, for some time already.  Considering this, let's
just remove any mention to it as part of our project.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-23 14:24:54 +01:00
Fabiano Fidêncio
f21c54a985 kata-deploy: QEMU, for 2.x, already includes virtiofs
There's no reason to ship qemu & qemu-virtiofs when the former already
includes vitiofs support (and that's the default for 2.x deployments).

In case we will enable experimental qemu DAX support, we should add a
new target, a "qemu-experimental" target, as Carlos has been working on.

Fixes: #1424

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-23 14:24:48 +01:00
Fabiano Fidêncio
657bd789a3 kata-deploy: Get rid of references to the docker script
The docker script has been removed as part of
62cbaf4de4, but references to it were left
behind in the artifact-list.sh, release/kata-deploy-binaries.sh, and
kata-deploy/Dockerfile.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-23 14:20:39 +01:00
Fabiano Fidêncio
81109f89bd Merge pull request #1423 from fidencio/wip/kata-deploy-crio-plus-shimv2
kata-deploy: Ensure CRI-O uses shimv2 & the "vm" runtime type
2021-02-22 20:28:30 +01:00
Manabu Sugimoto
dcea08697a rustjail: fix blkio conversion
BFQ weight controller is using the same BFQ weight scheme (i.e 1->1000).
Therefore, there is no need to do the conversion.

More details here: https://github.com/opencontainers/runc/pull/2786

Fixes: #1440

Signed-off-by: Manabu Sugimoto <Manabu.Sugimoto@sony.com>
2021-02-23 00:26:57 +09:00
bin
bc34cbbce5 agent: Stop receive message from Receiver if got None
If the container has exited, the sender in notifier watching OOM events
will be dropped after the loop exited, and recv() from the according
receiver will get None.

This will lead two problems for get_oom_event rpc all from agent:

- return an wrong OOM event.
- continuously return OOM events.

Fixes: #1369

Signed-off-by: bin <bin@hyper.sh>
2021-02-22 21:56:07 +08:00
Fabiano Fidêncio
01481d6ac0 kata-deploy: Ensure CRI-O uses the VM runtime type
For Kata Containers 2.x, CRI-O should always be using the
`containerd-shim-kata-v2` binary, and always be configured to use the
"vm" runtime type, developed specifically for the shimv2, instead of the
default "oci" runtime type.

I've taken the liberty to try to simplify the CRI-O script and make it
less error prone.  In the future, we can start dropping a configuration
file to /etc/crio/crio.conf.d and just removing it as part of the
cleanup, but that's for the future.

Fixes: #1357

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-20 09:27:33 +01:00
Fabiano Fidêncio
d1c717363d kata-deploy: Move the containerd workarounds to their own functions
Factoring those pieces of code to their own functions allows us to
easily re-use them when creating & cleaning up the CRI-O configuration
files, as CRI-O is also affected by the issues that are still opened.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-20 09:27:24 +01:00
Fabiano Fidêncio
5013634e23 kata-deploy: Stop shipping kata-{clh,fc,qemu,qemu-virtiofs} binaries
Those binaries are not revelant for 2.x deployments.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-20 09:24:12 +01:00
Fabiano Fidêncio
2270f19ee1 kata-deploy: Update README to reflect the current distributed artifacts
Our list was based on what we used to ship for Kata Containers 1.x, not
even taking into account the shimv2 binary.

Let's update it in order to reflect better what we currently distribute.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-20 09:24:12 +01:00
Bin Liu
29d4abf23a Merge pull request #1437 from jcvenegas/2021-02-18/self-documented-makefile
makefile: agent: Add self documented help
2021-02-20 10:04:30 +08:00
Carlos Venegas
a494c4de23 makefile: agent: Add self documented help
Add comments that allow self document variables and targets

Fixes: #1436

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-02-19 15:30:42 +00:00
Eric Ernst
4f67bf919d Merge pull request #1344 from liubin/fix/1329-improvements-for-console-access
runtime: connect guest debug console bypass kata-monitor
2021-02-18 17:59:32 -08:00
David Gibson
a060b9a21b Merge pull request #1190 from dgibson/pcipath
Clean up PCI path handling
2021-02-19 12:23:27 +11:00
David Gibson
72cb9287a0 vhost-user-blk: Use PciPath type for vhost user devices
VhostUserDeviceAttrs::PCIAddr didn't actually store a PCI address
(DDDD:BB:DD.F), but rather a PCI path.  Use the PciPath type and
rename things to make that clearer.

TestHandleBlockVolume previously used the bizarre value "0001:01"
which is neither a PCI address nor a PCI path for this value.  Change
it to a valid PCI path - it appears the actual value didn't matter for
that test, as long as it was consistent.

Forward port of
3596058c67

fixes #1040

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:08 +11:00
David Gibson
74f5b5febe runtime/block: Use PciPath type through block code
BlockDrive::PCIAddr doesn't actually store a PCI address
(DDDD:BB:DD.F) but a PCI path.  Use the PciPath type and rename things
to make that clearer.

TestHandleBlockVolume() previously used a bizarre value "0002:01" for
the "PCI address" which was neither an actual PCI address, nor a PCI
path.  Update it to use a PCI path - the actual value appears not to
matter in this test, as long as its consistent throughout.

Forward port of
64751f377b

fixes #1040

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:08 +11:00
David Gibson
32b40f5fe4 runtime/network: Use PciPath type through network handling
The "PCI address" returned by Endpoint::PciPath() isn't actually a PCI
address (DDDD:BB:DD.F), but rather a PCI path.  Rename and use the
PciPath type to clean this up and the various parts of the network
code connected to it.

Forward port of
3e589713cf

fixes #1040

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:08 +11:00
David Gibson
87c5823c4b agent/device: Add unit test for pcipath_to_sysfs()
Port this test from the Kata 1 Go agent to the Kata 2 Rust agent.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:08 +11:00
David Gibson
066ce7ab51 agent/device: Pass root bus sysfs path to pcipath_to_sysfs()
Currently pcipath_to_sysfs() generates the path to the root bus node in
sysfs via create_pci_root_bus_path().  This is inconvenient for testing,
though, so instead make it take this as a parameter and generate the path
in the (single) caller.  As a bonus this will make life a bit easier when
we want to support machines with multiple PCI roots.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:08 +11:00
David Gibson
fda48a9bf0 agent/device: Use pci::Path type, name things consistently
pcipath_to_sysfs takes a PCI path, with a particular format.  A number of
places implicitly need strings in that format, many of them repeat the
description.  To make things safer and briefer use the pci::Path type for
the purpose more widely, and just describe the string formatting of it at
the type definition.

Then, update variable names and comments throughout to call things in
this format "PCI path", rather than "PCI identifier", which is vague,
or "PCI address" which is just plain wrong.  Likewise we change names and
comments which incorrectly refer to sysfs paths as a "PCI address".

This changes the grpc proto definitions, but because it's just
changing the name of a field without changing the field number, it
shouldn't change the actual protocol.

A loose forward port of
da4bc1d184

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:08 +11:00
David Gibson
c12b86dc82 agent/device: Generalize PCI path resolution to any number of bridges
Currently pcipath_to_sysfs(), which translates PCI paths into sysfs paths
accepts only pci paths with exactly 2 components; which represents PCI
devices separated from the root bus by exactly one PCI to PCI bridge (which
could be a virtual P2P bridge, such as a PCI-E root port).

There are cases we might reasonably want to support which have devices
either plugged directly into the root bus (zero bridges), or under
multiple layers of P2P bridge (a PCI-E switch would require at least 2
layers).

So, generalize pcipath_to_sysfs to support any number of components in the
PCI path.  We also make it use the new type for PCI paths internally rather
than plain strings.

This is a loose forward port of
9804b1e55d

fixes #1040

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:08 +11:00
David Gibson
3715c5775f agent/device: Rename and clarify semantics of get_pci_device_address()
get_pci_device_address() has pretty confusing semantics.  Both its input
and output are in other parts of the code described as a "PCI address", but
neither is *actually* a PCI address (in the standard DDDD:BB:DD.F format).

What it's really about is resolving a "PCI path" - that is way to locate a
PCI device by using it's slot number and the slot number of the bridge
leading to it - into a sysfs path.

Rename the function, and change a bunch of variable names to make those
semantics clearer.

Forward port of
https://github.com/kata-containers/agent/pull/855/commits/0eb612f06484

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:08 +11:00
David Gibson
7e92831c7a protocols: Update PCI path names / terminology in agent protocol def
Now that we have types to represent PCI paths on both the agent and
runtime sides, we can update the protocol definitionto use clearer
terminology.

Note that this doesn't actually change the agent protocol, because it just
renames a field without changing its field ID or type.

While we're there fix a trivial rustfmt error in
src/agent/protocols/build.rs

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:08 +11:00
David Gibson
8e5fd8ee84 runtime: Introduce PciSlot and PciPath types
This is a dedicated data type for representing PCI paths, that is, PCI
devices described by the slot numbers of the bridges we need to reach
them.

There are a number of places that uses strings with that structure for
things.  The plan is to use this data type to consolidate their
handling.  These are essentially Go equivalents of the pci::Slot and
pci::Path types introduced in the Rust agent.

Forward port of
185b3ab044

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:56:05 +11:00
David Gibson
7464d055a7 agent: PCI path type
Introduce a Rust type to represent a "PCI path" - that is a way of
locating a PCI device from a given root by listing the slots of all
the bridges leading to it and finally the slot of the device itself.

It's implemented as a vector of the previously added pci::Slot type,
and includes the necessary validation and conversions to/from strings.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:54:53 +11:00
David Gibson
b22259ad9b agent: PCI slot type
Add a Rust type for representing a PCI slot on a single bus.  This is
essentially just an integer from 0..31 (inclusive), but includes the
code for converting from integers with appropriate validation and
formatting back to a string.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:54:53 +11:00
David Gibson
8c2f9e6949 gitignore: Ignore *~ editor backup files
We ignore some other formats for backup files, but add this one, used by
emacs.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-19 09:54:53 +11:00
Adams, Eric
b412e159f9 osbuilder: Port QAT Dockerfile to 2.0 repo
Update the Intel QAT Dockerfile to work with the 2.0 repos, fix some
bugs with building Debian/Ubuntu rootfs, and update the latest QAT
driver. Updated copyright.

Fixes: #1419

Signed-off-by: Adams, Eric <eric.adams@intel.com>
2021-02-18 12:46:49 -08:00
James O. D. Hunt
a4e367506d Merge pull request #1428 from cmaf/fix-shimv2-configpath
runtime: Create tracer later in shimv2
2021-02-18 16:04:36 +00:00
Amulya Meka
5096103e7e osbuiler: fixing USE_DOCKER for ppc64le
For building rootfs with docker, glibc based rust target should be installed on ppc64le.
Additionally, protobuf-compiler would be required on ppc64le as it is not present by default.

Fixes: #1417

Signed-off-by: Amulya Meka <amulmek1@in.ibm.com>
2021-02-18 05:33:51 +00:00
Chelsea Mafrica
a44b27291c runtime: Create tracer later in shimv2
Remove loading of configuration from New() because we do not know the
correct configuration file for the runtime until Create() and so that it
is not loaded more than once. Start tracer in create() so that it is
created after the runtime config is loaded in its original location.

Fixes #1411

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2021-02-17 19:45:48 -08:00
Fupan Li
6eba265734 Merge pull request #1407 from mxpv/json
Agent: OCI hooks return malformed json
2021-02-18 11:36:49 +08:00
Eric Ernst
0a9cc357c6 Merge pull request #1394 from egernst/custom-registry
osbuilder: Allow image registry to be customizable
2021-02-17 17:48:02 -08:00
Eric Ernst
49bdbac606 osbuilder: Allow image registry to be customizable
Give the user chance to specify their own registry in event the default
provided are not accessible, desirable.

Fixes: #1393

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-02-17 16:49:58 -08:00
GabyCT
be83b739df Merge pull request #1414 from GabyCT/topic/updatelicensing
docs: Update licensing strategy to use kata 2.0 repository
2021-02-17 14:50:58 -06:00
Eric Ernst
78a5958a81 Merge pull request #1402 from egernst/clh-hooks
runtime: clh-config: add runtime hooks to the clh toml
2021-02-17 12:49:58 -08:00
Gabriela Cervantes
fdc573d500 docs: Update licensing strategy to use kata 2.0 repository
This PR updates the licensing strategy document to use the proper
tests repository for kata 2.0

Fixes #1413

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2021-02-15 11:10:01 -06:00
Eric Ernst
2e2749ad3f runtime: clh-config: add runtime hooks to the clh toml
Today hooks are only described in the QEMU toml. This shouldn't be VMM
specific -- let's make sure these are advertised for Cloud Hypervisor as
well.

Fixes: #1401

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-02-14 20:26:02 -08:00
Julio Montes
e830192fca Merge pull request #1387 from devimc/2021-02-09/FixSnapCI
Fix Snap CI
2021-02-12 10:27:28 -06:00
Julio Montes
ef72926beb ci: snap: run snap CI on every pull request
Make sure a pull request doesn't break the snap packages,
run snap CI on every pull request.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2021-02-12 09:18:45 -06:00
Julio Montes
919d51274d snap: fix kernel setup
kernel setup fails when `yes "n"` is used and `make oldconfig` doesn't
read anything from STDIN, `yes "n"` was added in the past as a
workaround to fix incomplete kernel configs.
Enable `build-kernel.sh` debug.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2021-02-12 09:16:09 -06:00
Julio Montes
d054841430 ci: snap: build targets that not need sudo first
`sudo` is required to build the image, once the image has been built
the permission of some directories may change, let's build first the
targerts that not need `sudo`

Signed-off-by: Julio Montes <julio.montes@intel.com>
2021-02-12 09:05:42 -06:00
Julio Montes
a115338ddd ci: snap: define proxy variables
define proxy variables before using them to fix `unbound variable`
error

fixes #1386

Signed-off-by: Julio Montes <julio.montes@intel.com>
2021-02-12 09:05:42 -06:00
Bo Chen
14bb24e4ca Merge pull request #1406 from egernst/fix-ctr-cpuset
runtime: cpuset: when creating container, don't pass cpuset details
2021-02-11 22:31:44 -08:00
Maksym Pavlenko
df14d386a5 Agent: OCI hooks return malformed json
This PR fixes wrong serialization of OCI state object.
OCI hooks end up with a JSON string with double quotes in `state` field.

This happens because of confusion `Debug` and `Display` traits. Debug trait
returns a string representation with double quotes.

Ideally we should not use Debug as a part of serialization process, so a bit
more safer fix would be to move container states to `oci` crate and simply
disallow wrong values in that field.

`ContainerState` in go spec: https://github.com/opencontainers/runtime-spec/blob/master/specs-go/state.go#L4

Fixes: #1404

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2021-02-11 19:02:41 -08:00
Eric Ernst
3721351324 runtime: cpuset: when creating container, don't pass cpuset details
Today we only clear out the cpuset details when doing an update call on
existing container/pods. This works in the case of Kubernetes, but not
in the case where we are explicitly setting the cpuset details at boot
time. For example, if you are running a single container via docker ala:

docker run --cpuset-cpus 0-3 -it alpine sh

What would happen is the cpuset info would be passed in with the
container spec for create container request to the agent. At that point
in time, there'd only be the defualt number of CPUs available in the
guest (1), so you'd be left with cpusets set to 0. Next, we'd hotplug
the vCPUs, providing 0-4 CPUs in the guest, but the cpuset would never
be updated, leaving the application tied to CPU 0.

Ouch.

Until the day we support cpusets in the guest, let's make sure that we
start off clearing the cpuset fields.

Fixes: #1405

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-02-11 17:38:15 -08:00
Fabiano Fidêncio
96196e102e Merge pull request #1396 from dgibson/pointtopoint
agent: Remove bogus check from list_interfaces() unit test
2021-02-11 09:06:01 +01:00
David Gibson
c9c7c12440 agent: Remove bogus check from list_interfaces() unit test
The unit test for list_interfaces() checks that the hardware address
returned for each interface has non-zero length.  However, that need not be
the case.  Point-to-point devices, such as ppp, or tun devices in certain
configurations may not have a hardware address, which is represented as
a zero length address here.

This happens on my machine with a tun0 device created by OpenVPN.

fixes #1377

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-02-11 15:09:10 +11:00
Eric Ernst
cb6d2f3c40 osbuilder: alphabetize fields
Let's go ahead and list the usage info / fields in alphabetical order!

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-02-10 12:39:10 -08:00
Fabiano Fidêncio
e2c8c7e603 Merge pull request #1031 from knittl/feature/kata-option-aliases
cli: Add aliases for `kata-` options
2021-02-10 16:22:13 +01:00
Fabiano Fidêncio
2009ef4872 Merge pull request #1364 from fidencio/wip/only-run-kata-deploy-test-on-pull-requests
github: Only run kata-deploy-test on pull-requests
2021-02-10 13:59:30 +01:00
Daniel Knittl-Frank
056d742c17 docs: Update documentation with new prefixless config options
Remove the old config options from the documentation and replace them
with the new form (without the redundant `kata-` prefix).

Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com>
2021-02-10 07:55:18 +01:00
Daniel Knittl-Frank
fdcde7968a cli: use new prefixless config options in tools scripts
Update all tools/packaging scripts to prefer the new options over the
old ones (e.g. `--config` instead of `--kata-config`).

Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com>
2021-02-10 07:55:18 +01:00
Daniel Knittl-Frank
02ee8b0b8a cli: Add aliases for kata- options
Remove `kata-` prefix from options `kata-config` and
`kata-show-default-config-paths`.

Fixes #1011

Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com>
2021-02-10 07:55:18 +01:00
Daniel Knittl-Frank
c6bc43b697 docs: Fix broken link to fluentbit.io docs
Fix link to external website in fluentd how-to.

Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com>
2021-02-10 07:55:18 +01:00
Julio Montes
61b448c7fb Merge pull request #1385 from ManaSugi/change_virtiofsd_dir
docs: Fix the installation directory of virtiofsd
2021-02-09 10:49:33 -06:00
Manabu Sugimoto
20b27a16c9 docs: Fix the installation directory of virtiofsd
Change the installation directory of virtiofsd to kata-qemu.

Fixes: #1379

Signed-off-by: Manabu Sugimoto <Manabu.Sugimoto@sony.com>
2021-02-09 22:47:27 +09:00
Fabiano Fidêncio
f4fe97411e Merge pull request #1267 from Jakob-Naucke/s390x-fix-docker-rootfs-build
osbuilder: Fix USE_DOCKER on s390x
2021-02-09 14:13:35 +01:00
Jakob-Naucke
11fe6a3552 osbuilder: Fix USE_DOCKER on s390x
- Install the required protobuf-compiler on Ubuntu
- Install correct libc Rust target (glibc on s390x)
- Do not skip Rust installation on s390x

Fixes: #1266

Signed-off-by: Jakob Naucke <jakob.naucke@ibm.com>
2021-02-09 12:37:24 +01:00
bin
10f1c30f3d kata-runtime: use filepath.Join() to compose file path
Use filepath.Join() will be safer than format string directly.

Signed-off-by: bin <bin@hyper.sh>
2021-02-09 19:37:20 +08:00
Bin Liu
f4ae9c8476 docs: Update Developer-Guide.md
Add description for difference of namespace in containerd and Kuberenetes.

Co-authored-by: Eric Ernst <eric.g.ernst@gmail.com>
Signed-off-by: bin <bin@hyper.sh>
2021-02-09 19:37:14 +08:00
bin
9963428a4d docs: update document for using debug console
Delete using `kata-monitor` to use `kata-runtime exec`

Fixes: #1329

Signed-off-by: bin <bin@hyper.sh>
2021-02-09 19:37:06 +08:00
bin
44cde6e464 runtime: connect guest debug console bypass kata-monitor
Parse agent socket address by conversation to improve usability of
using guest debug console.

Fixes: #1329

Signed-off-by: bin <bin@hyper.sh>
2021-02-09 19:36:48 +08:00
Fabiano Fidêncio
d4c506f270 Merge pull request #1184 from zanetworker/add-e2e-arch-image
Add katacontainers end-to-end arch image
2021-02-09 12:26:23 +01:00
Fabiano Fidêncio
6dbc648c54 Merge pull request #1263 from Jakob-Naucke/s390x-glibc-agent
Build for glibc on s390x
2021-02-09 12:26:02 +01:00
Fabiano Fidêncio
9e2ac11086 Merge pull request #1265 from Jakob-Naucke/s390x-fix-vmlinux
packaging: Fix vmlinux kernel install on s390x
2021-02-09 11:24:04 +01:00
Fabiano Fidêncio
d6682e3168 Merge pull request #1261 from Jakob-Naucke/update-yq
ci: Upgrade to yq 3.4.1
2021-02-09 10:21:14 +01:00
Fabiano Fidêncio
548c459066 Merge pull request #1375 from fidencio/wip/fix-build-kernel
kernel: Don't fail if "experimental" dir doesn't exist
2021-02-09 10:05:54 +01:00
Bin Liu
4e6a39cd25 Merge pull request #1366 from fidencio/wip/kata-deploy-remove-mention-to-docker
kata-deploy: Remove kata-deploy-docker.sh
2021-02-09 16:11:44 +08:00
Fupan Li
5d1432210c Merge pull request #1352 from liubin/fix/migrate-opentracing-to-opentelemetry
runtime: migrate from opentracing to opentelemetry
2021-02-09 10:18:10 +08:00
bin
3406502706 runtime: add jaeger configuration items
add configuration items in Kata Containers
configuration file to let users specify jaeger
collector address, and user/password.

Signed-off-by: bin <bin@hyper.sh>
2021-02-09 08:02:05 +08:00
Fabiano Fidêncio
fbab262f2d kernel: Don't fail if "experimental" dir doesn't exist
This directory has been automatically removed as there's no files inside
it, as part of d3c9862059

Let's improve the logic in the scripts to avoid failing in case the
"experimental" dir is not present.

Fixes: #1328

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-08 21:52:53 +01:00
Fupan Li
f3e9d4e7e3 Merge pull request #1373 from ManaSugi/use-rlimit-crate
rustjail: use rlimit crate
2021-02-08 23:15:37 +08:00
Manabu Sugimoto
e1dce3a369 rustjail: use rlimit crate
The current implementation of rustjail uses the specific setrlimit.
This patch uses rlimit crate for maintainability.

Fixes: #1372

Signed-off-by: Manabu Sugimoto <Manabu.Sugimoto@sony.com>
2021-02-08 18:43:56 +09:00
Jakob Naucke
8045104eaf ci: Upgrade to yq 3.4.1
Since the resolution of https://github.com/mikefarah/yq/issues/502,
the `yq` binary is no longer broken on s390x. This is an upgrade to
the latest v3 version of yq (v4 has new syntax).

Fixes: #1260

Signed-off-by: Jakob Naucke <jakob.naucke@ibm.com>
2021-02-08 09:29:57 +01:00
Jakob-Naucke
3d3e4dc147 packaging: Fix vmlinux kernel install on s390x
Installing the built uncompressed vmlinux kernel will not work on s390x,
QEMU will complain:
Linux kernel boot failure: An attempt to boot a vmlinux ELF image
failed.
This image does not contain all parts necessary for starting up. Use
bzImage or arch/s390/boot/compressed/vmlinux instead.
Hence, use that kernel image on s390x.

Fixes: #1264

Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2021-02-08 09:25:26 +01:00
Fupan Li
d54c702539 Merge pull request #1368 from ManaSugi/get_caps_dyn
rustjail: get all capabilities dynamically
2021-02-08 16:00:51 +08:00
Manabu Sugimoto
a252d861e3 rustjail: get all capabilities dynamically
The runtime determines the kernel capability set at runtime.

Fixes: #1370

Signed-off-by: Manabu Sugimoto <Manabu.Sugimoto@sony.com>
2021-02-07 16:39:14 +09:00
Fabiano Fidêncio
d4391d784d Merge pull request #1334 from clnperez/ppc64le-protoc
agent: README update to install protoc for ppc64le
2021-02-06 01:08:42 +01:00
Fabiano Fidêncio
7b5e56b274 Merge pull request #1360 from fidencio/wip/qemu-virtiofs-security-fixes
qemu: Add security fixes for CVE-2020-35517
2021-02-05 21:37:46 +01:00
Chelsea Mafrica
a12772c601 Merge pull request #1358 from Tim-Zhang/remove-allow
Fix lints and remove allow attributes which silence these warnings
2021-02-05 12:17:29 -08:00
Fabiano Fidêncio
62cbaf4de4 kata-deploy: Remove kata-deploy-docker.sh
Kata Containers 2.x is not supported outside of the kubernetes world.
With this in mind, let's remove leftovers from the 1.x deployments &
documentation.

Fixes: #1356

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-05 15:18:43 +01:00
Fabiano Fidêncio
50fea9fa6f github: Only run kata-deploy-test on pull-requests
We're currently running kata-deploy-test for every issue opened, for
every comment in the issue.  Issues, themselves, shouldn't be triggering
those as they can't cause any code change.

With this in mind, let's restrict ourselves to run those on
pull-requests only.

Fixes: #1341

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-05 11:00:32 +01:00
Fabiano Fidêncio
b548114f59 qemu: Add security fixes for CVE-2020-35517
This series is based on
https://lists.gnu.org/archive/html/qemu-devel/2021-02/msg01787.html, and
was kindly brought up by David Gilbert.

Fixes: #1361

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-02-04 22:26:20 +01:00
Christy Norman
11680efe4e agent: README update to install protoc for ppc64le
Add a bit to the agent README about installing protoc manually for Power (ppc64le)

Fixes: #1068

Signed-off-by: Christy Norman <christy@linux.vnet.ibm.com>
2021-02-04 17:03:31 +00:00
Tim Zhang
f16ab49b5b agent: fix non_camel_case_types lint and stop hiding the warning
Fixes: #1359

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-04 21:36:21 +08:00
Tim Zhang
8ffe4d6748 agent: fix unused_parens lint and stop hiding the warning
Fixes: #1359

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-04 21:24:04 +08:00
Tim Zhang
f70ca69d0d agent: remove #![allow(unused_unsafe)]
Fixes: #1359

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-04 21:21:48 +08:00
Tim Zhang
e28bf7a59d agent: fix dead_code lint
Fixes: #1359

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-04 21:18:45 +08:00
Tim Zhang
05da23acb7 agent: fix non_snake_case lint and remove ![allow(non_snake_case)]
Fixes: #1359

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-04 21:18:37 +08:00
Jakob Naucke
afb4197813 osbuilder: Build for glibc on s390x
Since there is no Rust target for musl on s390x, builds on s390x should use
glibc. This commit removes the "Cannot build Rust agent on s390x" restriction
in rootfs.sh and only installs musl in the build environment when it is
required.

Fixes: #1262

Signed-off-by: Jakob Naucke <jakob.naucke@ibm.com>
2021-02-04 09:52:28 +01:00
Jakob Naucke
a1cedc567a agent: Build for glibc on s390x
Since there is no Rust target for musl on s390x, builds on s390x should
use glibc. This commit makes glibc the default on s390x as per the agent
Makefile.

Fixes: #1262

Signed-off-by: Jakob Naucke <jakob.naucke@ibm.com>
2021-02-04 09:51:23 +01:00
Adel Zaalouk
9f237aab54 docs: add katacontainers end-to-end arch image
Added a Katacontainers e2e flow figure, the figure can be used in many places or simply just as a reference.
It contains pieces from Kata 1.x and Kata 2.0 (e.g., kata-monitor).

The figures are produced via excalidraw.com, also in the commit is the
source .excalidraw which can be used to modify the figure if needed.

Fixes #1185

Signed-off-by: Adel Zaalouk <azaalouk@redhat.com>
2021-02-04 08:51:36 +01:00
Chelsea Mafrica
38b5a43267 Merge pull request #1318 from jongwu/acpi
arm64: enable acpi for qemu/virt.
2021-02-03 16:37:49 -08:00
Chelsea Mafrica
d4bc5952b1 Merge pull request #1340 from jing-wang4/rootfs-ppc64le
osbuilder: Enforcing LIBC=gnu to rootfs build for ppc64le
2021-02-03 16:06:05 -08:00
Eric Ernst
a1361608a9 Merge pull request #1353 from Tim-Zhang/fix-async
Fix async problems
2021-02-03 14:49:52 -08:00
Chelsea Mafrica
dbfcd4a679 Merge pull request #1345 from liubin/fix/1343-kata-monitor-build-failed
kata-monitor: set buildmode to exe to avoid build failing
2021-02-03 14:40:12 -08:00
Tim Zhang
254b98dd2f rustjail: fix unit test test_process
test_process has a assertion that waitpid(-1) will fail
because there is no child process in most cases.

But if there is any child process forked by other unit test,
the test test_process will fail.

Because waitpid(-1) will wait for any child process including the
process created by other unit tests.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-03 22:27:50 +08:00
Tim Zhang
b25575b430 agent: remove crate signal-hook which are no longer used
Had replaced by tokio::signal.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-03 18:30:18 +08:00
Tim Zhang
b1880b3e80 rustjail: remove unnecessary #[async_trait]
Remove unnecessary #[async_trait]

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-03 18:30:15 +08:00
Tim Zhang
83e9414f4f rustjail: add unittest test_execute_hook
use xargs to test execute_hook.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-03 18:30:15 +08:00
Tim Zhang
d2041001ed rustjail: close stdin in execute_hook after it was sent
So that hook program could receive EOF.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-03 18:30:15 +08:00
Tim Zhang
bb08131151 rustjail: fix fork/child in execute_hook
Tokio in fork child does not work well as it easily deadlocks.
https://github.com/tokio-rs/tokio/issues/1541

Fixes: #1348

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-02-03 18:30:11 +08:00
bin
17df9b119d runtime: migrate from opentracing to opentelemetry
This commit includes two changes:
- migrate from opentracing to opentelemetry
- add jaeger configuration items

Fixes: #1351

Signed-off-by: bin <bin@hyper.sh>
2021-02-03 17:30:49 +08:00
Jing Wang
71aeb920aa osbuilder: updates for feedback
Updates for review feedback.

Signed-off-by: Jing Wang <jing.wang4@ibm.com>
2021-02-02 14:41:23 +00:00
Tim Zhang
9a02c81eb9 Merge pull request #1313 from liubin/doc/add-distro-desc
osbuilder: add description for how to use DISTRO variable
2021-02-02 15:19:57 +08:00
bin
8e2b19ac77 osbuilder: add description for how to use DISTRO variable
Fixes: #1312

Signed-off-by: bin <bin@hyper.sh>
2021-02-02 14:52:09 +08:00
bin
b6c2a60509 kata-monitor: set buildmode to exe to avoid build failing
CGO_ENABLED=0 and -buildmode=pie are not compatible and may lead build failing in some OS.
Specify buildmode=exe to overwrite the value set in BUILDFLAGS

Fixes: #1343

Signed-off-by: bin <bin@hyper.sh>
2021-02-02 14:47:21 +08:00
Chelsea Mafrica
6be910bdc1 Merge pull request #1134 from egernst/kata-monitor-cleanup
kata-monitor: allow for building for alpine
2021-02-01 16:19:36 -08:00
James O. D. Hunt
de9487744f Merge pull request #1253 from snir911/fix-poststop
shimv2: log a warning and continue on post-stop hook failure
2021-02-01 14:44:39 +00:00
Jing Wang
9f7a7a4f86 osbuilder: Enforcing LIBC=gnu to rootfs build for ppc64le
To enforce LIBC=gnu to rootfs.sh for ppc64le, instead of error and exit if not set.

Fixes: #1339
Signed-off-by: Jing Wang <jing.wang4@ibm.com>
2021-01-29 20:22:31 +00:00
Fabiano Fidêncio
7e996daf12 Merge pull request #1338 from jing-wang4/kernel-build-ppc64le
kernel: Updates to kernel config for ppc64le
2021-01-29 20:49:34 +01:00
Jing Wang
a88b8969b6 kernel: Updates to kernel config for ppc64le
Need to enable virtiofs and ipv6 to kernel config for ppc64le.

Fixes: #1333
Signed-off-by: Jing Wang <jing.wang4@ibm.com>
2021-01-29 18:13:56 +00:00
Jianyong Wu
b7a1f752c0 arm64: enable acpi for qemu/virt.
acpi is enabled for kata 1.x, port and rebase code for 2.x
including:
runtime: enable pflash;
agent: add acpi support for pci bus path;
packaging: enable CONFIG_RTC_DRV_EFI;

Fixes: #1317
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2021-01-29 22:12:43 +08:00
Fupan Li
5e39980858 Merge pull request #1216 from houstar/2.0-dev
agent: add secure_join to prevent softlink escape
2021-01-28 10:41:02 +08:00
Tim Zhang
07118afe93 Merge pull request #1320 from lifupan/main
rustjail: fix the issue of container's cgroup root path
2021-01-27 19:04:53 +08:00
fupan.lfp
448771f53d rustjail: fix the issue of container's cgroup root path
We should create the container's cgroup under the system's
cgroup default path such as "/sys/fs/cgroup/<sub system>",
instead of under the kata-agnet's process's cgroup path,
which would under the systemd's cgroup such as
"/sys/fs/cgroup/systemd/system.slice/kata-agent.service"

Fixes: #1319

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2021-01-27 15:38:45 +08:00
Bo Chen
03c5ecefef Merge pull request #1306 from dgibson/no-cmake
osbuilder: remove traces of cmake
2021-01-26 16:26:02 -08:00
Carlos Venegas
3e3bfb9a42 Merge pull request #1321 from likebreath/clh_v0.12.0
versions: Update cloud-hypervisor to release v0.12.0
2021-01-26 17:07:02 -06:00
Carlos Venegas
5e0e35073d Merge pull request #1302 from jcvenegas/2020-1-19/non-experimental-virtiofs-2.x
clh: Use vanilla kernel.
2021-01-26 16:14:06 -06:00
Fabiano Fidêncio
7083261402 Merge pull request #1322 from wainersm/osbuilder_misc-1
osbuilder: miscelaneous fixes/improvements
2021-01-26 22:28:51 +01:00
Wainer dos Santos Moschetta
fd39f0fa00 osbuilder: Add "Agent init" on terms glossary
Include on the terms glossary some words about the agent init as
later on README its explain how the agent can be switched between
systemd and init.

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2021-01-26 10:51:27 -05:00
Qingyuan Hou
e111093b83 agent: add secure_join to prevent softlink escape
This patch fixed the security issue if the container images has
unsafe symlink to the container rootfs and hackers can be exploit
this symlink to hack the guest system. e.g. make directory or files
on guest.

CVE-2015-3629

Fixes: #1219

Signed-off-by: Qingyuan Hou <qingyuan.hou@linux.alibaba.com>
2021-01-26 23:51:23 +08:00
Wainer dos Santos Moschetta
1273e485d8 osbuilder: Fix urls to repositories
Changed the user-visible urls to point to the right Kata Containers
files/repositories.

Fixes #234

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2021-01-26 07:51:20 -05:00
Wainer dos Santos Moschetta
ba9fa49a53 osbuilder: Use Fedora and CentOS registries
To avoid hitting quota limit on docker.io, this changes the Fedora
and CentOS dockerfiles to pull the image from the projects registries.

Fixes #1324

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2021-01-26 07:51:07 -05:00
Bo Chen
c2d14cdeea versions: Update cloud-hypervisor to release v0.12.0
Highlights for cloud-hypervisor version v0.12.0 include: removal of
`vhost-user-net` and `vhost-user-block` self spawning, migration of
`vhost-user-fs` backend, ARM64 enhancements with full support of
`--watchdog` for rebooting, and enhanced `info` HTTP API to include the
details of devices used by the VM including VFIO devices.

Fixes: #1315

Signed-off-by: Bo Chen <chen.bo@intel.com>
2021-01-25 10:58:19 -08:00
Snir Sheriber
0e57393fcc shimv2: log a warning and continue on post-start hook failure
According to runtime-spec:
The poststart hooks MUST be invoked by the runtime. If any poststart
hook fails, the runtime MUST log a warning, but the remaining hooks
and lifecycle continue as if the hook had succeeded

Fixes: #1252

Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
2021-01-25 16:29:55 +02:00
Snir Sheriber
e7043fe284 shimv2: log a warning and continue on post-stop hook failure
According to runtime-spec:
The poststop hooks MUST be invoked by the runtime. If any
poststop hook fails, the runtime MUST log a warning, but
the remaining hooks and lifecycle continue as if the hook
had succeeded.

Fixes: #1252

Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
2021-01-25 16:29:47 +02:00
David Gibson
3718df69c2 osbuilder: Remove leftover pieces related to cmake
The osbuilder scripts include a bunch of code for installing cmake, even
though cmake is never invoked.  versions.yaml claims it's needed to build
grpc-rs, but that doesn't appear to be in our dependency graph.

Presumably, we used to need this, but don't any more.  So, remove all cmake
references.

Fixes #1309

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-01-23 15:24:25 +11:00
Carlos Venegas
d1bf8293e1 kernel: ACPI: Always build evged for stable kernel
Path required to enable CPU/memory hotplug in cloud-hypervisor.

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-01-22 20:00:47 +00:00
Carlos Venegas
6f3d591763 clh: Use vanilla kernel.
Qemu config alredy use vanilla kernel build for virtiofs.

Lets make cosisntent the usage of kernel.

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

Fixes: #1302

Signed-off-by: Carlos Venegas <jos.c.venegas.munoz@intel.com>
2021-01-22 20:00:20 +00:00
Fabiano Fidêncio
4de21e3d95 Merge pull request #1311 from bergwolf/update-to-main
branch: change 2.0-dev to main
2021-01-22 12:07:02 +01:00
Peng Tao
fd5592d4d5 branch: change 2.0-dev to main
Change all mentioning of 2.0-dev to main so that we can rename the
default branch to main.

Fixes: #1310
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2021-01-22 15:49:35 +08:00
Fabiano Fidêncio
5aef2faa4d Merge pull request #1304 from devimc/2021-01-20/snap/dontReleaseAlphaRC
snap: Don't release Kata Alpha/RC in snap store
2021-01-22 07:55:35 +01:00
Fupan Li
06d1dd2220 Merge pull request #1297 from mxpv/netlink
Migrate to rtnetlink
2021-01-22 09:39:17 +08:00
Julio Montes
2b880d2808 snap: Don't release Kata Alpha/RC in snap store
Stable and candidate snapcraft's channels are used to release Kata
Containers 1.x and 2.x respectively. Alpha and RC releases shouldn't
be pushed to the snap store because there are not enough channels
for all the releases of Kata Containers 1.x and 2.x.

fixes #1303

Signed-off-by: Julio Montes <julio.montes@intel.com>
2021-01-21 10:34:05 -06:00
Bin Liu
4bb23ed990 Merge pull request #1301 from Tim-Zhang/add-underscore-for-const
agent: Add underscore for constants
2021-01-20 21:43:21 +08:00
Tim Zhang
14a63cce22 agent: Add underscore for constants
To make them follow the rust convention and easier to read.

Fixes: #1235

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-01-20 17:12:29 +08:00
Tim Zhang
c3a4180ae3 Merge pull request #1296 from GabyCT/topic/update20ubuntu
github: Update ubuntu version to 20.04
2021-01-20 14:57:30 +08:00
Maksym Pavlenko
fa93831f66 agent: Address linter and tests
- Fix clippy complains
- Use #[tokio::test] for async tests
- Improve IPv6 check

Fixes: #1294

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2021-01-19 20:23:11 -08:00
Julio Montes
3b6dd7054a Merge pull request #1290 from devimc/2021-01-18/agent/nvdimmDriver
agent: implement NVDIMM/PMEM block driver
2021-01-19 13:43:19 -06:00
Maksym Pavlenko
96762ab7ab agent: Remove old netlink crate
Cleans up unused code.

Fixes: #1294

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2021-01-19 09:58:50 -08:00
Gabriela Cervantes
0ea8243a97 github: Update ubuntu version to 20.04
This PR updates the ubuntu version from 18.04 to 20.04 that will be
used for the github actions.

Fixes #1295

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2021-01-19 11:48:55 -06:00
Maksym Pavlenko
33367be4c7 agent: Integrate netlink
This patch integrates new netlink module routines with the agent (mainly
replaces calls to old netlink module with the new one).

Fixes: #1294

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2021-01-19 09:48:51 -08:00
Maksym Pavlenko
23f3aefa1d agent: Implement new netlink module
This PR adds new netlink module (based on `rtnetlink` crate), so we don’t have to
write a low level code to interact with netlink sockets, but use a high level API.

As a side effect, `rtnetlink` crate got full IPv6 support, so it fixes #1171

Fixes: #1294

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2021-01-19 09:44:50 -08:00
Julio Montes
12551de8a2 agent: implement NVDIMM/PMEM block driver
Support pmem-csi[1] k8s pluging, unlike SCSI and virtio devices,
NVDIMM/PMEM devices support DAX, improving IO Read and Write
operations.

fixes #1289

Signed-off-by: Julio Montes <julio.montes@intel.com>

[1]: https://github.com/intel/pmem-csi
2021-01-19 09:28:41 -06:00
Tim Zhang
f09128d8c7 Merge pull request #1292 from lifupan/2.0-dev
rustjail: fix the issue of missing destroy contaienr cgroups
2021-01-19 22:33:27 +08:00
fupan.lfp
6abb1be724 rustjail: fix the issue of missing destroy contaienr cgroups
In the container's destroy method, it should destroy
the container's cgroups.

Fixes: #1291

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2021-01-19 16:00:41 +08:00
Bin Liu
2a990a4507 Merge pull request #1210 from mxpv/async
agent: switch to async runtime
2021-01-19 13:52:23 +08:00
Tim Zhang
fe67f57c46 agent: set edition = "2018" in .rustfmt.toml to fix rustfmt about async fn
Got:
find . -type f -name "*.rs"  | egrep -v "target/|grpc-rs/|protocols/" | xargs rustfmt --check

error[E0670]: `async fn` is not permitted in the 2015 edition

This commit fixes this issue.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-01-18 15:38:19 +08:00
Tim Zhang
df68771e77 agent-ctl: Update ttrpc to 0.4.14 for agent-ctl
The ttrpc in agent-ctl should be compatible with protocols crate.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-01-18 15:38:19 +08:00
Maksym Pavlenko
37e285bf7b agent: Make debug console async
Fixes: #1209

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2021-01-18 15:38:19 +08:00
Tim Zhang
f3bd439465 agent: fix tests for async functions
Use tokio::test to test async functions.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-01-18 15:38:19 +08:00
Tim Zhang
9f79ddb9df agent: use tokio Notify instead of epoll to fix #1160
Fixes: #1160

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-01-18 15:38:19 +08:00
Tim Zhang
332fa4c65f agent: switch to async runtime
Fixes: #1209

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-01-18 15:38:15 +08:00
Eric Ernst
5d2c5ab534 Merge pull request #1280 from egernst/final-fix-probably-2.0-dev
Final fix probably 2.0 dev
2021-01-15 12:45:43 -08:00
Eric Ernst
35ea7ee600 actions: further updates to fix release workflow
There were still issues. Tested in fork, verified environment variable
passing works as before now.

Fixes: #1273

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-01-15 11:06:17 -08:00
Eric Ernst
fc6ba8f067 Merge pull request #1279 from egernst/fixup-release-2.0-dev
actions: fixup release/main workflow
2021-01-15 08:38:09 -08:00
Eric Ernst
ded8e03f33 actions: fixup release/main workflow
Still need pkg-sha

Fixes: #1273

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-01-15 07:45:13 -08:00
Peng Tao
2ff74f53bc Merge pull request #1274 from egernst/fix-release-scripts
Fix release scripts
2021-01-15 14:23:52 +08:00
Eric Ernst
7557a1b60d packaging: should tag/update tests repo when releasing
We should still bump/version the tests repository, just as we do for
1.x.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-01-14 21:01:02 -08:00
Eric Ernst
437b35b7d9 actions: w/a deprecated set-env
Fixes: #1273

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-01-14 20:59:51 -08:00
Chelsea Mafrica
b24a2d2e48 Merge pull request #904 from cmaf/tracing-shimv2
shimv2: Add tracing to shimv2
2021-01-14 16:38:28 -08:00
Eric Ernst
7c08ddf5a6 Merge pull request #1269 from egernst/2.1-alpha0-branch-bump
# Kata Containers 2.1-alpha0
2021-01-14 14:28:56 -08:00
Carlos Venegas
9c71092e76 Merge pull request #1268 from devimc/2021-01-14/fixSnap
Fix snap CI
2021-01-14 14:01:30 -06:00
Eric Ernst
383e8e673d release: Kata Containers 2.1-alpha0
- snap: Fix yq error in build
- storage: cleanup and support read only block dev hotplug
- rootfs: Don't fallthrough in the docker_extra_args() switch
- github: Add github actions
- shimv2: Avoid double removing of container from sandbox
- Agent: return error on trying to persist a pid namespace and minor improvements
- rustjail: allow network sysctls
- rustjail: fix the issue of sync read
- rustjail: fix the issue of bind mount /dev
- qemu: no state to save if QEMU isn't running
- packaging/qemu: Build and package completely inside the container
- agent: upgrade cgroups to 0.2.0
- agent: Simplify .or_else() to .or()
- Fix error reporting in listInterfaces() and listRoutes()
- improve rustjail validator
- Add void "install" targets for both "trace-forwarder" and "agent-ctl"
- [forwardport] Add support for Gentoo
- oci: fix a typo in "addtionalGids"
- Don't update cpusets if no CPUs changed closes #1172
- rootfs: reduce size of debian image
- runtime: Allow to overwrite DESTDIR
- snap: fix snap release channel
- Don't leak fd when reseeding rng
- Fixes for make generate-protocols
- docs: Fix docs in docs/architecture.md
- docs: Update the Cloud Hypervisor description in virtualization.md
- agent: exit from exec hangs if background process is present
- [forwardport] install: Improve snap documentation
- handle vcpus properly utilized in the guest
- docs: fix the custom agent binary file path for creating initrd image
- shimv2: handle ctx passed by containerd
- runtime: clh: Enforce to call 'cleanupVM' for 'stopSandbox'
- agent: Adjust OOM Score to avoid agent being killed.
- [forward port]  cli: make check subcommand more tolerant to failures
- docs: add link to VMT on top level README
- rustjail: fork a new child process to change the pid ns
- rustjail: remove the network ns validation against container
- snap: update apps section
- runtime: don't wait the second shim process in shim start
- agent: create pci root Bus Path for arm64
- agent: enable lto flag for Cargo to get better optimized code
- virtcontainers: revert CleanupContainer from PR 1079
- docs: Create hypervisor summary document
- Add hyperlink and fix typo
- versions: Use CRI-O v1.18.4-4-g6dee3891e
- runtime: change configuration key name from EnablePprof to enable_pprof
- runtime: delete sandboxlist.go and sandboxlist_test.go
- versions: Use release-1.18 (commit ee9128444bec10)
- runtime: clh: disable virtiofs DAX when FS cache size is 0
- release: Fix release candidate to major version upgrade check
- runtime: sleep 1 second after GetOOMEvent failed
- Agent: README updates for build on ppc64le
- runtime: clean/refactor code
- Forward port annotation doc
- versions: Update cloud-hypervisor to release v0.11.0
- docs: Add instructions for enabling VM templating
- Revert "version: revert back to crio 1.8.3"
- Dump guest memory when kernel panic for QEMU
- clh: Consolidate the code path for device unplug
- agent: Log ttrpc messages
- annotations: Improve asset annotation handling
- runtime: readonly volume should be bind mounted readonly on the host
- docs: Fix incorrect docs in config file
- CI: Fix incorrect URL
- docs: Update top-level README
- versions: Update crio version
- runtime: cloud-hypervisor: reduce memory footprint
- agent: Improve unit test coverage for src/sandbox.rs
- rustjail: fix the issue of create thread failed causing current thread panic
- Improve unit test coverage for rustjail/container.rs
- agent: Update build instructions
- cli: Provide aliases for kata-* subcommands and options
- runtime: Restore QEMUVIRTIOFSPATH variable in Makefile
- Use apply_patches.sh in qemu and kernel scripts
- clean up agent proto files
- agent: fixes the permissions of PID 1's STDIO
- Feature/1004 add version for kata monitor
- agent: Generate proto files programmatically
- runtime: Fix firecracker config
- docs: remove the 1.x version description about shim and proxy
- arm64: correct bridge type for QEMUVIRT
- snap: add GH actions jobs to release the snap package
- agent: clear clippy warnings
- agent: simplify ttrpc error construction
- Replace @RUNTIME_NAME@ with the target in generated files
- 2.0 update doc for hypervisor related information
- virtcontainers: Append max_ports to virtio-serial device
- snap: install libseccomp-dev
- runtime: set virtio-fs as default fs sharing method
- VirtioFS: backports & default settings to improve performance
- tools: Make agent-ctl support more APIs
- Validate runtime annotations
- kernel: update to 5.4.71
- config: make virtio-fs part of standard kernel
- agent: Optimize error handling
- versions: Update Kubernetes, containerd, cri-o and cri-tools
- agent: fix crashers if API requests empty
- rustjail: add length check for uid_mappings in rootless euid mapping
- kata-monitor: use regexp to check if runtime is kata containers
- docs: update the build kata containers kernel document
- cgroup and cpuset fixes from 1.x
- docs: Update upgrading guide
- agent: fix panic on malformed device resource in container update
- Forward port device conflict fixes from Kata 1 / Go agent
- docs: Add containerd install guide
- agent: simplify codes
- agent: fix errorneous parsing for guest block size
- agent: use macro to simplify parse_cmdline function in config.rs
- fix arm CI
- packaging: fix missing cloud_hypervisor_repo
- docs: Add crictl example json files
- ci: snap: add event filtering
- agent: do not follow link when mounting container proc and sysfs
- agent-ctl: include cargo lock updates
- agent: set init process non-dumpable
- runtime: Clear the VCMock 1.x API Methods from 2.0
- virtiofs: Disable DAX
- docs: Update docs for enabling agent debug console
- Remove compilation warnings
- osbuilder: Create target directory for agent
- versions: add plugins section
- snap: specify python version
- packaging: fix image build script
- Main packaging fixups
- clh: Support VFIO device unplug
- ci: add github action to test the snap
- docs: update networking description
- docs: update dev guide for agent build
- rust-agent: Update README
- docs: update architecture.md
- runtime: add support for SGX
- version: upgrade qemu version to v5.1.0 for arm64
- agent: Fix OCI Windows network shared container name typo
- github: Remove issue template and use central one
- docs: fix broken links
- Packaging: release notes script using error kernel path urls
- rust-agent: Replaces improper use of match for non-constant patterns
- devices: fix go test warning in manager_test.go
- action: Allow long lines if non-alphabetic
- Indicates never return function and remove unreachable code
- agent: propagate the internal detail errors to users
- Update Installation Guide to better reflect the current state of the project
- ci: fix clone_tests_repo function
- agent: Set LIBC=gnu for ppc64le arch by default
- fc: integrate Firecracker's metrics
- Fix to qemu experimental and improvements
- ci: resurrect travis static checkers
- agent: fix UT failures due to chdir
- agent: Only allow proc mount if it is procfs
- kata 2.0: add debug console service
- runtime: Call s.newStore.Destroy if globalSandboxList.addSandbox
- shimv2: add a comment in checkAndMount()
- osbuilder: specify default toolchain verion in rust-init
- runtime: Update CLH client pkg to version v0.10.0
- agent/oci: Don't use deprecated Error::description() method
- runtime: Fix linter errors in release files
- packaging: Build from source if the clh release binary is missing
- runtime: add podman configuration to data collection script
- ci: use Travis cache to reduce build time
- agent: update cgroups crate
- docs: Update the reference path of kata-deploy in the packaging
- runtime: make kata-check check for newer release
- how-to: add privileged_without_host_devices to containerd guide
- agent: Unit tests for rustjail/mount.rs
- docs: Fix the kata-pkgsync tool's docs script path
- Fix developer guide
- fix guest panic when running agent as init
- packaging: update version file url for kata 2.0 in Makefile
- Fix release notes

789fd7c1 blk-dev: hotplug readonly if applicable
12777b26 volumes: cleanup / minor refactoring
fbc1d123 vendor: revendor govmm
6cc1920c snap: Fix yq error in build
b329a74f rootfs: Fix indentation inside a switch
8879f9a0 rootfs: apparmor=unconfined is needed for non Red Hat host OSes
bbeebcdb rootfs: Always add SYS_ADMIN, CHROOT, and MKNOD caps to docker cmdline
90ec2fa8 rootfs: Don't fallthrough in the docker_extra_args() switch
ebd9fcc2 actions: Run static checks before make agent
0d3736d5 rustjail: fix the issue of sync read
0dc02f6d rustjail: fix the issue of bind mount /dev
894fa42a rustjail: allow network sysctls
d4cd2554 agent: Avoid container stats panic caused by cgroup controller non-exist
157e055f agent: upgrade crate cgroups to 0.2.0
e3ec1d50 agent: Simplify .or_else() to .or()
14e7042c agent: Clean up commented use declarations
5fe5b321 agent: Fix temp prefix on Namespace::test_setup_persistent_ns
3a891d4e agent: Return error on trying to persist a pid namespace
5c464018 shimv2: Avoid double removing of container from sandbox
b366af93 jail: add more test cases for validator
d38a5d3f jail/validator: introduce helpers to reduce duplicated code
76ad3213 jail/validator: avoid unwrap() for safety
51fd624f rustjail: add more context info for errors
9321e1b2 oci: fix two incompatible issues with OCI spec
406a91ff agent: consume ttrpc crate from crates.io
9a7bcccc qemu: no state to save if QEMU isn't running
6181570c oci: fix a typo in "addtionalGids"
a5372e00 github: Add github actions
4af5beda agent/sandbox:  Don't update cpuset when ncpus = 0
e004616b runtime/network: Fix error reporting in listRoutes()
1ae8e81a runtime/network: Correct error reporting in listInterfaces()
a19263e5 agent/protocols: Remove unneeded import from oci.proto
a19cf28c agent/protocols: Remove some unnecessary include directives from protoc
2b452090 agent/protocols: Remove some unneeded dependencies for protocol generation
b36c9ea3 docs: Fix docs in docs/architecture.md
3db1c805 agent: Don't leak fd when reseeding rng
8ac93f65 rootfs-builder: add support for gentoo
9897238f rootfs: reduce size of debian image
d47122e9 docs: Update the Cloud Hypervisor description in virtualization.md
10e9bfc6 runtime: Allow to overwrite DESTDIR
f740032c packaging/qemu: Delete the temporary container
e5c710e8 packaging/qemu: Build and package completely in the container
4c3377de packaging/qemu: Add QEMU_DESTDIR argument to dockerfiles
faed2369 rootfs-builder: add functions to run before and after the container
8e5603e6 snap: fix snap release channel
8f538935 install: Improve snap documentation
1ca415d8 agent: exit from exec hangs if background process is present
a00f7c34 docs: fix the custom agent binary file path for creating initrd image
0155fe12 shimv2: handle ctx passed by containerd
a793b8d9 agent: update cpuset of container path
705182d0 agent: ignore updating cpuset error when update cgroups
647331ac runtime: clh: Enforce to call 'cleanupVM' for 'stopSandbox'
e684a541 docs: add link to VMT on top level README
68f66c51 agent-ctl: Add void "install" target
5e407758 trace-forwarder: Add void "install" target
70f198d7 cli: check modules and permissions before loading a module
cb684cf8 cli: don't fail if rate limit is exceeded
9216f2ad rustjail: fork a new child process to change the pid ns
3b08376c rustjail: remove the network ns validation against container
c388ec5b runtime: don't wait the second shim process in shim start
d6acc4c0 agent: enable lto flag for Cargo to get better optimized code
13a8e4e3 snap: update apps section
fdbf7d32 virtcontainers: revert CleanupContainer from PR 1079
91a390f0 docs: Create hypervisor summary document
3eeb25a1 docs: Tidied up virtualisation summary table
8ec3cf08 docs: Adding hyperlink to virtio-net in kata documentation 2.0
b5b67db8 docs: Fixing typo in virtualization.md file
4d46d0f0 versions: Use CRI-O v1.18.4-4-g6dee3891e
53b5d063 agent: Adjust OOM Score to avoid agent being killed.
14a21c3a runtime: change configuration key name from EnablePprof to enable_pprof
4e3a8c01 runtime: remove global sandbox variable
29020394 runtime: delete sandboxlist.go and sandboxlist_test.go
9b88a96b versions: Use release-1.18 (commit ee9128444bec10)
36f65ce1 runtime: clh: update cloud-hypervisor
e1396f04 runtime: clh: disable virtiofs DAX when FS cache size is 0
8f38265b release: Fix release candidate to major version upgrade check
2e0bf40a tests: Ensure semver build metadata is ignored
4024a827 release: Make error format string consistent
cb0e6094 runtime: sleep 1 second after GetOOMEvent failed
4c78814b docs: Fix pre-existing spelling mistakes caught by the CI
6c083d94 docs: Add a link to document describing how to use annotations
d67921a2 docs: Document restricted annotations
1fc7b764 docs: Repair inconsistencies between 2.0 and 1.x
21801a11 versions: Revert "version: revert back to crio 1.8.3"
b8414045 runtime: remove nsenter
e3510be8 runtime: use one line if statement to check if err is nil for qemu.go
378308e2 docs: Add instructions for enabling VM templating
92c1c4c6 versions: Update cloud-hypervisor to release v0.11.0
8907a339 agent: Only show ttrpc logs for trace log level
21cd7ad1 agent: Log ttrpc messages
286eebf0 agent: Add env var to set log level
b9c6db4b agent: Add env var tests
705e9955 agent: Add env var comment
5ced96e9 hypervisor: Remove unused methods
e82c9dae annotations: Improve asset annotation handling
0f26f1cd annotations: Add missing hypervisor control annotation
76064e3e asset: Formatting, grammar and whitespace
40418f6d runtime: add geust memory dump
ff13bde3 version: revert back to crio 1.8.3
6c2fc233 agent: create pci root Bus Path for arm64
a958eaa8 runtime: mount shared mountpoint readonly
125e21ce runtime: readonly mounts should be readonly bindmount on the host
5f0abc20 CI: Fix incorrect URL
b6f8a1d5 docs: Fix incorrect docs in config file
93d79625 clh: Consolidate the code path for device unplug
18a22459 Agent: README updates for build on ppc64le
655f2649 Agent: README updates for build on ppc64le
62c7e094 docs: Remove credits
679df0fb docs: Update top-level README
dfe364f8 Agent: README updates for build on ppc64le
77b50969 runtime: cloud-hypervisor: reduce memory footprint
2e1a8f0a agent: Improve unit test coverage for src/sandbox.rs
87848e87 versions: Update crio version
172d015e rustjail: fix the issue of create thread failed causing thread panic
9e93463b agent/rustjail: improve unit test coverage for rustjail/container.rs
ad4f7b86 agent/rustjail: make mount and umount2 public
926a6186 agent/rustjail: fix typo
8130d9b2 agent/rustjail: don't use unwrap in container::oci_state
5d111071 rustjail: add mock implementation for cgroup manager
e3eff0eb agent: Update build instructions
0896ce80 agent: update proto file copyright
6e9ca457 agent: generate proto files properly
837343f0 agent-ctl: update cargo.lock
b3166618 runtime: remove the unused proto files
54e23c83 agent: move gogo.proto out of the github.com namespance
583e6ed3 agent: types.pb.go is not regenerated
bb19fcb9 docs: Update documentation with new subcommand forms
d2fe7091 cli: Use new subcommand forms in kata-manager script
4d9ab0cd cli: Support new subcommand forms in bash completion
c5d355e1 cli: Remove `kata-` prefix from env and check subcommands
f134b4a3 agent: Update build instructions
9e9988df agent/protocols: Move agent.proto out of the mock folder of agent
e90aa7b4 agent: fixes the permissions of PID 1's STDIO
b9b281e7 packaging: Use apply-patches.sh in build-kernel.sh
163e6104 packaging: Make qemu/apply_patches.sh common
d4cf3057 packaging: qemu/apply_patches.sh should sort the patches
5b065eb5 runtime: change govmm package
9cb41507 agent/protocols: Fix copyright header checking
0d58d919 agent/protocols: Stop generate agent proto files in the shellscript
7559382b agent/protocols: Ignore generated files and remove these files from repo
fdc33fb7 agent/protocols: Generate proto files programmatically
f1c3bf6b runtime: let kata-collect-data.sh collect kata-monitor info
993a8da3 kata-monitor: add version subcommand
4ee78120 runtime: Restore QEMUVIRTIOFSPATH variable in Makefile
df4ce9fa ci: add `cargo clippy` for agent
2e138788 agent: clear match_like_matches_macro/vec_resize_to_zero warnings
227edfdc agent: clear module_inception/type_complexity warnings
698d25b7 agent: clear redundant_field_names clippy warning
4dd9bd7a agent: clear clippy `len_zero` warnings
bf7dec5c agent: clear clippy warnings
56f867ee rustjail: clear clippy warnings
16757ad4 oci: clear clippy warnings
f32f49bd logging: clear clippy warnings
5b079a3b snap: add GH actions jobs to release the snap package
2738b18b runtime: Fix firecracker config
e5d4259a runtime: Simplify make variables for clh
9eab3015 arm64: correct bridge type for QEMUVIRT
b88aac04 docs: Update how-to Readme with hypervisor information.
d6464117 docs: Update Readme to remove hypervisor information
b4f9fb51 docs: Remove docs for nemu
96a4ed7d Makefile: Replace @RUNTIME_NAME@ with the target in generated files
7159fc2e agent: simplify ttrpc error construction
0f894986 snap: install libseccomp-dev
9a351509 package: drop qemu-virtiofs shim
6ed669a1 packaging: install virtiofsd for normal qemu build as well
da79b4be virtcontainers: Append max_ports to virtio-serial device
bcf48530 runtime: enable virtiofs by default
e2221d34 tools: Improve agent-ctl README
2d1f2c7b kernel: update to 5.4.71
d3c98620 config: make virtio-fs part of standard kernel
edf02af1 tools: Make agent-ctl support more APIs
56201803 tools: Remove commented out code in agent-ctl
9bac4ee6 tools: Log request in agent-ctl tool if debug enabled
68821f08 tools: Rename agent-ctl command to GetGuestDetails
8553f062 tools: Fix comment in agent-ctl
6ba294a1 agent: remove `unwrap()` for `e.as_errno()`
e77482fe agent: Use `?` instead of `match` when the error returns directly
1b7ed328 kata-monitor: use regexp to check if runtime is kata containers
47ff2fb9 agent: use anyhow `context` to attach context to `Error` instead of `match`
2f690a2b agent: remove useless match
1d8def66 agent: Use `ok_or_else` instead of match for Option -> Result
84953066 agent: Fix crasher if AddARPNeighbors request empty
3d084c7d agent: Fix crasher if UpdateRoutes request empty
5615e5a7 agent: Fix crasher if UpdateInterface request empty
0dce817e agent: replace `match Result` with `or_else`
7bf4073d agent: replace unnecessary `match Result` with `map_err`
7f9e5913 agent: replace check! with map_err for readability
09aca49e agent: remove `check!` in child process because we cant' see logs.
a18899f1 agent: refactor namespace::setup to optimize error handling
a3c64e5c agent: replace `if let Err` with `or_else`
6ffa8283 agent: replace `if let Err` with `map_err`
863f918a rustjail: add length check for uid_mappings in rootless euid mapping
720eab78 versions: Update Kubernetes, containerd, cri-o and cri-tools
c5771be2 annotations: Correct unit tests to validate new protections
398d7918 annotations: Split addHypervisorOverrides to reduce complexity
b2b3bc7a annotations: Add unit test for checkPathIsInGlobs
6f52179c annotations: Add unit test for regexpContains function
966bd573 makefile: Add missing generated vars to `USER_VARS`
be6ee255 makefile: Improve names of config entries for annotation checks
b1194274 annotations: Give better names to local variabes in search functions
b5db114a annotations: Rename checkPathIsInGlobList with checkPathIsInGlobs
d65a7d10 config: Add better comments in the template files
7c6aede5 config: Whitelist hypervisor annotations by name
f047fced config: Use glob instead of regexp to match paths in annotations
11b9c90c annotations: Fix typo in comment
c16cdcb2 config: Add makefile variables for path lists
4e89b885 config: Protect file_mem_backend against annotation attacks
aae9656d config: Protect vhost_user_store_path against annotation attacks
55881653 config: Add security warning on configuration examples
b21a829c config: Protect ctlpath from annotation attack
27b6620b config: Protect jailer_path annotation
07669017 config: Add examples for path_list configuration
2d431c61 annotations: Simplify negative logic
2ca9ca89 config: Add hypervisor path override through annotations
2e093dfd config: Fix typo in function name
bf13ff0a config: Protect virtio_fs_daemon annotation
8c75de19 config: Add 'List' alternates for hypervisor configuration paths
fc6468ef agent: fix panic on malformed device resource in container update
d8a8fe47 cpuset: don't set cpuset.mems in the guest
88cd7128 sandbox: consider cpusets if quota is not enforced
77a463e5 cpuset: support setting mems for sandbox
2d690536 cpuset: add cpuset pkg
1a9515a9 runtime: Pass `--thread-pool-size=1` to virtiofsd
1c528cd1 packaging: Apply virtiofs performance related fixes to 5.x
5b520003 docs: Update upgrading guide
0e0564a5 docs: update the build kata containers kernel document
ae6b8ec7 agent/device: Check type as well as major:minor when looking up devices
859301b0 agent/device: Index all devices in spec before updating them
2477c355 agent/device: Forward port update_spec_device_list() unit test
08d80c1a agent/device: update_spec_device_list() should error if dev not found
12cc0ee1 sandbox: don't constrain cpus, mem only cpuset, devices
b6cf68a9 cgroups: add ability to update CPUSet
b812d4f7 virtcontainers: add method for calculating cpuset for sandbox
f63f7405 agent: fix errorneous parsing for guest block size
43d70a32 docs: Add containerd install guide
11c1ab8b agent: use ok_or/map_err instead of match
6b9f9915 rustjail: use Iterator to manipulate vector elements
a7251651 docs: remove the 1.x version description about shim and proxy
dc1442c3 rustjail: delete codes commented out
aa04111d rustjail: delete unused test code
eae685dc agent: use chain of Result to avoid early return
5e3d1fb6 agent: add blank lines between methods
980e48ca agent: delete unused field in agentService
52b821fa agent: use no-named closure to reduce codes
82e94501 packaging: fix cloud-hypervisor binary path
b1f95e8d agent: use a local fn to reduce duplicated codes
154a356a packaging: apply qemu v5.1 stable fixes
c781a808 agent: fix aarch64 build
906b3844 agent: update not accurate comments
78318c18 packaging: fix missing cloud_hypervisor_repo
b7309943 agent: use macro to simplify parse_cmdline function in config.rs
9834a766 docs: add namespace key to pod/container config files
37e7de72 ci: snap: add event filtering
9a02e6eb docs: Add crictl example json files
b7147eda agent: do not follow link when mounting container proc and sysfs
15b71563 agent: set init process non-dumpable
00ad3fd3 agent-ctl: include cargo lock updates
8cd62d7b versions: add plugins section
c4472481 virtiofs: Disable DAX
3e56de81 snap: specify python version
e3cdc89b osbuilder: Create target directory for agent
7cad865d packaging: fix image build script
0e898c6b rust-agent: Treat warnings as error
0e4baaab rust-agent: Identify unused results in tests
5b2b5652 rust-agent: Log returned errors rather than ignore them
d617caf1 rust-agent: Remove unused imports
ee739c5d rust-agent: Report errors to caller if possible
d5b492a1 rust-agent: Ignore write errors while writing to the logs
c635c46a rust-agent: Remove unused code that has undefined behavior
ec24f688 rust-agent: Remove 'mut' where not needed
c8f406d4 rust-agent: Remove uses of deprecated functions
f832d8a6 rust-agent: Remove or rename unused parameters
5a1d3311 rust-agent: Remove or rename unused variables
27efe291 rust-agent: Remove unused functions
d76ece0c rust-agent: Remove useless braces
3682812e rust-agent: Remove unused macros
483209bf actions: add kata deploy test
07930024 packaging: cleaning, updating based on new filepaths
f0f205cd packaging: remove obs-packaging
4b1753c5 packaging: pull versions, build-image out from obs dir
3f6cd4d5 packaging: Revert "packaging: Stop providing OBS packages"
c33ee54a clh: Support VFIO device unplug
1f4dfa31 clh: Remove unnecessary VmmPing
cc80ae0a versions: cloud-hypervisor: Bump to version 6d30fe05
0fec7a4d docs: Change kata_tap0 to tap0_kata
3394a6a5 docs: update networking description
2e83f405 dev-guide: update kata-agent install details
ffea705a docs: Update docs for enabling agent debug console
777f3981 docs: update dev guide for agent build
aa8eefd8 ci: add github action to test the snap
ea1cb37b versions: cloud-hypervisor: bump version
0ebffdf2 runtime: cloud-hypervisor: tag openapi-generator-cli container
e51a1ea3 docs: use-cases: Add Intel SGX use case
7d638231 runtime/vendor: add k8s.io/apimachinery/pkg/api/resource
6df165c1 runtime: add support for SGX
a5b3e1cd docs: drop docker installation guide
6c4300c6 docs: fix static check errors in docs/install/README.md
59224a76 docs: update architecture.md
a89deb3e rust-agent: Update README
80c52834 github: Remove issue template and use central one
0ccbca3b agent: Fix OCI Windows network shared container name typo
a6221a74 qemu: upgrade qemu version to 5.1.0 for arm64.
f30b86f1 Packaging: release notes script using error kernel path urls
a7faeaac docs: fix broken links
4501c25a agent: propagate the internal detail errors to users
1984e635 ci: fix clone_tests_repo function
02c1a59f agent: Set LIBC=gnu for ppc64le arch by default
7019e72c agent: remove unreachable code
942999ed agent: Change do_exec return type to ! because it will never return
757dfa70 fc: integrate Firecracker's metrics
b03d958e gitignore: ignore agent service file
64b4f698 agent: fix UT failures due to chdir
85d22301 runtime: fix TestNewConsole UT failure
e90e9a2c travis: skip static checker for ppc64
5611283e runtime: fix golint errors
daf2a54d agent: fix cargo fmt
c05c4ba5 ci: always checkout 2.0-dev of test repository
1569b3b3 docs: fix static check errors
df3119b6 runtime: fix make check
484a595f runtime: add enable_debug_console configuration item for agent
febdf8f6 runtime: add debug console service
07d339c7 devices: fix go test warning in manager_test.go
a4afe3af rust-agent: Replaces improper use of match for non-constant patterns
acaa806c agent: Only allow proc mount if it is procfs
ca501e54 osbuilder: specify default toolchain verion in rust-init.
03517327 action: Allow long lines if non-alphabetic
33513fb4 rustjail: make the mount error info much more clear
45b0b4ed agent/oci: Don't use deprecated Error::description() method
a34478ff runtime: Update cloud-hypervisor client pkg to version v0.10.0
ce675075 static-build/qemu-virtiofs: Refactor apply virtiofs patches
512b38cf packaging/qemu: Add common code to apply patches
edce2712 static-build/qemu-virtiofs: Fix to apply QEMU patches
86a864b8 packaging: Build from source if the clh release binary is missing
33585a8e runtime: Fix linter errors in release files
e3a0f9b3 ci: use export command to export envs instead of env config item
36ce7018 agent: update cgroups crate
3523167d runtime: Call s.newStore.Destroy if globalSandboxList.addSandbox
9e5a4b8b ci: use Travis cache to reduce build time
52984b67 docs: Update the reference path of kata-deploy in the packaging
eae21591 runtime: add podman configuration to data collection script
d1277848 how-to: add privileged_without_host_devices to containerd guide
98c4d11b docs: fix k8s containerd howto links
f107b12b docs: fix up developer guide for 2.0
9f2f5201 docs: Fix the kata-pkgsync tool's docs script path
96f8769a travis: enable RUST_BACKTRACE
cda7acf7 agent/rustjail: add more unit tests
98cc979a agent/rustjail: remove makedev function
b99fefad agent/rustjail: add unit tests for ms_move_rootfs and mask_path
d79fad2d agent/rustjail: implement functions to chroot
25c91afb agent/rustjail: add unit test for pivot_rootfs
7cf0fd95 agent/rustjail: implement functions to pivot_root
672da4d0 agent/rustjail: add unit test for mount_cgroups
ab61cf7f agent/rustjail: add unit test for init_rootfs
0a0714c9 agent/rustjail/mount: don't use unwrap
3dc9452b agent/rustjail: add tempfile crate as depedency
d756f52c rustjail: implement functions to mount and umount files
a02d1787 gitignore: ignore agent version.rs
b518ddea agent: fix agent panic running as init
1a77f69e runtime: make kata-check check for newer release
61181b9f packaging: use local version file for kata 2.0 in Makefile
e1c6aa27 docs: fix release process doc
1acfba4d packaging: fix release notes
1839dfd9 runtime: Clear the VCMock 1.x API Methods from 2.0
7225460a shimv2: add a comment in checkAndMount()
22ca2da6 packaging: Stop providing OBS packages
afa88c1b install: Add contacts to the distribution packages
3955cc89 install: Update information about Community Packages
218f77d7 install: Update SUSE information
2a0e76a8 install: Update openSUSE information
691f1364 install: Update RHEL information
270fc4b2 install: Update Fedora information
492b4e90 install: Update CentOS information

Signed-off-by: Eric Ernst <eric_ernst@apple.com>
2021-01-14 10:59:36 -08:00
Julio Montes
5ce74bab41 snap: tag yq version
yq major releases are not backward compatible, install the same
major version used in the CI to avoid conflics building the kata
components.
We should update yq when the CI updates it, not before.

fixes #1232

Signed-off-by: Julio Montes <julio.montes@intel.com>
2021-01-14 11:44:39 -06:00
Julio Montes
ef1feaf38f revert: "snap: Fix yq error in build"
This reverts commit 6cc1920c37.

Instead of updating the syntax of yq, let's use yq 3.x, otherwise
yq must be updated in the CI and the syntax updated in all the
tools (osbuilder, packging).

Signed-off-by: Julio Montes <julio.montes@intel.com>
2021-01-14 11:36:44 -06:00
Julio Montes
74ebd96f99 Merge pull request #1243 from jodh-intel/2.0-dev-fix-snap-build
snap: Fix yq error in build
2021-01-13 14:57:57 -06:00
Eric Ernst
9176df7068 Merge pull request #1247 from egernst/blockro
storage: cleanup and support read only block dev hotplug
2021-01-13 12:47:12 -08:00
Eric Ernst
789fd7c1c6 blk-dev: hotplug readonly if applicable
If a block based volume is read only, let's make sure we add as a RO
device

Fixes: #1246

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-01-12 14:50:54 -08:00
Eric Ernst
12777b26e4 volumes: cleanup / minor refactoring
Update some headers, very minor refactoring

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-01-12 14:50:47 -08:00
Eric Ernst
fbc1d123e8 vendor: revendor govmm
Update govmm to add RO blk hotplug support.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2021-01-11 18:11:50 -08:00
Julio Montes
ea069002b7 Merge pull request #1196 from fidencio/wip/fix-docker-extra-args
rootfs: Don't fallthrough in the docker_extra_args() switch
2021-01-11 14:04:56 -06:00
James O. D. Hunt
6cc1920c37 snap: Fix yq error in build
The snap build pulls the latest release of `yq`, but `yq` version 4
changed the CLI syntax for reading a YAML file.

Update the snap config file to use the new `yq` v4 syntax.

Fixes: #1232.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2021-01-11 11:24:46 +00:00
Maksym Pavlenko
5561755e3c agent: Initial switch to async runtime
This commit includes minimal changes in order to switch to Tokio:
- Update protocol crate to generate async server code
- Adds async entry point to the Agent
- Updates agent services signatures in rpc.rs

Fixes: #1209

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2021-01-11 16:50:53 +08:00
Fabiano Fidêncio
b329a74f18 rootfs: Fix indentation inside a switch
While touching this part of the code, let's help my OCD.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-01-08 22:46:24 +01:00
Fabiano Fidêncio
8879f9a09b rootfs: apparmor=unconfined is needed for non Red Hat host OSes
This is not needed for Fedora, RHEL, and CentOS, but it is required when
using any other host OS.  Having --security-opt apparmor=unconfined used
unconditionally is a no go as it'd break podman.

The reason this was only added when building for SUSE (as target distro)
was because debian and ubuntu condition would fall-through the switch to
the suse case (which makes me think that the fall-through was not
accidental).

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-01-08 21:35:10 +01:00
Fabiano Fidêncio
bbeebcdbba rootfs: Always add SYS_ADMIN, CHROOT, and MKNOD caps to docker cmdline
We use those, independently of the distro.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-01-08 21:35:10 +01:00
Fabiano Fidêncio
90ec2fa802 rootfs: Don't fallthrough in the docker_extra_args() switch
Falling through the switch cases in docker_extra_args() looks like a
typo and causes issues when building with podman, as `--security-opt
apparmor=unconfinded" shouldn't be passed if Apparmor is no enable on
the system.

Fixes: #1241

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2021-01-08 21:35:10 +01:00
GabyCT
a6d52d3da1 Merge pull request #1208 from GabyCT/topic/addgithu
github: Add github actions
2021-01-08 14:27:19 -06:00
Archana Shinde
ebd9fcc2c3 actions: Run static checks before make agent
Run static checks prior to building the agent.Checks
fail if run after since the compilation process
produces new rust code.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2021-01-08 11:04:54 -06:00
Fabiano Fidêncio
ce27c00ee2 Merge pull request #1217 from snir911/fix_hanging_pods
shimv2: Avoid double removing of container from sandbox
2021-01-08 15:00:54 +01:00
Fabiano Fidêncio
31519333a0 Merge pull request #1221 from wainersm/agent_improve
Agent: return error on trying to persist a pid namespace and minor improvements
2021-01-08 14:58:15 +01:00
Fabiano Fidêncio
dcfbf03781 Merge pull request #1229 from snir911/sysctl_fix
rustjail: allow network sysctls
2021-01-08 14:56:18 +01:00
Peng Tao
855fe10bfd Merge pull request #1234 from lifupan/2.0-dev-fix-read
rustjail: fix the issue of sync read
2021-01-08 14:03:46 +08:00
Fupan Li
80f561d7e3 Merge pull request #1230 from lifupan/2.0-dev
rustjail: fix the issue of bind mount /dev
2021-01-08 13:40:10 +08:00
fupan.lfp
0d3736d5c5 rustjail: fix the issue of sync read
It should check the read count and return an
error if read count didn't match the expected
number.

Fixes: #1233

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2021-01-07 17:21:22 +08:00
fupan.lfp
0dc02f6dd3 rustjail: fix the issue of bind mount /dev
In case the container rootfs's /dev was overrided
by binding mount from another directory, then there's
no need to create the default devices nodes and symlinks
in /dev.

Fixes: #692

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2021-01-07 16:12:25 +08:00
Eric Ernst
542e93d987 Merge pull request #1180 from egernst/qemu-cleanup-check
qemu: no state to save if QEMU isn't running
2021-01-06 11:17:54 -08:00
Fabiano Fidêncio
f531bab745 Merge pull request #1169 from wainersm/qemu_for_ci-1
packaging/qemu: Build and package completely inside the container
2021-01-05 19:50:32 +01:00
Snir Sheriber
894fa42a57 rustjail: allow network sysctls
The network ns is shared with the guest skip looking for it
in the spec

Fixes: #1228
Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
2021-01-05 17:12:42 +02:00
Tim Zhang
91c6ba74fa Merge pull request #1225 from Tim-Zhang/update-cgroup-to-0.2.0
agent: upgrade cgroups to 0.2.0
2021-01-05 19:50:05 +08:00
Peng Tao
7f38c200e0 Merge pull request #1202 from dgibson/bug1201
agent: Simplify .or_else() to .or()
2021-01-05 14:42:53 +08:00
Tim Zhang
d4cd255485 agent: Avoid container stats panic caused by cgroup controller non-exist
Return SingularPtrField::none() instead of panic when getting stats
from cgroup failed caused by cgroup controller missing.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-01-05 11:35:41 +08:00
Tim Zhang
157e055fdd agent: upgrade crate cgroups to 0.2.0
Fixes: #1224

35ecd6f (origin/change-name, change-name) Update readme
eb6577e Change package name to cgroups-rs
8f6a7e0 Merge pull request #19 from Tim-Zhang/0.2.0
9baa065 (origin/0.2.0, 0.2.0) release: v0.2.0
e160df0 Make read_i64_from private and merge read_str_from to its caller
e1e05d3 Make new_with_relative_paths=new and load_with_relative_paths=new in v2
a89f4a0 Support set notify_on_release & release_agent
61a0957 Fix set_swappiness in cgroup v2
0592045 Ignore kmem in cgroup v2
c254fff Update readme
438d774 Fix test
42ee1ba Make Cgroup can be stored in struct
b6bb5ae docs: Hide Re-exports
d2882b1 Print cause when println!("{}")
abcb5ed Add more logs for create_dir error in controller.create
1f188be Detect subsystems and get root from /proc/self/mountinfo
fbd7164 Fix warnings in tests
f342254 Remove Box wrap of Cgroup.hire
cd998f3 Do not place cgroup under relative path read from cgroup by default
1ac76b6 Make function find_v1_mount pub
121f78d Expose deletion error
0f76570 Avoid exception caused by cgroup writeback feature
10650e2 Update tests to adapt new type of fields in resource
567cdb4 Use Option as resource fields, remove the update switch: update_values
0c18b08 Support customized attributes for CpuController and MemController
ca610bb add add_task_by_tgid

Signed-off-by: Tim Zhang <tim@hyper.sh>
2021-01-05 11:35:34 +08:00
David Gibson
e3ec1d509e agent: Simplify .or_else() to .or()
get_bool_value() in src/agent/src/config.rs includes a Result::or_else()
call with a trivial closure which can be replaced by a Result::or.  This
removes a clippy warning.

fixes #1201

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-01-05 12:54:21 +11:00
David Gibson
e9e39fd081 Merge pull request #1207 from dgibson/bug1206
Fix error reporting in listInterfaces() and listRoutes()
2021-01-05 12:02:07 +11:00
Wainer dos Santos Moschetta
14e7042cf6 agent: Clean up commented use declarations
There are some commented use declarations, removed them all.

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-12-29 09:16:29 -05:00
Wainer dos Santos Moschetta
5fe5b3212f agent: Fix temp prefix on Namespace::test_setup_persistent_ns
Wrong prefix on the created temp directory on the test_setup_persistent_ns
for uts namesmpace type test.

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-12-29 09:16:29 -05:00
Wainer dos Santos Moschetta
3a891d4e8f agent: Return error on trying to persist a pid namespace
An pid namespace cannot be persisted, so add a check-and-error on
Namespace::setup() for handling that case.

Fixes #1220

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-12-29 09:16:26 -05:00
Peng Tao
0e215ece36 Merge pull request #1215 from jiangliu/liujiang/validator
improve rustjail validator
2020-12-28 15:32:23 +08:00
Snir Sheriber
5c464018ed shimv2: Avoid double removing of container from sandbox
RemoveContainerRequest results in calling to deleteContainer, according
to spec calling to RemoveContainer is idempotent and "must not return
an error if the container has already been removed", hence, don't
return error if the error reports that the container is not found.

Fixes: #836

Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
2020-12-27 18:04:06 +02:00
Liu Jiang
b366af9358 jail: add more test cases for validator
Fixes: #1214

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-12-24 20:17:06 +08:00
Liu Jiang
d38a5d3fcf jail/validator: introduce helpers to reduce duplicated code
Fixes: #1214

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-12-24 19:02:31 +08:00
Liu Jiang
76ad32136f jail/validator: avoid unwrap() for safety
Explicitly return error codes instead of unwrap().

Fixes: #1214

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-12-24 19:02:13 +08:00
Liu Jiang
51fd624f3e rustjail: add more context info for errors
Fixes: #1214

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-12-24 17:47:58 +08:00
Peng Tao
f1b3f2e178 Merge pull request #1150 from fidencio/wip/make-install-breaks
Add void "install" targets for both "trace-forwarder" and "agent-ctl"
2020-12-23 18:41:42 +08:00
Peng Tao
d6a6f68fd7 Merge pull request #1177 from devimc/2020-12-07/osbuilder/gentoo
[forwardport] Add support for Gentoo
2020-12-23 18:39:12 +08:00
Peng Tao
109ab54d63 Merge pull request #1212 from jiangliu/typo
oci: fix a typo in "addtionalGids"
2020-12-23 18:03:26 +08:00
Bin Liu
8d6096210e Merge pull request #1186 from maruthgoyal/2.0-dev
Don't update cpusets if no CPUs changed closes #1172
2020-12-23 10:05:59 +08:00
Liu Jiang
9321e1b21b oci: fix two incompatible issues with OCI spec
The first incompatible issue is caused by a typo, "swapiness" should
be "swappiness". The second incompatible issue is caused by a serde
format. The struct LinuxBlockIODevice is introduced for convenience,
but it also changes serialized data, so "#[serde(flatten)]" should
be used for compatibility with OCI spec.

Fixes: #1211

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-12-22 11:16:15 +08:00
Liu Jiang
406a91ffdd agent: consume ttrpc crate from crates.io
The ttrpc v0.3.0 has been published to crates.io, so consume from
crates.io.

Fixes: #1213

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-12-22 09:46:41 +08:00
Eric Ernst
9a7bcccc8e qemu: no state to save if QEMU isn't running
On pod delete, we were looking to read files that we had just deleted. In particular,
stopSandbox for QEMU was called (we cleanup up vmpath), and then QEMU's
save function was called, which immediately checks for the PID file.

Let's only update the persist store for QEMU if QEMU is actually
running. This'll avoid Error messages being displayed when we are
stopping and deleting a sandbox:

```
level=error msg="Could not read qemu pid file"
```

I reviewed CLH, and it looks like it is already taking appropriate
action, so no changes needed.

Ideally we won't spend much time saving state to persist.json unless
there's an actual error during stop/delete/shutdown path, as the persist will
also be removed after the pod is removed. We may want to optimize this,
as currently we are doing a persist store when deleting each container
(after the sandbox is stopped, VM is killed), and when we stop the sandbox.
This'll require more rework... tracked in:
  https://github.com/kata-containers/kata-containers/issues/1181

Fixes: #1179

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-12-21 11:29:44 -08:00
Liu Jiang
6181570ccc oci: fix a typo in "addtionalGids"
There's a typo in "addtionalGids", which should be "additionalGids".

Fixes: #1211

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-12-22 00:03:27 +08:00
Gabriela Cervantes
a5372e006f github: Add github actions
This PR adds the github actions for this repository.

Fixes #1205

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-12-18 15:19:22 -06:00
Maruth Goyal
4af5beda35 agent/sandbox: Don't update cpuset when ncpus = 0
When receiving an OnlineCpuMemory RPC, if the number of CPUs to be
made available is 0, then updating the cpusets is a redundant operation.

Fixes: #1172

Signed-off-by: Maruth Goyal <maruthgoyal@gmail.com>
2020-12-18 18:11:16 +05:30
David Gibson
e004616b02 runtime/network: Fix error reporting in listRoutes()
If the upcast from resultingRoutes to *grpc.IRoutes fails, we return
(nil, err), but previous code ensures that err is nil at that point, so we
return no error.

fixes #1206

Forward port of
0ffaeeb5d8

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-12-18 14:36:09 +11:00
David Gibson
1ae8e81abb runtime/network: Correct error reporting in listInterfaces()
If the upcast from resultingInterfaces to *grpc.Interfaces fails, we
return (nil, err), but previous code ensures that err is nil at that
point, so we return no error.

Forward port of
b86e904c2d

fixes #1206

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-12-18 14:35:50 +11:00
Bin Liu
1b2ccf87f8 Merge pull request #1189 from devimc/2020-12-10/improveDebianImage
rootfs: reduce size of debian image
2020-12-17 22:35:34 +08:00
Bin Liu
caa6965c17 Merge pull request #1183 from wainersm/runtime_destdir
runtime: Allow to overwrite DESTDIR
2020-12-17 14:10:56 +08:00
Bin Liu
7fa3045136 Merge pull request #1175 from devimc/2020-12-07/fixSnapWorkflow
snap: fix snap release channel
2020-12-17 12:51:22 +08:00
Bin Liu
3b87d10d79 Merge pull request #1191 from mxpv/fd
Don't leak fd when reseeding rng
2020-12-17 12:50:55 +08:00
David Gibson
c2da484e23 Merge pull request #1199 from dgibson/proto-regen
Fixes for make generate-protocols
2020-12-17 15:43:49 +11:00
David Gibson
a19263e58d agent/protocols: Remove unneeded import from oci.proto
oci.proto imports "google/protobuf/wrappers.proto", but doesn't appear to
use it, which causes a warning from protoc when we compile it.  Remove the
import to fix the warning.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-12-17 13:06:41 +11:00
David Gibson
a19cf28c26 agent/protocols: Remove some unnecessary include directives from protoc
The generate_go_sources() function in update-generate-proto.sh adds a
number of include directives to the protoc command line.  Some of these
don't appear to be necessary to correctly compile the agent's protocol
files, so remove them.

Amongst other things were directives pointing at the old Kata1 runtime and
agent repositories.  Those ones could be actively harmful by causing odd
dependencies of the Kata2 build on the Kata1 repositories.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-12-16 12:10:27 +11:00
David Gibson
2b4520904c agent/protocols: Remove some unneeded dependencies for protocol generation
src/agent/protocols/hack/update-generated-proto.sh checks for the presence
of protoc-gen-rust and ttrpc_rust_plugin, but it doesn't actually need
them.  Those tools are needed to generate Rust code from the gRPC proto
files, but that's already handled in src/agent/protocols/build.rs using
Cargo for dependency management.

This script is only needed for the Go code, for which the other tools are
sufficient.

fixes #1198

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-12-16 12:10:27 +11:00
Bo Chen
9f317009b0 Merge pull request #1194 from yuchunyu97/patch-1
docs: Fix docs in docs/architecture.md
2020-12-15 07:35:29 -08:00
AIsland
b36c9ea3fa docs: Fix docs in docs/architecture.md
Correct the docs in docs/architecture.md,

use virtio-fs as the default config.

Fixes: #1193

Signed-off-by: AIsland <yuchunyu01@inspur.com>
2020-12-14 09:31:20 +08:00
Maksym Pavlenko
3db1c8059d agent: Don't leak fd when reseeding rng
This PR wraps fd raw descriptor with File, so it'll be properly closed once exited.

Fixes: #1192

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2020-12-11 16:18:41 -08:00
Bo Chen
8edfab73c3 Merge pull request #1170 from likebreath/1203/update_virt_docs
docs: Update the Cloud Hypervisor description in virtualization.md
2020-12-10 09:04:20 -08:00
Julio Montes
8ac93f65fd rootfs-builder: add support for gentoo
Generate images based on gentoo

fixes #1178

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-12-10 09:36:15 -06:00
Julio Montes
9897238f3a rootfs: reduce size of debian image
Improve Kata Containers memory footprint by reducing debian
image size.

Without this change:
Debian image -> 256MB

With this change:
Debian image -> 128MB

Note: this change *will not* impact ubuntu image.

fixes #1188

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-12-10 09:23:48 -06:00
Bo Chen
d47122e959 docs: Update the Cloud Hypervisor description in virtualization.md
The current description on the Cloud Hypervisor support in Kata
containers were introduced back to kata 1.10 and are out-dated.

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

Fixes: #1167

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-12-10 06:17:53 -08:00
Wainer dos Santos Moschetta
10e9bfc6f7 runtime: Allow to overwrite DESTDIR
On runtime/Makefile the value of DESTDIR is set to "/", unless one
pass that variable as an argument to `make`. This change will
allow its overwrite if DESTDIR is exported in the environment as
well.

Fixes #1182

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-12-09 09:04:04 -05:00
Wainer dos Santos Moschetta
f740032c42 packaging/qemu: Delete the temporary container
It is used a temporary container to pull the QEMU tarball out
of the build image, but this container is never deleted. This
will ensure it gets deleted after its execution.

Fixes #1168

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-12-08 16:36:16 -05:00
Wainer dos Santos Moschetta
e5c710e833 packaging/qemu: Build and package completely in the container
Currently QEMU is built inside the container, its tarball pulled to
the host, files removed then packaged again. Instead, let's run all
those steps inside the container and the resulting tarball will
be the final version. For that end, it is introduced the
qemu-build-post.sh script which will remove the uneeded files and
create the tarball.

The patterns for directories on qemu.blacklist had to be changed
to work properly with `find -path`.

Fixes #1168

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-12-08 16:36:14 -05:00
Wainer dos Santos Moschetta
4c3377de3b packaging/qemu: Add QEMU_DESTDIR argument to dockerfiles
The dockerfiles used to build qemu and qemu-virtiofs have the QEMU destination
path hardcoded, which in turn is also on the build scripts. This refactor
the dockerfiles to add the QEMU_DESTDIR argument, which value is passed by the scripts.

Fixes #1168

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-12-08 16:32:25 -05:00
Julio Montes
faed2369a0 rootfs-builder: add functions to run before and after the container
Define `before_starting_container` and `after_stopping_container`
functions, these functions run before and after the container that
builds the rootfs respectively.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-12-08 10:14:00 -06:00
Peng Tao
e167bf30e3 Merge pull request #1165 from liubin/fix/exec-hang-when-bg-process-running
agent: exit from exec hangs if background process is present
2020-12-08 20:32:23 +08:00
Julio Montes
94b9b812c7 Merge pull request #1173 from devimc/2020-12-07/updateSnapDoc
[forwardport] install: Improve snap documentation
2020-12-07 14:07:25 -06:00
Julio Montes
8e5603e6a8 snap: fix snap release channel
According to the new snap document
`docs/install/snap-installation-guide.md`, Kata Containers 2.x should
be available in the snapcraft `candidate` channel.

fixes #1174

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-12-07 13:37:57 -06:00
Julio Montes
8f53893535 install: Improve snap documentation
Improve snap documentation, document how to install
kata 1.x and 2.x, how to configure them and their integration
with container engines.

fixes #1138

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-12-07 08:56:11 -06:00
bin liu
1ca415d87e agent: exit from exec hangs if background process is present
This is the Rust porting of https://github.com/kata-containers/agent/pull/371

`read_stdout`/`read_stderr` is blocking rpc calls, if exec process
exited, these calls is on blocking state for reading on process's
term master fd, and can't get a chance to break the wait.

In this PR, `read_stdout`/`read_stderr` will not read directly from
a term master of a process, instead, it will first have to get
an fd to read from newly added `epoller.poll()`. `epoller.poll()` may returns:

- the term master fd of exec process, if the process is running.
- a fd(piped fd) will return EOF when reading to indicate that th process is exited.

Fixes: #1160

Signed-off-by: bin liu <bin@hyper.sh>
2020-12-07 10:52:44 +08:00
Chelsea Mafrica
49e7151d3d shimv2: Add tracing
Add trace calls to shimv2 that create spans for functions in service.go.
Tracing starts in New(), which is forked twice and is followed by either
StartShim() or Create().

Tracing cannot start without the value for Trace enabled from the
runtime config so load the config in New(), which results in it being
loaded every time New() is called in addition to where it is originally
loaded after Create().

Fixes #903

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-12-04 19:38:44 -08:00
Peng Tao
4bca7312c7 Merge pull request #1158 from liubin/fix/1156-fix-cpuset
handle vcpus properly utilized in the guest
2020-12-04 22:32:15 +08:00
Bin Liu
35e79c97cf Merge pull request #920 from YchauWang/update-docs-2.0-5
docs: fix the custom agent binary file path for creating initrd image
2020-12-04 21:41:20 +08:00
Ychau Wang
a00f7c3484 docs: fix the custom agent binary file path for creating initrd image
fix the custom agent binary file path for creating an initrd image in
the Developer-Guide.md file.

Fixes: #919

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-12-04 17:19:23 +08:00
Fabiano Fidêncio
f7383ef835 Merge pull request #1166 from cmaf/fix-ctx-port
shimv2: handle ctx passed by containerd
2020-12-03 19:45:52 +01:00
Bin Liu
4e0a7e31f9 Merge pull request #1103 from likebreath/1111/clh_fix_cleanupVM
runtime: clh: Enforce to call 'cleanupVM' for 'stopSandbox'
2020-12-03 17:34:26 +08:00
Chelsea Mafrica
0155fe1260 shimv2: handle ctx passed by containerd
Sometimes shim process cannot be shutdown because of container list
is not empty. This container list is written in shim service, while
creating container. We find that if containerd cancel its Create
Container Request due to timeout, but runtime didn't handle it properly
and continue creating action, then this container cannot be deleted at
all. So we should make sure the ctx passed to Create Service rpc call
is effective.

Fixes #1088

Signed-off-by: Yves Chan <shanks.cyp@gmail.com>
Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-12-02 14:28:31 -08:00
Archana Shinde
f96cdc1a67 Merge pull request #1114 from c3d/bug/1111-agent-oom-killer
agent: Adjust OOM Score to avoid agent being killed.
2020-12-02 11:40:35 -08:00
Julio Montes
2c6cee0d28 Merge pull request #1146 from devimc/2020-11-19/fixKataCheck
[forward port]  cli: make check subcommand more tolerant to failures
2020-12-02 13:11:30 -06:00
bin liu
a793b8d90d agent: update cpuset of container path
After cpu hot-plugged is available, cpuset for containers will be written into
cgroup files recursively, the paths should include container's cgroup path, and up
to root path of cgroup filesystem.

Fixes: #1156, #1159

Signed-off-by: bin liu <bin@hyper.sh>
2020-12-02 10:38:26 +08:00
bin liu
705182d04e agent: ignore updating cpuset error when update cgroups
The result of `cpuset_controller.set_cpus(&cpu.cpus)` is unwrapped,
this will lead creating container to fail if cpuset is set.

The sandbox's `CreateContainer` sequence is:

c, err := newContainer(s, &contConfig)
err = c.create()
  c.sandbox.agent.createContainer(c.sandbox, c) (1)
err = s.updateResources()
  oldCPUs, newCPUs, err := s.hypervisor.resizeVCPUs(sandboxVCPUs) (2)

cpuset only avaiable after `s.hypervisor.resizeVCPUs` has been called at (2),
and then cpuset is written to cgourps file.

Fixes: #1159

Signed-off-by: bin liu <bin@hyper.sh>
2020-12-02 10:38:16 +08:00
Bo Chen
647331ace6 runtime: clh: Enforce to call 'cleanupVM' for 'stopSandbox'
We should always cleanup the vm directory when doing `stopSandbox`,
while we are skipping the cleanup process on some error code paths when
using cloud-hypervisor driver.

Fixes: #1098

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-12-01 17:27:44 -08:00
Eric Ernst
095dace7d6 Merge pull request #1137 from egernst/vmt-to-top
docs: add link to VMT on top level README
2020-12-01 16:25:22 -08:00
Eric Ernst
2f1cb7995f kata-monitor: allow for building for alpine
- add a reference Dockerfile to tools
- update kata-monitor build to:
  1) utilize the kata buildflags, which were dropped before
  2) disable CGO, so we have option for building in alpine

From root of the repository, example build:
 $ docker build -f tools/packaging/kata-monitor/Dockerfile -t kata-monitor .

Fixes: #1135

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-12-01 10:28:59 -08:00
Eric Ernst
e684a54163 docs: add link to VMT on top level README
The VMT process is well documented, but users would need to land on
community repo to find it. Let's make it easier to identify the correct
way to disclose vulnerabilities.

Fixes: #1136

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-11-30 08:12:31 -08:00
Fabiano Fidêncio
68f66c515f agent-ctl: Add void "install" target
Otherwise `make install` run from the top directory would just fail as
the target is not defined.

Fixes: #1149

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-11-27 15:26:29 +01:00
Fabiano Fidêncio
5e407758f6 trace-forwarder: Add void "install" target
Otherwise `make install` run from the top directory would just fail as
the target is not defined.

Fixes: #1149

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-11-27 15:26:23 +01:00
Julio Montes
70f198d78e cli: check modules and permissions before loading a module
Before loading a module, the check subcommand should check if the
current user can load it.

fixes #3085

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-11-26 11:55:42 -06:00
Julio Montes
cb684cf8ea cli: don't fail if rate limit is exceeded
Don't fail if rate limit is exceeded since this is a
limitation/restriction of Github not a problem in the host.
Print a warning when the rate limit is exceeded.

For more information about Github's rate limit, see
https://developer.github.com/v3/#rate-limiting

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-11-26 11:50:14 -06:00
Bin Liu
b8716d8eec Merge pull request #1141 from lifupan/fix_thread_spwan
rustjail: fork a new child process to change the pid ns
2020-11-25 15:20:36 +08:00
Bin Liu
8d19b8e013 Merge pull request #1139 from lifupan/skip_networkcheck
rustjail: remove the network ns validation against container
2020-11-25 15:03:18 +08:00
fupan.lfp
9216f2ad63 rustjail: fork a new child process to change the pid ns
The main process do unshare pid namespace, the process
couldn't spawn new thread, in order to avoid this issue,
fork a new child process and do the pid namespace unshare
in the new temporary process.

Fixes: #1140

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-11-23 17:57:33 +08:00
fupan.lfp
3b08376c4e rustjail: remove the network ns validation against container
Since kata containers shared the network ns with
the guest system, thus there's no need to do the
network ns check.

Fixes: #1047

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-11-23 14:41:22 +08:00
Julio Montes
a853e8eaca Merge pull request #1124 from devimc/2020-11-17/snap/updateApps
snap: update apps section
2020-11-18 09:21:35 -06:00
James O. D. Hunt
7c12c5481e Merge pull request #1128 from liubin/fix/1127-delete-wait
runtime: don't wait the second shim process in shim start
2020-11-18 14:19:11 +00:00
Julio Montes
f00655a40f Merge pull request #1060 from jongwu/rootbus
agent: create pci root Bus Path for arm64
2020-11-18 08:13:30 -06:00
Julio Montes
e411ebc779 Merge pull request #1126 from liubin/fix/1125-enable-lto
agent: enable lto flag for Cargo to get better optimized code
2020-11-18 08:07:58 -06:00
bin liu
c388ec5bef runtime: don't wait the second shim process in shim start
In first shim v2 startup(with `start` command-line option), it will start
the second shim v2 process running as ttrpc server, there is no needs to
wait the second process, because the current shim v2 process will exit immediately.

Fixes: #1127

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-18 17:18:59 +08:00
bin liu
d6acc4c09c agent: enable lto flag for Cargo to get better optimized code
The lto setting controls the -C lto flag which controls LLVM's link time optimizations.
LTO can produce better optimized code, using whole-program analysis,
at the cost of longer linking time.

https://doc.rust-lang.org/cargo/reference/profiles.html#lto

Fixes: #1125

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-18 15:50:27 +08:00
Julio Montes
13a8e4e39e snap: update apps section
Add `kata-runtime` and `kata-collect-data.sh` commands to the apps
section, these two command will be accessible through the commands
`kata-containers.runtime` and `kata-containers.collect-data`
respectively.
Henceforth the snap command for `containerd-shim-kata-v2` will be
`kata-containers.shim`

fixes #1122

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-11-17 11:31:08 -06:00
Julio Montes
1dd77e204f Merge pull request #1120 from liubin/fix/1119-revert-cleanupcontainer-api
virtcontainers: revert CleanupContainer from PR 1079
2020-11-17 09:11:29 -06:00
Tim Zhang
7201745eae Merge pull request #1065 from jodh-intel/2.0-dev-add-hypervisors-doc
docs: Create hypervisor summary document
2020-11-17 16:07:18 +08:00
bin liu
fdbf7d3222 virtcontainers: revert CleanupContainer from PR 1079
In PR 1079, CleanupContainer's parameter of sandboxID is changed to VCSandbox, but at cleanup,
there is no VCSandbox is constructed, we should load it from disk by loadSandboxConfig() in
persist.go. This commit reverts parts of #1079

Fixes: #1119

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-17 10:31:33 +08:00
Bo Chen
960227165c Merge pull request #1121 from c3d/docs/855-hyperlinks
Add hyperlink and fix typo
2020-11-16 15:48:43 -08:00
James O. D. Hunt
91a390f072 docs: Create hypervisor summary document
Split some of the core hypervisor details out of the virtualisation
document and present in a simpler fashion for new users.

Fixes: #1063.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-16 11:52:40 +00:00
James O. D. Hunt
3eeb25a169 docs: Tidied up virtualisation summary table
- Removed the `QEMU-virtio-fs` entry from the virtualization doc since
  support is now available upstream and the QEMU virtio-fs-specific
  configuration file has been removed.
- Removed NEMU as this is no longer used.
- Sorted the remaining rows.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-16 11:50:43 +00:00
Ariel Adam
8ec3cf08f3 docs: Adding hyperlink to virtio-net in kata documentation 2.0
Referring virtio-net mentioning in the kata virtualization
documentation to the virtio-networking blog series published
and explaining how it works.

Fixes #612

Signed-off-by: Ariel Adam <aadam@redhat.com>
2020-11-16 10:57:55 +01:00
Ariel Adam
b5b67db8d7 docs: Fixing typo in virtualization.md file
Changing "implementor" to "implementer"

Fixes: #612

Signed-off-by: Ariel Adam <aadam@redhat.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-11-16 10:57:22 +01:00
Julio Montes
ac6868250a Merge pull request #1117 from fidencio/wip/update-crio-version-to-include-fix-for-k8s-oom
versions: Use CRI-O v1.18.4-4-g6dee3891e
2020-11-13 13:22:58 -06:00
Fabiano Fidêncio
4d46d0f0f5 versions: Use CRI-O v1.18.4-4-g6dee3891e
This (unreleased) version of CRI-O brings in the possibility of enabling
the `k8s-oom.bats` test.

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

Fixes: #1116

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-11-13 15:56:02 +01:00
Christophe de Dinechin
53b5d063e9 agent: Adjust OOM Score to avoid agent being killed.
Under stress, the agent can be OOM-killed, which exists the sandbox.
One possible hard-to-diagnose manifestation is a virtiofsd crash.

Fixes: #1111

Reported-by: Qian Cai <caiqian@redhat.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-11-13 11:10:19 +01:00
Tim Zhang
06b9294c7d Merge pull request #1110 from liubin/fix/1109-add-enable_pprof
runtime: change configuration key name from EnablePprof to enable_pprof
2020-11-13 17:44:34 +08:00
Peng Tao
3b5245fc55 Merge pull request #1079 from liubin/fix/1078-delete-sandboxlist
runtime: delete sandboxlist.go and sandboxlist_test.go
2020-11-13 15:02:51 +08:00
bin liu
14a21c3ab1 runtime: change configuration key name from EnablePprof to enable_pprof
Key name in configuration file is in snake case but not camel case.
And the key is processed as `enable_pprof` in code, the configuration
template file should replace `EnablePprof` it by `enable_pprof`

Fixes: #1109

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-13 14:52:56 +08:00
bin liu
4e3a8c0124 runtime: remove global sandbox variable
Remove global sandbox variable, and save *Sandbox to hypervisor struct.
For some needs, hypervisor may need to use methods from Sandbox.

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-13 09:47:09 +08:00
bin liu
290203943c runtime: delete sandboxlist.go and sandboxlist_test.go
Delete sandboxlist.go and sandboxlist_test.go under virtcontainers package.

Fixes: #1078

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-13 09:47:09 +08:00
Fabiano Fidêncio
61fccef643 Merge pull request #1095 from fidencio/wip/update-crio-version-to-include-fix-for-k8s-copy-file
versions: Use release-1.18 (commit ee9128444bec10)
2020-11-13 01:00:23 +01:00
Bo Chen
258dd55855 Merge pull request #1101 from devimc/2020-11-06/runtime/fixClhDax
runtime: clh: disable virtiofs DAX when FS cache size is 0
2020-11-12 12:26:35 -08:00
Fabiano Fidêncio
9b88a96bc7 versions: Use release-1.18 (commit ee9128444bec10)
Let's update CRI-O version to the commit which introduced the fix for
the "k8s-copy-file" tests.

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

Fixes: #1080

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-11-12 18:04:47 +01:00
Julio Montes
36f65ce182 runtime: clh: update cloud-hypervisor
Update cloud-hypervisor to commit 2706319.
Fixes a limitation in OpenAPITools/openapi-generator tool,
it's impossible to send go zero types, like false and 0 to
cloud-hypervisor because `omitempty` is added if a field is not
required.
See cloud-hypervisor/cloud-hypervisor#1961 for more information

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-11-12 09:33:56 -06:00
Julio Montes
e1396f0402 runtime: clh: disable virtiofs DAX when FS cache size is 0
Guest consumes 120Mb more of memory when DAX is enabled and the default
FS cache size (8G) is used. Disable dax when it is not required
reducing guest's memory footprint.

Without this patch:

```
7fdea4000000-7fdee4000000 rw-s 18850589 /memfd:ch_ram (deleted)
Size:            1048576 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:              187876 kB
```

With this patch:

```
7fa970000000-7fa9b0000000 rw-s 612001  /memfd:ch_ram (deleted)
Size:            1048576 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:               57308 kB
Pss:               56722 kB
```

fixes #1100

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-11-12 09:33:56 -06:00
Julio Montes
af04d71feb Merge pull request #1105 from jodh-intel/2.0-dev-fix-kata-check-version-cmp
release: Fix release candidate to major version upgrade check
2020-11-12 09:26:21 -06:00
James O. D. Hunt
8f38265be4 release: Fix release candidate to major version upgrade check
Fix `kata-runtime kata-check`'s network version check which was failing
when the user was running a release candidate build and the latest
release was a major one, two examples of the error being:

- `BUG: unhandled scenario: current version: 1.12.0-rc0, latest version: 1.12.0`
- `BUG: unhandled scenario: current version: 2.0.0-rc0, latest version: 2.0.0`

Fixes: #1104.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-12 10:07:18 +00:00
James O. D. Hunt
2e0bf40adb tests: Ensure semver build metadata is ignored
According to the Semantic Versioning specification, build metadata must
be ignored for version comparisions, so add some explicit tests for this
scenario to `TestGetNewReleaseType()`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-12 10:06:15 +00:00
James O. D. Hunt
4024a8274b release: Make error format string consistent
Use `%s` for both semver parameters.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-12 10:04:00 +00:00
Fupan Li
671a2be313 Merge pull request #1094 from liubin/fix/991
runtime: sleep 1 second after GetOOMEvent failed
2020-11-11 14:33:57 +08:00
Peng Tao
9dbd1007d7 Merge pull request #1070 from jing-wang4/readme
Agent: README updates for build on ppc64le
2020-11-11 10:15:22 +08:00
Peng Tao
3c88106f65 Merge pull request #1084 from liubin/fix/1081-clean-codes
runtime: clean/refactor code
2020-11-11 10:09:10 +08:00
Christophe de Dinechin
9511b17819 Merge pull request #1045 from c3d/issue/1044-forward-port-annotation-doc
Forward port annotation doc
2020-11-10 11:34:23 +01:00
bin liu
cb0e6094ff runtime: sleep 1 second after GetOOMEvent failed
In some cases, for example agent crashed and not marked dead yet, the GetOOMEvent
will return errors like `connection reset by peer` or `ttrpc: closed`. Do a sleep
with 1 second (agent check interval) and let agent health check to do the check.

Fixes: #991

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-10 12:02:31 +08:00
Bo Chen
359ab16a8f Merge pull request #1090 from likebreath/1106/clh_upgrade_v0.11.0
versions: Update cloud-hypervisor to release v0.11.0
2020-11-09 15:51:09 -08:00
Archana Shinde
5444a31f7b Merge pull request #1092 from yuchunyu97/patch-1
docs: Add instructions for enabling VM templating
2020-11-09 15:50:12 -08:00
Christophe de Dinechin
4c78814bda docs: Fix pre-existing spelling mistakes caught by the CI
The documentation contains existing spelling mistakes that are caught by the CI
and prevent checking in. The errors include:

    INFO: Spell checking file 'docs/how-to/how-to-load-kernel-modules-with-kata.md'
    WARNING: Word 'configurated': did you mean one of the following?: configuration, reconfigured, Confederate, confederate
    WARNING: Word 'cri': did you mean one of the following?: cir, crib, chi, cry, Fri, crier
    ERROR: Spell check failed for file: 'docs/how-to/how-to-load-kernel-modules-with-kata.md'
    INFO: spell check failed for document docs/how-to/how-to-load-kernel-modules-with-kata.md
    INFO: Spell checking file 'docs/how-to/how-to-set-sandbox-config-kata.md'
    INFO: Spell check successful for file: 'docs/how-to/how-to-set-sandbox-config-kata.md'
    ERROR: spell check failed, See https://github.com/kata-containers/documentation/blob/master/Documentation-Requirements.md#spelling for more information.

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-11-09 16:52:33 +01:00
Christophe de Dinechin
6c083d9410 docs: Add a link to document describing how to use annotations
Add a link to the document listing the available annotations

Fixes: #1044
Forward-port-of: https://github.com/kata-containers/documentation/pull/757

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-11-09 16:50:26 +01:00
Christophe de Dinechin
d67921a2af docs: Document restricted annotations
Document restricted annotations, as implemented in
https://github.com/kata-containers/kata-containers/pull/902

Fixes: #1044
Forward-port-of: https://github.com/kata-containers/documentation/pull/755

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-11-09 16:50:26 +01:00
Christophe de Dinechin
1fc7b7641d docs: Repair inconsistencies between 2.0 and 1.x
The documentation `how-to/how-to-set-sandbox-config-kata.md` contains a number
of differences relative to the 1.x variant, which do not seem to correspond to
missing features in the actual code.

Fixes: #1046

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-11-09 16:50:26 +01:00
Peng Tao
2e65a48a11 Merge pull request #1093 from fidencio/wip/reverting-revert-cri-o-bump
Revert "version: revert back to crio 1.8.3"
2020-11-09 22:43:22 +08:00
Fabiano Fidêncio
21801a11a7 versions: Revert "version: revert back to crio 1.8.3"
This reverts commit ff13bde3c1, which
moved back CRI-O to v1.18.3.

The was, IMHO, a little bit premature.  We want to know exactly what are
the issues on v1.18.4, solve those, and be prepared for a v1.18.5 bump
(or even a bump to a specific commit, if needed).

Just for the sake of the completeness, v1.18.4 caused a regression on
"k8s-copy-file" tests, which is tracked on CRI-O side as
https://github.com/cri-o/cri-o/issues/4353.

Fixes: #1080

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-11-09 13:45:01 +01:00
bin liu
b8414045bf runtime: remove nsenter
remove code for nsenter

Fixes: #1081

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-09 11:42:51 +08:00
bin liu
e3510be867 runtime: use one line if statement to check if err is nil for qemu.go
Use `if err := q.qmpSetup(); err != nil` to reduce code and make it easy
to read. And remove checking err if last function call also return an error,
return the function call directly.

Fixes: #1081

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-09 11:42:45 +08:00
Fupan Li
d22c7cf00b Merge pull request #1013 from liubin/feature/1012-dump-guest-memroy-on-panic
Dump guest memory when kernel panic for QEMU
2020-11-09 09:46:28 +08:00
AIsland
378308e205 docs: Add instructions for enabling VM templating
Kata 2.0 uses virtio-fs as the shared_fs by default,

bug VM templating cannot be used with virtio-fs.

Fixes: #1091

Signed-off-by: AIsland <yuchunyu01@inspur.com>
2020-11-07 14:20:01 +08:00
Bo Chen
92c1c4c690 versions: Update cloud-hypervisor to release v0.11.0
The release v0.11.0 of cloud-hypervisor features the following changes:
1) Improved Linux Boot Time, 2) `SIGTERM/SIGINT` Interrupt Signal,
Handling 3) Default Log Level Changed, 4) `io_uring` support by default
for `virtio-block` (on host kernel version 5.8+), 5) Windows Guest
Support, 6) New `--balloon` Parameter Added, 7) Experimental
`virtio-watchdog` Support, 8) Bug fixes.

Fixes: #1089

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-11-06 16:19:31 -08:00
Archana Shinde
6160043c01 Merge pull request #1077 from likebreath/1103/clh_refactor_device_unplug
clh: Consolidate the code path for device unplug
2020-11-06 16:00:56 -08:00
James O. D. Hunt
b85914c960 Merge pull request #979 from jodh-intel/2.0-dev-show-ttrpc-logs
agent: Log ttrpc messages
2020-11-06 13:45:48 +00:00
James O. D. Hunt
8907a33907 agent: Only show ttrpc logs for trace log level
Only display the `ttrpc` crate log output when full logging
(trace level) is enabled.

This is a slight abuse of log levels but provides developers and testers
what they need whilst also keeping the logs relatively quiet for the
default info log level (the `ttrpc` crate logging is a bit "chatty").

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-06 10:45:05 +00:00
James O. D. Hunt
21cd7ad172 agent: Log ttrpc messages
The `ttrpc` crate uses the `log` crate for logging. But the agent uses
the `slog` crate. This means that currently, all `ttrpc` log messages
are being discarded.

Use the `slog-stdlog` create to redirect `log` crate logging calls into
`slog` so they are visible in the agents log output.

Fixes: #978.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-06 10:05:02 +00:00
James O. D. Hunt
286eebf087 agent: Add env var to set log level
Add support for a `KATA_AGENT_LOG_LEVEL` environment variable for testing.
This is the equivalent to the `agent.log=` kernel command line option.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-06 10:05:02 +00:00
James O. D. Hunt
b9c6db4bb8 agent: Add env var tests
Add some tests for the existing `KATA_AGENT_SERVER_ADDR` environment
variable feature.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-06 10:05:02 +00:00
James O. D. Hunt
705e995589 agent: Add env var comment
Add a comment stating what the server address environment variable is
for.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-06 10:05:02 +00:00
Peng Tao
c7a2b12fab Merge pull request #1086 from jodh-intel/2.0-dev-fix-annotations
annotations: Improve asset annotation handling
2020-11-06 10:29:22 +08:00
Bin Liu
a68e200462 Merge pull request #1062 from bergwolf/ro-volume
runtime: readonly volume should be bind mounted readonly on the host
2020-11-06 10:26:57 +08:00
James O. D. Hunt
5ced96e96d hypervisor: Remove unused methods
Deleted `HypervisorConfig`'s unused  `CustomFirmwareAsset()` and
`JailerAssetPath()` methods.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-05 12:15:47 +00:00
James O. D. Hunt
e82c9daec3 annotations: Improve asset annotation handling
Make `asset.go` the arbiter of asset annotations by removing all asset
annotations lists from other parts of the codebase.

This makes the code simpler, easier to maintain, and more robust.

Specifically, the previous behaviour was inconsistent as the following
ways:

- `createAssets()` in `sandbox.go` was not handling the following asset
  annotations:

    - firmware:
      - `io.katacontainers.config.hypervisor.firmware`
      - `io.katacontainers.config.hypervisor.firmware_hash`

    - hypervisor:
      - `io.katacontainers.config.hypervisor.path`
      - `io.katacontainers.config.hypervisor.hypervisor_hash`

    - hypervisor control binary:
      - `io.katacontainers.config.hypervisor.ctlpath`
      - `io.katacontainers.config.hypervisor.hypervisorctl_hash`

    - jailer:
      - `io.katacontainers.config.hypervisor.jailer_path`
      - `io.katacontainers.config.hypervisor.jailer_hash`

- `addAssetAnnotations()` in the `oci` package was not handling the
  following asset annotations:

    - hypervisor:
      - `io.katacontainers.config.hypervisor.path`
      - `io.katacontainers.config.hypervisor.hypervisor_hash`

    - hypervisor control binary:
      - `io.katacontainers.config.hypervisor.ctlpath`
      - `io.katacontainers.config.hypervisor.hypervisorctl_hash`

    - jailer:
      - `io.katacontainers.config.hypervisor.jailer_path`
      - `io.katacontainers.config.hypervisor.jailer_hash`

This change fixes the bug where specifying a custom hypervisor path via an
asset annotation was having no effect.

Fixes: #1085.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-05 12:15:42 +00:00
James O. D. Hunt
0f26f1cd6f annotations: Add missing hypervisor control annotation
Add missing annotation definitions for a hypervisor control binary:

- `io.katacontainers.config.hypervisor.ctlpath`
- `io.katacontainers.config.hypervisor.hypervisorctl_hash`

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-05 12:12:58 +00:00
James O. D. Hunt
76064e3e2d asset: Formatting, grammar and whitespace
Improve formatting, grammar and whitespace.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-05 12:12:51 +00:00
bin liu
40418f6d88 runtime: add geust memory dump
When guest panic, dump guest kernel memory to host filesystem.
And also includes:
- hypervisor config
- hypervisor version
- and state of sandbox

Fixes: #1012

Signed-off-by: bin liu <bin@hyper.sh>
2020-11-05 16:04:21 +08:00
Peng Tao
ff13bde3c1 version: revert back to crio 1.8.3
This reverts commit 87848e874e as it is
breaking the k8s configMap test.

Fixex: #1080
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-11-05 14:48:32 +08:00
Jianyong Wu
6c2fc233e2 agent: create pci root Bus Path for arm64
port https://github.com/kata-containers/agent/pull/860 here.

Fixes: #1059
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-11-05 12:18:09 +08:00
Peng Tao
a958eaa8d3 runtime: mount shared mountpoint readonly
bindmount remount events are not propagated through mount subtrees,
so we have to remount the shared dir mountpoint directly.

E.g.,
```
mkdir -p source dest foo source/foo

mount -o bind --make-shared source dest

mount -o bind foo source/foo
echo bind mount rw
mount | grep foo
echo remount ro
mount -o remount,bind,ro source/foo
mount | grep foo
```
would result in:
```
bind mount rw
/dev/xvda1 on /home/ubuntu/source/foo type ext4 (rw,relatime,discard,data=ordered)
/dev/xvda1 on /home/ubuntu/dest/foo type ext4 (rw,relatime,discard,data=ordered)
remount ro
/dev/xvda1 on /home/ubuntu/source/foo type ext4 (ro,relatime,discard,data=ordered)
/dev/xvda1 on /home/ubuntu/dest/foo type ext4 (rw,relatime,discard,data=ordered)
```

The reason is that bind mount creats new mount structs and attaches them to different mount subtrees.
However, MS_REMOUNT only looks for existing mount structs to modify and does not try to propagate the
change to mount structs in other subtrees.

Fixes: #1061
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-11-04 17:51:49 +08:00
Peng Tao
125e21cea3 runtime: readonly mounts should be readonly bindmount on the host
So that we get protected at the VM boundary not just the guest kernel.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-11-04 17:51:49 +08:00
Bin Liu
259589ad89 Merge pull request #1051 from yuchunyu97/patch-1
docs: Fix incorrect docs in config file
2020-11-04 17:46:21 +08:00
Bin Liu
045fc2f7a2 Merge pull request #1052 from yuchunyu97/patch-2
CI: Fix incorrect URL
2020-11-04 16:53:56 +08:00
AIsland
5f0abc20f0 CI: Fix incorrect URL
Correct the link in the GitHub action commit message check showing users how to format all commits.

Fixes: #1053

Signed-off-by: AIsland <yuchunyu01@inspur.com>
2020-11-04 10:05:20 +08:00
AIsland
b6f8a1d5af docs: Fix incorrect docs in config file
Correct the default configuration of [hypervisor.qemu] shared_fs in configuration-qemu.toml to virtio-fs in kata 2.0.

Fixes: #1054

Signed-off-by: AIsland <yuchunyu01@inspur.com>
2020-11-04 09:58:02 +08:00
Bo Chen
93d7962510 clh: Consolidate the code path for device unplug
In cloud-hypervisor, it provides a single unified way of unplugging
devices, e.g. the `/vm.RemoveDevice` HTTP API. Taking advantage of this
API, we can simplify our implementation of `hotplugRemoveDevice` in
`clh.go`, where we can consolidate similar code paths for different
device unplug (e.g. no need to implement `hotplugRemoveBlockDevice` and
`hotplugRemoveVfioDevice` separately). We will only need to retrieve the
right `deviceID` based on the type of devices, and use the single
unified HTTP API for device unplug.

Fixes: #1076

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-11-03 15:46:38 -08:00
James O. D. Hunt
43ec107d94 Merge pull request #1066 from jodh-intel/2.0-dev-update-readme
docs: Update top-level README
2020-11-03 16:05:55 +00:00
Jing Wang
18a2245986 Agent: README updates for build on ppc64le
README updates for agent build on ppc64le

  Fixes: #1069

Signed-off-by: Jing Wang <jing.wang4@ibm.com>
2020-11-03 15:29:43 +00:00
Jing Wang
655f2649b3 Agent: README updates for build on ppc64le
README updates for agent build on ppc64le

  Fixes: #1069

Signed-off-by: Jing Wang <jing.wang4@ibm.com>
2020-11-03 15:24:08 +00:00
James O. D. Hunt
62c7e09405 docs: Remove credits
Removed the packagecloud credits since we no longer produce distro
packages for Kata 2.x.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-03 11:38:59 +00:00
James O. D. Hunt
679df0fb77 docs: Update top-level README
Rework the top-level README to reflect the current use of this
repository.

Fixes: #1064.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-11-03 11:38:57 +00:00
Chelsea Mafrica
32505af7bb Merge pull request #1037 from GabyCT/topic/updatecrio
versions: Update crio version
2020-11-02 16:58:22 -08:00
Jing Wang
dfe364f885 Agent: README updates for build on ppc64le
README updates for agent build on ppc64le

Fixes: #1069

Signed-off-by: Jing Wang <jing.wang4@ibm.com>
2020-11-02 20:26:36 +00:00
Peng Tao
bf57cd844e Merge pull request #1057 from devimc/29-10-2020/clh/improveMemFoot
runtime: cloud-hypervisor: reduce memory footprint
2020-11-02 15:13:06 +08:00
Bin Liu
8823ca31ad Merge pull request #1042 from devimc/2020-10-21/unitests/sandbox.rs
agent: Improve unit test coverage for src/sandbox.rs
2020-10-30 11:26:29 +08:00
Bin Liu
7b9013f047 Merge pull request #1035 from lifupan/fix_thread_panic
rustjail: fix the issue of create thread failed causing current thread panic
2020-10-30 11:25:32 +08:00
Julio Montes
77b50969ea runtime: cloud-hypervisor: reduce memory footprint
Cloud-hypervisor supports DAX, let's enable it to reduce its memory
footprint.

Before this patch:

**19.96M**

```
20448kB -- [/usr/share/kata-containers/kata.img]
```

With this patch:

**10.83M**

```
11100kB -- [/usr/share/kata-containers/kata.img]
```

fixes #1056

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-29 14:21:57 -06:00
Julio Montes
196e8d81cf Merge pull request #1032 from devimc/2020-10-21/unitests/container.rs
Improve unit test coverage for rustjail/container.rs
2020-10-28 16:08:23 -06:00
Julio Montes
2e1a8f0ae9 agent: Improve unit test coverage for src/sandbox.rs
Improve unit test coverage for src/sandbox.rs

fixes #293

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-28 08:10:46 -06:00
Gabriela Cervantes
87848e874e versions: Update crio version
This PR updates the crio version from 1.18.3 to 1.18.4 in order to include
the fix https://github.com/cri-o/cri-o/pull/4284.

Fixes #1036

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-10-27 10:50:09 -06:00
fupan.lfp
172d015e1b rustjail: fix the issue of create thread failed causing thread panic
It's should catch the failed error of spawning a new thread, otherwise,
it would cause the current thread panic.

Fixes: #1034

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-10-27 23:31:34 +08:00
Julio Montes
9e93463bb6 agent/rustjail: improve unit test coverage for rustjail/container.rs
Improve unit test coverage for rustjail/container.rs

fixes #282

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-27 09:28:38 -06:00
Julio Montes
ad4f7b86f2 agent/rustjail: make mount and umount2 public
make mount and umount2 public, this way they can be
used in other files

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-27 09:28:38 -06:00
Julio Montes
926a618624 agent/rustjail: fix typo
not suppoerted  ->  not supported

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-27 09:28:38 -06:00
Julio Montes
8130d9b2dd agent/rustjail: don't use unwrap in container::oci_state
replace unwrap with `match` statements, this way we can write
unit tests that don't panic

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-27 09:28:38 -06:00
Julio Montes
5d111071be rustjail: add mock implementation for cgroup manager
Only root is able to create and manipulate cgroups, this mock
implementation of a cgroup manager can used in unit testing.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-27 09:28:38 -06:00
James O. D. Hunt
157dd041b2 Merge pull request #895 from Apokleos/dev
agent: Update build instructions
2020-10-27 14:54:51 +00:00
James O. D. Hunt
583ed55680 Merge pull request #1027 from knittl/feature/kata-subcommands-aliases
cli: Provide aliases for kata-* subcommands and options
2020-10-27 09:58:05 +00:00
Tim Zhang
d1987f392d Merge pull request #1018 from c3d/bug/1017-missing-makefile-variable
runtime: Restore QEMUVIRTIOFSPATH variable in Makefile
2020-10-27 11:33:05 +08:00
LiYa'nan
e3eff0eb15 agent: Update build instructions
Fix the instructions explaining how to build the agent from source now that make needs to be run to auto-generate some source files.

Fixes: #889.

Signed-off-by: LiYa'nan <oliverliyn@gmail.com>
2020-10-27 01:19:21 +00:00
Peng Tao
f77937de35 Merge pull request #1025 from wainersm/static_build_qemu_patches
Use apply_patches.sh in qemu and kernel scripts
2020-10-26 18:23:41 +08:00
Bin Liu
43770b28da Merge pull request #1029 from bergwolf/agent-proto
clean up agent proto files
2020-10-26 17:06:18 +08:00
Peng Tao
0896ce80a4 agent: update proto file copyright
Now that it is Ant Group...

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-26 16:03:47 +08:00
Peng Tao
6e9ca45732 agent: generate proto files properly
Need to generate all protos.

Depends-on: github.com/kata-containers/tests#3006
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-25 11:27:00 +08:00
Peng Tao
837343f08a agent-ctl: update cargo.lock
Just compiling would show that the cargo.lock file is not updated.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-25 10:58:27 +08:00
Peng Tao
b316661818 runtime: remove the unused proto files
These are moved to the agent and no longer needed.

Fixes: #1028
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-25 10:57:38 +08:00
Peng Tao
54e23c8302 agent: move gogo.proto out of the github.com namespance
To follow the same namespace scope as other proto files.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-25 10:44:53 +08:00
Peng Tao
583e6ed3e5 agent: types.pb.go is not regenerated
When types.proto was relocated, types.pb.go is not regenerated and still
references the old location.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-25 10:35:35 +08:00
Peng Tao
74a155c65b Merge pull request #1023 from lifupan/fix_stdio
agent: fixes the permissions of PID 1's STDIO
2020-10-25 10:21:11 +08:00
Daniel Knittl-Frank
bb19fcb936 docs: Update documentation with new subcommand forms
Remove the old subcommands from the documentation and replace them with
the new form (without the redundant `kata-` prefix).

Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com>
2020-10-24 15:28:54 +02:00
Daniel Knittl-Frank
d2fe709174 cli: Use new subcommand forms in kata-manager script
Update the `kata-manager` script to call the new subcommand forms
without `kata-` prefix.

Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com>
2020-10-24 15:27:32 +02:00
Daniel Knittl-Frank
4d9ab0cd21 cli: Support new subcommand forms in bash completion
Support new `check` and `env` subcommands in bash completion.

Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com>
2020-10-24 15:27:32 +02:00
Daniel Knittl-Frank
c5d355e1ff cli: Remove kata- prefix from env and check subcommands
Provide the subcommands `kata-env` and `kata-check` as `env` and `check`
respectively.

Fixes #1011

Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com>

fixup! cli: Add aliases to kata-env and kata-check commands
2020-10-24 15:25:17 +02:00
Peng Tao
063e8bd801 Merge pull request #1010 from liubin/feature/1004-add-version-for-kata-monitor
Feature/1004 add version for kata monitor
2020-10-24 11:13:22 +08:00
Peng Tao
fba181088b Merge pull request #1021 from Tim-Zhang/autogen-proto
agent: Generate proto files programmatically
2020-10-24 11:12:24 +08:00
LiYa'nan
f134b4a301 agent: Update build instructions
Fix the instructions explaining how to build the agent from source now that make needs to be run to auto-generate some source files.

Fixes: #889

Signed-off-by: LiYa'nan <oliverliyn@gmail.com>
2020-10-24 03:06:41 +00:00
Archana Shinde
e833e3ba39 Merge pull request #1002 from jodh-intel/2.0-dev-unbreak-fc-config
runtime: Fix firecracker config
2020-10-23 13:34:27 -07:00
Tim Zhang
9e9988df29 agent/protocols: Move agent.proto out of the mock folder of agent
Because the repos have been merged and the agent repo will be removed in the future,
we do not need mock the file structure any more.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-23 15:19:35 +08:00
fupan.lfp
e90aa7b417 agent: fixes the permissions of PID 1's STDIO
Fix the permissions of PID 1's STDIO within the container to
the specified user.

The ownership needs to match because it is created outside of the
container and needs to be localized.

Fixes: #1022

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-10-23 11:06:53 +08:00
Archana Shinde
f92a4c288d Merge pull request #913 from YchauWang/update-docs-2.0-4
docs: remove the 1.x version description about shim and proxy
2020-10-22 16:52:06 -07:00
Archana Shinde
5f0b83cc54 Merge pull request #1000 from jongwu/pci
arm64: correct bridge type for QEMUVIRT
2020-10-22 13:53:27 -07:00
Wainer dos Santos Moschetta
b9b281e76d packaging: Use apply-patches.sh in build-kernel.sh
Calls apply-patches.sh in kernel/build-kernel.sh to apply the
kernel patches.

Fixes #1014

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-10-22 13:45:14 -04:00
Wainer dos Santos Moschetta
163e61045a packaging: Make qemu/apply_patches.sh common
Moved the qemu/apply_patches.sh to the common scripts directory and
refactor it so that it can be used as a generic and consistent way
to apply patches.

Fixes #1014

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-10-22 13:43:44 -04:00
Wainer dos Santos Moschetta
d4cf3057a9 packaging: qemu/apply_patches.sh should sort the patches
Changed apply_patches.sh script so that patches are sorted before
they be applied.

Fixes #1014

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-10-22 13:41:15 -04:00
bin liu
5b065eb599 runtime: change govmm package
Change govmm package name from github.com/intel/govmm
to github.com/kata-containers/govmm

Fixes: #859

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-22 21:27:49 +08:00
Tim Zhang
9cb4150777 agent/protocols: Fix copyright header checking
Caused by: bb718ba1dd

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-22 16:17:24 +08:00
Tim Zhang
0d58d91959 agent/protocols: Stop generate agent proto files in the shellscript
Because the job has been done by build.rs.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-22 16:12:21 +08:00
Tim Zhang
7559382b15 agent/protocols: Ignore generated files and remove these files from repo
Files generated by build.rs does not need to be stored in repo.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-22 16:12:21 +08:00
Tim Zhang
fdc33fb7bf agent/protocols: Generate proto files programmatically
Build proto with build.rs

Fixes: #1019

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-22 16:12:15 +08:00
Peng Tao
710a4f3b76 Merge pull request #1007 from devimc/2020-10-20/ghactions/snap-release
snap: add GH actions jobs to release the snap package
2020-10-22 11:52:21 +08:00
bin liu
f1c3bf6b58 runtime: let kata-collect-data.sh collect kata-monitor info
Collect kata-monitor version in kata-collect-data.sh

Fixes: #1004

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-22 10:32:55 +08:00
bin liu
993a8da3aa kata-monitor: add version subcommand
This add a subcommand/options for `kata-monitor` command.

Fixes: #1004

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-22 10:32:47 +08:00
Fupan Li
074b5332aa Merge pull request #977 from liubin/fix/951-clear-clippy-warnings
agent: clear clippy warnings
2020-10-22 09:36:45 +08:00
Christophe de Dinechin
4ee78120e6 runtime: Restore QEMUVIRTIOFSPATH variable in Makefile
Due to a bad edit / fixup in commit be6ee2550d, the variable
QEMUVIRTIOFSPATH was incorrectly removed from the makefile.

This problem was found by the 1.x CI checks, see
https://github.com/kata-containers/runtime/pull/3005#issuecomment-712887125

Fixes: #1017

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-21 14:35:37 +02:00
bin liu
df4ce9fab7 ci: add cargo clippy for agent
To run `cargo clippy`, this commit includes changes:

- add a new Makefile target to run `cargo clippy`
- move `make`/`make check` to last step to let a fast retrun if `fmt`/`clippy` failed

Fixes: #951

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-21 15:14:17 +08:00
bin liu
2e13878880 agent: clear match_like_matches_macro/vec_resize_to_zero warnings
This commit fix these warnings for Rust v1.47.0:

- match_like_matches_macro
- vec_resize_to_zero

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-21 15:13:25 +08:00
bin liu
227edfdc9f agent: clear module_inception/type_complexity warnings
To clear these two warnings, this commit did changes:

- add `#![allow(clippy::module_inception)]` to target files
- use type alias for tuple of `(MessageHeader, Vec<u8>)`

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-21 15:03:16 +08:00
bin liu
698d25b7ee agent: clear redundant_field_names clippy warning
add `#![allow(clippy::redundant_field_names)]` can skip check
`protocols` package, and fix redundant_field_names in other
packages.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-21 15:03:16 +08:00
bin liu
4dd9bd7aba agent: clear clippy len_zero warnings
Use `.is_empty()` instead of `.len() == 0`, `.len() >0`
and `.len() != 0`

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-21 15:03:16 +08:00
bin liu
bf7dec5c4f agent: clear clippy warnings
This commit clears clippy warings for agent package.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-21 15:03:16 +08:00
bin liu
56f867ee74 rustjail: clear clippy warnings
This commit clears clippy warings for rustjail package.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-21 14:54:51 +08:00
bin liu
16757ad490 oci: clear clippy warnings
This commit clears clippy warings for oci package.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-21 14:54:51 +08:00
bin liu
f32f49bdb7 logging: clear clippy warnings
This commit contains two changes:

- clear clippy warnigns
- add pkg/logging/Cargo.lock to .gitignore

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-21 14:54:51 +08:00
Fupan Li
8c3228c286 Merge pull request #976 from Tim-Zhang/simplify-ttrpc-error
agent: simplify ttrpc error construction
2020-10-21 10:31:40 +08:00
Julio Montes
5b079a3ba7 snap: add GH actions jobs to release the snap package
Use Github actions to build and release the snap package automatically
when a new tag is pushed.

fixes #1006

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-20 14:34:59 -05:00
Peng Tao
d80e479ca2 Merge pull request #994 from c3d/bug/993-RUNTIME_NAME
Replace @RUNTIME_NAME@ with the target in generated files
2020-10-20 17:40:45 +08:00
James O. D. Hunt
2738b18b38 runtime: Fix firecracker config
The build was setting a `FCVALIDPATHS` variable for firecracker, but
that was never being used. Conversely, the firecracker configuration
template was expecting a `FCVALIDHYPERVISORPATHS`, but that variable was
never being set.

Resolve by only setting the `FCVALIDHYPERVISORPATHS` variable to ensure
the generated firecracker config is valid once again.

Fixes: #1001.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-20 09:25:31 +01:00
James O. D. Hunt
e5d4259ab4 runtime: Simplify make variables for clh
Simplify definition of the `CLHVALIDHYPERVISORPATHS` build variable to
use the already defined `CLHPATH`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-20 09:14:09 +01:00
Jianyong Wu
9eab301526 arm64: correct bridge type for QEMUVIRT
port forward PR https://github.com/kata-containers/runtime/pull/3017

Fixes: #3016
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-10-20 14:09:03 +08:00
Archana Shinde
b25645d7ae Merge pull request #997 from amshinde/2.0-update-doc
2.0 update doc for hypervisor related information
2020-10-19 16:26:33 -07:00
Archana Shinde
b88aac049d docs: Update how-to Readme with hypervisor information.
While we have setup guides for firecracker and ACRN, as these
need additional configuration, it may confuse users looking
at this guide to find mentions of just these 2 hypervisors.
Call out all the hypervisors supported with Kata here.

Fixes #996

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-10-19 14:03:57 -07:00
Archana Shinde
d64641174e docs: Update Readme to remove hypervisor information
The repo https://github.com/kata-containers/qemu has been
archived. We should remove this, as this is not the only
hypervisor we support now.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-10-19 14:03:57 -07:00
Archana Shinde
b4f9fb513e docs: Remove docs for nemu
This hypervisor is no longer supported with Kata.
Remove related docs.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-10-19 13:35:33 -07:00
Christophe de Dinechin
96a4ed7d70 Makefile: Replace @RUNTIME_NAME@ with the target in generated files
In commit 966bd57 for PR #902, the makefile was changed to automate
the replacement of user variables. However, one variable was treated
specially in the original `sed` replacements, namely `RUNTIME_NAME`
which was replaced by `$(TARGET)`.

This commit adds the `RUNTIME_NAME` variable to the makefile in order
to ensure that the replacement works correctly.

Fixes: #993

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-19 18:13:49 +02:00
Julio Montes
f162e7e960 Merge pull request #948 from justin-he/max_ports
virtcontainers: Append max_ports to virtio-serial device
2020-10-19 08:55:06 -05:00
Tim Zhang
7159fc2eda agent: simplify ttrpc error construction
Fixes: #975

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-19 13:50:30 +08:00
Bin Liu
ed711b5ab1 Merge pull request #983 from bergwolf/snap
snap: install libseccomp-dev
2020-10-17 20:58:27 +08:00
Peng Tao
0f8949868c snap: install libseccomp-dev
To build qemu with virtio-fs support.

Fixes: #982
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-17 17:44:56 +08:00
Xu Wang
80cfd01130 Merge pull request #936 from bergwolf/default-virtiofs
runtime: set virtio-fs as default fs sharing method
2020-10-17 17:28:30 +08:00
Peng Tao
9a351509d2 package: drop qemu-virtiofs shim
We have enabled qemu-virtiofs by default.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-17 11:42:56 +08:00
Peng Tao
5f47f224ff Merge pull request #945 from fidencio/wip/virtiofs-performance-improvements-backport-and-default-settings
VirtioFS: backports & default settings to improve performance
2020-10-17 11:13:22 +08:00
Peng Tao
6ed669a17b packaging: install virtiofsd for normal qemu build as well
For experimental-virtiofs, we use it to test virtiofs with DAX. Let's
rename its virtiofsd to virtiofsd-dax.

Depends-on: github.com/kata-containers/tests#2951
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-17 10:58:27 +08:00
Peng Tao
e5262b1c29 Merge pull request #970 from jodh-intel/2.0-dev-agent-ctl-add-missing-apis
tools: Make agent-ctl support more APIs
2020-10-17 10:12:40 +08:00
Jia He
da79b4be67 virtcontainers: Append max_ports to virtio-serial device
Allow API consumers to change the maximum number of ports in the
virtio-serial devices, setting a lower number of ports can improve the
boot time and reduce the attack surface.

Before this patch on arm64:
[    0.028664] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.055031] printk: console [hvc0] enabled

After this patch on arm64:
[    0.028484] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.031370] printk: console [hvc0] enabled

Fixes: #2676
Signed-off-by: Jia He <justin.he@arm.com>
2020-10-16 23:40:54 +08:00
Peng Tao
bcf4853062 runtime: enable virtiofs by default
We've been shipping it for a long time. It's time to make it default
replacing the old obsolet 9pfs.

Fixes: #935
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-16 15:58:35 +08:00
Peng Tao
0d5d69e8cd Merge pull request #902 from c3d/bug-v2/launchpad-1878234-access
Validate runtime annotations
2020-10-16 15:47:45 +08:00
Peng Tao
e0da3af40b Merge pull request #974 from egernst/kernel-bump
kernel: update to 5.4.71
2020-10-16 15:41:58 +08:00
James O. D. Hunt
e2221d34bf tools: Improve agent-ctl README
Add a summary to help understand how to use the `agent-ctl` tool.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-16 07:43:41 +01:00
Peng Tao
6f46be2f2e Merge pull request #962 from egernst/config-update
config: make virtio-fs part of standard kernel
2020-10-16 10:06:02 +08:00
Fupan Li
cacb27fe4b Merge pull request #942 from Tim-Zhang/optimize-error-handling
agent: Optimize error handling
2020-10-16 09:15:22 +08:00
Eric Ernst
2d1f2c7b95 kernel: update to 5.4.71
vsock fix was backported to 5.4 stable, so we can drop this patch.

Fixes: #973

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-15 16:21:10 -07:00
Salvador Fuentes
18553459d1 Merge pull request #961 from chavafg/topic/update-k8s-1.18
versions: Update Kubernetes, containerd, cri-o and cri-tools
2020-10-15 16:54:21 -05:00
Eric Ernst
d3c9862059 config: make virtio-fs part of standard kernel
Basic virtio-fs support has made it upstream in the Linux kernel, as
well as in QEMU and Cloud Hypervisor. Let's go ahead and add it to the
standard configuration.

Since the device driver / DAX handling is still in progress for
upstream, we will want to still build a seperate experimental kernel for
those who are comfortable trading off bleeding edge stability/kernel
updates for improved FIO numbers.

Fixes: #963

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-15 12:21:41 -07:00
James O. D. Hunt
edf02af1d4 tools: Make agent-ctl support more APIs
Added new `agent-ctl` commands to allow the following agent API calls to
be made:

- `AddARPNeighborsRequest`
- `CloseStdinRequest`
- `CopyFileRequest`
- `GetMetricsRequest`
- `GetOOMEventRequest`
- `MemHotplugByProbeRequest`
- `OnlineCPUMemRequest`
- `ReadStreamRequest`
- `ReseedRandomDevRequest`
- `SetGuestDateTimeRequest`
- `TtyWinResizeRequest`
- `UpdateContainerRequest`
- `WriteStreamRequest`

Fixes: #969.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-15 17:33:25 +01:00
James O. D. Hunt
5620180302 tools: Remove commented out code in agent-ctl
Remove a few lines of commented out code.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-15 17:33:00 +01:00
James O. D. Hunt
9bac4ee651 tools: Log request in agent-ctl tool if debug enabled
Display the API request before making the call so users can see what is
sent to the agent.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-15 17:32:23 +01:00
James O. D. Hunt
68821f0814 tools: Rename agent-ctl command to GetGuestDetails
Rename the `GuestDetails` command to `GetGuestDetails` to match the
actual agent API name.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-15 17:32:20 +01:00
James O. D. Hunt
8553f06298 tools: Fix comment in agent-ctl
Correct a comment in the agent control tool.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-15 16:54:34 +01:00
Julio Montes
238e4562e0 Merge pull request #965 from jodh-intel/2.0-dev-agent-fix-crashers
agent: fix crashers if API requests empty
2020-10-15 09:53:11 -05:00
Peng Tao
6612b0c4bf Merge pull request #953 from liubin/fix/952
rustjail: add length check for uid_mappings in rootless euid mapping
2020-10-15 20:42:09 +08:00
Peng Tao
bcda074e5a Merge pull request #964 from liubin/fix/957-use-regex-to-filter-kata-contaienrs
kata-monitor: use regexp to check if runtime is kata containers
2020-10-15 20:41:54 +08:00
Tim Zhang
6ba294a11e agent: remove unwrap() for e.as_errno()
Use `{:?}` to print `e.as_errno()` instead of using `{}`
to print `e.as_errno().unwrap().desc()`.

Avoid panic only caused by error's content.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 19:46:00 +08:00
Tim Zhang
e77482fe16 agent: Use ? instead of match when the error returns directly
It's more clear and more readable.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 19:45:55 +08:00
bin liu
1b7ed32836 kata-monitor: use regexp to check if runtime is kata containers
To support a few common configurations for Kata, including:

- `io.containerd.kata.v2`
- `io.containerd.kata-qemu.v2`
- `io.containerd.kata-clh.v2`

`kata-monintor` changes to use regexp instead of direct string comparison.

Fixes: #957

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-15 18:42:44 +08:00
Tim Zhang
47ff2fb9a0 agent: use anyhow context to attach context to Error instead of match
Context is clearer than match for these situations.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 18:16:54 +08:00
Tim Zhang
2f690a2bb0 agent: remove useless match
Remove useless match.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 18:16:54 +08:00
James O. D. Hunt
cb6231c1bc Merge pull request #930 from YchauWang/update-docs-2.0-6
docs: update the build kata containers kernel document
2020-10-15 11:15:25 +01:00
Tim Zhang
1d8def6663 agent: Use ok_or_else instead of match for Option -> Result
Using ok_or is clearer than match.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 18:15:14 +08:00
James O. D. Hunt
8495306641 agent: Fix crasher if AddARPNeighbors request empty
Check if the ARP neighbours specified in the `AddARPNeighbors` API is
set before using it to avoid crashing the agent.

Fixes: #955.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-15 11:12:40 +01:00
James O. D. Hunt
3d084c7d23 agent: Fix crasher if UpdateRoutes request empty
Check if the routes specified in the `UpdateRoutes` API is set before
using it to avoid crashing the agent.

Fixes: #949.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-15 11:12:38 +01:00
James O. D. Hunt
5615e5a7fe agent: Fix crasher if UpdateInterface request empty
Check if the interface specified in the `UpdateInterface` API is set
before using it to avoid crashing the agent.

Fixes: #950.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-15 11:12:35 +01:00
Tim Zhang
0dce817ebb agent: replace match Result with or_else
`or_else` is suitable for more complicated situations.
We can use it to return Ok in Err handling.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 17:58:51 +08:00
Tim Zhang
7bf4073d8d agent: replace unnecessary match Result with map_err
Replace `match Result` whose Ok hand is useless.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 17:58:43 +08:00
Tim Zhang
7f9e5913e0 agent: replace check! with map_err for readability
It's ambiguous and not easy to read to call method use macro.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 17:37:33 +08:00
Tim Zhang
09aca49ed7 agent: remove check! in child process because we cant' see logs.
The check macro will log the errors but the log in child process can't
be seen, just ignore it.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 17:33:16 +08:00
Tim Zhang
a18899f1a3 agent: refactor namespace::setup to optimize error handling
- Replace the return value with anyhow::Result.
- Remove if let Err.
- Remove match.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 17:28:20 +08:00
Tim Zhang
a3c64e5ce5 agent: replace if let Err with or_else
Fixes #934

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 17:27:10 +08:00
Tim Zhang
6ffa8283f0 agent: replace if let Err with map_err
Fixes #934

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-10-15 17:26:40 +08:00
bin liu
863f918a2c rustjail: add length check for uid_mappings in rootless euid mapping
This might be a copy miss, gid_mappings is checked twice, one should
be uid_mappings.

Fixes: #952

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-15 16:43:52 +08:00
Salvador Fuentes
720eab78bb versions: Update Kubernetes, containerd, cri-o and cri-tools
Kubernetes: from 1.17.3 to 1.18.9
CRI-O: from 0eec454168e381e460b3d6de07bf50bfd9b0d082 (1.17) to 1.18.3
Containerd: from 3a4acfbc99aa976849f51a8edd4af20ead51d8d7 (1.3.3) to 1.3.7
cri-tools: from 1.17.0 to 1.18.0

Fixes: #960.
Depends-on: github.com/kata-containers/tests#2958

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-10-14 18:02:37 -04:00
Eric Ernst
71be16c401 Merge pull request #933 from egernst/cgroup-updates
cgroup and cpuset fixes from 1.x
2020-10-14 08:41:52 -07:00
Peng Tao
225ed59202 Merge pull request #941 from jodh-intel/2.0-dev-update-upgrading-doc
docs: Update upgrading guide
2020-10-14 23:29:08 +08:00
Eric Ernst
8132417512 Merge pull request #947 from bergwolf/pod-updates
agent: fix panic on malformed device resource in container update
2020-10-14 08:27:10 -07:00
Christophe de Dinechin
c5771be2de annotations: Correct unit tests to validate new protections
Add the verification of some basic protections, namely that:
- EnableAnnotations is honored
- Dangerous paths cannot be modified if no match
- Errors are returned when expected

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
398d79184c annotations: Split addHypervisorOverrides to reduce complexity
Warning from gocyclo during make check:
 virtcontainers/pkg/oci/utils.go:404:1: cyclomatic complexity 37 of func `addHypervisorConfigOverrides` is high (> 30) (gocyclo)
 func addHypervisorConfigOverrides(ocispec specs.Spec, config *vc.SandboxConfig, runtime RuntimeConfig) error {
^

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
b2b3bc7ad8 annotations: Add unit test for checkPathIsInGlobs
There are a few interesting corner cases to consider for this
function.

Fixes: #901

Suggested-by: James O.D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
6f52179ce4 annotations: Add unit test for regexpContains function
James O.D Hunt: "But also, regexpContains() and
checkPathIsInGlobList() seem like good candidates for some unit
tests. The "look" obvious, but a few boundary condition tests would be
useful I think (filenames with spaces, backslashes, special
characters, and relative & absolute paths are also an interesting
thought here)."

There aren't that many boundary conditions on a list with regexps,
if you assume the regexp match function itself works. However, the
tests is useful in documenting expectations.

Fixes: #901

Suggested-by: James O.D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
966bd57344 makefile: Add missing generated vars to USER_VARS
This was discovered while checking a massive change in variables.
The root cause for the error is a very long list of manual
replacements, that is best replaced with a $(foreach).

All individual variables in the output configuration files were
checked against the old build using diff.

This is a forward port of a makefile fix included in
PR https://github.com/kata-containers/runtime/issues/3004
for issue https://github.com/kata-containers/runtime/issues/2943

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
be6ee2550d makefile: Improve names of config entries for annotation checks
The entries used to be things like PATH_LIST, which are too generic.
Replace them with more precise name with a distinguishing keyword,
namely VALID. For example valid_hypervisor_paths.

Fixes: #901

Suggested-by: James O.D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
b119427405 annotations: Give better names to local variabes in search functions
Use more meaningful variable names for clarity.

Fixes: #901

Suggested-by: James O.D. Hunt james.o.hunt@intel.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
b5db114aad annotations: Rename checkPathIsInGlobList with checkPathIsInGlobs
The name is shorter and more specific

Fixes: #901

Suggested-by: James O.D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
d65a7d1083 config: Add better comments in the template files
When there is a default value from the code (usually empty) that
differs from a possible suggested value from the distro, then the
wording "default: empty" is confusing.

Fixes: #901

Suggested-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
7c6aede5d4 config: Whitelist hypervisor annotations by name
Add a field "enable_annotations" to the runtime configuration that can
be used to whitelist annotations using a list of regular expressions,
which are used to match any part of the base annotation name, i.e. the
part after "io.katacontainers.config.hypervisor."

For example, the following configuraiton will match "virtio_fs_daemon",
"initrd" and "jailer_path", but not "path" nor "firmware":

  enable_annotations = [ "virtio.*", "initrd", "_path" ]

The default is an empty list of enabled annotations, which disables
annotations entirely.

If an anontation is rejected, the message is something like:

  annotation io.katacontainers.config.hypervisor.virtio_fs_daemon is not enabled

Fixes: #901

Suggested-by: Peng Tao <tao.peng@linux.alibaba.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
f047fced0b config: Use glob instead of regexp to match paths in annotations
When filtering annotations that correspond to paths,
e.g. hypervisor.path, it is better to use a glob syntax than a regexp
syntax, as it is more usual for paths, and prevents classes of matches
that are undesirable in our case, such as matching .. against .*

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
11b9c90cd8 annotations: Fix typo in comment
A comment talking about runtime related annotations describes them as
being related to the agent. A similar comment for the agent
annotations is missing.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
c16cdcb2a5 config: Add makefile variables for path lists
Add variables to override defaults at build time for the various lists
used to control path annotations.

Fixes: #901

Suggested-by: Fabiano Fidencio <fidencio@redhat.com>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
4e89b885d2 config: Protect file_mem_backend against annotation attacks
This one could theoretically be used to overwrite data on the host.
It seems somewhat less risky than the earlier ones for a number
of reasons, but worth protecting a little anyway.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
aae9656d8b config: Protect vhost_user_store_path against annotation attacks
This path could be used to overwrite data on the host.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
5588165399 config: Add security warning on configuration examples
Add the following text explaining the risk of using regular
expressions in path lists:

Each member of the list can be a regular expression, but prefer names.
Otherwise, please read and understand the following carefully.
SECURITY WARNING: If you use regular expressions, be mindful that
an attacker could craft an annotation that uses .. to escape the paths
you gave. For example, if your regexp is /bin/qemu.* then if there is
a directory named /bin/qemu.d/, then an attacker can pass an annotation
containing /bin/qemu.d/../put-any-binary-name-here and attack your host.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
b21a829c61 config: Protect ctlpath from annotation attack
This also adds annotation for ctlpath which were not present
before. It's better to implement the code consistenly right now to make
sure that we don't end up with a leaky implementation tacked on later.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
27b6620b23 config: Protect jailer_path annotation
The jailer_path annotation can be used to execute arbitrary code on
the host. Add a jailer_path_list configuration entry providing a list
of regular expressions that can be used to filter annotations that
represent valid file names.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
076690179d config: Add examples for path_list configuration
The path_list configuration gives a series of regular expressions that
limit which values are acceptable through annotations in order to
avoid kata launching arbitrary binaries on the host when receiving an
annotation.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
2d431c61c6 annotations: Simplify negative logic
Replace strange negative logic  (!ok -> continue) with positive
logic (ok -> do it)

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
2ca9ca892d config: Add hypervisor path override through annotations
The annotation is provided, so it should be respected.
Furthermore, it is important to implement it with the appropriate
protetions similar to what was done for virtiofsd.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
2e093dfd8b config: Fix typo in function name
There was an extra 'p' in addHypervisorVirtioFsOverrides.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
bf13ff0a3a config: Protect virtio_fs_daemon annotation
Sending the virtio_fs_daemon annotation can be used to execute
arbitrary code on the host. In order to prevent this, restrict the
values of the annotation to a list provided by the configuration
file.

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Christophe de Dinechin
8c75de1966 config: Add 'List' alternates for hypervisor configuration paths
Paths mentioned in the hypervisor configuration can be overriden
using annotations, which is potentially dangerous. For each path,
add a 'List' variant that specifies the list of acceptable values
from annotations.

Bug: https://bugs.launchpad.net/katacontainers.io/+bug/1878234

Fixes: #901

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-14 16:10:12 +02:00
Peng Tao
fc6468efdb agent: fix panic on malformed device resource in container update
Somehow containerd is sending a malformed device in update API. While it
should not happen, we should not panic either.

Fixes: #946
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-14 13:27:23 +08:00
Eric Ernst
d8a8fe47fb cpuset: don't set cpuset.mems in the guest
Kata doesn't map any numa topologies in the guest. Let's make sure we
clear the Cpuset fields before passing container updates to the
guest.

Note, in the future we may want to have a vCPU to guest CPU mapping and
still include the cpuset.Cpus. Until we have this support, clear this as
well.

Fixes: #932

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-13 15:54:03 -07:00
Eric Ernst
88cd712876 sandbox: consider cpusets if quota is not enforced
CPUSet cgroup allows for pinning the memory associated with a cpuset to
a given numa node. Similar to cpuset.cpus, we should take cpuset.mems
into account for the sandbox-cgroup that Kata creates.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-13 15:54:03 -07:00
Eric Ernst
77a463e57a cpuset: support setting mems for sandbox
CPUSet cgroup allows for pinning the memory associated with a cpuset to
a given numa node. Similar to cpuset.cpus, we should take cpuset.mems
into account for the sandbox-cgroup that Kata creates.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-13 15:54:03 -07:00
Eric Ernst
2d690536b8 cpuset: add cpuset pkg
Pulled from 1.18.4 Kubernetes, adding the cpuset pkg for managing
CPUSet calculations on the host. Go mod'ing the original code from
k8s.io/kubernetes was very painful, and this is very static, so let's
just pull in what we need.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-13 15:54:03 -07:00
Fabiano Fidêncio
1a9515a998 runtime: Pass --thread-pool-size=1 to virtiofsd
Dave Gilbert brough up that passing --thread-pool-size=1 to virtiofsd
may result in a performance improvement especially when using
`cache=none`. While our current default is `cache=auto`, Dave mentioned
that he seems no harm in having it set and he also mentiond that it may
use a lot less stack space on aarch/arm.

Fixes: #943

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-10-13 22:33:08 +02:00
Fabiano Fidêncio
1c528cd1cf packaging: Apply virtiofs performance related fixes to 5.x
Vivek Goyal found out that using "shared" thread pool, instead of
"exclusive" results in better performance.

Knowning that and with the plan to have virtio-fs as the default fs for
the 2.0, let's bring this patch in for both 5.0 and 5.1.

Fixes: #944

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-10-13 19:06:13 +02:00
James O. D. Hunt
5b5200037a docs: Update upgrading guide
Update the upgrading guide for 2.0.

Fixes: #928.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-13 14:00:13 +01:00
Fupan Li
25cdf2d728 Merge pull request #931 from dgibson/bug703
Forward port device conflict fixes from Kata 1 / Go agent
2020-10-13 15:59:17 +08:00
Ychau Wang
0e0564a55d docs: update the build kata containers kernel document
Update the build kata containers kernel document for 2.0 release. Fixed
the 1.x release project paths and urls, using the kata-containers
project file paths and urls.

Fixes: #929

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-10-13 15:12:53 +08:00
David Gibson
ae6b8ec747 agent/device: Check type as well as major:minor when looking up devices
To update device resource entries from host to guest, we search for
the right entry by host major:minor numbers, then later update it.
However block and character devices exist in separate major:minor
namespaces so we could have one block and one character device with
matching major:minor and thus incorrectly update both with the details
for whichever device is processed second.

Add a check on device type to prevent this.

Port from the Kata 1 Go agent
https://github.com/kata-containers/agent/commit/27ebdc9d2761

Fixes: #703

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-10-13 16:26:52 +11:00
David Gibson
859301b009 agent/device: Index all devices in spec before updating them
The agent needs to update device entries in the OCI spec so that it
has the correct major:minor numbers for the guest, which may differ
from the host.

Entries in the main device list are looked up by device path, but
entries in the device resources list are looked up by (host)
major:minor.  This is done one device at a time, updating as we go in
update_spec_device_list().

But since the host and guest have different namespaces, one device
might have the same major:minor as a different device on the host.  In
that case we could update one resource entry to the correct guest
values, then mistakenly update it again because it now matches a
different host device.

To avoid this, rather than looking up and updating one by one, we make
all the lookups in advance, creating a map from (host) device path to
the indices in the spec where the device and resource entries can be
found.

Port from the Go agent in Kata 1,
https://github.com/kata-containers/agent/commit/d88d46849130

Fixes: #703

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-10-13 16:26:26 +11:00
David Gibson
2477c355bc agent/device: Forward port update_spec_device_list() unit test
The Kata 1 Go agent included a unit test for updateSpecDeviceList, but no
such unit test exists for the Rust agent's equivalent
update_spec_device_list().  Port the Kata1 test to Rust.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-10-13 16:25:58 +11:00
David Gibson
08d80c1aaa agent/device: update_spec_device_list() should error if dev not found
If update_spec_device_list() is given a device that can't be found in the
OCI spec, it currently does nothing, and returns Ok(()).  That doesn't
seem like what we'd expect and is not what the Go agent in Kata 1 does.

Change it to return an error in that case, like Kata 1.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-10-13 16:25:36 +11:00
Eric Ernst
12cc0ee168 sandbox: don't constrain cpus, mem only cpuset, devices
Allow for constraining the cpuset as well as the devices-whitelist . Revert
sandbox constraints for cpu/memory, as they break the K8S use case. Can
re-add behind a non-default flag in the future.

The sandbox CPUSet should be updated every time a container is created,
updated, or removed.

To facilitate this without rewriting the 'non constrained cgroup'
handling, let's add to the Sandbox's cgroupsUpdate function.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-12 21:31:27 -07:00
Eric Ernst
b6cf68a985 cgroups: add ability to update CPUSet
Add function for applying a cpuset change to a cgroup

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-12 21:31:27 -07:00
Eric Ernst
b812d4f7fa virtcontainers: add method for calculating cpuset for sandbox
Calculate sandbox's CPUSet as the union of each of the container's
CPUSets.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-12 21:31:27 -07:00
Peng Tao
c88820454d Merge pull request #739 from jodh-intel/2.0-dev-containerd-install-docs
docs: Add containerd install guide
2020-10-13 11:48:56 +08:00
Peng Tao
16a6427ca9 Merge pull request #923 from liubin/fix/simplify-codes
agent: simplify codes
2020-10-13 09:54:46 +08:00
Eric Ernst
2e72972cd7 Merge pull request #910 from egernst/fix-parsing
agent: fix errorneous parsing for guest block size
2020-10-12 12:40:02 -07:00
Eric Ernst
f63f740545 agent: fix errorneous parsing for guest block size
We were assuming base 10 string before, when the block size from sysfs
is actually a hex string. Let's fix that.

Fixes: #908

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-12 11:18:39 -07:00
James O. D. Hunt
43d70a32df docs: Add containerd install guide
Create a containerd installation guide and a new `kata-manager` script
for 2.0 that automated the steps outlined in the guide.

Also cleaned up and improved the installation documentation in various
ways, the most significant being:

- Added legacy install link for 1.x installs.
- Official packages section:
  - Removed "Contact" column (since it was empty!)
  - Reworded "Versions" column to clarify the versions are a minimum
    (to reduce maintenance burden).
  - Add a column to show which installation methods receive automatic updates.
  - Modified order of installation options in table and document to
    de-emphasise automatic installation and promote official packages
    and snap more.
- Removed sections no longer relevant for 2.0.

Fixes: #738.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-12 17:54:53 +01:00
Fupan Li
27634982f7 Merge pull request #915 from liubin/fix/914-use-macro-to-simplify-codes
agent: use macro to simplify parse_cmdline function in config.rs
2020-10-12 22:23:30 +08:00
bin liu
11c1ab8bca agent: use ok_or/map_err instead of match
Sometimes `Option.or_or` and `Result.map_err` may be simpler
than match statement. Especially in rpc.rs, there are
many `ctr.get_process` and `sandbox.get_container` which
are using `match`.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-12 16:59:02 +08:00
bin liu
6b9f99156e rustjail: use Iterator to manipulate vector elements
Use Iterator can save codes, and make code more readable

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-12 14:26:33 +08:00
Ychau Wang
a7251651f8 docs: remove the 1.x version description about shim and proxy
Remove the build in shim and proxy desgin description from the
kata-api-design.md file.

Fixes: #912

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-10-12 14:11:18 +08:00
bin liu
dc1442c33a rustjail: delete codes commented out
There are some uses/codes/struct fields are commented out, and
may not turn into  un-comment these codes, so delete these comments.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-12 12:29:23 +08:00
bin liu
aa04111d9f rustjail: delete unused test code
The auto generated test code is no meanings, delete it.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-12 10:23:22 +08:00
Fupan Li
7470055cdc Merge pull request #898 from bergwolf/arm-musl
fix arm CI
2020-10-12 10:03:45 +08:00
Bin Liu
490f030e2a Merge pull request #917 from bergwolf/fix-cloud_hypervisor_repo
packaging: fix missing cloud_hypervisor_repo
2020-10-12 09:50:30 +08:00
Peng Tao
4f3206ac7e Merge pull request #888 from liubin/881-add-crictl-examples
docs: Add crictl example json files
2020-10-11 12:07:18 +08:00
bin liu
eae685dc53 agent: use chain of Result to avoid early return
Use rust `Result`'s `or_else`/`and_then` can write clean codes.
And can avoid early return by check wether the `Result`
is `Ok` or `Err`.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-10 22:22:54 +08:00
bin liu
5e3d1fb60b agent: add blank lines between methods
In rpc.rs, there are no blank lines between methods, this commit
add blank lines for these methods.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-10 12:37:34 +00:00
bin liu
980e48ca94 agent: delete unused field in agentService
The code is for test, and not needed now.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-10 12:23:44 +00:00
bin liu
52b821fa5f agent: use no-named closure to reduce codes
For simple closures, inline closures can save codes.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-10 20:10:16 +08:00
Peng Tao
82e9450124 packaging: fix cloud-hypervisor binary path
1. ensure build-static-clh.sh puts cloud-hypervisor under ./cloud-hypervisor directory
2. install cloud-hypervisor/cloud-hypervisor binary

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-10 20:10:03 +08:00
bin liu
b1f95e8d27 agent: use a local fn to reduce duplicated codes
The same codes used twices, aggregated into a function can
reduce codes.

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-10 19:55:05 +08:00
Peng Tao
154a356ad4 packaging: apply qemu v5.1 stable fixes
Qemu v5.1 was released with an affending commit 9b3a35ec82
(virtio: verify that legacy support is not accidentally on).
As a result, it breaks commandline compatiblilities for old qemu
users. Upstream qemu has fixed it but no release has been put out yet.
Let's apply these fixes by hand for now.

Refs: https://www.mail-archive.com/qemu-devel@nongnu.org/msg729556.html

Depends-on: github.com/kata-containers/tests#2945
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-10 18:29:23 +08:00
Jianyong Wu
c781a80820 agent: fix aarch64 build
aarch64 needs libgcc to resolve some non-builtin symbols.

Fixes: #909
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-10 18:29:23 +08:00
bin liu
906b38441c agent: update not accurate comments
This commit includes:
- update comments that not matched the function name
- file path with doubled slash

Fixes: #922

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-10 17:57:13 +08:00
Peng Tao
78318c18f3 packaging: fix missing cloud_hypervisor_repo
It is needed in order to build from source.

Fixes: #916
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-10 15:47:41 +08:00
bin liu
b7309943af agent: use macro to simplify parse_cmdline function in config.rs
In function parse_cmdline there are some similar codes, if we want
to add more commandline arguments, the code will grow too long.
Use macro can reduce some codes with the same logic/processing.

Fixes: #914

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-10 15:20:47 +08:00
bin liu
9834a766aa docs: add namespace key to pod/container config files
If no namespace field in config files, CRI-O will failed:
 setting pod sandbox name and id: cannot generate pod name without namespace

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-10 10:02:08 +08:00
Julio Montes
291257c0df Merge pull request #897 from devimc/2020-10-09/snapCI
ci: snap: add event filtering
2020-10-09 15:28:57 -05:00
Julio Montes
37e7de72a5 ci: snap: add event filtering
Run the snap CI on every PR is not needed. Don't run the snap CI
on PRs that don't change the source code (*.go/*.rs), a configuration
file or Makefile.

fixes #896

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-09 09:48:28 -05:00
Julio Montes
4f0fe8473b Merge pull request #886 from bergwolf/CVE-2019-19921
agent: do not follow link when mounting container proc and sysfs
2020-10-09 09:47:30 -05:00
bin liu
9a02e6eb88 docs: Add crictl example json files
Add basic sample pod/container config files to show
how to use `crictl` with Kata containers.

Fixes: #881

Signed-off-by: bin liu <bin@hyper.sh>
2020-10-09 21:03:22 +08:00
Bin Liu
fd7d0ef999 Merge pull request #884 from bergwolf/cargo-lock
agent-ctl: include cargo lock updates
2020-10-09 20:23:19 +08:00
Fupan Li
3a659a6733 Merge pull request #891 from bergwolf/CVE-2016-9962
agent: set init process non-dumpable
2020-10-09 19:03:24 +08:00
Peng Tao
b7147edadb agent: do not follow link when mounting container proc and sysfs
Attackers might use it to explore other containers in the same pod.
While it is still safe to allow it, we can just close the race window
like runc does.

Fixes: #885
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-09 18:54:26 +08:00
Bin Liu
43da14e7b3 Merge pull request #752 from YchauWang/clear-moke-code01
runtime: Clear the VCMock 1.x API Methods from 2.0
2020-10-09 17:41:21 +08:00
Peng Tao
15b7156348 agent: set init process non-dumpable
On old kernels (like v4.9), kernel applies CLOECEC in wrong order w.r.t.
dumpable task flags. As a result, we might leak guest file descriptor to
containers. This is a former runc CVE-2016-9962 and still applies to
kata agent. Although Kata container is still valid at protecting the
host, we should not leak extra resources to user containers.

This sets the init processes that join and setup the container's
namespaces as non-dumpable before they setns to the container's pid (or
any other ) namespace.

This settings is automatically reset to the default after the Exec in
the container so that it does not change functionality for the
applications that are running inside, just our init processes.

This prevents parent processes, the pid 1 of the container, to ptrace
the init process before it drops caps and other sets LSMs.

The order during the exec syscall is that the process is set back to
dumpable before O_CLOEXEC are processed.

Refs:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=613cc2b6f272c1a8ad33aefa21cad77af23139f7
https://github.com/torvalds/linux/blob/v4.9/fs/exec.c#L1290-L1318
opencontainers/runc@50a19c6
https://nvd.nist.gov/vuln/detail/CVE-2016-9962

Fixes: #890
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-09 17:12:06 +08:00
Peng Tao
3f8e619c2f Merge pull request #876 from jcvenegas/dax-off
virtiofs: Disable DAX
2020-10-09 13:39:42 +08:00
Peng Tao
83d80872cc Merge pull request #546 from amshinde/2.0-agent-debug
docs: Update docs for enabling agent debug console
2020-10-09 10:54:54 +08:00
Peng Tao
00ad3fd308 agent-ctl: include cargo lock updates
Simply running `make` would generate some cargo lock updates for
agent-ctl. Let's include them so that we have fixed dependencies.

Fixes: #883
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-09 10:50:45 +08:00
Peng Tao
367e436ff8 Merge pull request #795 from c3d/bug/750-warnings
Remove compilation warnings
2020-10-09 10:26:08 +08:00
Peng Tao
a82237a810 Merge pull request #874 from rhafer/fix-873
osbuilder: Create target directory for agent
2020-10-09 10:22:55 +08:00
Julio Montes
441026b877 Merge pull request #880 from devimc/2020-10-08/versions/sriov-network-device-plugin
versions: add plugins section
2020-10-08 14:47:10 -05:00
Julio Montes
8cd62d7bdd versions: add plugins section
plugins sections contains the details of plugins required for
the components or testing.

Add sriov-network-device-plugin url and version that are consumed
by the VFIO test in the tests repository.

fixes #879

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-08 13:01:01 -05:00
Julio Montes
2712e31c3e Merge pull request #878 from devimc/2020-10-01/snapCI
snap: specify python version
2020-10-08 12:59:19 -05:00
Jose Carlos Venegas Munoz
c4472481bc virtiofs: Disable DAX
virtiofs DAX support is not stable today, there are
a few corner cases to make it default.

Fixes: #862
Fixes: #875

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-10-08 10:59:10 -05:00
Julio Montes
3e56de8101 snap: specify python version
In order to avoid `unmet dependencies` error in the CI,
the python version must be specified in the yaml.

fixes #877

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-08 10:53:20 -05:00
Ralf Haferkamp
e3cdc89b6c osbuilder: Create target directory for agent
When building with AGENT_SOURCE_BIN pointing to an already built
kata-agent binary, the target directory needs to be created in the
rootfs tree.

Fixes #873

Signed-off-by: Ralf Haferkamp <rhafer@suse.com>
2020-10-08 17:07:40 +02:00
Bo Chen
b9205cae1c Merge pull request #870 from egernst/fixup
packaging: fix image build script
2020-10-07 13:25:13 -07:00
Eric Ernst
7cad865d13 packaging: fix image build script
There were a couple of issues with the build-scripts discovered while
doing release:
 - Relative paths are error prone. Fix error.
 - short_commit_length is used to truncate sha for commits when
 appending agent version to resulting files. Before this was
 in pkglib.sh, which is otherwise an unused file from when we
 supported OBS. Add this define to lib.sh, which is sourced by
 the applicable packaging scripts.

There's plenty of room for improvement, but these fixes make the
existing scripts functional again.

Fixes: #871

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-07 09:09:31 -07:00
Christophe de Dinechin
0e898c6bc4 rust-agent: Treat warnings as error
Avoid the accumulation of warnings we had, as reported in #750.

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:30:21 +02:00
Christophe de Dinechin
0e4baaabcc rust-agent: Identify unused results in tests
Assign unused results to _ in order to silence warnings.

This addresses the following warnings:

    warning: unused `std::result::Result` that must be used
        --> rustjail/src/mount.rs:1182:16
         |
    1182 |         defer!(unistd::chdir(&olddir););
         |                ^^^^^^^^^^^^^^^^^^^^^^^
         |
         = note: `#[warn(unused_must_use)]` on by default
         = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
        --> rustjail/src/mount.rs:1183:9
         |
    1183 |         unistd::chdir(tempdir.path());
         |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         |
         = note: this `Result` may be an `Err` variant, which should be handled

While in regular code, we want to log possible errors, in test code
it's OK to simply ignore the returned value.

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:30:13 +02:00
Christophe de Dinechin
5b2b565249 rust-agent: Log returned errors rather than ignore them
In a number of cases, we have functions that return a Result<...>
and where the possible error case is simply ignored. This is a bit
unhealthy.

Add a `check!` macro that allows us to not ignore error values
that we want to log, while not interrupting the flow by returning
them. This is useful for low-level functions such as `signal::kill` or
`unistd::close` where an error is probably significant, but should not
necessarily interrupt the flow of the program (i.e. using `call()?` is
not the right answer.

The check! macro is then used on low-level calls. This addresses the
following warnings from #750:

This addresses the following warning:

    warning: unused `std::result::Result` that must be used
       --> /home/ddd/go/src/github.com/kata-containers-2.0/src/agent/rustjail/src/container.rs:903:17
        |
    903 |                 signal::kill(Pid::from_raw(p.pid), Some(Signal::SIGKILL));
        |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: `#[warn(unused_must_use)]` on by default
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> /home/ddd/go/src/github.com/kata-containers-2.0/src/agent/rustjail/src/container.rs:916:17
        |
    916 |                 signal::kill(Pid::from_raw(child.id() as i32), Some(Signal::SIGKILL));
        |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:340:13
        |
    340 |             write_sync(cwfd, SYNC_FAILED, format!("{:?}", e).as_str());
        |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: `#[warn(unused_must_use)]` on by default
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:554:13
        |
    554 | /             write_sync(
    555 | |                 cwfd,
    556 | |                 SYNC_FAILED,
    557 | |                 format!("setgroups failed: {:?}", e).as_str(),
    558 | |             );
        | |______________^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:340:13
        |
    340 |             write_sync(cwfd, SYNC_FAILED, format!("{:?}", e).as_str());
        |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:340:13
        |
    340 |             write_sync(cwfd, SYNC_FAILED, format!("{:?}", e).as_str());
        |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: `#[warn(unused_must_use)]` on by default
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:554:13
        |
    554 | /             write_sync(
    555 | |                 cwfd,
    556 | |                 SYNC_FAILED,
    557 | |                 format!("setgroups failed: {:?}", e).as_str(),
    558 | |             );
        | |______________^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:626:5
        |
    626 |     unistd::close(cfd_log);
        |     ^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: `#[warn(unused_must_use)]` on by default
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:627:5
        |
    627 |     unistd::close(crfd);
        |     ^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:628:5
        |
    628 |     unistd::close(cwfd);
        |     ^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:770:9
        |
    770 |         fcntl::fcntl(pfd_log, FcntlArg::F_SETFD(FdFlag::FD_CLOEXEC));
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: `#[warn(unused_must_use)]` on by default
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:799:9
        |
    799 |         fcntl::fcntl(prfd, FcntlArg::F_SETFD(FdFlag::FD_CLOEXEC));
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:800:9
        |
    800 |         fcntl::fcntl(pwfd, FcntlArg::F_SETFD(FdFlag::FD_CLOEXEC));
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:803:13
        |
    803 |             unistd::close(prfd);
        |             ^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:930:9
        |
    930 |         log_handler.join();
        |         ^^^^^^^^^^^^^^^^^^^
        |
        = note: `#[warn(unused_must_use)]` on by default
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:803:13
        |
    803 |             unistd::close(prfd);
        |             ^^^^^^^^^^^^^^^^^^^^
        |
        = note: `#[warn(unused_must_use)]` on by default
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:804:13
        |
    804 |             unistd::close(pwfd);
        |             ^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:842:13
        |
    842 |             sched::setns(old_pid_ns, CloneFlags::CLONE_NEWPID);
        |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/container.rs:843:13
        |
    843 |             unistd::close(old_pid_ns);
        |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

Fixes: #844
Fixes: #750

Suggested-by: Tim Zhang <tim@hyper.sh>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:29:46 +02:00
Christophe de Dinechin
d617caf1b5 rust-agent: Remove unused imports
This addresses the following warnings (and similar ones)::

    Compiling rustjail v0.1.0 (/home/ddd/go/src/github.com/kata-containers-2.0/src/agent/rustjail)
    warning: unused import: `debug`
      --> rustjail/src/container.rs:57:12
       |
    57 | use slog::{debug, info, o, Logger};
       |            ^^^^^

    warning: unused imports: `AddressFamily`, `SockFlag`, `SockType`, `self`
      --> rustjail/src/process.rs:18:24
       |
    18 | use nix::sys::socket::{self, AddressFamily, SockFlag, SockType};
       |                        ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^

    warning: unused import: `nix::Error`
      --> rustjail/src/process.rs:23:5
       |
    23 | use nix::Error;
       |     ^^^^^^^^^^

    warning: unused import: `protobuf::RepeatedField`
      --> rustjail/src/validator.rs:11:5
       |
    11 | use protobuf::RepeatedField;
       |     ^^^^^^^^^^^^^^^^^^^^^^^

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:29:46 +02:00
Christophe de Dinechin
ee739c5d59 rust-agent: Report errors to caller if possible
Various recently added error-causing calls

This addresses the following warning:

    warning: unused `std::result::Result` that must be used
      --> rustjail/src/cgroups/fs/mod.rs:93:9
       |
    93 |         cg.add_task(CgroupPid::from(pid as u64));
       |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       |
       = note: `#[warn(unused_must_use)]` on by default
       = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/cgroups/fs/mod.rs:196:17
        |
    196 |                 freezer_controller.thaw();
        |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/cgroups/fs/mod.rs:199:17
        |
    199 |                 freezer_controller.freeze();
        |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/cgroups/fs/mod.rs:365:9
        |
    365 |         cpuset_controller.set_cpus(&cpu.cpus);
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/cgroups/fs/mod.rs:369:9
        |
    369 |         cpuset_controller.set_mems(&cpu.mems);
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/cgroups/fs/mod.rs:381:13
        |
    381 |             cpu_controller.set_shares(shares);
        |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/cgroups/fs/mod.rs:385:5
        |
    385 |     cpu_controller.set_cfs_quota_and_period(cpu.quota, cpu.period);
        |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: this `Result` may be an `Err` variant, which should be handled

    warning: unused `std::result::Result` that must be used
        --> rustjail/src/cgroups/fs/mod.rs:1061:13
         |
    1061 |             cpuset_controller.set_cpus(cpuset_cpus);
         |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         |
         = note: this `Result` may be an `Err` variant, which should be handled

The specific case of cpu_controller.set_cfs_quota_and_period is
addressed in a way that changes the logic following a suggestion by
Liu Bin, who had just added the code.

Fixes: #750

Suggested-by: Liu Bin <bin@hyper.sh>
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:29:46 +02:00
Christophe de Dinechin
d5b492a1e7 rust-agent: Ignore write errors while writing to the logs
When we are writing to the logs and there is an error doing so, there
is not much we can do. Chances are that a panic would make things
worse. So let it go through.

    warning: unused `std::result::Result` that must be used
       --> rustjail/src/sync.rs:26:9
        |
    26  |         write_count(lfd, log_str.as_bytes(), log_str.len());
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
       ::: rustjail/src/container.rs:339:13
        |
    339 |             log_child!(cfd_log, "child exit: {:?}", e);
        |             ------------------------------------------- in this macro invocation
        |
        = note: this `Result` may be an `Err` variant, which should be handled
        = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:29:46 +02:00
Christophe de Dinechin
c635c46a4b rust-agent: Remove unused code that has undefined behavior
Some functions have undefined behavior and are not actually used.

This addresses the following warning:
    warning: the type `oci::User` does not permit zero-initialization
      --> rustjail/src/lib.rs:99:18
       |
    99 |         unsafe { MaybeUninit::zeroed().assume_init() }
       |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       |                  |
       |                  this code causes undefined behavior when executed
       |                  help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
       |
       = note: `#[warn(invalid_value)]` on by default
    note: `std::ptr::Unique<u32>` must be non-null (in this struct field)

    warning: the type `protocols::oci::Process` does not permit zero-initialization
       --> rustjail/src/lib.rs:146:14
        |
    146 |     unsafe { MaybeUninit::zeroed().assume_init() }
        |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |              |
        |              this code causes undefined behavior when executed
        |              help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
        |
    note: `std::ptr::Unique<std::string::String>` must be non-null (in this struct field)

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:29:46 +02:00
Christophe de Dinechin
ec24f688ed rust-agent: Remove 'mut' where not needed
Addresses the following warning (and a few similar ones):
    warning: variable does not need to be mutable
       --> rustjail/src/container.rs:369:9
        |
    369 |     let mut oci_process: oci::Process = serde_json::from_str(process_str)?;
        |         ----^^^^^^^^^^^
        |         |
        |         help: remove this `mut`
        |
        = note: `#[warn(unused_mut)]` on by default

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:29:46 +02:00
Christophe de Dinechin
c8f406d4c4 rust-agent: Remove uses of deprecated functions
This addresses the following:

    warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string()
        --> rustjail/src/container.rs:1598:31
         |
    1598 | ...                   e.description(),
         |                         ^^^^^^^^^^^
         |
         = note: `#[warn(deprecated)]` on by default

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:29:46 +02:00
Christophe de Dinechin
f832d8a651 rust-agent: Remove or rename unused parameters
Parameters that are never used were removed.
Parameters that are unused, but necessary because of some common
interface were renamed with a _ prefix.
In one case, consume the parameter by adding an info! call, and fix a
minor typo in a message in the same function.

This addresses the following warning:

    warning: unused variable: `child`
        --> rustjail/src/container.rs:1128:5
         |
    1128 |     child: &mut Child,
         |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_child`

    warning: unused variable: `logger`
        --> rustjail/src/container.rs:1049:22
         |
    1049 | fn update_namespaces(logger: &Logger, spec: &mut Spec, init_pid: RawFd) -> Result<()> {
         |                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:29:46 +02:00
Christophe de Dinechin
5a1d331135 rust-agent: Remove or rename unused variables
Remove variables that are simply not used.
Rename as _ variables where only initialization matters.

This addresses the following warnings:

    warning: unused variable: `writer`
       --> src/main.rs:130:9
        |
    130 |     let writer = unsafe { File::from_raw_fd(wfd) };
        |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_writer`
        |
        = note: `#[warn(unused_variables)]` on by default

    warning: unused variable: `ctx`
       --> src/rpc.rs:782:9
        |
    782 |         ctx: &ttrpc::TtrpcContext,
        |         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`

    warning: unused variable: `ctx`
       --> src/rpc.rs:808:9
        |
    808 |         ctx: &ttrpc::TtrpcContext,
        |         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`

    warning: unused variable: `dns_list`
        --> src/rpc.rs:1152:16
         |
    1152 |             Ok(dns_list) => {
         |                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dns_list`

    warning: value assigned to `child_stdin` is never read
       --> rustjail/src/container.rs:807:13
        |
    807 |         let mut child_stdin = std::process::Stdio::null();
        |             ^^^^^^^^^^^^^^^
        |
        = note: `#[warn(unused_assignments)]` on by default
        = help: maybe it is overwritten before being read?

    warning: value assigned to `child_stdout` is never read
       --> rustjail/src/container.rs:808:13
        |
    808 |         let mut child_stdout = std::process::Stdio::null();
        |             ^^^^^^^^^^^^^^^^
        |
        = help: maybe it is overwritten before being read?

    warning: value assigned to `child_stderr` is never read
       --> rustjail/src/container.rs:809:13
        |
    809 |         let mut child_stderr = std::process::Stdio::null();
        |             ^^^^^^^^^^^^^^^^
        |
        = help: maybe it is overwritten before being read?

    warning: value assigned to `stdin` is never read
       --> rustjail/src/container.rs:810:13
        |
    810 |         let mut stdin = -1;
        |             ^^^^^^^^^
        |
        = help: maybe it is overwritten before being read?

    warning: value assigned to `stdout` is never read
       --> rustjail/src/container.rs:811:13
        |
    811 |         let mut stdout = -1;
        |             ^^^^^^^^^^
        |
        = help: maybe it is overwritten before being read?

    warning: value assigned to `stderr` is never read
       --> rustjail/src/container.rs:812:13
        |
    812 |         let mut stderr = -1;
        |             ^^^^^^^^^^
        |
        = help: maybe it is overwritten before being read?

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 17:29:30 +02:00
Christophe de Dinechin
27efe291c0 rust-agent: Remove unused functions
Fixes the following warning:

   Compiling logging v0.1.0 (/home/ddd/go/src/github.com/kata-containers-2.0/pkg/logging)
   warning: associated function is never used: `set_level`
      --> /home/ddd/go/src/github.com/kata-containers-2.0/pkg/logging/src/lib.rs:186:8
       |
   186 |     fn set_level(&self, level: slog::Level) {
       |        ^^^^^^^^^
       |
       = note: `#[warn(dead_code)]` on by default

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 13:39:26 +02:00
Christophe de Dinechin
d76ece0cf3 rust-agent: Remove useless braces
This addresses the following warning:

    warning: unnecessary braces around assigned value
        --> src/rpc.rs:1411:26
         |
    1411 |     detail.init_daemon = { unistd::getpid() == Pid::from_raw(1) };
         |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
         |
         = note: `#[warn(unused_braces)]` on by default

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 13:39:26 +02:00
Christophe de Dinechin
3682812e57 rust-agent: Remove unused macros
This addresses the following warnings:

   Compiling rustjail v0.1.0 (/home/ddd/go/src/github.com/kata-containers-2.0/src/agent/rustjail)
   warning: unused `#[macro_use]` import
     --> rustjail/src/lib.rs:15:1
      |
   15 | #[macro_use]
      | ^^^^^^^^^^^^
      |
      = note: `#[warn(unused_imports)]` on by default

   warning: unused macro definition
     --> rustjail/src/lib.rs:38:1
      |
   38 | / macro_rules! sl {
   39 | |     () => {
   40 | |         slog_scope::logger().new(o!("subsystem" => "rustjail"))
   41 | |     };
   42 | | }
      | |_^
      |
      = note: `#[warn(unused_macros)]` on by default

Fixes: #750

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-10-07 13:39:26 +02:00
Eric Ernst
cf26ac0d28 Merge pull request #867 from egernst/main-packaging-fixups
Main packaging fixups
2020-10-06 16:22:44 -07:00
Eric Ernst
483209bf49 actions: add kata deploy test
Pull over kata-deploy-test from the 1.x packaging repository. This is
intended to be used for testing any changes to the kata-deploy
scripting, and does not exercise any new source code changes.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-06 13:44:03 -07:00
Eric Ernst
0793002464 packaging: cleaning, updating based on new filepaths
Update scripts to take into account some files being moved, and some
general cleanup.

Fixes: #866

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-06 13:44:03 -07:00
Eric Ernst
f0f205cd7b packaging: remove obs-packaging
No longer required -- let's remove them.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-06 13:44:03 -07:00
Eric Ernst
4b1753c53f packaging: pull versions, build-image out from obs dir
These are still required; let's pull them out.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-06 13:44:03 -07:00
Eric Ernst
3f6cd4d5f7 packaging: Revert "packaging: Stop providing OBS packages"
This reverts commit c0ea910273.

Two scripts are still required for release and testing, which should
have never been under obs-packaging dir in the first place.  Let's
revert, move the scripts / update references to it, and then we can
remove the remaining obs-packaging/ tooling.

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-06 13:43:53 -07:00
James O. D. Hunt
13e260a864 Merge pull request #861 from likebreath/clh_vfio_unplug
clh: Support VFIO device unplug
2020-10-06 09:47:19 +01:00
Julio Montes
4657983d80 Merge pull request #839 from devimc/2020-10-01/snapCI
ci: add github action to test the snap
2020-10-05 15:49:30 -05:00
Bo Chen
c33ee54a21 clh: Support VFIO device unplug
This patch adds the support of VFIO device unplug when using
cloud-hypervisor.

Fixes: #860

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-10-05 12:20:13 -07:00
Bo Chen
1f4dfa3166 clh: Remove unnecessary VmmPing
We can rely on the error handling of the actual HTTP API calls to catch
errors, and don't need to call VmmPing explicitly in advance.

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-10-05 12:17:45 -07:00
Bo Chen
cc80ae0afb versions: cloud-hypervisor: Bump to version 6d30fe05
The cloud-hypervisor commit `6d30fe05` introduced a fix on its API for
VFIO device hotplug (`VmAddDevice`), which is required for supporting
VFIO unplug through openAPI calls in kata.

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-10-05 12:13:36 -07:00
Eric Ernst
2929250b61 Merge pull request #798 from cmaf/architecture-tap
docs: update networking description
2020-10-05 08:42:19 -07:00
Chelsea Mafrica
0fec7a4d73 docs: Change kata_tap0 to tap0_kata
Tap device's should be tap0_kata for architecture.md

Fixes #797

Signed-off-by: duanquanfeng <duanquanfeng_yewu@cmss.chinamobile.com>
Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-10-04 16:55:50 -07:00
Chelsea Mafrica
3394a6a549 docs: update networking description
First, most people don't care about CNM. Move that out of main doc.

Second, tc-filter is the default. Let's add a bit more background on
our usage of tc-filter (and clarify why we use this instead of macvtap).

Fixes #797

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-10-04 16:55:50 -07:00
Eric Ernst
62b0522b33 Merge pull request #852 from egernst/dev-guide
docs: update dev guide for agent build
2020-10-02 17:13:52 -07:00
Eric Ernst
2e83f40576 dev-guide: update kata-agent install details
Install paths were wrong. Updated based on new agent...

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-02 16:17:36 -07:00
Archana Shinde
ffea705a27 docs: Update docs for enabling agent debug console
The systemd method of adding a debug console is not really
user friendly. Since we have added a much more straightforward
method to enable agent debug console, update developer guide to
reflect this.

Fixes #834

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-10-02 16:09:22 -07:00
Eric Ernst
777f398184 docs: update dev guide for agent build
Include details on setting up rust.

Fixes: #851

Signed-off-by: Eric Ernst <eric.g.ernst@gmail.com>
2020-10-02 15:38:07 -07:00
Julio Montes
aa8eefd813 ci: add github action to test the snap
Add github action to test that the snap package was generated
correctly, this CI don't test the snap, it just build it.

fixes #838

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-01 14:34:36 -05:00
James O. D. Hunt
1d5eab42d6 Merge pull request #833 from bergwolf/197
rust-agent: Update README
2020-10-01 17:26:21 +01:00
James O. D. Hunt
2133f3b742 Merge pull request #832 from bergwolf/arch
docs: update architecture.md
2020-10-01 17:26:16 +01:00
Julio Montes
c2bf8a0f37 Merge pull request #484 from devimc/2020-07-31/SGX
runtime: add support for SGX
2020-10-01 11:08:11 -05:00
Julio Montes
3fec031100 Merge pull request #817 from edmond-hk/qemu
version: upgrade qemu version to v5.1.0 for arm64
2020-10-01 10:31:19 -05:00
James O. D. Hunt
64c3f8bbe0 Merge pull request #686 from jodh-intel/2.0-dev-fix-windows-network-typo
agent: Fix OCI Windows network shared container name typo
2020-10-01 14:25:49 +01:00
James O. D. Hunt
05286d6b1f Merge pull request #731 from jodh-intel/rm-issue-template
github: Remove issue template and use central one
2020-10-01 14:25:40 +01:00
Julio Montes
ea1cb37b59 versions: cloud-hypervisor: bump version
Use commit c54452c08a467a3e35d8d72f2a91d424e9718c57 as
version for cloud-hypervisor.
Bring openapi fix cloud-hypervisor/cloud-hypervisor#1760 to
support SGX.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-01 08:24:29 -05:00
Julio Montes
0ebffdf29f runtime: cloud-hypervisor: tag openapi-generator-cli container
Tag openapi-generator-cli container to v4.3.1 that is the latest
stable, this way we can have reproducible builds and the same
generated code in all the systems

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-01 08:24:29 -05:00
Julio Montes
e51a1ea346 docs: use-cases: Add Intel SGX use case
Document how to use Intel SGX with Kata.

fixes kata-containers/documentation#697

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-01 08:24:29 -05:00
Julio Montes
7d63823141 runtime/vendor: add k8s.io/apimachinery/pkg/api/resource
k8s.io/apimachinery/pkg/api/resource is a memory quantities parser,
we use it to parse the SGX EPC size defined by the `sgx.intel.com/epc`
annotation

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-01 08:24:29 -05:00
Julio Montes
6df165c19d runtime: add support for SGX
Support the `sgx.intel.com/epc` annotation that is defined by the intel
k8s plugin. This annotation enables SGX. Hardware-based isolation and
memory encryption.

For example, use `sgx.intel.com/epc = "64Mi"` to create a container
with 1 EPC section with pre-allocated memory.

At the time of writing this patch, SGX patches have not landed on the
linux kernel project.
The following github kernel fork contains all the SGX patches for the
host and guest: https://github.com/intel/kvm-sgx

fixes #483

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-10-01 08:24:29 -05:00
Peng Tao
a5b3e1cdfd docs: drop docker installation guide
We have removed cli support and that means dockder support is dropped
for now. Also it doesn't make sense to have so many duplications on each
distribution as we can simply refer to the official docker guide on how
to install docker.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-01 20:52:10 +08:00
Peng Tao
6c4300c65f docs: fix static check errors in docs/install/README.md
It was merged in while the static checker is disabled.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-01 20:52:10 +08:00
Peng Tao
59224a76b4 docs: update architecture.md
To match the current architecture of Kata Containers 2.0.

Fixes: #831
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-01 20:51:55 +08:00
Yang Bo
a89deb3ec1 rust-agent: Update README
rust agent does not use grpc as submodule for a while, update README
to reflect the change.

Fixes: #196
Signed-off-by: Yang Bo <bo@hyper.sh>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-10-01 20:41:20 +08:00
James O. D. Hunt
80c52834e6 github: Remove issue template and use central one
Remove the GitHub issue template from this repository. We already have a
central set of templates [1] that are being used so the template in this
repository is redundant.

[1] - https://github.com/kata-containers/.github/tree/master/.github/ISSUE_TEMPLATE/

Fixes: #728.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-01 11:19:32 +01:00
James O. D. Hunt
0ccbca3be8 agent: Fix OCI Windows network shared container name typo
Correct the typo which would break the Windows-specific OCI network
shared container name feature.

See:

- https://github.com/opencontainers/runtime-spec/blob/master/config-windows.md#network

Fixes: #685.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-10-01 11:18:21 +01:00
James O. D. Hunt
cce80bf746 Merge pull request #827 from devimc/2020-09-29/fixTravis
docs: fix broken links
2020-10-01 09:50:48 +01:00
Edmond AK Dantes
a6221a74e7 qemu: upgrade qemu version to 5.1.0 for arm64.
Now, the qemu version used in arm is so old. As some new features have merged
in current qemu, so it's time to upgrade it. As obs-packaging has been removed,
I put the qemu patch under qemu/patch/5.1.x.
As vxfs has been Deprecated in qemu-5.1, it will be no longer exist in
configuration-hyperversior.sh when qemu version larger than 5.0.

Fixes: #816
Signed-off-by: Edmond AK Dantes <edmond.dantes.ak47@outlook.com>
2020-09-30 22:40:49 +08:00
Julio Montes
d68d850ac4 Merge pull request #830 from YchauWang/update-docs-2.0-2
Packaging: release notes script using error kernel path urls
2020-09-30 09:35:23 -05:00
Peng Tao
ec09971d8e Merge pull request #794 from c3d/bug/793-bad-match
rust-agent: Replaces improper use of match for non-constant patterns
2020-09-30 20:39:45 +08:00
Peng Tao
414b906e9c Merge pull request #747 from Kvasscn/fix-warning-in-device-manager-test
devices: fix go test warning in manager_test.go
2020-09-30 20:37:20 +08:00
Bin Liu
ae72ba5cb6 Merge pull request #688 from jodh-intel/2.0-dev-action-improve-line-length-check
action: Allow long lines if non-alphabetic
2020-09-30 15:47:53 +08:00
Ychau Wang
f30b86f131 Packaging: release notes script using error kernel path urls
2.0 Packaging runtime-release-notes.sh script is using 1.x Packaging
kernel urls. Fix these urls to 2.0 branch Packaging urls.

Fixes: #829

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-09-30 14:47:46 +08:00
Bin Liu
ad7b1ff5ad Merge pull request #820 from Tim-Zhang/mark-unreachable
Indicates never return function and remove unreachable code
2020-09-30 13:59:30 +08:00
Julio Montes
a7faeaac51 docs: fix broken links
Some sections and files were removed in a previous commit,
remove all reference to such sections and files to fix the
check-markdown test.

fixes #826

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-29 14:08:40 -05:00
Julio Montes
c32af06fc6 Merge pull request #825 from lifupan/2.0-dev
agent: propagate the internal detail errors to users
2020-09-29 12:12:34 -05:00
fupan.lfp
4501c25a46 agent: propagate the internal detail errors to users
It's should propagate the detail errors to users when
the rpc call failed.

Fixes: #824

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-09-30 00:01:23 +08:00
Fabiano Fidêncio
3360fb343f Merge pull request #628 from fidencio/wip/update-install-information
Update Installation Guide to better reflect the current state of the project
2020-09-29 17:30:47 +02:00
Peng Tao
3dcd611a3b Merge pull request #822 from chavafg/topic/ci-tests-clone-fix
ci: fix clone_tests_repo function
2020-09-29 23:18:54 +08:00
Fabiano Fidêncio
eaf0338b18 Merge pull request #813 from bpradipt/ppc64le-make
agent: Set LIBC=gnu for ppc64le arch by default
2020-09-29 16:28:19 +02:00
Peng Tao
496ac0a4f5 Merge pull request #516 from liubin/feature/472-integrate-fc-metrics
fc: integrate Firecracker's metrics
2020-09-29 21:30:37 +08:00
Salvador Fuentes
1984e635de ci: fix clone_tests_repo function
We should not checkout to 2.0-dev branch in the clone_tests_repo
function when running in Jenkins CI as it discards changes from
tests repo.

Fixes: #818.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-09-29 08:56:11 -04:00
Pradipta Kr. Banerjee
02c1a59f6d agent: Set LIBC=gnu for ppc64le arch by default
Fixes: #812

Signed-off-by: Pradipta Kr. Banerjee <pradipta.banerjee@gmail.com>
2020-09-29 09:36:45 +00:00
Tim Zhang
7019e72c7b agent: remove unreachable code
The code in the end of init_child is unreachable and need to be removed.
The code after do_exec is unreachable and need to be removed.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-09-29 15:51:59 +08:00
Tim Zhang
942999edb9 agent: Change do_exec return type to ! because it will never return
Indicates unreachable code.

Fixes #819

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-09-29 15:50:54 +08:00
Peng Tao
9b2eaeeff0 Merge pull request #787 from wainersm/static_build_qemu
Fix to qemu experimental and improvements
2020-09-29 10:26:23 +08:00
Bin Liu
46f420a9dc Merge pull request #811 from bergwolf/runtime-check
ci: resurrect travis static checkers
2020-09-28 15:23:50 +08:00
Bin Liu
7e7d4c8cea Merge pull request #814 from bergwolf/agent-mount
agent: fix UT failures due to chdir
2020-09-28 15:22:35 +08:00
bin liu
757dfa70e6 fc: integrate Firecracker's metrics
Firecracker expose metrics through fifo file
and using a JSON format. This PR will parse the
Firecracker's metrics and convert to Prometheus metrics.

Fixes: #472

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-28 15:20:02 +08:00
Peng Tao
b03d958e2f gitignore: ignore agent service file
As it is auto-generated.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-28 14:16:11 +08:00
Peng Tao
64b4f69847 agent: fix UT failures due to chdir
Current working directory is a process level resource. We cannot call
chdir in parallel from multiple threads, which would cause cwd confusion
and result in UT failures.

The agent code itself is correct that chdir is only called from spawned
child init process. Well, there is one exception that it is also called
in do_create_container() but it is safe to assume that containers are
never created in parallel (at least for now).

Fixes: #782
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-28 14:09:22 +08:00
Peng Tao
85d22301e9 runtime: fix TestNewConsole UT failure
It needs root.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-28 11:02:56 +08:00
Peng Tao
e90e9a2c9b travis: skip static checker for ppc64
As we have already run it on x64.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-28 11:01:07 +08:00
Peng Tao
5611283ec5 runtime: fix golint errors
Need to run gofmt -s on them.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-28 11:01:07 +08:00
Peng Tao
daf2a54dc8 agent: fix cargo fmt
Otherwise travis fails.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-28 11:01:07 +08:00
Peng Tao
c05c4ba5e7 ci: always checkout 2.0-dev of test repository
We use 2.0-dev in the tests repository now. Always make sure
we use the right branch.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-28 11:01:07 +08:00
Peng Tao
1569b3b32a docs: fix static check errors
Somehow we are not running static checks for a long time.
And that ended up with a lot for errors.

* Ensure debug options are valid is dropped
* fix snap links
* drop extra CONTRIBUTING.md
* reference kata-pkgsync
* move CODEOWNERS to proper place
* remove extra CODE_OF_CONDUCT.md.
* fix spell checker error on Developer-Guide.md

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-28 11:01:03 +08:00
Peng Tao
df3119b679 runtime: fix make check
Need to use the correct script path.

Fixes: #802
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-28 10:24:49 +08:00
Hui Zhu
fb12fff4d8 Merge pull request #808 from lifupan/2.0-dev
agent: Only allow proc mount if it is procfs
2020-09-28 10:09:47 +08:00
Peng Tao
5596eaa31d Merge pull request #441 from liubin/feature/245-add-debug-console
kata 2.0: add debug console service
2020-09-28 10:06:13 +08:00
Peng Tao
ac6f020c6c Merge pull request #697 from keloyang/destroy
runtime: Call s.newStore.Destroy if globalSandboxList.addSandbox
2020-09-27 16:30:24 +08:00
Peng Tao
b20ca6334b Merge pull request #733 from cailca/732
shimv2: add a comment in checkAndMount()
2020-09-27 16:29:51 +08:00
bin liu
484a595f1a runtime: add enable_debug_console configuration item for agent
Set enable_debug_console=true in Kata's congiguration file,
runtime will pass `agent.debug_console`
and `agent.debug_console_vport=1026` to agent.

Fixes: #245

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-27 15:04:59 +08:00
bin liu
febdf8f68c runtime: add debug console service
Add `kata-runtime exec` to enter guest OS
through shell started by agent

Fixes: #245

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-27 10:57:17 +08:00
zhanghj
07d339c788 devices: fix go test warning in manager_test.go
Create "class" and "config" file in temporary device BDF dir,
and remove dir created  by ioutil.TempDir() when test finished.

fixes: #746

Signed-off-by: zhanghj <zhanghj.lc@inspur.com>
2020-09-26 20:46:12 -04:00
Christophe de Dinechin
a4afe3af33 rust-agent: Replaces improper use of match for non-constant patterns
The code used `match` as a switch with variable patterns `ev_fd` and
`cf_fd`, but the way Rust interprets the code is that the first
pattern matches all values. The code does not perform as expected.

This addresses the following warning:

   warning: unreachable pattern
      --> rustjail/src/cgroups/notifier.rs:114:21
       |
   107 |                     ev_fd => {
       |                     ----- matches any value
   ...
   114 |                     cg_fd => {
       |                     ^^^^^ unreachable pattern
       |
       = note: `#[warn(unreachable_patterns)]` on by default

Fixes: #750
Fixes: #793

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-09-25 14:48:26 +02:00
Bin Liu
740c45ac61 Merge pull request #800 from Kvasscn/rust-version-bump-test
osbuilder: specify default toolchain verion in rust-init
2020-09-25 17:49:01 +08:00
fupan.lfp
acaa806cc7 agent: Only allow proc mount if it is procfs
This only allows some whitelists files bind mounted under proc
and prevent other malicious mount to procfs.

Fixes: #807

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-09-25 15:00:07 +08:00
Peng Tao
594519d883 Merge pull request #790 from likebreath/upgrade_clh_v0.10.0
runtime: Update CLH client pkg to version v0.10.0
2020-09-25 11:51:11 +08:00
zhanghj
ca501e5478 osbuilder: specify default toolchain verion in rust-init.
Specify default toolchain version in rust-init.

Fixes: #799

Signed-off-by: zhanghj <zhanghj.lc@inspur.com>
2020-09-24 23:20:43 -04:00
James O. D. Hunt
0351732778 action: Allow long lines if non-alphabetic
Overly long commit lines are annoying. But sometimes,
we need to be able to force the use of long lines
(for example to reference a URL).

Ironically, I can't refer to the URL that explains this
because of ... the long line check! Hence:

```sh
$ cat <<EOT | tr -d '\n'; echo
See: https://github.com/kata-containers/tests/tree/master/
cmd/checkcommits#handling-long-lines
EOT
```

Maximum body length updated to 150 bytes for parity with:

https://github.com/kata-containers/tests/pull/2848

Fixes: #687.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-09-24 15:32:38 +01:00
Christophe de Dinechin
8cdccedfb3 Merge pull request #792 from dgibson/bug791
agent/oci: Don't use deprecated Error::description() method
2020-09-24 11:49:06 +02:00
fupan.lfp
33513fb49b rustjail: make the mount error info much more clear
Make the invalid mount destination's error info much
more clear.

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-09-24 17:48:53 +08:00
David Gibson
45b0b4ede0 agent/oci: Don't use deprecated Error::description() method
We shouldn't use it, and we don't need to implement it.

fixes #791

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-09-24 18:26:50 +10:00
James O. D. Hunt
ce9a4eeffd Merge pull request #784 from jodh-intel/2.0-dev-fix-linter-errors
runtime: Fix linter errors in release files
2020-09-24 08:40:19 +01:00
Bo Chen
a34478ffa5 runtime: Update cloud-hypervisor client pkg to version v0.10.0
The latest release of cloud-hypervisor v0.10.0 contains the following
updates: 1) `virtio-block` Support for Multiple Descriptors; 2) Memory
Zones; 3) `Seccomp` Sandbox Improvements; 4) Preliminary KVM HyperV
Emulation Control; 5) various bug fixes and refactoring.

Note that this patch updates the client code of clh's HTTP API in kata,
while the 'versions.yaml' file was updated in an earlier PR.

Fixes: #789

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-09-23 17:37:34 -07:00
Bo Chen
952b9fe856 Merge pull request #762 from likebreath/fix_clh_ci
packaging: Build from source if the clh release binary is missing
2020-09-23 13:46:24 -07:00
Wainer dos Santos Moschetta
ce675075e1 static-build/qemu-virtiofs: Refactor apply virtiofs patches
In static-build/qemu-virtiofs/Dockerfile the code which
applies the virtiofs specific patches is spread in several
RUN instructions. Refactor this code so that it runs in a
single RUN and produce a single overlay image.

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-09-23 15:42:22 -04:00
Wainer dos Santos Moschetta
512b38cf61 packaging/qemu: Add common code to apply patches
The qemu and qemu-virtiofs Dockerfile files repeat the code to apply
patches based on QEMU stable branch being built. Instead, this adds
a common script (qemu/apply_patches.sh) and make it called by the
respective Dockerfile files.

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-09-23 15:42:22 -04:00
Wainer dos Santos Moschetta
edce2712cd static-build/qemu-virtiofs: Fix to apply QEMU patches
Fix a bug on qemu-virtiofs Dockerfile which end up not applying
the QEMU patches.

Fixes #786

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
2020-09-23 15:41:45 -04:00
Bo Chen
86a864b8c3 packaging: Build from source if the clh release binary is missing
This patch add fall-back code path that builds cloud-hypervisor static
binary from source, when the downloading of cloud-hypervisor binary is
failing. This is useful when we experience network issues, and also
useful for upgrading clh to non-released version.

Together with the changes in the tests repo
(https://github.com/kata-containers/tests/pull/2862), the Jenkins config
file is also updated with new Execute shell script for the clh CI in the
kata-containers repo. Those two changes fix the regression on clh CI
here. Please check details in the issue below.

Fixes: #781
Fixes: https://github.com/kata-containers/tests/issues/2858

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-09-23 11:41:49 -07:00
Christophe de Dinechin
1c1b4c9c43 Merge pull request #718 from fgiudici/podman_data_collection_script
runtime: add podman configuration to data collection script
2020-09-23 16:01:47 +02:00
Xu Wang
1641655d8f Merge pull request #780 from liubin/feature/748-use-travis-cache-and-rust
ci: use Travis cache to reduce build time
2020-09-23 20:30:59 +08:00
Hui Zhu
f5f29d00e0 Merge pull request #779 from lifupan/2.0-dev
agent: update cgroups crate
2020-09-23 17:27:34 +08:00
James O. D. Hunt
33585a8edc runtime: Fix linter errors in release files
Fix the linter errors caught in the `runtime` repos `master` branch [1],
but not in the `2.0-dev` branch [2]. See [3] for further details.

[1] - https://github.com/kata-containers/runtime/pull/2976
[2] - https://github.com/kata-containers/kata-containers/pull/735
[3] - https://github.com/kata-containers/tests/issues/2870

Fixes: #783.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-09-23 09:24:54 +01:00
James O. D. Hunt
6e9592e13d Merge pull request #778 from YchauWang/update-docs-2.0-1
docs: Update the reference path of kata-deploy in the packaging
2020-09-23 08:32:48 +01:00
bin liu
e3a0f9b30e ci: use export command to export envs instead of env config item
Config item env is used as a Matrix Expansion key, so these envs
will export to build jobs individually.

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-23 10:26:07 +08:00
James O. D. Hunt
77ebbc5435 Merge pull request #735 from jodh-intel/2.0-dev-kata-check-compare-versions
runtime: make kata-check check for newer release
2020-09-22 17:49:34 +01:00
fupan.lfp
36ce7018e2 agent: update cgroups crate
Update cgroups crate to fix the building issue
on Aarch64.

Fixes: #770

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-09-22 23:00:11 +08:00
Shukui Yang
3523167d20 runtime: Call s.newStore.Destroy if globalSandboxList.addSandbox
Fixes: #696

Signed-off-by: Shukui Yang <keloyangsk@gmail.com>
2020-09-22 22:47:57 +08:00
bin liu
9e5a4b8b80 ci: use Travis cache to reduce build time
This PR includes these changes:
- use Rust installed by Travis
- install x86_64-unknown-linux-musl
- install rustfmt
- use Travis cache
- delete ci/install_vc.sh

Fixes: #748

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-22 21:37:56 +08:00
Julio Montes
d4408807b4 Merge pull request #776 from bergwolf/containerd
how-to: add privileged_without_host_devices to containerd guide
2020-09-22 07:20:46 -05:00
Julio Montes
056a509418 Merge pull request #705 from devimc/2020-08-13/unittest/rustjail-mount
agent: Unit tests for rustjail/mount.rs
2020-09-22 07:19:51 -05:00
Fupan Li
6695e4ff0f Merge pull request #774 from YchauWang/update-docs-2.0branch
docs: Fix the kata-pkgsync tool's docs script path
2020-09-22 17:17:50 +08:00
Ychau Wang
52984b6724 docs: Update the reference path of kata-deploy in the packaging
Use the relative path of kata-deploy to replace the 1.x packaging url in
the kata-deploy/README.md file. Fixed the path issue, producted by
creating new branch.

Fixes: #777

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-09-22 16:48:51 +08:00
Francesco Giudici
eae2159168 runtime: add podman configuration to data collection script
Be more verbose about podman configuration in the output of the data
collection script: get the system configuration as seen by podman and
dump the configuration files when present.

Fixes: #243
Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
2020-09-22 10:35:45 +02:00
James O. D. Hunt
954a2cc813 Merge pull request #768 from bergwolf/links
Fix developer guide
2020-09-22 09:11:01 +01:00
Peng Tao
d12778480b how-to: add privileged_without_host_devices to containerd guide
It should be set by default for Kata containers working with containerd.

Fixes: #775
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-22 15:38:53 +08:00
Fupan Li
0b9bf24d05 Merge pull request #772 from bergwolf/agent-panic
fix guest panic when running agent as init
2020-09-22 12:57:54 +08:00
Peng Tao
98c4d11b6a docs: fix k8s containerd howto links
It should points to the internal versions.yaml file.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-22 11:13:18 +08:00
Peng Tao
f107b12bec docs: fix up developer guide for 2.0
1. Until we restore docker/moby support, we should use crictl as
developer example.
2. Most of the hyperlinks should point to kata-containers repository.
3. There is no more standalone mode.

Fixes: #767
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-22 11:13:07 +08:00
Ychau Wang
9f2f520130 docs: Fix the kata-pkgsync tool's docs script path
Fix the kata-pkgsync tool's docs, change the download path of the
packaging tool in 2.0 release.

Fixes: #773

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-09-22 09:21:02 +08:00
Julio Montes
96f8769a99 travis: enable RUST_BACKTRACE
RUST_BACKTRACE=1 will help us a lot to debug unit tests when
a test is failing

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:48:02 -05:00
Julio Montes
cda7acf7da agent/rustjail: add more unit tests
Add unit tests for finish_root, read_only_path and mknod_dev
increasing code coverage of mount.rs

fixes #284

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
98cc979ae1 agent/rustjail: remove makedev function
remove `makedev` function, use `nix`'s implementation instead

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
b99fefad7e agent/rustjail: add unit tests for ms_move_rootfs and mask_path
Increase code coverage of mount.rs

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
d79fad2dd8 agent/rustjail: implement functions to chroot
Use conditional compilation (#[cfg]) to change chroot behaviour
at compilation time. For example, such function will just return
`Ok(())` when the unit tests are being compiled, otherwise real
chroot operation is performed.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
25c91afbea agent/rustjail: add unit test for pivot_rootfs
Add unit test for pivot_rootfs increasing the code coverage of
mount.rs

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
7cf0fd95f1 agent/rustjail: implement functions to pivot_root
Use conditional compilation (#[cfg]) to change pivot_root behaviour
at compilation time. For example, such function will just return
`Ok(())` when the unit tests are being compiled, otherwise real
pivot_root operation is performed.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
672da4d08c agent/rustjail: add unit test for mount_cgroups
Add a unit test for `mount_cgroups` increasing the code coverage
of mount.rs from 44% to 52%

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
ab61cf7f9f agent/rustjail: add unit test for init_rootfs
Add a unit test for `init_rootfs` increasing the code coverage
of mount.rs from 0% to 44%.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
0a0714c9c3 agent/rustjail/mount: don't use unwrap
Don't use unwrap in `init_rootfs` instead return an Error, this way
we can write unit tests that don't panic.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
3dc9452bc6 agent/rustjail: add tempfile crate as depedency
Add tempfile crate as depedency, it will be used in the following
commits to create temporary directories for unit testing.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Julio Montes
d756f52c73 rustjail: implement functions to mount and umount files
Use conditional compilation (#[cfg]) to change mount and umount
behaviours at compilation time. For example, such functions will just
return `Ok(())` when the unit tests are being compiled, otherwise real
mount and umount operations are performed.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-21 15:24:53 -05:00
Peng Tao
a02d17870a gitignore: ignore agent version.rs
It is auto-generated.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-21 20:58:57 +08:00
Peng Tao
b518ddeac8 agent: fix agent panic running as init
We should mount procfs before trying to parse kernel command lines.

Fixes: #771
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-21 20:58:13 +08:00
James O. D. Hunt
1a77f69e15 runtime: make kata-check check for newer release
Update `kata-check` to see if there is a newer version available for
download. Useful for users installing static packages (without a package
manager).

Fixes: #734.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-09-21 13:47:29 +01:00
Peng Tao
53b0e085e1 Merge pull request #757 from Kvasscn/update-version-file-url-in-packaging-makefile
packaging: update version file url for kata 2.0 in Makefile
2020-09-21 11:47:36 +08:00
Bin Liu
571699c926 Merge pull request #764 from bergwolf/fix-release-notes
Fix release notes
2020-09-21 09:59:53 +08:00
zhanghj
61181b9f86 packaging: use local version file for kata 2.0 in Makefile
Use local version file instead of downloading from upstream repo.

Fixes: #756

Signed-off-by: zhanghj <zhanghj.lc@inspur.com>
2020-09-20 21:21:47 -04:00
Hui Zhu
84af1c20f3 Merge pull request #766 from bergwolf/update-clh
versions: update clh to v0.10.0
2020-09-20 18:20:46 +08:00
Peng Tao
3f39bdfc3e versions: update clh to v0.10.0
`kata-deploy` test failed on `v0.9.0` and succeeded on `v0.10.0`.

See
https://github.com/kata-containers/kata-containers/runs/1139077520?check_suite_focus=true
and
https://github.com/bergwolf/kata-containers/runs/1139304442?check_suite_focus=true

Fixes: #765
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-20 10:54:24 +08:00
Bin Liu
6c034baa00 Merge pull request #761 from bergwolf/fix-clh-build
packaging: fix cloud-hypervisor build
2020-09-19 10:31:00 +08:00
Peng Tao
e1c6aa27b7 docs: fix release process doc
We no longer build OBS packages. And we use
kata-containers/tools/packaging/release to do release.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-19 09:10:14 +08:00
Peng Tao
1acfba4dd7 packaging: fix release notes
Should mention the 2.0 branch docs.

Fixes: #763
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-19 09:10:14 +08:00
Archana Shinde
81d8b48301 Merge pull request #710 from jodh-intel/2.0-dev-actions-require-pr-porting-labels
action: Require PR porting labels
2020-09-18 11:37:08 -07:00
Peng Tao
18d325edb0 packaging: fix cloud-hypervisor build
We should just download the official static build binary instead of
trying to build on our own.

Fixes: #760
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-18 23:00:07 +08:00
Bin Liu
d1c9ba5043 Merge pull request #759 from bergwolf/release-notes
packaging: fix release notes scripts
2020-09-18 22:27:49 +08:00
Peng Tao
e6f16b7bb1 packaging: fix release notes scripts
It should only check kata-containers repository.

Fixes: #758
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-18 18:47:05 +08:00
Hui Zhu
65c0464222 Merge pull request #753 from bergwolf/2.0.0-rc0-branch-bump
# Kata Containers 2.0.0-rc0
2020-09-18 18:29:03 +08:00
Peng Tao
5c676689df release: Kata Containers 2.0.0-rc0
- agent: add cgroup v2 support
- runtime: Don't use hard-coded crio config
- Generate version file with more information in it.
- ci: replace spaces by tabs as indent
- fix issues with short life time container/exec processes
- action: Add issue to project and move to "In progress" on linked PR
- virtiofsd: fix typo in test code
- agent: setup DNS for guest
- ci: run agent test under root user
- docs: update sandbox apis doc for kata 2.0-dev
- rustjail: fix the issue of invalid cgroup_parent path
- osbuilder: update usage of RUST_AGENT variable
- agent: add retry between doing CPU hotplug and make it online.
- kernel: update to the latest LTS kernel 5.4.60
- osbuilder: fix rootfs build on ppc64le
- kernel: Enabling PTP clock support in kernel
- rootfs-builder: fix unbootable dracut-based initramfs on Fedora
- [fwport-2.0] osbuilder/image-builder: disable reflink
- virtcontainers: Add unit test for utils/compare.go
- reimplement error handling: use anyhow
- docs: update yaml file link for prometheus deployment
- docs: Update the doc for minikube installing kata
- trivial: Fix spelling of "privilege"
- [port] image-builder: disable reflink
- runtime: qemu: reduce boot time and memory footprint
- snap for kata 2.0
- runtime: Fix typo in hotplugVFIODevice()
- drivers: Correct isPCIeDevice logic
- docs: Add documentation for VFIO-AP passthrough
- [fwport-2.0] qemu: update build dependencies to support QEMU 5
- kata-deploy: add ACRN runtime to Docker configuration
- runtime: Add support for VFIO-AP pass-through
- agent: update Cargo files authors
- packaging: adjustment for 2.0 branch
- Fix epthemeral mount issue
- clh: Disable the 'seccomp' option temporarily
- Subject: [PATCH] qemu: add annotations for iommu_platform for s390x v…
- Foward-port :virtiofs: Update virtiofs docs
- Forward-port kata deploy conf
- initrd: Increase Alpine Version to 3.12
- [forward port]: osbuilder: Update yq
- tools: Add Unix socket support to agentl-ctl
- agent: Add target optimize for Makefile
- server: Allow address to be specified
- rustjail: default permission of device node should be 666
- packaging: Add VFIO-AP fragment for s390x
- console: Fix crash if debug console disabled
- agent: support guest hooks
- virtcontainers: Add to utils unit tests
- sandbox: Disconnect from agent after VM shutdown
- runtime: Re-vendor GoVMM for hotplugging IBM Adjunct Processor (AP) devices over VFIO
- clh: Port cloud-hypervisor related changes from kata-runtime
- docs: remove outdated dependencies from agent docs
- [forward-port] packaging: s390x kernel config fragments
- action: Fix subsystem check
- osbuilder : ppc64le support for rust agent based rootfs/initrd image
- packaging: add usage instructions for -a (arch_target) option
- rustjail: add the "HOME" env for process
- rustjail: fix the issue of missing set propagation for bind mount
- agent: add unit tests for rustjail/process.rs
- ci: Update experimental kernel tag to enable CLH CI
- virtcontainers: fix outdated example code in api document
- agent: setup the "lo" interface run agent as init
- Fix commit-message-check and do some updates about github actions
- virtcontainers: cleanup codes, delete not used APIs
- Use github action to do Fixes/Length/Subsystem check for commit message
- docs: Remove installation of proxy
- virtcontainers: Add unit test for types/container.go
- shimv2: fix the issue  of close IO stream
- docs: Update contributions section in limitations document kata 2.0
- Fix fd leakage in execute_hook
- Kata 2.0-dev port of #2867 (NoReboot Knob)
- qemu: remove multidev in fsdev parameter on arm64
- Makefile: add CLHCMD in arm64-options.mk
- runtime: change un-structured log to structured log
- virtcontainers: Add function to capabilities test
- virtcontainers: Expand unit test coverage for asset

615ffb93 agent: Generate version file with more adequate information in it.
f13ca94e agent: Fix setting of version
c823b4cd agent: Make build remove generated files on clean
357d7885 ci: replace spaces by tabs as indent
22876b2d agent: allow multiple wait on the same process
295f5100 runtime: Don't use hard-coded crio config
6487044f shimv2: trust cached status when deleting containers
325a4f86 shimv2: do not kill a stopped exec process
d7c77b69 runtime: write oom file to notify CRI-O tha OOM occurred
15065e44 agent: add cgroup v2 support
2ce97ec6 virtiofsd: fix typo in test code
b081f26a action: Add issue to project and move to "In progress" on linked PR
6520320f agent: setup DNS for guest
90e0dc88 ci: run agent test under root user
c133a456 rustjail: fix the issue of invalid cgroup_parent path
20a084ae docs: update sandbox apis doc for kata 2.0-dev
d86e7467 agent: add retry between doing CPU hotplug and make it online.
ebd3f316 osbuilder: fix rootfs build on ppc64le
2dfb8bc5 rootfs-builder: fix unbootable dracut-based initramfs on Fedora
2019f00e docs: update yaml file link for prometheus deployment
0be02a8f runtime: qemu: reduce boot time and memory footprint
8b07bc2c agent: fix unit tests - remove rustjail::errors
6c96d666 agent: update Cargo toml and lock
46d7b9b8 agent/rustjail: remove rustjail::errors
fbb79739 agent: Use anyhow for error handling
33759af5 agent: Add anyhow dependency
c192446a agent/rustjail: Use anyhow for error handling
2e3e2ce1 agent/rustjail/capabilities: Use anyhow for error handling
6a4c9b14 agent/rustjail/cgroups: Use anyhow for error handling
359286a8 agent/rustjail: Add anyhow dependency
dd60e56f trivial: Fix spelling of "privilege"
cb999375 runtime: Fix typo in hotplugVFIODevice()
0d198f93 virtcontainers: Add unit test for utils/compare.go
1de9bc0f snap: reimplement snapcraft.yaml to support kata 2.0
85642c32 snap: move snapcraft.yaml to the right place
92dfa463 drivers: Correct isPCIeDevice logic
b4748280 kernel: Remove arm patches for ptp
82efd2f2 kernel: Enabling PTP clock support in kernel
8666e01e qemu/default-configs: update default-config for QEMU 5
2d12da8e qemu: update default-configs
cf3ac9f7 docs: Add documentation for VFIO-AP passthrough
11e8a494 docs: update the docs for minikube installing kata
517dda02 kernel: update to the latest LTS kernel 5.4.60
ae98ea45 obs-packaging: fix wait for obs
f5b71d34 qemu: update build dependencies to support QEMU 5
fcd29a28 osbuilder/image-builder: disable reflink
dae6c7d9 osbuilder: update usage of RUST_AGENT variable
1236e224 runtime: Add support for VFIO-AP pass-through
65970d38 osbuilder: install-yq should not print on success
c624fa74 osbuilder: install musl for aarch64
b24f2cb9 gitignore: ignore vscode directory
cf1b72d6 osbuilder: install rust before sourcing cargo env
7b5ab586 packaging: fix kata-deploy yaml path
76c18aa3 osbuilder: fix alpine agent build
5216815d packaging: make build-kernel.sh work for 2.0
aa3fb4db packaging: make kata-deploy work for 2.0
86a6e0b3 packaging: fix build image scripts
ceebd06b release: add 2.0 release actions
dadab1fe osbuilder: build rust agent by default
1bd58259 packaging: tag releases on kata-containers repo
f56f68bf obs-packaging: adjust for building on kata-containers repo
60245a83 agent: update Cargo files authors
544219d9 mount: fix the issue of epthemeral storage handler
fd8f3ee9 mount: add much more error info using chain_err
10b1deb2 tools: Add Unix socket support to agentl-ctl
f5598a1b Subject: [PATCH] qemu: add annotations for iommu_platform
f879acd6 scripts: Foward port osbuilder scripts to update yq
7be95b15 tools: Simplify error handling in agent-ctl
5b0e6f37 kata-deploy: add ACRN runtime to Docker configuration
adf9ecc5 initrd: Increase Alpine Version to 3.12
32b86a8d agent: Add target optimize for Makefile
26506d83 virtiofs: Update virtiofs docs
bee17d1c kata-deploy: Add containerd configuration to support kata annotations.
219f93ff kata-deploy: Add default privileged_without_host_devices
4b62fc16 clh: Disable the 'seccomp' option temporarily
f7ff6d32 image-builder: disable reflink
0a9b8e0a rustjail: default permission of device node should be 666
81644003 server: Allow address to be specified
bb30759e agent: add guest hooks UT
095ebb8c agent: fix OCI hook handling
03a4d107 agent: support guest hooks
e7bfeb41 agent: construct container bundle in tmpfs location
2ee40027 packaging: Add VFIO-AP fragment for s390x
4c30b255 runtime: Re-vendor GoVMM for VFIO-AP support
282bff9f sandbox: Disconnect from agent after VM shutdown
9f1a3d15 kernel: add s390x fragment
f1350616 kernel: config CONFIG_GENERIC_MSI_IRQ_DOMAIN
b67325c3 kernel: add missing configs
454dd854 kernel: config CONFIG_ PARAVIRT
62b45064 kernel: config CONFIG_NO_HZ_FULL
6dca74ba kernel: moved acpi hotplug config
7c85decc kernel: config CONFIG_PCI_MSI_IRQ_DOMAIN
efe51b29 kernel: fragment for pmem
08d046d9 kernel: config CONFIG_HAVE_NET_DSA
7b49fa12 kernel: fragments not supported on s390x
ccfb73cb agent/agent-ctl: update Cargo.lock
fd13c93c virtcontainers: Add msg to existing utils unit tests
c3fc09b9 virtcontainers: Add to utils unit tests
96582556 docs: remove outdated dependencies from agent docs
d12f920b console: Fix crash if debug console disabled
572de288 sandbox: Remove unnecessary thread
d5fbba3b main: Remove commented out and redundant code
1b2fe4a5 agent: Refactor main function
bac79eee main: Display config in announce
e2952b53 main: Simplify version handling
cfa35a90 action: Fix subsystem check
39b53f44 clh: enable build using Podman
04b156f6 qemu-virtiofs: Update to qemu 5.0 + virtiofs + dax
3ec05a9f clh: Add support to unplug block devices
45e32e1b clh: Set 'Id' explicitly while hotplugging block device
895959d0 clh: Provide cpu topology to API
31594387 clh: opeanapi: update api for cloud hypervisor
89836cd3 versions: cloud-hypervisor 0.9.0
8d5a60ac versions: Update qemu-virtiofs to 5.0
76a64667 clh: Remove the use of deprecated '--memory file=' parameter
bfd78104 packaging: add usage instructions for -a (arch_target) option
ecaa1f9e clh: Enable versions and kernel tag to enable CLH CI for kata 2.0
64b06944 ppc64le: Support for rust agent based rootfs
2511cabb virtcontainers: fix outdated example code in api document
5c7f0016 rustjail: add the "HOME" env for process
58dfd503 rustjail: fix the issue of missing set propagation for bind mount
e79c5727 agent: setup the "lo" interface run agent as init
d0a45637 agent: add unit tests for rustjail/process.rs
2889af77 actions: Run subject-line-length check even if the previous checks failed
9f0fef5a actions: Add commit-body-missing check
d81af48a actions: Do not limit the length of single word in commit body
8c46a41b actions: Fix subsystem checking in github-action
2466ac73 actions: Fix 'Fixes checking' problem by update dependent action
e7d3ba12 virtcontainers: cleanup codes, delete not used APIs
998a6343 docs: Remove installation of proxy
c305911d actions: Use github action to do Fixes/Length/Subsystem check
bd78ccaf shimv2: fix the issue  of close IO stream
06834931 agent: Fix fd leaks in execute_hook
b03cd1bf docs: Update contributions section in limitations document kata 2.0
c15ef219 qemu: Set govmmQemu NoReboot config Knob
57269262 qemu: Add test for qemuConfig Knobs
5010e3a3 vendor: update govmm
61d133f9 runtime: change un-structured log to structured log
f24ad25d virtcontainers: Add unit test for types/container.go
1637e9d3 qemu: remove multidev in qemu/fsdev parameter on arm64
b61c9ca2 Makefile: add CLHCMD in arm64-options.mk
e1a79e69 virtcontainers: Add function to capabilities test
d1d5c69b virtcontainers: Expand unit test coverage for asset

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-18 17:28:19 +08:00
Peng Tao
e579321cc6 Merge pull request #755 from Tim-Zhang/ignore-fixes-for-release
action: ignore 'fixes check' for subsystem 'release'
2020-09-18 17:24:57 +08:00
Ychau Wang
1839dfd95a runtime: Clear the VCMock 1.x API Methods from 2.0
Clear the 1.x branch api methods in the 2.0. Keep the same methods to
the VC interface, like the VCImpl struct.

Fixes: #751

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-09-18 16:30:12 +08:00
Tim Zhang
729a3b1d33 action: ignore 'fixes check' for subsystem 'release'
Fixes #754

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-09-18 15:30:34 +08:00
Peng Tao
7e33e36f4a Merge pull request #698 from liubin/feature/146-add-cgroup-v2-for-agent
agent: add cgroup v2 support
2020-09-18 14:45:38 +08:00
Peng Tao
922a55e4fe Merge pull request #737 from cailca/736
runtime: Don't use hard-coded crio config
2020-09-18 14:23:14 +08:00
Peng Tao
54aa6ede96 Merge pull request #742 from c3d/2.0-dev-bug740-generate-version
Generate version file with more information in it.
2020-09-18 14:22:03 +08:00
Christophe de Dinechin
615ffb93e5 agent: Generate version file with more adequate information in it.
The version.rs file is now generated to contain up-to-date information
from the makefile, including git commit and the full binary path.

The makefile has also been modified to make it easier to add changes
in generated files based on makefile variables.

Fixes: #740

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-09-17 16:41:00 +02:00
James O. D. Hunt
f13ca94e10 agent: Fix setting of version
Fix the bug where the version string generated by the `Makefile` was not
being passed to the agent, resulting in a "unknown" version.

Fixes: #725.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-09-17 16:41:00 +02:00
James O. D. Hunt
c823b4cd99 agent: Make build remove generated files on clean
Ensure that `make clean` removes generated files.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-09-17 16:41:00 +02:00
James O. D. Hunt
0bb3117a51 Merge pull request #744 from liubin/fix/743-replace-spaces-by-tabs
ci: replace spaces by tabs as indent
2020-09-17 14:01:27 +01:00
bin liu
357d788517 ci: replace spaces by tabs as indent
Replace spaces by tabs as indent in file ci/lib.sh

Fixes: #743

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-17 11:14:21 +08:00
Fupan Li
a06142fc5d Merge pull request #717 from bergwolf/signal
fix issues with short life time container/exec processes
2020-09-17 11:00:30 +08:00
Peng Tao
22876b2da6 agent: allow multiple wait on the same process
Until a container is deleted, agent should allow runtime to wait for
a process in parallel, as being supported by the go agent.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-16 21:15:51 +08:00
Qian Cai
295f5100a3 runtime: Don't use hard-coded crio config
In show_container_mgr_details(), it used "cat /etc/crio/crio.conf"
instead of "crio config".

Fixes: #736
Signed-off-by: Qian Cai <cai@redhat.com>
2020-09-16 08:38:54 -04:00
Peng Tao
6487044fa1 shimv2: trust cached status when deleting containers
vc status might not be accurate because it does not watch container
status change.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-16 16:47:56 +08:00
Peng Tao
325a4f868d shimv2: do not kill a stopped exec process
Same as containers, it is possible for an exec process to stop so
quickly that containerd may send a parallel Kill request. We should
just return success in such case.

Fixes: #716
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-09-16 16:47:46 +08:00
bin liu
d7c77b69dc runtime: write oom file to notify CRI-O tha OOM occurred
CRI-O is not use event like containerd, it's depending on
file name `oom` to dectect if an OOM occurred.

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-16 10:35:28 +08:00
Qian Cai
7225460a68 shimv2: add a comment in checkAndMount()
In checkAndMount(), it is not clear why we check IsBlockDevice() and if
DisableBlockDeviceUse == false and then only return "false, nil" instead
of "false, err". Adding a comment to make it a bit more readable.

Fixes: #732
Signed-off-by: Qian Cai <cai@redhat.com>
2020-09-15 13:01:03 -04:00
Fabiano Fidêncio
22ca2da6f7 packaging: Stop providing OBS packages
The community has discussed and took the decision in favour of promoting
kata-deploy as the way of distributing and using kata for distros that
officially don't maintain the project.

Fixes: #623
Fixes: https://github.com/kata-containers/packaging/issues/1120

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-09-15 17:26:17 +02:00
Fabiano Fidêncio
afa88c1bd3 install: Add contacts to the distribution packages
Let's add a new column to the Official packages table, and let the
maintainers of the official distro packages to jump in and add their
names there.

This will help us to ping & redirect to the right people possible issues
that are reported against the official packages.

Fixes: #623

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-09-15 17:24:24 +02:00
Fabiano Fidêncio
3955cc8957 install: Update information about Community Packages
Kata Containers will stop distributing the community packages in favour
of kata-deploy.

Fixes: #623

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-09-15 17:24:24 +02:00
Fabiano Fidêncio
218f77d7be install: Update SUSE information
Following up a conversation with Ralf Haferkamp, we can safely drop the
instructions for using Kata Containers on SLES 12 SP3 in favour of using
the official builds provided for SLE 15 SP1, and SLE 15 SP2.

Fixes: #623

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-09-15 17:24:24 +02:00
Fabiano Fidêncio
2a0e76a8a9 install: Update openSUSE information
Let's update the openSUSE Installation Guide to reflect the current
information on how to install kata packages provided by the distro
itself.

The official packages are present on Leap 15.2 and Tumbleweed, and can
be just installed. Leap 15.1 is slightly different, as the .repo file
has to be added before the packages can be installed.

Leap 15.0 has been removed as it already reached its EOL.

Fixes: #623

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-09-15 17:24:24 +02:00
Fabiano Fidêncio
691f13645b install: Update RHEL information
Although the community packages are present for RHEL, everything about
them is extremely unsupported on the Red Hat side.

Knowing this, we'd be better to simply not mentioned those and, if users
really want to try kata-containers on RHEL, they can simply follow the
CentOS installation guide.

In the future, if the Fedora packages make their way to RHEL, we can add
the information here. However, if we're recommending something
unsupported we'd be better recommending kata-deploy instead.

Fixes: #623

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-09-15 17:24:24 +02:00
Fabiano Fidêncio
270fc4b2d1 install: Update Fedora information
Let's update the Fedora Installation Guide to reflect the current
information on how to install kata packages provided by the distro
itself.

These are official packages and we, as Fedora members, recommend using
kata-containers on Fedora 32 and onwards, as from this version
everything works out-of-the-box. Also, Fedora 31 will reach its EOL as
soon as Fedora 33 is out, which should happen on October.

Fixes: #623

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-09-15 17:24:24 +02:00
Fabiano Fidêncio
492b4e906b install: Update CentOS information
Let's update the CentOS Installation Guide to reflect the current
information on how to install kata packages provided by the
Virtualiation Special Interest Group.

These are not official CentOS packages, as those are not coming from Red
Hat Enterprise Linux. These are the same packages we have on Fedora and
we have decided to keep them up-to-date and sync'ed on both Fedora and
CentOS, so people can give Kata Containers a try also on CentOS.

The nature of these packages makes me think that those are "as official
as they can be", so that's the reason I've decided to add the
instructions to the "official" table.

Together with the change in the Installation Guide, let's also update
the README and reflect the fact we **strongly recommend** using CentOS
8, with the packages provided by the Virtualization Special Interest
Group, instead of using the CentOS 7 with packages built on OBS.

Fixes: #623

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-09-15 17:24:24 +02:00
bin liu
15065e4472 agent: add cgroup v2 support
This PR add basic cgroup v2 support for agent.

Fixes: #146, #357

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-15 10:38:55 +08:00
James O. D. Hunt
059e6426e9 Merge pull request #711 from jodh-intel/2.0-dev-actions-for-issue-backlog
action: Add issue to project and move to "In progress" on linked PR
2020-09-14 18:02:19 +01:00
James O. D. Hunt
b5e9d6060f action: Require PR porting labels
A PR now needs *two* labels to be applied before it can be merged.
One label must be a backport label from the list below and the other
a forward port label:

- backport labels:

  `needs-backport`, `no-backport-needed`, `backport`.

- forward-port labels:

  `needs-forward-port`, `no-forward-port-needed`, `forward-port`.

This is to make the maintainer think carefully before merging a PR
and hopefully maximise efficient porting.

Related: https://github.com/kata-containers/kata-containers/issues/634

Fixes: #639.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-09-14 15:22:56 +01:00
Bin Liu
d4a5258234 Merge pull request #713 from Kvasscn/fix-typo-in-virtiofsd_test
virtiofsd: fix typo in test code
2020-09-14 22:01:25 +08:00
zhanghj
2ce97ec680 virtiofsd: fix typo in test code
fix typo in virtiofsd_test.go

Fixes: #712

Signed-off-by: zhanghj <zhanghj.lc@inspur.com>
2020-09-14 05:35:10 -04:00
James O. D. Hunt
b081f26a7e action: Add issue to project and move to "In progress" on linked PR
Add GitHub actions to:

- Add newly-created issues to the issue backlog project.
- Move issues with a linked PR into the "In progress" column
  of the issue backlog project.

Related: https://github.com/kata-containers/kata-containers/issues/512

Fixes: #637.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-09-14 09:24:54 +01:00
Peng Tao
6e328c0599 Merge pull request #704 from liubin/feature/689-setup-guest-DNS
agent: setup DNS for guest
2020-09-14 09:51:45 +08:00
bin liu
6520320fc6 agent: setup DNS for guest
This PR is a porting of
https://github.com/kata-containers/agent/pull/625

Fixes: #689

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-13 21:43:07 +08:00
Peng Tao
37e3f89424 Merge pull request #709 from liubin/tmp/debug-travis-sudo
ci: run agent test under root user
2020-09-12 12:47:06 +08:00
bin liu
90e0dc8809 ci: run agent test under root user
Running agent test now only support normal user,
under root user also needed.

Fixes: #708

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-11 22:42:13 +08:00
Julio Montes
91dec532e5 Merge pull request #702 from YchauWang/docs-branch1
docs: update sandbox apis doc for kata 2.0-dev
2020-09-11 09:30:51 -05:00
Peng Tao
e3ea8544f4 Merge pull request #694 from lifupan/2.0-dev
rustjail: fix the issue of invalid cgroup_parent path
2020-09-11 10:28:33 +08:00
Archana Shinde
55354d5509 Merge pull request #651 from Kvasscn/fix-rust-agent-default-value-rootfs.sh
osbuilder: update usage of RUST_AGENT variable
2020-09-10 13:35:11 -07:00
fupan.lfp
c133a4561d rustjail: fix the issue of invalid cgroup_parent path
The cgroup_parent path is expected to be absolute path,
add an '/' prefix to the passed cgroup_parent path to make
sure it's an absolute path.

Fixes: #336

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-09-10 11:12:56 +08:00
Ychau Wang
20a084ae79 docs: update sandbox apis doc for kata 2.0-dev
Sync the api from the runtime codes to the documentation. Remove and add
some apis in the kata-api-design.md doc. And new table for Sandbox
Monitor APIs.

Fixes: #701

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-09-10 10:55:09 +08:00
Peng Tao
63138a4f28 Merge pull request #699 from liubin/fix/665-retry-when-hotplug-cpu
agent: add retry between doing CPU hotplug and make it online.
2020-09-10 10:24:42 +08:00
bin liu
d86e74674c agent: add retry between doing CPU hotplug and make it online.
Sometimes runtime will fail in onlining CPU process,
because when the runtime calls to QMP
`device_add`, QEMU doesn't allocate all vCPUs inmediatelly.

Fixes: #665

Signed-off-by: bin liu <bin@hyper.sh>
2020-09-10 07:36:18 +08:00
Julio Montes
b6ee8ae149 Merge pull request #655 from Kvasscn/update-kernel-version-to-5.4.60
kernel: update to the latest LTS kernel 5.4.60
2020-09-09 08:06:59 -05:00
Pradipta Kumar
8667df4d09 Merge pull request #679 from Amulyam24/fix-initrd-ppc64le
osbuilder: fix rootfs build on ppc64le
2020-09-09 12:32:28 +05:30
Amulya Meka
ebd3f316f2 osbuilder: fix rootfs build on ppc64le
The default toolchain used for building the
rust agent would be different for ppc64le.

Fixes: #678

Signed-off-by: Amulya Meka <amulmek1@in.ibm.com>
2020-09-09 03:09:03 +00:00
Peng Tao
7f20587433 Merge pull request #616 from amshinde/2.0-kernel-ptp
kernel: Enabling PTP clock support in kernel
2020-09-09 09:45:06 +08:00
Fabiano Fidêncio
1ab1d0e728 Merge pull request #647 from pmores/fix-unbootable-dracut-initramfs
rootfs-builder: fix unbootable dracut-based initramfs on Fedora
2020-09-08 22:51:23 +02:00
Pavel Mores
2dfb8bc549 rootfs-builder: fix unbootable dracut-based initramfs on Fedora
This is a forward port of Kata 1.x PR's
https://github.com/kata-containers/osbuilder/pull/480 and
https://github.com/kata-containers/osbuilder/pull/494 .

Fixes #646

Signed-off-by: Pavel Mores <pmores@redhat.com>
2020-09-08 20:10:38 +02:00
Julio Montes
fcfe00369b Merge pull request #652 from devimc/2020-09-01/osbuilder/noreflink
[fwport-2.0] osbuilder/image-builder: disable reflink
2020-09-08 10:20:17 -05:00
James O. D. Hunt
1a734bbb79 Merge pull request #668 from cmaf/unit-virtcontainers-utils-compare
virtcontainers: Add unit test for utils/compare.go
2020-09-08 11:35:28 +01:00
Julio Montes
b30dc26986 Merge pull request #642 from devimc/2020-08-13/agent/anyhow
reimplement error handling: use anyhow
2020-09-07 10:13:21 -05:00
Bin Liu
2086e2e9e1 Merge pull request #677 from Kvasscn/update-yaml-link-for-prometheus-deployment
docs: update yaml file link for prometheus deployment
2020-09-07 13:02:36 +08:00
zhanghj
2019f00e2c docs: update yaml file link for prometheus deployment
Update link address of yaml file refer to kata 2.0-dev branch.

Fixes: #676

Signed-off-by: zhanghj <zhanghj.lc@inspur.com>
2020-09-06 22:37:47 -04:00
GabyCT
677c87d248 Merge pull request #627 from YchauWang/2.0-dev
docs: Update the doc for minikube installing kata
2020-09-04 17:02:34 -05:00
Chelsea Mafrica
fd3ce81518 Merge pull request #672 from c3d/200903-spelling
trivial: Fix spelling of "privilege"
2020-09-04 12:58:18 -07:00
Bo Chen
d2a89d668e Merge pull request #569 from devimc/2020-08-25/port/noReflink
[port] image-builder: disable reflink
2020-09-04 12:50:01 -07:00
Julio Montes
16f4ff38e5 Merge pull request #674 from devimc/2020-09-03/runtime/qemuRawKernel
runtime: qemu: reduce boot time and memory footprint
2020-09-04 14:39:34 -05:00
Julio Montes
99811645d2 Merge pull request #667 from devimc/2020-09-01/packaging/snap-ubuntu20
snap for kata 2.0
2020-09-04 13:33:19 -05:00
Julio Montes
0be02a8fd3 runtime: qemu: reduce boot time and memory footprint
The linux kernel feature RANDOMIZE_BASE improved the security and at
the same time increased the memory footprint of a kata container,
this feature was enabled in kata-containers/packaging#1006.
In order to mitigate this increase in memory consumption, we can
boot container using the uncompressed kernel.

Reduce boot time by ~5%
Reduce KSM memory footprint by ~14%
Reduce noKSM memory footprint by ~27%

fixes #669

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 10:25:09 -05:00
Julio Montes
8b07bc2c80 agent: fix unit tests - remove rustjail::errors
Fix unit tests and use `anyhow::Error`.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 08:29:12 -05:00
Julio Montes
6c96d66667 agent: update Cargo toml and lock
`rustjail::erros` was removed in a previous commit, hence some external crates
like `error_chain` are no longger required, update Cargo.toml and Cargo.lock
to reflect these changes.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 08:29:12 -05:00
Julio Montes
46d7b9b8dc agent/rustjail: remove rustjail::errors
`anyhow` replaces `rustjail::errors`, hence it's not longer needed

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 08:28:50 -05:00
Julio Montes
fbb79739c9 agent: Use anyhow for error handling
Don't use `rustjail::errors` for error handling, since it's not
thread safe and there are better alternatives like `anyhow`.

`anyhow` attaches context to help the person troubleshooting
the error understand where things went wrong, for example:

Current error messages:

```
No such file or directory (os error 2)
```

With `anyhow`:

```
Error: Failed to read config.json
Caused by:
    No such file or directory (os error 2)
```

fixes #641

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 08:23:17 -05:00
Julio Montes
33759af548 agent: Add anyhow dependency
anyhow provides `anyhow::Error`, a trait object based error type for
easy idiomatic error handling in Rust applications

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 08:22:13 -05:00
Julio Montes
c192446a59 agent/rustjail: Use anyhow for error handling
Convert all Errors and Results to `anyhow::Error` and `anyhow::Result`
respectively

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 08:22:13 -05:00
Julio Montes
2e3e2ce114 agent/rustjail/capabilities: Use anyhow for error handling
Use `.to_string` to wrap up `caps::errors::Error`s since they are not
thread safe, otherwise `cargo build` will fail with the following error:

```
doesn't satisfy `caps::errors::Error: std::marker::Sync`
```

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 08:22:13 -05:00
Julio Montes
6a4c9b14f2 agent/rustjail/cgroups: Use anyhow for error handling
Return `anyhow::Result` from all the functions in this directory.
Add function `io_error_kind_eq` to compare an `anyhow::Error` with an
`io::Error`, this function downcast the `anyhow::Error`.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 08:22:13 -05:00
Julio Montes
359286a87d agent/rustjail: Add anyhow dependency
anyhow provides `anyhow::Error`, a trait object based error type for
easy idiomatic error handling in Rust applications.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-04 08:22:13 -05:00
Christophe de Dinechin
dd60e56f28 trivial: Fix spelling of "privilege"
I noticed the spelling mistake while reviewing another change and
doing a "grep" for "privilege" that turned up nothing.

Fixes: #671

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-09-04 11:31:09 +02:00
Christophe de Dinechin
6e54767344 Merge pull request #663 from dgibson/machinne
runtime: Fix typo in hotplugVFIODevice()
2020-09-04 09:58:34 +02:00
David Gibson
cb9993759b runtime: Fix typo in hotplugVFIODevice()
"machineType" is misspelled as "machinneType".

Fixes: #670

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-09-04 14:28:51 +10:00
Chelsea Mafrica
0d198f930e virtcontainers: Add unit test for utils/compare.go
Add unit test for virtcontainers/utils/compare.go to increase overall
coverage.

Fixes #661

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-09-03 13:38:43 -07:00
Julio Montes
1de9bc0fa7 snap: reimplement snapcraft.yaml to support kata 2.0
Add snap package for 2.0

fixes #666

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-03 12:13:34 -05:00
Julio Montes
85642c328d snap: move snapcraft.yaml to the right place
In order to use a build systemd like launchpad, the snapcraft.yaml file
must be in the root directory of the project or under the `snap`
directory, that way launchpad detects that this project can be build
using the `snapcraft` command

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-03 08:09:05 -05:00
Julio Montes
c7745a3350 Merge pull request #662 from dgibson/fix611
drivers: Correct isPCIeDevice logic
2020-09-03 08:06:23 -05:00
Peng Tao
60ea0a5c37 Merge pull request #659 from Jakob-Naucke/vfio-ap-doc
docs: Add documentation for VFIO-AP passthrough
2020-09-03 19:32:20 +08:00
Bo Chen
7e4673d542 Merge pull request #653 from devimc/2020-09-01/packaging/qemu5
[fwport-2.0] qemu: update build dependencies to support QEMU 5
2020-09-02 22:18:53 -07:00
David Gibson
92dfa4634b drivers: Correct isPCIeDevice logic
Currently, isPCIeDevice() attempts to determine if a (host) device is
PCI-Express capable by looking up its link speed via the PCI slots
information in sysfs.  This is a) complicated and b) wrong.  PCI-e
devices don't have to have slots information, so this frequently fails.

Instead determine if devices are PCI-e by checking for the presence of
PCIe extended configuration space by looking at the size of the "config"
file in sysfs.

Forward ported from 6bf93b23 in the Kata 1.x runtime repository.

Fixes: #611

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-09-03 14:32:00 +10:00
Archana Shinde
b474828052 kernel: Remove arm patches for ptp
These patches are causing compilation issues while building on x86.
Remove these while we fix the issue.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-09-02 13:21:28 -07:00
Archana Shinde
82efd2f267 kernel: Enabling PTP clock support in kernel
Allows time synchronization.

Fixes #587

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-09-02 13:21:28 -07:00
Julio Montes
8666e01e11 qemu/default-configs: update default-config for QEMU 5
Disable the following IPMI configs, since they are not needed
for kata containers and fixes the snap job in launchpad

CONFIG_PCI_IPMI_KCS
CONFIG_PCI_IPMI_BT
CONFIG_IPMI_SSIF

fixes #581

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-02 11:58:38 -05:00
Julio Montes
2d12da8ed0 qemu: update default-configs
Update QEMU x86_64 default config to support QEMU 5

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-02 11:58:35 -05:00
Jakob-Naucke
cf3ac9f72a docs: Add documentation for VFIO-AP passthrough
Add guide on how to pass a VFIO-AP device, such as Crypto Express cards
on IBM Z mainframes, to a Kata container. Like the documentation for
VFIO-PCI, this was put in the virtcontainers README.

Fixes: #658

Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-09-02 15:22:52 +02:00
Ychau Wang
11e8a49410 docs: update the docs for minikube installing kata
The command for intalling kata in minikube still keeping the old path of
the packaging project from the 1.x branch. This commit changed the path
of the packaging's files to 2.0-dev branch.

Fixes: #619

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-09-02 14:47:32 +08:00
Yongchao Wang
00bd04f923 docs: Update local branch from upstream
merge remote branch from commit f1fd00da78

Signed-off-by: Ychau Wang <wangyongchao.bj@inspur.com>
2020-09-02 14:40:07 +08:00
zhanghj
517dda02a3 kernel: update to the latest LTS kernel 5.4.60
Update to the latest lts kernel in versions.yaml

Fixes: #654

Signed-off-by: zhanghj <zhanghj.lc@inspur.com>
2020-09-01 22:30:36 -04:00
Julio Montes
ae98ea450d obs-packaging: fix wait for obs
Reimplement the loop that waits for OBS. Look for the packages
that are still building, not for the repos.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-01 13:58:18 -05:00
Julio Montes
f5b71d3455 qemu: update build dependencies to support QEMU 5
Add the following packages as build dependencies to build QEMU
5 in OBS and launchpad (snap)

* libselinux1
* libffi
* libmount
* libblkid
* python3

fixes #1075

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-01 13:58:09 -05:00
Julio Montes
fcd29a28cc osbuilder/image-builder: disable reflink
Disable reflink when using DAX. Reflink is a xfs feature that cannot be
used together with DAX.

fixes #577

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-09-01 12:10:47 -05:00
Julio Montes
c422d061cb Merge pull request #629 from gvancuts/add-kata-acrn-runtime-docker
kata-deploy: add ACRN runtime to Docker configuration
2020-09-01 07:27:04 -05:00
Julio Montes
d20ea14c8a Merge pull request #578 from Jakob-Naucke/vfio-ap-passthrough
runtime: Add support for VFIO-AP pass-through
2020-09-01 07:23:26 -05:00
Fupan Li
e429f79d36 Merge pull request #644 from devimc/2020-08-28/agent/updateCargoToml
agent: update Cargo files authors
2020-09-01 17:33:58 +08:00
zhanghj
dae6c7d967 osbuilder: update usage of RUST_AGENT variable
Update the default value of RUST_AGENT variable to 'yes' in
usage description.

fixes: #650

Signed-off-by: zhanghj <zhanghj.lc@inspur.com>
2020-09-01 05:23:29 -04:00
Jakob-Naucke
1236e22475 runtime: Add support for VFIO-AP pass-through
Recognise when a device to be hot-plugged is an IBM Adjunct Processor
(AP) device and execute VFIO AP hot-plug accordingly. Includes unittest
for recognising and uses CCW for addDeviceToBridge in hotplugVFIODevice
if appropriate.

Fixes: #491

Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
Co-authored-by: Julio Montes <julio.montes@intel.com>
Reviewed-by: Alice Frosi <afrosi@redhat.com>
2020-09-01 10:41:49 +02:00
Fupan Li
8df06a046e Merge pull request #418 from bergwolf/packaging
packaging: adjustment for 2.0 branch
2020-09-01 11:06:34 +08:00
Peng Tao
65970d3858 osbuilder: install-yq should not print on success
The caller might rely on the output to determine its failure.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:10:37 +08:00
Peng Tao
c624fa7469 osbuilder: install musl for aarch64
So that it can do musl static build.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:10:32 +08:00
Peng Tao
b24f2cb969 gitignore: ignore vscode directory
That is auto-generated by vscode and should be ignored.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
cf1b72d6c6 osbuilder: install rust before sourcing cargo env
Otherwise we cannot find it.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
7b5ab58689 packaging: fix kata-deploy yaml path
Should use the 2.0 directory structure.

Fixes: #547
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
76c18aa345 osbuilder: fix alpine agent build
Since we always build musl kata-agent, there is no need to build
it inside a musl container. We can just build on the host and then
copy the binary to the target rootfs.

There are still a lot to clean up and it should be made so for ALL
target distros instead of just alpine. But this is at least working
for alpine first.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
5216815d1c packaging: make build-kernel.sh work for 2.0
We do not need to clone packaging repository, nor apply
virtio_vsock as virtio-fs-dev has already included that fix.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
aa3fb4db28 packaging: make kata-deploy work for 2.0
We no longer need to deploy multiple repositories.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
86a6e0b3e7 packaging: fix build image scripts
We do not need to clone osbuilder anymore.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
ceebd06b64 release: add 2.0 release actions
Use a different action yaml file so that we do not affect the original
1.x release actions.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
dadab1febf osbuilder: build rust agent by default
Since we only have the rust agent.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
1bd5825955 packaging: tag releases on kata-containers repo
As we do not need to tag other repositories any more.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Peng Tao
f56f68bf2f obs-packaging: adjust for building on kata-containers repo
As we do not need to build on other repositories any more.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-31 22:09:37 +08:00
Julio Montes
60245a83fa agent: update Cargo files authors
Anyone can collaborate in the Kata Containers project, so instead of
adding her/his name and email to the Cargo.toml files, use
`The Kata Containers community` as name and
`kata-dev@lists.katacontainers.io` as email.

fixes #643

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-08-31 08:47:10 -05:00
Julio Montes
7b54ef69f9 Merge pull request #645 from lifupan/fix_epthemeral_mount
Fix epthemeral mount issue
2020-08-31 08:14:54 -05:00
Peng Tao
a145f22ddf Merge pull request #615 from likebreath/disable_clh_seccomp
clh: Disable the 'seccomp' option temporarily
2020-08-31 18:34:36 +08:00
Peng Tao
66d3e4f727 Merge pull request #636 from huoqifeng/iommu_platform_forward_port
Subject: [PATCH] qemu: add annotations for iommu_platform for s390x v…
2020-08-31 17:40:24 +08:00
Peng Tao
66f308c6af Merge pull request #618 from amshinde/update-virtiofs-docs
Foward-port :virtiofs: Update virtiofs docs
2020-08-31 17:29:28 +08:00
Peng Tao
4c328b3bb4 Merge pull request #617 from amshinde/2.0-kata-deploy-conf
Forward-port kata deploy conf
2020-08-31 17:28:50 +08:00
fupan.lfp
544219d9ad mount: fix the issue of epthemeral storage handler
For ephemeral storage handler, it should return an
empty string instead of the mount destination.

Fixes: #635

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-08-31 10:05:25 +08:00
fupan.lfp
fd8f3ee951 mount: add much more error info using chain_err
Make the return error  much more specifically by
chain much more error info.

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-08-31 10:05:12 +08:00
Julio Montes
be2f7e6ad9 Merge pull request #621 from jschintag/patch-1
initrd: Increase Alpine Version to 3.12
2020-08-28 12:05:00 -05:00
GabyCT
bc9c8ddf8e Merge pull request #592 from GabyCT/topic/portyq
[forward port]: osbuilder: Update yq
2020-08-28 09:41:21 -05:00
James O. D. Hunt
bba8bcb340 Merge pull request #550 from jodh-intel/2.0-dev-agent-ctl-unix-socket-addr
tools: Add Unix socket support to agentl-ctl
2020-08-28 11:23:25 +01:00
James O. D. Hunt
10b1deb274 tools: Add Unix socket support to agentl-ctl
Rather than specifying the VSOCK address as two CLI options
(`--vsock-cid` and `--vsock-port`), allow the agent's ttRPC server
address to be specified to the `agent-ctl` tool using a single URI
`--server-address` CLI option. Since the ttrpc crate supports VSOCK and
UNIX schemes, this allows the tool to be run inside the VM by specifying
a UNIX address.

Fixes: #549.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-08-28 08:06:11 +01:00
Qi Feng Huo
f5598a1bc2 Subject: [PATCH] qemu: add annotations for iommu_platform
for s390x virtio devices

Add iommu_platform annotations for qemu for ccw,
other supported devices can also make use of that.

  Fixes #603

Signed-off-by: Qi Feng Huo <huoqif@cn.ibm.com>
2020-08-28 11:25:14 +08:00
Gabriela Cervantes
f879acd6e7 scripts: Foward port osbuilder scripts to update yq
This PR ports kata-containers/osbuilder#454 to kata 2.0

Fixes #576

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-08-27 15:00:03 -05:00
James O. D. Hunt
7be95b15eb tools: Simplify error handling in agent-ctl
Don't format the error string before passing to the `anyhow!()` macro
since it can format strings itself.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-08-27 15:50:14 +01:00
Geoffroy Van Cutsem
5b0e6f375b kata-deploy: add ACRN runtime to Docker configuration
Add an ACRN runtime ('kata-acrn') to the Docker configuration
('/etc/docker/daemon.json').

Fixes: #579
Signed-off-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
2020-08-27 15:45:30 +02:00
Jan Schintag
adf9ecc50c initrd: Increase Alpine Version to 3.12
Upgrade Alpine version from unsupported 3.7 to supported 3.12

Fixes #610

Signed-off-by: Jan Schintag <jan.schintag@de.ibm.com>
2020-08-27 15:14:39 +02:00
Julio Montes
ad7dce47ca Merge pull request #625 from Tim-Zhang/update-makefile
agent: Add target optimize for Makefile
2020-08-27 07:58:50 -05:00
Tim Zhang
32b86a8d8b agent: Add target optimize for Makefile
Run `make optimize` will strip the binary.

Fixes: #626

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-08-27 18:44:27 +08:00
James O. D. Hunt
fd3b9ff9ed Merge pull request #553 from jodh-intel/2.0-dev-agent-support-unix-address
server: Allow address to be specified
2020-08-27 11:43:34 +01:00
Fupan Li
f1fd00da78 Merge pull request #571 from eryugey/eguan/2.0-dev
rustjail: default permission of device node should be 666
2020-08-27 11:19:58 +08:00
Archana Shinde
26506d832e virtiofs: Update virtiofs docs
Update this document to get rid of any nemu mentions.
Added comment to mention that number of containers that can be
launched may be limited by the size of `/dev/shm`.

Fixes #572

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-08-26 15:18:25 -07:00
Archana Shinde
bee17d1c8f kata-deploy: Add containerd configuration to support kata annotations.
In case of containerd, not all annotations are passed down to the OCI
layer. We need to configure "pod_annotations" field for a runtime class.
This field is a list of annotations that can be passed by Kata as OCI
annotations. Add this as default configuration with kata-deploy.

Fixes: #594

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-08-26 15:06:06 -07:00
Archana Shinde
219f93ffad kata-deploy: Add default privileged_without_host_devices
For privieleged containers, all host devices are passed to
container. We have done work in crio and containerd to define a
scope of privileged in Kata to prevent this from happening.
Add this as the default as this falls under a best practice to follow
with Kata.
Note that if this flag has been already defined, then this change
does not override it.

Fixes #582

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-08-26 15:06:06 -07:00
Bo Chen
4b62fc165e clh: Disable the 'seccomp' option temporarily
We kept observing instabilities from CLH CI jobs periodically (kata
1.x). To separate the random failures caused by `seccomp` from other
failures, this patch disables the 'seccomp' option from clh in kata for
now. We will bring this option back after completing the 'seccomp'
filter lists based on Kata's CI workload. Details are tracked in the
following two issues:
https://github.com/kata-containers/runtime/issues/2899 and
https://github.com/kata-containers/runtime/issues/2901

We are facing the similar challenge to stabilize CI jobs related to
cloud-hypervisor in Kata 2.0. We are disabling the `seccomp` option here
for the same reason. Related issue:
https://github.com/kata-containers/tests/issues/2813

Fixes: #614

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-26 12:31:51 -07:00
Julio Montes
f7ff6d3297 image-builder: disable reflink
Disable reflink when using DAX. Reflink is a xfs feature that cannot be
used together with DAX.

fixes kata-containers/osbuilder#456
fixes #577

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-08-26 09:42:17 -05:00
Julio Montes
c14d44aba8 Merge pull request #568 from Jakob-Naucke/vfio-ap-fragment
packaging: Add VFIO-AP fragment for s390x
2020-08-26 07:59:09 -05:00
Eryu Guan
0a9b8e0ae2 rustjail: default permission of device node should be 666
Otherwise file owner in container may not read/write such devices.

Fixes: #570
Signed-off-by: Eryu Guan <eguan@linux.alibaba.com>
2020-08-26 20:43:12 +08:00
Fupan Li
6f2eab40d3 Merge pull request #555 from jodh-intel/2.0-dev-agent-fix-shutdown-crash
console: Fix crash if debug console disabled
2020-08-26 19:59:27 +08:00
Bin Liu
b4c105336e Merge pull request #563 from bergwolf/guest-hooks
agent: support guest hooks
2020-08-26 17:36:32 +08:00
James O. D. Hunt
81644003eb server: Allow address to be specified
Allow the default (VSOCK) ttRPC server address to be changed using a new
`KATA_AGENT_SERVER_ADDR` environment variable (for testing and
debugging).

Fixes: #552.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-08-26 10:19:31 +01:00
Peng Tao
8e18cec804 Merge pull request #504 from cmaf/unit-virtcontainers-utils-utils
virtcontainers: Add to utils unit tests
2020-08-26 13:52:05 +08:00
Peng Tao
5fbac0a380 Merge pull request #556 from evanfoster/shutdown-agent
sandbox: Disconnect from agent after VM shutdown
2020-08-26 13:47:36 +08:00
Peng Tao
bb30759e4e agent: add guest hooks UT
To test the guest hooks implementation.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-26 13:35:01 +08:00
Peng Tao
095ebb8ca3 agent: fix OCI hook handling
We should call write_sync with proper arguments.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-26 11:18:02 +08:00
Peng Tao
03a4d107ba agent: support guest hooks
Scan guest hooks upon creating new sandbox and append
them to guest OCI spec before running containers.

Fixes: #485
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-26 11:18:02 +08:00
Peng Tao
e7bfeb418a agent: construct container bundle in tmpfs location
Save container spec under bundle path and bind mount container rootfs
under bundle path.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-26 11:18:02 +08:00
Jakob-Naucke
2ee40027e5 packaging: Add VFIO-AP fragment for s390x
Add vfio-ap.conf to the s390 kernel config fragments, which includes
the necessary flags for passing an IBM Adjunct Processor (AP) device
over VFIO.

Fixes: #567

Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
Reviewed-by: alicefr <afrosi@redhat.com>
2020-08-25 17:10:35 +02:00
Julio Montes
60770f4629 Merge pull request #566 from Jakob-Naucke/revendor-govmm-vfio-ap
runtime: Re-vendor GoVMM for hotplugging IBM Adjunct Processor (AP) devices over VFIO
2020-08-25 08:46:25 -05:00
Julio Montes
e6757de2ac Merge pull request #543 from likebreath/clh_backporting
clh: Port cloud-hypervisor related changes from kata-runtime
2020-08-25 08:42:03 -05:00
Jakob-Naucke
4c30b2554f runtime: Re-vendor GoVMM for VFIO-AP support
This is a re-vendor of intel/govmm, with support for hot-plugging IBM
Adjunct Processor (AP) devices over VFIO. This is necessary for
enabling AP device pass-through in Kata (see #491).

    39c372a Add support for hot-plugging IBM VFIO-AP devices
    f5bdd53 travis: disable amd64 jobs
    1af1c0d github: enable github actions
    4831c6e travis: Run coveralls after success
    cf0f05d qemu: add iommu_platform knob for qemuParams
    175ac49 typo fix

Fixes: #565

Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-25 10:35:11 +02:00
Evan Foster
282bff9f94 sandbox: Disconnect from agent after VM shutdown
When a one-shot pod dies in CRI-O, the shimv2 process isn't killed until
the pod is actually deleted, even though the VM is shut down. In this
case, the shim appears to busyloop when attempting to talk to the (now
dead) agent via VSOCK. To address this, we disconnect from the agent
after the VM is shut down.

This is especially catastrophic for one-shot pods that may persist for
hours or days, but it also applies to any shimv2 pod where Kata is
configured to use VSOCK for communication.

See github.com/kata-containers/runtime#2719 for details.
Fixes #2719

Signed-off-by: Evan Foster <efoster@adobe.com>
2020-08-24 09:53:28 -06:00
Salvador Fuentes
29aae01779 Merge pull request #559 from snir911/doc
docs: remove outdated dependencies from agent docs
2020-08-24 10:19:29 -05:00
Julio Montes
5b707234d8 Merge pull request #511 from Jakob-Naucke/forward-s390x-packaging
[forward-port] packaging: s390x kernel config fragments
2020-08-24 09:44:04 -05:00
Alice Frosi
9f1a3d15db kernel: add s390x fragment
Support for s390x kernel fragments.

Fixes: #1041

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:36:01 +02:00
Alice Frosi
f13506163b kernel: config CONFIG_GENERIC_MSI_IRQ_DOMAIN
Moved CONFIG_GENERIC_MSI_IRQ_DOMAIN in arch base.conf.
The config is not selected for s390x

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:36:01 +02:00
Alice Frosi
b67325c3ac kernel: add missing configs
Some kernel configs need additional dependencies:
  - CONFIG_NO_HZ depends on
      CONFIG_GENERIC_CLOCKEVENTS
  - CONFIG_CGROUP_PERF depends on
      CONFIG_PERF_EVENTS
        CONFIG_HAVE_PERF_EVENTS
  - CONFIG_BLK_DEV_LOOP depends on
      CONFIG_BLK_DEV
        CONFIG_BLOCK

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:36:00 +02:00
Alice Frosi
454dd85432 kernel: config CONFIG_ PARAVIRT
Moved CONFIG_ PARAVIRT to each arch base.conf.

CONFIG_ PARAVIRT only defined in x86, arm64, arm in arch/$arch/Kconfig.

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:36:00 +02:00
Alice Frosi
62b45064d4 kernel: config CONFIG_NO_HZ_FULL
Moved CONFIG_NO_HZ_FULL config to each arch base.conf.

The config CONFIG_NO_HZ_FULL depends on CONFIG_HAVE_CONTEXT_TRACKING.
See https://github.com/torvalds/linux/blob/
a811c1fa0a02c062555b54651065899437bacdbe/kernel/time/Kconfig#L96

The context tracking is not supported on s390x yet.
See https://github.com/torvalds/linux/blob/
a811c1fa0a02c062555b54651065899437bacdbe/Documentation/features/time/
context-tracking/arch-support.txt#L27

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:35:59 +02:00
Alice Frosi
6dca74ba72 kernel: moved acpi hotplug config
Moved:
---
CONFIG_HOTPLUG_PCI_ACPI=y
CONFIG_PNPACPI=y
---
from hotplug to acpi.
In this way, it is possible to skip these config if the acpi feature is
not supported.

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:35:59 +02:00
Alice Frosi
7c85decc82 kernel: config CONFIG_PCI_MSI_IRQ_DOMAIN
For certain kernel version CONFIG_PCI_MSI_IRQ_DOMAIN is only supported
on x86 and arm64.
See https://github.com/torvalds/linux/blob/
219d54332a09e8d8741c1e1982f5eae56099de85/drivers/pci/Kconfig#L55

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:35:44 +02:00
Alice Frosi
efe51b291c kernel: fragment for pmem
The option CONFIG_VIRTIO_PMEM is not supported on s390x.
It requires nvdimm support.

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:25:34 +02:00
Alice Frosi
08d046d994 kernel: config CONFIG_HAVE_NET_DSA
The kernel config CONFIG_HAVE_NET_DSA is not supported on s390x.
See https://github.com/torvalds/linux/blob/master/net/dsa/Kconfig#L4.
Config moved to arch directory.

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:25:34 +02:00
Alice Frosi
7b49fa121b kernel: fragments not supported on s390x
Add !s390x tag to skip these group of fragments for s390x.

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Signed-off-by: Jakob-Naucke <jakob.naucke@ibm.com>
2020-08-24 14:25:30 +02:00
Peng Tao
ccfb73cb8c agent/agent-ctl: update Cargo.lock
rustc 1.45.2 would just ask for these depenedencies.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-08-24 19:31:08 +08:00
Chelsea Mafrica
fd13c93c6a virtcontainers: Add msg to existing utils unit tests
Add message to existing unit tests that use arrays and loops for easier
debugging.

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-08-23 19:49:40 -07:00
Chelsea Mafrica
c3fc09b95b virtcontainers: Add to utils unit tests
Expand unit tests for virtcontainers/utils/utils.go to include testing
CleanupFds, CPU calculations, ID string creation, and memory alignment
functions.

Fixes #490

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-08-23 19:49:40 -07:00
Peng Tao
942041ecd7 Merge pull request #548 from Tim-Zhang/fix-action-check-subsystem
action: Fix subsystem check
2020-08-24 10:27:30 +08:00
Snir Sheriber
965825564d docs: remove outdated dependencies from agent docs
switched from grpc to ttrpc (a7041c27d)

Fixes: #558

Signed-off-by: Snir Sheriber <snir911@gmail.com>
2020-08-23 14:26:40 +03:00
James O. D. Hunt
d12f920b3f console: Fix crash if debug console disabled
The logic for the debug console meant that if the debug console was
_disabled_, the agent was guaranteed to crash on function exit due to
the unsafe code block. Fixed by simplifying the code to use the standard
`Option` idiom for optional values.

Fixes: #554.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-08-21 17:52:58 +01:00
James O. D. Hunt
572de288f0 sandbox: Remove unnecessary thread
Don't create a thread to wait for the ttRPC server to end - it isn't
required as the operation should be blocked on.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-08-21 17:52:58 +01:00
James O. D. Hunt
d5fbba3b0a main: Remove commented out and redundant code
Remove confusing commented out code and some stray testing code.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-08-21 17:52:58 +01:00
James O. D. Hunt
1b2fe4a5be agent: Refactor main function
Move the sandbox creation into a new function.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-08-21 17:52:58 +01:00
James O. D. Hunt
bac79eeef0 main: Display config in announce
Add the configuration details in the announcement log call.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-08-21 17:52:58 +01:00
James O. D. Hunt
e2952b5354 main: Simplify version handling
Print a simple version string rather than delaying the output
to display a structured version string. The structured output
is potentially more useful but:

- This output is not consistent with other components.

- Delaying the output makes `--version` unusable in some
  environments (since a lot of setup is called before the
  version string can be output).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-08-21 17:52:15 +01:00
Tim Zhang
cfa35a90b2 action: Fix subsystem check
\h is not a valid metacharacter in javascript which is used in
github-action.
Use \s\t to replace it.

Fixes: #551

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-08-21 23:49:43 +08:00
Pradipta Kumar
bba2773d7d Merge pull request #482 from Amulyam24/fix-ppc64le-rootfs
osbuilder : ppc64le support for rust agent based rootfs/initrd image
2020-08-21 12:46:10 +05:30
Jose Carlos Venegas Munoz
39b53f4467 clh: enable build using Podman
[ Port from packaging commit 4e1b5729f47d5f67902e1344521bc5b121673046 ]

Build clh with Podman, allow build the vmm in the Podman CI

Virtiofs qemu has to be build as this is requried by clh.

Fixes: #461

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 14:00:31 -07:00
Jose Carlos Venegas Munoz
04b156f604 qemu-virtiofs: Update to qemu 5.0 + virtiofs + dax
[ Port from packaging commit cbe53bdb14e303830fa9f2d5a7f3c9161a32f033 ]

Update build scripts for qemu-virtiofs.

- virtiofs-0.3 patches are not needed
- Sync build on how vanilla qemu is built
- Apply patches for virtiofsd if any (none today)
- Apply patches that are used for the qemu vanilla
- Apply patches in order

Fixes: #461

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 14:00:28 -07:00
Bo Chen
3ec05a9f95 clh: Add support to unplug block devices
[ Port from runtime commit 44b58e4151d1fc7debed41274b65c37233a437e3 ]

This patch enables kata+clh to unplug block devices, which is required
to pass cri-o integration tests.

Fixes: #461

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 14:00:24 -07:00
Bo Chen
45e32e1b77 clh: Set 'Id' explicitly while hotplugging block device
[ Port from runtime commit 03fb9c50c180d3359178c30e06f1122df312ae76 ]

To support unplug block device, we need to set the 'Id' explicitly while
hotplugging devices with cloud-hypervisor HTTP API.

Fixes: #461

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 14:00:21 -07:00
Jose Carlos Venegas Munoz
895959d007 clh: Provide cpu topology to API
[ Port from runtime commit 39897867bc89667daaafdd141367ec4a5fdc9247 ]

API now requires cpu topology.

Fixes: #461

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 14:00:18 -07:00
Jose Carlos Venegas Munoz
3159438701 clh: opeanapi: update api for cloud hypervisor
[ Port from runtime commit 40f49312a4881c904a1cbdace04c4c697bd2d429 ]

Update api geneated by openapi.

Fixes: #461

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 14:00:15 -07:00
Jose Carlos Venegas Munoz
89836cd31a versions: cloud-hypervisor 0.9.0
[ Port from runtime commit 0dcbbd8dc113878c2aa8c78b5300e4853a7e64be ]

Highlights for cloud-hypervisor version 0.9.0 include:
virtiofs updates to new dax implementation based in qemu 5.0
Fixed random issues caused due to seccomp filters

io_uring Based Block Device Support

If the io_uring feature is enabled and the host kernel supports it then io_uring will be used for block devices. This results a very significant performance improvement.
Block and Network Device Statistics

Statistics for activity of the virtio network and block devices is now exposed through a new vm.counters HTTP API entry point. These take the form of simple counters which can be used to observe the activity of the VM.
HTTP API Responses

The HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
CPU Topology

A topology parameter has been added to --cpus which allows the configuration of the guest CPU topology allowing the user to specify the numbers of sockets, packages per socket, cores per package and threads per core.
Release Build Optimization

Our release build is now built with LTO (Link Time Optimization) which results in a ~20% reduction in the binary size.
Hypervisor Abstraction

A new abstraction has been introduced, in the form of a hypervisor crate so as to enable the support of additional hypervisors beyond KVM.
Snapshot/Restore Improvements

Multiple improvements have been made to the VM snapshot/restore support that was added in the last release. This includes persisting more vCPU state and in particular preserving the guest paravirtualized clock in order to avoid vCPU hangs inside the guest when running with multiple vCPUs.
Virtio Memory Ballooning Support

A virtio-balloon device has been added, controlled through the resize control, which allows the reclamation of host memory by resizing a memory balloon inside the guest.
Enhancements to ARM64 Support

The ARM64 support introduced in the last release has been further enhanced with support for using PCI for exposing devices into the guest as well as multiple bug fixes. It also now supports using an initramfs when booting.
Intel SGX Support

The guest can now use Intel SGX if the host supports it. Details can be found in the dedicated SGX documentation.
Seccomp Sandbox Improvements

The most frequently used virtio devices are now isolated with their own seccomp filters. It is also now possible to pass --seccomp=log which result in the logging of requests that would have otherwise been denied to further aid development.
Notable Bug Fixes

    Our virtio-vsock implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
    CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
    A workaround is now in place for when KVM reports MSRs available MSRs that are in fact unreadable preventing snapshot/restore from working correctly (#1543).
    virtio-mmio based devices are now more widely tested (#275).
    Multiple issues have been fixed with virtio device configuration (#1217)
    Console input was wrongly consumed by both virtio-console and the serial. (#1521)

Fixes: #461

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 14:00:11 -07:00
Jose Carlos Venegas Munoz
8d5a60ac0a versions: Update qemu-virtiofs to 5.0
[ Port from runtime commit d803f077c6fd26e4d020643eda415ea315f47e0c ]

Update to qemu 5.0.x with support for virtiofs + dax.

Fixes: #461

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 14:00:06 -07:00
Bo Chen
76a64667d5 clh: Remove the use of deprecated '--memory file=' parameter
[ Port from runtime commit 30b40f5505fd46d23b89eb5fb38301d2f7454f35 ]

Along with the release of cloud-hypervisor v0.8.0, this option has been
deprecated. clh now enforces to use the alternative controls,
e.g. "shared" and "hugepages", which can infer the backing file
paths. Also, we don't use "hugepages" in kata, so we are fine now as the
"shared" control  is already enabled.

Fixes: #461

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 13:51:43 -07:00
Bin Liu
5f2a9fad4d Merge pull request #536 from Kvasscn/packaging-build-kernel-sh-test
packaging: add usage instructions for -a (arch_target) option
2020-08-20 17:53:52 +08:00
zhanghj
bfd78104b2 packaging: add usage instructions for -a (arch_target) option
Add usage instructions for -a option in script and README,
currently supported architecture are aarch64/ppc64le/s390x/x86_64.

Fixes: #534

Signed-off-by: zhanghj <zhanghj.lc@inspur.com>
2020-08-18 22:26:11 -04:00
Yang Bo
03b7bc17de Merge pull request #499 from lifupan/2.0-dev
rustjail: add the "HOME" env for process
2020-08-19 09:35:06 +08:00
Yang Bo
485fc8ddc8 Merge pull request #531 from lifupan/propagation
rustjail: fix the issue of missing set propagation for bind mount
2020-08-19 09:33:53 +08:00
Julio Montes
2d28043cb2 Merge pull request #527 from devimc/2020-08-13/unittest/rustjail-process
agent: add unit tests for rustjail/process.rs
2020-08-18 12:08:31 -05:00
Bo Chen
646148b2d4 Merge pull request #533 from GabyCT/topic/backportversions
ci: Update experimental kernel tag to enable CLH CI
2020-08-18 09:16:26 -07:00
Gabriela Cervantes
ecaa1f9e25 clh: Enable versions and kernel tag to enable CLH CI for kata 2.0
This PR updates the versions for the virtiofs kernel branch and
as there is a tag based in kernel 5.6 move patches to uses the tag name.
This PR is needed to enable CLH CI for kata 2.0. This PR is backporting
kata-containers/runtime#2843 and kata-containers/packaging#1098.

Fixes #532

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-08-18 10:44:02 -05:00
Bin Liu
37a331a1e8 Merge pull request #506 from lining2020/2.0-dev
virtcontainers: fix outdated example code in api document
2020-08-18 19:36:51 +08:00
Amulya Meka
64b0694436 ppc64le: Support for rust agent based rootfs
For building rust agent on ppc64le, the rust toolchain is built using
the LIBC implementation - gnu instead of musl.

Fixes: #481

Signed-off-by: Amulya Meka <amulmek1@in.ibm.com>
2020-08-18 16:00:26 +05:30
Li Ning
2511cabbc3 virtcontainers: fix outdated example code in api document
Some type declarations were changed. The example code here is outdated
according to the example_pod_run_test.go under virtcontainers directory.
And add the imports to make where the types from clear.

Fixes: #507

Signed-off-by: Li Ning <lining_yewu@cmss.chinamobile.com>
2020-08-18 17:42:18 +08:00
Bin Liu
17e2a35cbe Merge pull request #509 from lifupan/fix_lo
agent: setup the "lo" interface run agent as init
2020-08-18 17:24:19 +08:00
Bin Liu
de3fd3f325 Merge pull request #521 from Tim-Zhang/fix-github-actions
Fix commit-message-check and do some updates about github actions
2020-08-18 15:40:24 +08:00
fupan.lfp
5c7f0016fb rustjail: add the "HOME" env for process
When creating a container process/exec process, it should set the
"HOME" env for this process by getting from /etc/passwd.

Fixes: #498

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-08-17 22:15:45 +08:00
fupan.lfp
58dfd50317 rustjail: fix the issue of missing set propagation for bind mount
When do bind mount for container's volumes, the propagation
flags should be mount/set after bind mount.

Fixes: #530

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-08-17 21:15:43 +08:00
fupan.lfp
e79c57274b agent: setup the "lo" interface run agent as init
It should setup the "lo" interface when agent run
as init porcess.

Fixes: #508

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-08-17 20:52:12 +08:00
Julio Montes
d0a45637ba agent: add unit tests for rustjail/process.rs
Increase code coverage to 80.9%

fixes #285

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-08-14 09:31:48 -05:00
Julio Montes
c1d3e8f7fa Merge pull request #518 from liubin/fix/517-cleanup-virtcontainers-api
virtcontainers: cleanup codes, delete not used APIs
2020-08-13 08:44:05 -05:00
Tim Zhang
2889af7710 actions: Run subject-line-length check even if the previous checks failed
So that we can see as many errors as possible at once.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-08-13 20:36:49 +08:00
Tim Zhang
9f0fef5add actions: Add commit-body-missing check
Check if the commit body is missing use github action.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-08-13 20:36:49 +08:00
Tim Zhang
d81af48ae5 actions: Do not limit the length of single word in commit body
If the line comprises of only a single word,
it may be something like a URL (it's certainly very unlikely to be a
normal word if the default lengths are being used), so length
checks won't be applied to it.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-08-13 20:36:49 +08:00
Tim Zhang
8c46a41b96 actions: Fix subsystem checking in github-action
The former regex mistakenly count SoB(DCO) as a valid subsystem.
This commit will fix this issue.

Fixes: #520

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-08-13 20:36:49 +08:00
Tim Zhang
2466ac73bb actions: Fix 'Fixes checking' problem by update dependent action
The Fixes checking should pass as long as one of the commits of
pull-request pass the check.

update depdent github-action commit-message-checker-with-regex to v0.3.1

shortlog:
d6d9770 commit-message-checker-with-regex: Add input one_pass_all_pass

Fixes: #519

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-08-13 20:34:43 +08:00
bin liu
e7d3ba12d0 virtcontainers: cleanup codes, delete not used APIs
Some APIs are not used anymore.

Fixes: #517

Signed-off-by: bin liu <bin@hyper.sh>
2020-08-13 15:28:09 +08:00
Xu Wang
ba70a15798 Merge pull request #486 from Tim-Zhang/commit-message-check
Use github action to do Fixes/Length/Subsystem check for commit message
2020-08-13 02:24:02 +08:00
GabyCT
50c76b696f Merge pull request #503 from GabyCT/topic/fixdevguide
docs: Remove installation of proxy
2020-08-11 13:52:02 -05:00
Gabriela Cervantes
998a634366 docs: Remove installation of proxy
This PR removes the installation of proxy in the Developer Guide as it
does not exist on kata 2.0

Fixes #502

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-08-11 10:58:53 -05:00
Hui Zhu
5231a3eddf Merge pull request #452 from cmaf/unit-virtcontainers-container
virtcontainers: Add unit test for types/container.go
2020-08-07 16:45:01 +08:00
Bin Liu
0a233ff4bd Merge pull request #440 from lifupan/2.0-dev
shimv2: fix the issue  of close IO stream
2020-08-07 11:28:44 +08:00
Tim Zhang
c305911def actions: Use github action to do Fixes/Length/Subsystem check
The commit checks does not need to wait for CI dependencies to be
installed, It's a waste of time. we need show errors ASAP.

And we should display as many problems as possible at once
Fixes: #487

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-08-05 21:39:53 +08:00
fupan.lfp
bd78ccaf31 shimv2: fix the issue of close IO stream
It should wait until the stdin io copy
termianted to close the process's io stream,
otherwise, it would miss forwarding some contents
to process stdin.

Fixes: #439

Signed-off-by: fupan.lfp <fupan.lfp@antgroup.com>
2020-08-05 21:26:31 +08:00
James O. D. Hunt
93b55280b0 Merge pull request #477 from GabyCT/topic/updatelimitations
docs: Update contributions section in limitations document kata 2.0
2020-08-03 08:46:10 +01:00
Bin Liu
e43a49eafc Merge pull request #479 from Tim-Zhang/close_fd_in_execute_hook
Fix fd leakage in execute_hook
2020-08-03 15:01:29 +08:00
Tim Zhang
06834931a6 agent: Fix fd leaks in execute_hook
Fixes: #480

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-08-03 10:58:43 +08:00
Gabriela Cervantes
b03cd1bf46 docs: Update contributions section in limitations document kata 2.0
This PR updates the contributions sections for the limitations document
for kata 2.0 that instead using the previous runtime repository as example,
it will use the new one.

Fixes #476

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-07-31 11:25:36 -05:00
Fabiano Fidêncio
ec84a94a61 Merge pull request #474 from merwick/2.0-dev
Kata 2.0-dev port of #2867 (NoReboot Knob)
2020-07-30 22:10:46 +02:00
Liam Merwick
c15ef219e5 qemu: Set govmmQemu NoReboot config Knob
The Kata architecture does not support rebooting VMs (the lifecycle
being start/exec/kill) and if a VM is killed (e.g. using sysrq-trigger),
the VM does not exit fully and other layers do not notice the state change.
Set the NoReboot config Knob so that govmmQemu.LaunchQemu() runs QEMU
with the --no-reboot command-line option.

Fixes: #2866

Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
2020-07-30 16:04:08 +01:00
Liam Merwick
5726926201 qemu: Add test for qemuConfig Knobs
Add TestQemuKnobs unit test to validate parameters passed to QEMU.

Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
2020-07-30 16:04:05 +01:00
Liam Merwick
5010e3a368 vendor: update govmm
Bring support for '--no-reboot' QEMU parameter (intel/govmm#131)

shortlog:
qemu: Add NoReboot config Knob for qemuParams

Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
2020-07-30 15:43:02 +01:00
Julio Montes
b94b46db08 Merge pull request #467 from jongwu/multidev
qemu: remove multidev in fsdev parameter on arm64
2020-07-30 08:07:59 -05:00
Julio Montes
3871b3c67c Merge pull request #469 from jongwu/makefile
Makefile: add CLHCMD in arm64-options.mk
2020-07-30 08:07:08 -05:00
Fupan Li
a3c300f06b Merge pull request #459 from liubin/feature/458-add-structured-log
runtime: change un-structured log to structured log
2020-07-30 17:26:18 +08:00
bin liu
61d133f941 runtime: change un-structured log to structured log
Change some logger from directly calling logrus to use a
logrus instance to use structured log.

Fixes: #458

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-30 16:07:41 +08:00
Chelsea Mafrica
31d601b772 Merge pull request #429 from cmaf/unit-virtcontainers-cap
virtcontainers: Add function to capabilities test
2020-07-29 15:15:25 -07:00
Chelsea Mafrica
7169a269e1 Merge pull request #425 from cmaf/unit-virtcontainers-asset
virtcontainers: Expand unit test coverage for asset
2020-07-29 15:02:41 -07:00
Chelsea Mafrica
f24ad25d7b virtcontainers: Add unit test for types/container.go
Add unit tests for types/container.go. Tests were adapted from
sandbox_test.go since ContainerState is a sandbox state structure and
the transition tests are the same.

Fixes #451

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-07-29 16:10:44 +00:00
Jianyong Wu
1637e9d367 qemu: remove multidev in qemu/fsdev parameter on arm64
As the current qemu of arm64 is so old, the new multidev parameter
in 9pfsdev is not supported on arm64, so disabled it temporarily.

Fixes:#466
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-07-29 18:05:37 +08:00
Jianyong Wu
b61c9ca25a Makefile: add CLHCMD in arm64-options.mk
As cloud-hypervisor has enabled for arm64, add CLHCMD in
arm64-options.mk

Fixes: #468
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-07-29 16:38:19 +08:00
Hui Zhu
aeb4cfe7e7 Merge pull request #462 from bergwolf/releasing-2.0.0-alpha3
release: Kata Containers 2.0.0-alpha3
2020-07-29 15:09:53 +08:00
Peng Tao
6fc7d4b238 Merge pull request #457 from liubin/feature/405-add-memory-info-for-kata-env
runtime: add CPU cores and memory basic info for `kata-env` sub-command
2020-07-29 09:45:03 +08:00
Julio Montes
d5d7c22d42 Merge pull request #460 from devimc/2020-07-27/update-qemu5
update to QEMU 5
2020-07-28 10:11:04 -05:00
bin liu
fe99e7e165 runtime: add CPU cores and memory basic info for kata-env sub-command
Add host memory size(Total/Free/Avaiable) and CPU cores in host info
for `kata-runtime kata-env`.

Fixes: #405

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-28 20:41:51 +08:00
Peng Tao
7a825fb55a release: Kata Containers 2.0.0-alpha3
The new alpha release brings in following changes:

1f8e4f67 docs: Update travis and go report card url
db93a163 runtime: remove mock shim
e5910c9b sandbox: Stop and clean up containers that fail to create
1283febd ci: checkout TRAVIS_BRANCH
d7f75dce docs: remove shim/proxy topics and fix docs links
0b3cbee8 virtcontainers: Add additional unit tests for sandbox
c0720179 package: enable cloud-hypervisor for arm64
07a307b4 virtcontainers: Remove duplicate unit tests
d914f018 virtcontainers: Move unit tests for types/sandbox.go
33b1865e actions: Pin to a particular sha for actions
8564c99e actions: Add github actions to perform DCO check
c5081624 actions: Add action to perform WIP check for pull requests
7bbb9e81 rootfs-builder: Don't modify /sbin/init on the build host
3d467505 device: Ease device access for rootfs device to allow node creation
f554cdec virtcontainers: Add to bridges unit test
1d7d944f fc: refactor --daemonize option
7f3e8959 console-watcher: use console watcher to monitor guest console outputs
1099a288 kata 2.0: delete use_vsock option and proxy abstraction
73bf9329 cgroup: fix the issue of crashed when meet unsupported cgroup
ab7afae6 docs: Clarifying minimum version of containerd for annotations
5b15e9ef runtime: consolidate types definition
c6e4d092 agent: sandbox shared pid namespace support
afcf269c rustjail: fix the issue of missing join pid namespace
f3da6900 docs: add link to CRI Configuration for pods
4291eb17 runtime: add monitor_address to .gitignore
1c56abb7 runtime: virtcontainers: vhost-user-blk/scsi are block device nodes
bbf85170 runtime: add pprof interface for shim
0790ca49 runtime: add pod overhead metrics
ae83c96d Modifie to proper CPU architecture name for ppc64le.
f404f4d9 Modified Makefile to pick up correct architecture name for ppc64le.
cdbba6ac agent: Make LIBC configurable
2afbfcab virtcontainers: print a warning when the device to append is not supported
919fc4cd virtcontainer/cgroup: create cgroup manager after creating the network
a134c2e0 virtcontainers/network: Change signature of Enpoint Attach method
9a9721c2 drivers: change BindDevicetoVFIO signature
66219d16 device: support vfio cold plug
3eb694c5 device: add ColdPlug flag
3cf8b470 runtime: delete Stateful from SandboxConfig
069505e2 runtime: delete unused sub-commands.
a0a96db2 runtime: handle unimplemented RPC call by NotFound status code
bd8f03a5 runtime: remove agent abstraction
41c04648 runtime: fix wrong issue links
83b23665 config: there is no need to check vhost-vosck for FC
d96b3063 docs: add metrics design documents for Kata 2.0
b28b850a versions: Revert "versions: update QEMU to 5.0.0"
5ff53037 tools: fix branch and runime repo
24ea3f01 virtcontainers: GetOOMEvent should have no timeout
1b75daa0 runtime: add new command to collect metrics from Kata containers
5200ac06 runtime: remove old store
186fed2a runtime: add implementation of GetMetrics
0c4c69de agent: add GetMetrics implementation
9fd3e48c agent: add new pb message GetMetrics
9c501f3d agent: device: Allow "VmPath" to be used when adding block devices
15af20b6 versions: update QEMU to 5.0.0
a06d01e1 versions: specify rust version
7ae4376b clh: vsock: Use the updated VsockConfig
d8a333b9 versions: Move to cloud-hypervisor v0.8.0
9177d3a3 virtiofsd: Use cache=auto
d66f2192 cli: Fix kata-env output on Power
94fdec4e clh: Allow add virtiofs args and cache options from config
653df674 kata_agent: Add unit tests
6da49a04 clh: Clear the "PCIAddr" field while blk device hotplug
2d6c0731 kata_agent: Pass "VirtPath" with "PCIAddr" of blk devices to agent
56ae2099 kata_agent: Allow to use "VirtPath" as volume source for blk devices
bdd386ba qemu: Fix rtc parameter is not set to qemu
51a6d60a qemu: Remove PMU feature for Power (ppc64le) platform
3ece4130 runtime: clean up shim abstraction
3a17e7aa qemu: Remove pmu limitation in nested virtualization of amd/ppc64le
06571f03 build: Add "pmu=off" to default cpu_features option
115dfa19 annotations: add cpu_features
fa9d619e qemu: add cpu_features option
520295b9 network: Detect and add static ARP entries
117ce4ac clh: remove slow boot debug flags from kernel cmdline
70137962 clh: Remove vsock log port in kernel cmdline
fd5d1394 clh: Improve hypervisor logging
21f83348 clh: Set 'virtio-blk' as the default block device driver
8b5eed70 clh: Enable disk block device hotplug support
883af9c7 agent: set hostname when running as init
899b75f2 agent: fix the issue of missing found right shell
2a8650ba agent-ctl: add Cargo.lock
a8430b37 gitignore: ignore more files
be9ca0d5 qemu: Don't leak file descriptors in case of error
60606647 virtiofsd: Improve logging
7e250f29 shim: exit out of oom polling if unimplemented
9f8d1baa virtcontainers: tests fix, nit fix
d3b3e8be virtcontainers: x86: Support microvm machine type
19833936 virtcontainers: add support for getOOMEvent agent endpoint to sandbox
7c205be2 virtcontainers: add support for getOOMEvent agent endpoint to sandbox
380f07ec proto: update agent protocol
dbc1c30d versions: Remove golangci-lint and gometalinter entries
6e7dd435 qemu: arm64: Set defaultGICVersion to 3 to limit the max vCPU number
93d1f7b4 versions: Misc changes to descriptions
17b3021b qemu: arm64: Don't detect gic version by /proc/interrupts
4cda90ab dax: enable dax on arm64
7a440254 Makefile: add trace-forwarder/agent-ctl missing targets
61e011e8 vc: Version support check is ineffective in createSandbox
ebfbca03 osbuilder: use newest golang
0fd1eb59 Makefile: add default rule
3f8d4b68 trace-forwarder: add Cargo.lock
b68d4e45 shimv2: Removing function as no longer used
f570a2cd shimv2 : Remove workaround for sharedPidNs
b2cc403e build: Improve top-level Makefile
f2a19966 agent: Rename check rule to test
ea1d799f qemu: Only one element of qemuPaths map is relevant
5dffffd4 qemu: Remove useless table from qemuArchBase
97a02131 qemu: Detect and fail a bad machine type earlier
d6e7a58a qemu: Clarify test with bad machine type

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-07-28 20:11:47 +08:00
Peng Tao
ad62eeffcb Merge pull request #431 from liangxianlong/2.0-dev
rootfs-builder: Don't modify /sbin/init on the build host
2020-07-28 20:06:45 +08:00
Peng Tao
3246bdce7c Merge pull request #445 from liubin/fix/444-remove-docs-about-shim-proxy
docs: remove shim/proxy topics and fix docs links
2020-07-28 20:06:02 +08:00
GabyCT
dbd9f0000c Merge pull request #433 from GabyCT/topic/fixurl
docs: Update travis and go report card url
2020-07-27 14:24:25 -05:00
Julio Montes
1c5002c127 Merge pull request #447 from jongwu/clh
package: enable cloud-hypervisor for arm64
2020-07-27 11:27:04 -05:00
Chelsea Mafrica
e1a79e6945 virtcontainers: Add function to capabilities test
Add function that tests multiqueue functions in types/capabilities.go.

Fixes #428

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-07-27 16:15:50 +00:00
Chelsea Mafrica
d1d5c69b64 virtcontainers: Expand unit test coverage for asset
Add additional test cases that cover more asset types and functions to
increase unit test coverage.

Fixes #424

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-07-27 16:14:41 +00:00
Gabriela Cervantes
1f8e4f67e1 docs: Update travis and go report card url
This PR fixes travis and go report carl url for the runtime README for kata
2.0

Fixes #432

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-07-27 10:39:42 -05:00
Julio Montes
3c415d93fe virtcontainers: 9p: shares multiple devices with only one export
Use 'remap' behaviour to deal with multiple devices being shared with
a 9p export.

Fixes the following warning:

```
9p: Multiple devices detected in same VirtFS export, which might lead to file
ID collisions and severe misbehaviours on guest!
You should either use a separate export for each device shared from host or
use virtfs option 'multidevs=remap'!
```

fixes #378

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-27 10:18:18 -05:00
Julio Montes
17fe0104a4 vendor: update govmm
bring fixes for the 9p filesystem

shortlog:
abca6f3 Add multidevs option to fsdev

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-27 10:18:14 -05:00
Julio Montes
b6e910ceb4 versions: update QEMU to 5.0.0
New features that can improve/impact in kata containers:

x86:
    VMX features can be enabled/disabled via the "-cpu" flag.
    When nested virtualization is enabled with an option like
    "-cpu Haswell,+vmx", the set of VMX features will also be constrained to
    what was available on the corresponding CPU model.
    New "microvm" machine type that has virtio-mmio instead of PCI, and no ACPI
    support (so no hotplug too). The new machine type is meant as a baseline
    for performance optimizations of QEMU, firmware and guests. While inspired
    by Firecracker it is not entirely compatible with it (for example it does
    not have Firecracker's userspace IP stack and MicroVM Metadata Service).
    Reduce memory footprint when booting uncompressed kernels.

ARM:
    We now correctly support more than 256 CPUs when using KVM
    The virt board now supports memory hotplugging, when used with a UEFI
    guest BIOS and ACPI.
    virtio-iommu is now supported with machvirt.
    The Cortex-M7 CPU is now supported.

s390:
    Using KVM now explicitly requires a host kernel version of at least 3.15
    (which includes the 'flic' KVM device). This had been broken since QEMU
    2.10 already.

ppc64le:
    pseries machine type, now consumes less host resources when running a KVM
    guest with XIVE (with a recent enough host kernel). This allows running
    more concurrent guests with KVM accelerated XIVE.
    NVDIMMs with file backend is now supported and SLOF updated to work with
    iommu_platform=on for virtio devices.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-27 10:15:53 -05:00
梁显龙10206246
6c997474a3 Merge remote-tracking branch 'upstream/2.0-dev' into 2.0-dev 2020-07-27 10:59:30 +08:00
Hui Zhu
2fef265701 Merge pull request #443 from bergwolf/fix-ci
ci: checkout TRAVIS_BRANCH
2020-07-27 10:07:13 +08:00
Peng Tao
322d85c48f Merge pull request #434 from evanfoster/add-container-creation-cleanup
sandbox: Stop and clean up containers that fail to create
2020-07-27 10:00:01 +08:00
Peng Tao
8d3f758716 Merge pull request #450 from cmaf/unit-virtcontainers-sandbox
virtcontainers: Move unit tests for types/sandbox.go
2020-07-27 09:55:10 +08:00
bin liu
db93a1631e runtime: remove mock shim
Remove mock codes for shim

Fixes #444

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-25 09:08:44 +08:00
Archana Shinde
ba251df68d Merge pull request #427 from amshinde/ease-rootfs-access
device: Ease device access for rootfs device to allow node creation
2020-07-24 17:14:50 -07:00
Evan Foster
e5910c9b88 sandbox: Stop and clean up containers that fail to create
A container that is created and added to a sandbox can still fail
the final creation steps. In this case, the container must be stopped
and have its resources cleaned up to prevent leaking sandbox mounts.

Forward port of https://github.com/kata-containers/runtime/pull/2826

Fixes #2816

Signed-off-by: Evan Foster <efoster@adobe.com>
2020-07-24 09:25:47 -06:00
Peng Tao
1283febdd6 ci: checkout TRAVIS_BRANCH
So that we use 2.0-dev branch for tests.

Fixes: kata-containers/tests#2732
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-07-24 20:06:02 +08:00
bin liu
d7f75dce83 docs: remove shim/proxy topics and fix docs links
And also change links from old documentation to docs sub-directory.

Fixes #444

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-24 17:53:38 +08:00
Chelsea Mafrica
0b3cbee815 virtcontainers: Add additional unit tests for sandbox
Add tests for state change, empty string failures for Volumes and
Sockets. Change two function names to accurately reflect tests.

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-07-24 02:57:41 +00:00
Jianyong Wu
c0720179d2 package: enable cloud-hypervisor for arm64
Now, cloud-hypervisor is capable to work on arm64. it's time to
enable it in kata for arm64.
as cloud-hypervisor can only use virtio-fs, a new patch should be
applied to kernel for virtiofs and some config should be removed
temporarily.

Fixes: #446
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-07-24 10:07:30 +08:00
Chelsea Mafrica
07a307b4b1 virtcontainers: Remove duplicate unit tests
Remove tests from virtcontainers/sandbox_test.go which were moved to
virtcontainers/types/sandbox_test.go.

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-07-24 01:36:12 +00:00
Chelsea Mafrica
d914f01829 virtcontainers: Move unit tests for types/sandbox.go
Move unit tests that were in virtcontainers/sandbox_test.go relating
to Socket, Volume, and SandboxState to types/sandbox_test.go.

Change testSandboxStateTransition function to use SandboxState only
instead of Sandbox from virtcontainers/sandbox.go.

Fixes #435

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-07-24 01:36:00 +00:00
Archana Shinde
9377c162a1 Merge pull request #448 from amshinde/2.0-actions
Backport actions from master
2020-07-23 12:33:23 -07:00
Archana Shinde
33b1865e6e actions: Pin to a particular sha for actions
Since actions can access the github token, lets use a
particular version of sha rather than using master.

Fixes: #437

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
(cherry picked from commit 57b64f35e0)
2020-07-23 12:06:04 -07:00
Archana Shinde
8564c99eae actions: Add github actions to perform DCO check
Action performs a check to verify PR raised has commits
that are signed-off.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
(cherry picked from commit 1b157e5015)
2020-07-23 12:05:41 -07:00
Archana Shinde
c5081624c5 actions: Add action to perform WIP check for pull requests
Use github actions for performing WIP checks on PRs.
The action checks for keywords in subject line
as well labels.

Fixes: #437

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
(cherry picked from commit 0d96145c29)
2020-07-23 12:05:17 -07:00
liangxianlong
7bbb9e8122 rootfs-builder: Don't modify /sbin/init on the build host
Don't modify /sbin/init on the build host when using command `AGENT_INIT="yes" ./rootfs.sh centos` to build rootfs.

Fixes: #430

Signed-off-by: liangxianlong <liang.xianlong@zte.com.cn>
2020-07-18 14:19:06 +08:00
Archana Shinde
3d46750596 device: Ease device access for rootfs device to allow node creation
For docker in docker scenario, the nested container created
has entry "b *:* m" in the list of devices it is allowed to access
under /sys/fs/cgroup/devices/docker/{ctrid}/devices.list.

This entry was causing issues while starting a nested container
as we were denying "m" access to the rootfs block devices.
With this change we add back "m" access, the container would be
allowed to create a device node for the rootfs device but will
not have read-write access to the created device node.

This fixes the docker in docker use case while still making sure
the container is not allowed read/write access to the rootfs.
Note, this could also be fixed by simply skipping {"Type : "b"}
while creating the device cgroup with libcontainer.
But this seems to be undocumented behaviour at this point,
hence refrained from taking this approach.

Fixes #426

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-07-17 15:33:41 -07:00
Peng Tao
c5c3f5c31d Merge pull request #423 from cmaf/unit-virtcontainers-bridges
virtcontainers: Add to bridges unit test
2020-07-17 20:07:08 +08:00
Chelsea Mafrica
f554cdec2c virtcontainers: Add to bridges unit test
Add function that creates new bridges to increase unit test coverage
for virtcontainers/types/bridges. Also adds test for address formats.

Fixes #422

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-07-16 16:34:49 +00:00
James O. D. Hunt
6263d2635b Merge pull request #390 from Pennyzct/remove_use_vsock_option
kata 2.0: delete use_vsock option and proxy abstraction
2020-07-16 14:49:01 +01:00
Penny Zheng
1d7d944f2c fc: refactor --daemonize option
Option --daemonize is invalid to firecarcker, and only valid to
jailer.

Fixes: #389

Signed-off-by: Penny Zheng penny.zheng@arm.com
2020-07-16 05:26:28 +00:00
Penny Zheng
7f3e8959c5 console-watcher: use console watcher to monitor guest console outputs
Import new console watcher to monitor guest console outputs, and will be
only effective when we turn on enable_debug option.
Guest console outputs may include guest kernel debug info, agent debug info,
etc.

Fixes: #389

Signed-off-by: Penny Zheng penny.zheng@arm.com
2020-07-16 05:26:19 +00:00
Penny Zheng
1099a28830 kata 2.0: delete use_vsock option and proxy abstraction
With kata containers moving to 2.0, (hybrid-)vsock will be the only
way to directly communicate between host and agent.
And kata-proxy as additional component to handle the multiplexing on
serial port is also no longer needed.
Cleaning up related unit tests, and also add another mock socket type
`MockHybridVSock` to deal with ttrpc-based hybrid-vsock mock server.

Fixes: #389

Signed-off-by: Penny Zheng penny.zheng@arm.com
2020-07-16 04:20:02 +00:00
Xu Wang
c052e46c66 Merge pull request #416 from bergwolf/cleanup
runtime: consolidate network types definition
2020-07-15 22:46:21 +08:00
Yang Bo
dacb2fded1 Merge pull request #414 from lifupan/2.0-fix
cgroup: fix the issue of crashed when meet unsupported cgroup
2020-07-15 22:22:06 +08:00
fupan.lfp
73bf9329ca cgroup: fix the issue of crashed when meet unsupported cgroup
Fix the issue of applying/set to unsupported cgroups.

Fixes: #408

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-07-15 20:54:00 +08:00
James O. D. Hunt
102068f891 Merge pull request #417 from Nordix/annotations-containerd-version-2.x
docs: Clarifying minimum version of containerd for annotations
2020-07-15 13:35:04 +01:00
Georg Kunz
ab7afae6d3 docs: Clarifying minimum version of containerd for annotations
Using pod annotations requires a minimum version of v1.3.0 of containerd
to pass annotations down to kata. This is already somewhat mentioned in
the corresponding how-to, however, it can be mis-read as the minimum
version of kata-containers instead of containerd. This can cause
extended and futile troubleshooting on older distributions such as
Ubuntu 16.04 which ship a version of 1.2.x of containerd. This patch
attempts to clarify this.

Fixes: #690

Signed-off-by: Georg Kunz <georg.kunz@est.tech>
2020-07-15 12:53:02 +02:00
Peng Tao
5b15e9ef4f runtime: consolidate types definition
We do not need the vc types translation for network data structures.
Just use the protocol buffer definitions.

Fixes: #415
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-07-15 17:48:31 +08:00
James O. D. Hunt
d88f8910ab Merge pull request #402 from sameo/2.0-dev
runtime: virtcontainers: vhost-user-blk/scsi are block device nodes
2020-07-15 09:25:26 +01:00
Hui Zhu
b0e5e12a08 Merge pull request #407 from lifupan/2.0-dev
add rust agent sandbox shared pid namespace support
2020-07-15 09:51:39 +08:00
Peng Tao
fbc6c52625 Merge pull request #406 from liubin/docs/add-link-to-setup-cri-pod-annotations
docs: add link to CRI Configuration for pods
2020-07-13 21:46:49 +08:00
Peng Tao
872ee35ca6 Merge pull request #404 from liubin/bugfix/403-add-monitor_address-to-gitignore
runtime: add monitor_address to .gitignore
2020-07-13 21:46:31 +08:00
fupan.lfp
c6e4d092d6 agent: sandbox shared pid namespace support
Add support shareProcessNamespace.
BTW, this commit only support shared pid namespace by
sharing the infrastructure pause container's pid namespace
with other containers, instead of creating a new pid
namespace different from pause container.

Fixes: #342

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-07-13 19:09:35 +08:00
fupan.lfp
afcf269c9b rustjail: fix the issue of missing join pid namespace
It shouldn't skip joining an container existed
pid namespace.

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-07-13 18:44:49 +08:00
bin liu
f3da6900c2 docs: add link to CRI Configuration for pods
To pass annotations from CRI to Kata containers, user must configure containerd if containerd is used.

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-13 18:37:56 +08:00
bin liu
4291eb17fb runtime: add monitor_address to .gitignore
monitor_address may be committed to repo by accident

Fixes: #403

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-13 16:24:21 +08:00
Peng Tao
2bff7a16f5 Merge pull request #363 from liubin/feature/delete-sub-commands-332
runtime: delete unused sub-commands.
2020-07-13 11:06:27 +08:00
Peng Tao
dc0fa512b4 Merge pull request #398 from liubin/wip/add-pprof-interface
runtime: add pprof interface for shim
2020-07-13 11:03:07 +08:00
Peng Tao
866bc2f01d Merge pull request #400 from liubin/wip/add-pod-overhead
runtime: add pod overhead metrics
2020-07-13 11:02:12 +08:00
Samuel Ortiz
1c56abb761 runtime: virtcontainers: vhost-user-blk/scsi are block device nodes
When checking if a device is an emulated vhost-user-blk or
vhost-user-scsi one, we should not only check for their major number but
also their device node type. They must be block devices.

Fixes: #401

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2020-07-11 01:28:17 +02:00
bin liu
bbf8517050 runtime: add pprof interface for shim
Add new http interfaces to support pprof:

- /sandboxes
- /debug/vars
- /debug/pprof/
- /debug/pprof/cmdline
- /debug/pprof/profile
- /debug/pprof/symbol
- /debug/pprof/trace

Fixes: #397

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-10 13:05:25 +08:00
bin liu
0790ca4933 runtime: add pod overhead metrics
Add pod overhead metrics for CPU and memory to help with calculating sandbox overhead.

Fixes: #399

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-10 11:33:52 +08:00
Fabiano Fidêncio
b9f0f57f1a Merge pull request #396 from abdasgupta/ppc64le-support
PPC64LE Support
2020-07-09 16:07:29 +02:00
Abhishek Dasgupta
ae83c96da9 Modifie to proper CPU architecture name for ppc64le.
Rust core::arch understand ppc64le as powerpc64 architecture
instead of powerpc64le architecture.

Signed-off-by: Abhishek Dasgupta <abdasgupta@in.ibm.com>
2020-07-09 06:05:33 -04:00
Abhishek Dasgupta
f404f4d959 Modified Makefile to pick up correct architecture name for ppc64le.
Makefile is determining the architecture by running uname command
which gives ppc64le as output. But rust toolchain target is available
with the name powerpc64le for ppc64le arch. So this change took care of that.

Signed-off-by: Abhishek Dasgupta <abdasgupta@in.ibm.com>
2020-07-09 06:05:33 -04:00
Fabiano Fidêncio
cdbba6ac4b agent: Make LIBC configurable
Currently the default LIBC used to build the agent is "musl". However,
"musl" is not preset in a big portion of the distros *and* "gnu" libc
just works as expected.

Knowing that, let's add the option to the one building the project to
simply do `make LIBC=gnu` instead of expected the person to go through
the Makefile and replace musl by gnu there.

Fixes: #369

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-07-09 03:30:34 -04:00
Julio Montes
5a68e3490e Merge pull request #360 from devimc/2020-06-29/forwardport/fixVFIOHotplug
[forwardport 2.0] create cgroup manager after creating the network
2020-07-08 13:26:39 -05:00
Julio Montes
2afbfcab99 virtcontainers: print a warning when the device to append is not supported
Print a warning message when the device to append to a QEMU VM is not
supported. This change is just to improve debuggability.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-08 09:36:36 -05:00
Julio Montes
919fc4cde5 virtcontainer/cgroup: create cgroup manager after creating the network
Create the cgroup manager once the network has been created, this way the
list of device will include the network VFIO devices attached to the sandbox,
when the physical enpoint is the network driver.

fixes #2774

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-08 09:36:28 -05:00
Julio Montes
a134c2e083 virtcontainers/network: Change signature of Enpoint Attach method
In order to use the device manager and receiver from the network enpoints,
the signature of the Attach method must change to revice a Sandbox instead of
a Hypervisor, this way devices can be added through the device manager API.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-08 09:32:49 -05:00
Julio Montes
9a9721c261 drivers: change BindDevicetoVFIO signature
BindDevicetoVFIO now returns the vfio path to the brand new vfio device bound

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-08 09:32:44 -05:00
Julio Montes
66219d164f device: support vfio cold plug
Depending on ColdPlug flag, cold or hot plug vfio devices. The VFIO device
won't be hot removed when such flag is false

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-08 09:32:39 -05:00
Julio Montes
3eb694c518 device: add ColdPlug flag
Add ColdPlug flag to DeviceInfo and DeviceState to identify whether a device
must be or was cold plugged

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-08 09:32:35 -05:00
bin liu
3cf8b470cd runtime: delete Stateful from SandboxConfig
Since all containers are started from shim v2, `Stateful` is not needed.

Fixes: #332

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-08 21:59:44 +08:00
bin liu
069505e2d5 runtime: delete unused sub-commands.
This PR delete codes not used anymore.

Fixes: #332

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-08 21:59:03 +08:00
Hui Zhu
e3a3818f7a Merge pull request #388 from lifupan/2.0-dev
config: there is no need to check vhost-vosck for FC
2020-07-08 20:58:14 +08:00
Peng Tao
7eedc95de4 Merge pull request #384 from liubin/377/delete-agent-abstraction
runtime: remove agent abstraction
2020-07-08 17:12:08 +08:00
Hui Zhu
ce6cae0f77 Merge pull request #394 from liubin/393/handle-rpc-call-not-implemented
runtime: handle unimplemented RPC call by NotFound status code
2020-07-08 14:24:20 +08:00
Hui Zhu
6f1bfd25b6 Merge pull request #392 from liubin/391-fix-broken-links
runtime: fix wrong issue links
2020-07-08 14:23:45 +08:00
bin liu
a0a96db217 runtime: handle unimplemented RPC call by NotFound status code
For now, agent return status of NotFound when calling getOOMEvents, runtime should handle it correctly.

Fixes: #393

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-08 11:51:48 +08:00
bin liu
bd8f03a5ef runtime: remove agent abstraction
This PR will delete agent abstraction and use Kata agent as the only one agent.

Fixes: #377

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-08 10:07:40 +08:00
Fupan Li
350831b18b Merge pull request #386 from liubin/2.0-add-metrics-docs
docs: add metrics design documents for Kata 2.0
2020-07-08 09:45:00 +08:00
Fupan Li
92697a197f Merge pull request #297 from liubin/2-dev/metrics
Kata 2.0: add metrics for agent/guest/shim
2020-07-08 09:44:20 +08:00
bin liu
41c04648ad runtime: fix wrong issue links
Fix issue links in source codes.

Fixes: #391

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-07 16:35:43 +08:00
Fupan Li
57dfda9b3d Merge pull request #365 from liubin/feature/delete-shim-364
runtime: clean up shim abstraction
2020-07-07 09:54:27 +08:00
Fupan Li
e1cbc60c13 Merge pull request #376 from liubin/368/delete-old-store
runtime: remove old store
2020-07-07 09:53:10 +08:00
fupan.lfp
83b2366560 config: there is no need to check vhost-vosck for FC
Since the FC used the hybrid vsock, there's no need
to check whether the vhost vsock suported by host.

Fixes: #387

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-07-06 16:02:37 +08:00
bin liu
d96b3063e0 docs: add metrics design documents for Kata 2.0
Add basic design for how metrics service works in Kata 2.0.

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-06 11:04:48 +08:00
GabyCT
3e6e3a2cd4 Merge pull request #380 from devimc/2020-07-02/versions/revertQEMU5
versions: Revert "versions: update QEMU to 5.0.0"
2020-07-03 13:10:39 -05:00
Julio Montes
b28b850a79 versions: Revert "versions: update QEMU to 5.0.0"
This reverts commit 15af20b6da.

kubernetes test are failing randomly with QEMU 5.0.0, let's go back to
QEMU 4.1.1 and debug the failures with QEMU 5

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

fixes #379

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-03 16:12:31 +00:00
Julio Montes
5ff530371e tools: fix branch and runime repo
Kata 2.0 lives in `github.com/kata-containers/kata-containers`, so all scripts
should point to it.
Currently the branch for Kata 2.0 is 2.0-dev not master, then the branch envar
must be used instead of hardcoding `master` as default branch.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-03 16:12:22 +00:00
Julio Montes
56b50785f0 Merge pull request #381 from bergwolf/oom
virtcontainers: GetOOMEvent should have no timeout
2020-07-03 07:18:34 -05:00
bin liu
24ea3f0127 virtcontainers: GetOOMEvent should have no timeout
So that waiter gets notified when oom happens.

Signed-off-by: bin liu <liubin0329@gmail.com>
2020-07-03 18:43:25 +08:00
Peng Tao
e35646cd38 Merge pull request #373 from likebreath/fix-248
agent: device: Allow "VmPath" to be used when adding block devices
2020-07-03 18:04:05 +08:00
bin liu
1b75daa00f runtime: add new command to collect metrics from Kata containers
Add a new command to collect metrics and return metrics to Prometheus.

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-02 17:54:54 +08:00
bin liu
5200ac0678 runtime: remove old store
Remove old store for Kata 2.0.

Fixes: #368

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-02 16:12:05 +08:00
bin liu
186fed2a11 runtime: add implementation of GetMetrics
add implementation of `GetMetrics` for runtime.

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-02 10:58:14 +08:00
bin liu
0c4c69de17 agent: add GetMetrics implementation
add implementation of `GetMetrics` for agent.

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-02 10:42:23 +08:00
bin liu
9fd3e48c80 agent: add new pb message GetMetrics
Add new message and generated codes for `GetMetrics` between runtime and agent.

Signed-off-by: bin liu <bin@hyper.sh>
2020-07-02 10:41:17 +08:00
Bo Chen
4b01ec1f3c Merge pull request #367 from bergwolf/rust-version
versions: specify rust version
2020-07-01 14:41:25 -07:00
Bo Chen
9c501f3d0a agent: device: Allow "VmPath" to be used when adding block devices
When the "PCIAddr" (BDF information) is available, we allow to use the
predicted "VmPath" (from kata-runtime) to locate the block device in the
agent. This is a special code path for supporting block-device/volume
passthrough w/ cloud-hypervisor when the BDF information is not
available (as of clh v0.8.0).

This is mainly porting the changes from kata-agent PR https://github.com/kata-containers/agent/pull/790,
as the related changes from kata-runtime is ported to kata 2.0 earlier
this week (https://github.com/kata-containers/kata-containers/pull/362).

Note that the upstream clh recently added the support of returning BDF
information for hotplugged devices. We will consolidate/remove this
special code path for the next upgrade of clh version in kata.

Fixes: #248

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-07-01 11:31:42 -07:00
Julio Montes
5649f3cfcb Merge pull request #371 from devimc/2020-07-01/versions/qemu5
versions: update QEMU to 5.0.0
2020-07-01 12:20:10 -05:00
Julio Montes
15af20b6da versions: update QEMU to 5.0.0
New features that can improve/impact in kata containers:

x86:
    VMX features can be enabled/disabled via the "-cpu" flag.
    When nested virtualization is enabled with an option like
    "-cpu Haswell,+vmx", the set of VMX features will also be constrained to
    what was available on the corresponding CPU model.
    New "microvm" machine type that has virtio-mmio instead of PCI, and no ACPI
    support (so no hotplug too). The new machine type is meant as a baseline
    for performance optimizations of QEMU, firmware and guests. While inspired
    by Firecracker it is not entirely compatible with it (for example it does
    not have Firecracker's userspace IP stack and MicroVM Metadata Service).
    Reduce memory footprint when booting uncompressed kernels.

ARM:
    We now correctly support more than 256 CPUs when using KVM
    The virt board now supports memory hotplugging, when used with a UEFI
    guest BIOS and ACPI.
    virtio-iommu is now supported with machvirt.
    The Cortex-M7 CPU is now supported.

s390:
    Using KVM now explicitly requires a host kernel version of at least 3.15
    (which includes the 'flic' KVM device). This had been broken since QEMU
    2.10 already.

ppc64le:
    pseries machine type, now consumes less host resources when running a KVM
    guest with XIVE (with a recent enough host kernel). This allows running
    more concurrent guests with KVM accelerated XIVE.
    NVDIMMs with file backend is now supported and SLOF updated to work with
    iommu_platform=on for virtio devices.

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

fixes #372

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-07-01 09:26:16 -05:00
Xu Wang
2b619c0697 Merge pull request #362 from bergwolf/runtime-port-4
Runtime port  -- wave 3
2020-06-30 22:48:56 +08:00
Peng Tao
a06d01e114 versions: specify rust version
We can only handle SEMVER-style versions in the script.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 22:32:41 +08:00
Bo Chen
7ae4376bf4 clh: vsock: Use the updated VsockConfig
[ port runtime commit 364435a6a18bfbb1277512431040bf085554ffdf ]

The new release of clh v0.8.0 updated the 'VsockConfig' of its HTTP API,
which requires changes on our clh driver.

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:39 -07:00
Bo Chen
d8a333b935 versions: Move to cloud-hypervisor v0.8.0
[ port from runtime commit 17d265af6fc1f0913545bfa64e3e1a497f3e44c0 ]

Major new functionalities added in clh v0.8.0 include Experimental
Snapshot and Restore Support, Experimental ARM64 Support, 5-level guest
paging support, etc. Also, there are quite some bug fixings and CLI/API
changes for cleanup. More details can be found in the release note:
https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v0.8.0.

Changes:

52b83969 build, release-notes: Document 0.8.0 release
776f8fc5 build: Update Cargo.lock
3f18f93f docs: Add a guide for testing on AArch64
97a1e5e1 vmm: Exit VMM event loop after guest shutdown for AArch64
5cd1730b vmm: Configure VM on AArch64
917219fa vmm: Enable VCPU for AArch64
b5f1c912 vmm: Enable memory manager for AArch64
eeeb45bb vmm: Enable device manager for AArch64
e9488846 vm-allocator: Enable vm-allocator for AArch64
5343b0ac net_util: Fix usage of deprecated mac_address method
bf37ebdc arch: x86_64: Add 5th level of paging when needed
abd6204d source: Fix file permissions
02ac1820 scripts: Ensure musl-gcc is used by musl build
cc85d896 tests: Extend test_*_reboot with checks on fd leaking
2ae547cf build(deps): bump vmm-sys-util from 0.6.0 to 0.6.1
f3556279 build(deps): bump serde_json from 1.0.54 to 1.0.55
dc034eb3 scripts: Only use musl for the Rust components
176d6716 build: Run musl builds in parallel to glibc builds
083189e5 build(deps): bump vcpkg from 0.2.9 to 0.2.10
2334b521 build(deps): bump syn from 1.0.30 to 1.0.31
99c99c24 build(deps): bump serde_json from 1.0.53 to 1.0.54
96a5e22b resources: kernel: Enable 5 levels of page table
653087d7 vmm: Reduce MMIO address space by 4KiB
5f0b6201 arch: x86_64: Enable CR4 LA57 feature
09fd3259 build: Use fork of vm-memory with less performance impact
5f9e079a device: Add AArch64 RTC PL031 implementation
625bab69 vmm: api: Allow to delete non-booted VMs
313883f6 remove duplicated structure InitrdConfig
afe60808 build(deps): bump synstructure from 0.12.3 to 0.12.4
aa79a92c tests: Add integration test for unprivileged network
9b71ba20 vmm, vm-virtio: Stop always autogenerating a host MAC address
1f8b6fa9 net_util: Allow retrieving the MAC address from the TAP device
929d70bc net_util: Only try and enable the TAP device if it not already enabled
eda9bfc7 vhost_user_fs: Replace the '--sock' parameter with '--socket'
a8cdf2f0 tests,vm-virtio,vmm: Use 'socket' for all CLI/API parameters
90e7accf ch-remote: Show response body from error
e436bbf3 build: Install libfdt in github cross-build workflow
2d13751d aarch64: Porting fdt related files from Firecracker
5a18dd36 aarch64: Porting AArch64 register implementation from Firecracker
d605fda3 aarch64: Porting GIC source files from Firecracker
ce624a6d aarch64: Add memory layout for AArch64
c7d44b88 build(deps): bump quote from 1.0.6 to 1.0.7
7c91dfae build(deps): bump proc-macro-nested from 0.1.4 to 0.1.5
17c16e5c build(deps): bump pin-project from 0.4.19 to 0.4.20
a2398742 build(deps): bump arc-swap from 0.4.6 to 0.4.7
b31fe72e build(deps): bump openssl-sys from 0.9.57 to 0.9.58
96497004 build(deps): bump dirs-sys from 0.3.4 to 0.3.5
eabf43fb Revert "tests: Extend test_*_reboot with checks on fd leaking"
7dc4e913 tests: Extend test_*_reboot with checks on fd leaking
601d898f build(deps): bump pin-project from 0.4.17 to 0.4.19
6ff107af vm-device: Switch to use get_host_address_range in vfio-ioctls
3336e801 vfio: Switch to the vfio-ioctls crate ch branch
d24aa72d vfio: Rename to vfio-ioctls
53ce5298 vfio: Move the PCI implementation to the PCI crate
8f7dc735 vmm: Move Vcpu::configure() to arch crate
969e5e0b vmm: Split configure_system() from load_kernel() for x86_64
20cf21cd vmm: Change booting process to cover AArch64 requirements
61aa4615 vhost_user_net: Implement VIRTIO_RING_F_EVENT_IDX
a4d377a0 vm-virtio: net: Implement VIRTIO_RING_F_EVENT_IDX
f0697073 vm-virtio: net: Handle lost interrupts on restore
a5596020 vm-virtio: Add some info! level debugging interrupt generation
cc51fdb8 vhost_user_net: Use NetQueuePair from vm-virtio
fcc62efc vm-virtio: net: Prepare NetQueuePair for use in vhost-user-net
2dbd1186 vm-virtio: net: Split network handling
237cb184 vm-virtio: net: Add further missing error reporting
36d072e6 vm-virtio: Add error propagation for TAP listener (un)registration
3151b5d8 vm-virtio: net: Refactor to support code reuse
22be88d3 build(deps): bump vfio-bindings from `887b3cf` to `f08cbcb`
6121f462 build(deps): bump vfio-bindings from `46ef9d4` to `887b3cf`
b731e63a build(deps): bump ryu from 1.0.4 to 1.0.5
d2d5ccb1 build(deps): bump proc-macro2 from 1.0.17 to 1.0.18
a1b9131b build(deps): bump syn from 1.0.29 to 1.0.30
2571b279 build(deps): bump vcpkg from 0.2.8 to 0.2.9
57f477ef build(deps): bump syn from 1.0.28 to 1.0.29
8a08ea46 build(deps): bump serde_derive from 1.0.110 to 1.0.111
b8ae30d4 build(deps): bump serde from 1.0.110 to 1.0.111
0a0fb246 build(deps): bump syn from 1.0.27 to 1.0.28
bc2921b2 build(deps): bump regex from 1.3.8 to 1.3.9
917ad530 build(deps): bump regex from 1.3.7 to 1.3.8
aac87196 build(deps): bump vm-memory from 0.2.0 to 0.2.1
4c2e6054 build: Update to latest version of container
c471ae94 Dockerfile: Update to latest Rust toolchain: 1.43.0
c31ad72e build: Address issues found by 1.43.0 clippy
fbd1a6c5 vmm: api: Return complete error responses in handle_http_request()
0728bece vmm: seccomp: Ensure that umask() can be reprogrammed
3497eeff main: Set the umask to 0077
c1d15de7 build(deps): bump syn from 1.0.25 to 1.0.27
a4bb96d4 build(deps): bump libc from 0.2.70 to 0.2.71
bfd52ad8 build(deps): bump linux-loader from `bd01b6d` to `1af92d2`
8f1f9d9e devices: Implement InterruptController on AArch64
b32d3025 devices: Refactor IOAPIC to cover other architectures
d5884180 build(deps): bump syn from 1.0.24 to 1.0.25
83c18de5 build(deps): bump proc-macro-hack from 0.5.15 to 0.5.16
7708b95e build(deps): bump syn from 1.0.23 to 1.0.24
749f2f03 build(deps): bump proc-macro2 from 1.0.15 to 1.0.17
c98d6fd0 build(deps): bump openssl-sys from 0.9.56 to 0.9.57
a9ca493b build(deps): bump proc-macro2 from 1.0.14 to 1.0.15
974c7138 build(deps): bump thiserror from 1.0.18 to 1.0.19
321c479b build(deps): bump proc-macro2 from 1.0.13 to 1.0.14
4f5c8be3 build: Added a workflow to cross-build targetting AArch64
1befae87 build: Fixed build errors and warnings on AArch64
0090ec2d build: Updated development utilities for AArch64
af8292b6 vmm, config, vhost_user_blk: remove "wce" parameter
9101bdd7 vm-virtio: block: Ensure backing file consistency
dc66eee8 vhost_user_block: Ensure backing file consistency
10db2131 vm-virtio: block: Add "writeback" control to Request
b94d9a30 vhost_user_backend: Allow backends to know features that can be used
9d88ba7a vhost_user_block: Use VirtioBlockConfig from vm-virtio
1fac2632 vm-virtio: Use config name as per spec
077a5c36 build(deps): bump syn from 1.0.22 to 1.0.23
a813b57f vm-virtio, vhost_user_{fs,block,backend}: Move EVENT_IDX handling
8ae7a38d build: Use same virtio-bindings version
3947809c vm-virtio: block: Ensure that VIRTIO_BLK_T_FLUSH requests actually sync
ca6edafb build(deps): bump cc from 1.0.53 to 1.0.54
a7f236b8 ci: Extend snapshot/restore to validate virtio-vsock
f442c62b vm-virtio: Implement Snapshottable trait for Vsock
f9759988 ci: Extend snapshot/restore test with virtio-iommu
646d33fe vm-virtio: Set queue fields explicitely during restore
02cbea54 vm-virtio: Implement Snapshottable trait for Iommu
4f89cb05 build(deps): bump linux-loader from `43d1c51` to `bd01b6d`
14db7b0a build(deps): bump addr2line from 0.12.0 to 0.12.1
9f2eddd9 ci: Fix test_serial_off
7c3e19c6 vhost_user_backend, vmm: Close leaked file descriptors
35782bd9 vm-virtio: Close file descriptors created by epoll::create()
039accc1 vhost_user_net, vm-virtio: Interrupt guest when TX queue is updated
c8a081e4 build(deps): bump pin-project from 0.4.16 to 0.4.17
b80a7d01 build(deps): bump vmm-sys-util from 0.5.0 to 0.6.0
e6fd6d63 vhost_user_block: Implement VIRTIO_BLK_F_FLUSH
95e3edda build(deps): bump quote from 1.0.5 to 1.0.6
d760010c build(deps): bump ppv-lite86 from 0.2.6 to 0.2.8
0cde08a7 build(deps): bump hermit-abi from 0.1.12 to 0.1.13
3adfe3fb build(deps): bump syn from 1.0.21 to 1.0.22
85aadd15 build(deps): bump proc-macro2 from 1.0.12 to 1.0.13
c764c212 build(deps): bump thiserror from 1.0.17 to 1.0.18
4366dd92 vm-virtio: block: Add support for VIRTIO_RING_F_EVENT_IDX
5a55fc07 vhost_user_fs: Fix seccomp filter for musl
391508f0 tests: Add tests checking for host MAC address setting
1b8b5ac1 vhost-user_net, vm-virtio, vmm: Permit host MAC address setting
11049401 vmm: seccomp: Add ioctl() commands interface hardware address
59e1361f net_util: tap: Add support for setting tap MAC address
68fc4329 vmm: Update seccomp filters with clock_nanosleep
badf8261 build(deps): bump anyhow from 1.0.30 to 1.0.31
7b10f732 build(deps): bump cc from 1.0.52 to 1.0.53
4120a7de vhost_user_fs: Add seccomp
6aa29bdb vmm: api: Use a common handler for data actions too
0fe223f0 vmm: api: Extend VmAction to reduce code duplication
6ec605a7 vmm: api: Refactor generic action handler
c652625b vmm: api: Add a default implementation for simple PUT requests
a3e8bea0 vmm: api: Move HttpError enum to http module
6aab0a54 vhost_user_fs: Implement support for optional sandboxing
c4bf383f vhost_user_*: Create a vhost::Listener in advance
fa844865 vhost_user_fs: Allow callers to provide a fd for /proc/self/fd
831cff3f vhost_user_fs: Use a fd for /proc/self/fd instead of /proc
ba4ec7fc ci: Extend snapshot_restore_test with hotplug
9e165c2c ci: Enable snapshot/restore integration test
c566f1f0 build(deps): bump once_cell from 1.3.1 to 1.4.0
7ffde295 build(deps): bump backtrace from 0.3.47 to 0.3.48
e9c2dbc8 build(deps): bump anyhow from 1.0.29 to 1.0.30
9ccc7daa build, vmm: Update to latest kvm-ioctls
80aa0a75 tests: Test unplugging virtio-fs
88ec93d0 vmm: config: Add missing "id" from FsConfig parsing
0f89f5ec build(deps): bump anyhow from 1.0.28 to 1.0.29
ab3d374a build(deps): bump syn from 1.0.20 to 1.0.21
35b8992e build(deps): bump thiserror from 1.0.16 to 1.0.17
3415b11d build(deps): bump quote from 1.0.4 to 1.0.5
6989bf05 build(deps): bump backtrace from 0.3.46 to 0.3.47
2991fd2a build(deps): bump libc from 0.2.69 to 0.2.70
c37da600 vmm: Update DeviceTree upon PCI BAR reprogramming
d0ae9d7c vmm: Share the DeviceTree across threads
5e9d2545 vmm: Store and restore virtio-pci BAR resources
02bd50f6 vm-virtio: Add helper to set the configuration BAR value
8a826ae2 vmm: Store and restore virtio-pci device on right PCI slot
98dac352 vmm: Add optional PCI b/d/f to each DeviceNode
1e0ebb76 pci: Allow specific PCI b/d/f to be reserved
e577b64a build(deps): bump syn from 1.0.19 to 1.0.20
36bffff2 tests: Expand the test_large_memory() test to cover lots of vCPUs
b9ba81c3 arch, vmm: Don't build mptable when using ACPI
16ac24d8 tests: Only test "noacpi" test when we don't build with ACPI
bb8d19bb arch: Check RSDP address does not go past memory
1c44e917 build(deps): bump clap from 2.33.0 to 2.33.1
4cd2eccf build(deps): bump signal-hook from 0.1.14 to 0.1.15
308b790c vm-virtio: Implement Snapshottable trait for VirtioPciDevice
6d594286 vm-virtio: Implement Snapshottable trait for VirtioPciCommonConfig
e1701f11 pci: Implement Snapshottable trait for PciConfiguration
376db311 pci: Implement Snapshottable trait for MsixConfig
52ac3779 tests: Remove network interface from test_memory_overhead
b57eeb96 vhost_user_block: Add "queue_size" to --block-backend
5016fcf8 vhost_user_block: Use config::OptionParser to simplify block backend parsing
592de97f vhost_user_net: Use config::OptionParser to simplify net backend parsing
f3f398eb vhost_user_block: Consolidate the vhost-user-block backend syntax
3220292d vhost_user_net: Consolidate the vhost-user-net backend syntax
0d2be3b6 build(deps): bump serde from 1.0.107 to 1.0.110
9d8754c6 build(deps): bump pin-project from 0.4.13 to 0.4.16
9bac13de build(deps): bump serde_json from 1.0.52 to 1.0.53
e8d4a13e build(deps): bump serde_derive from 1.0.107 to 1.0.110
d8f181c5 build(deps): bump futures from 0.3.4 to 0.3.5
1e44ac51 build(deps): bump serde_derive from 1.0.106 to 1.0.107
c197bd6f build(deps): bump serde from 1.0.106 to 1.0.107
475040b2 vm-virtio: Correctly reset the virtqueues
d809f2fe vm-virtio: Add virtio reset() support to MmioDevice
0d720cc3 bin: ch-remote: Ensure ch-remote supports syntax it advertises
74d88c4c build(deps): bump openssl-sys from 0.9.55 to 0.9.56
9adc32a0 tests: Print out details for smaps in test_memory_overhead
250f825f tests: Check that requesting tap name for virtio-net succeeds
006da040 tests: Check tap name provided is used for vhost_user_net tests
54b3329f tests: Add tests that use (non-existing) named tap
6fde2d18 build: Strip the binaries before using/releasing them
a4d23c3c build(deps): bump syn from 1.0.18 to 1.0.19
12e00c0f vmm: cpu: Retry sending signals if necessary
31bde4f5 vmm: Unpark the DeviceManager threads in shutdown
801e72ac vmm: cpu: Unpause vCPU threads
91a4a258 vmm: cpu: When coming out of the pause event check for a kill signal
cd60de8f Revert "vmm: vm: Unpark the threads before shutdown when the current state is paused"
797cd13d build(deps): bump vec_map from 0.8.1 to 0.8.2
f6a71bec vmm: Add unit tests for DeviceTree
64e01684 vmm: Create new module device_tree
3b77be90 vmm: Add device_node!() macro to improve code readability
83ec716e vmm: Create breadth-first search iterator for the DeviceTree
b91ab1e3 vmm: Remove the list of migratable devices
1be70372 vmm: Don't use migratable_devices for restore
bc608439 vmm: Add migratable field to the DeviceNode
7fec020f vmm: Create a dedicated DeviceTree structure
14b379de vmm: Add an identifier field to DeviceNode structure
0805d458 vmm: Add support for multiple children per DeviceNode
daaeba51 vmm: Change Node into DeviceNode
5c7df03e vmm: Store and restore virtio-pmem resources
2e6895d9 vmm: Store and restore virtio-fs resources
987f8215 vmm: Store and restore virtio-mmio resources
9cb1e1cc vmm: Perform MMIO allocation from virtio-mmio device creation
adf29706 vmm: Create devices in different path if restoring the VM
d39f91de vmm: Reorganize DeviceManager creation
89c2a586 vmm: Restore devices following the device tree
52c80cfc vmm: Snapshot and restore DeviceManager state
5b408eec vmm: Create a device tree
a6fde0bb vm-device: Define a Resource
b8841d7a tests: Validate vsock functionality works across a reboot
fec97e05 vm-virtio, vmm: Delete unix socket on shutdown
5109f914 vmm: config: Reject attempts to use VFIO or IOMMU without PCI
cb220ae1 tests: Add some debugging to test_memory_overhead
eb3d9d15 build(deps): bump ssh2 from 0.8.0 to 0.8.1
59b73034 build(deps): bump failure from 0.1.7 to 0.1.8
dd0791d7 build(deps): bump pnet from 0.25.0 to 0.26.0
7660a104 build(deps): bump failure_derive from 0.1.7 to 0.1.8
327d67fa virtio-mem: Return reize error in MemEpollHandler.run
bc318b64 build(deps): bump proc-macro2 from 1.0.10 to 1.0.12
5571c6af build(deps): bump signal-hook from 0.1.13 to 0.1.14
af3d0802 build(deps): bump pnet_macros from 0.25.0 to 0.26.0
678855e8 build(deps): bump term_size from 0.3.1 to 0.3.2
2a16ce7e build(deps): bump quote from 1.0.3 to 1.0.4
99e3a150 build(deps): bump backtrace-sys from 0.1.36 to 0.1.37

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:39 -07:00
Jose Carlos Venegas Munoz
9177d3a3b7 virtiofsd: Use cache=auto
[ port from runtime commit 4645d3e6ef2e99dae1f2b3a7bfded6fc304d3023 ]

Today for virtiofsd kata sets by default `cache=always`. This option is
useful for performance but if the shared files are modified from the
host changes are not updated in the guest as virtiofsd uses cached value
all time.

This patch changes to  `cache=auto` to fix consistency issues. The option
can still be set to always if it is wanted by the user.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:39 -07:00
Pradipta Kr. Banerjee
d66f21921b cli: Fix kata-env output on Power
[ port from runtime commit 9ac39116b08148de8e66abfca2e5407bc153af87 ]

kata-env output always shows "VMContainerCapable=false" on Power.
This patch fixes the same.

Signed-off-by: bpradipt@in.ibm.com
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:39 -07:00
Jose Carlos Venegas Munoz
94fdec4e4b clh: Allow add virtiofs args and cache options from config
[ port from runtime commit e5a3211c74e20e9878fd0f5d1c80a3c4354eabd1 ]

Today some options for virtiofsd could improve compatibility
for example xattrs for dnf or cache=auto for file consistency
for changes in the host. Allow users can enabled as requiered.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:39 -07:00
Bo Chen
653df674d3 kata_agent: Add unit tests
[ port from runtime commit 6be76fcd07a3d74ca5521af2feaf966dd6f2c344 ]

This patch adds the unit test for 'handleDeviceBlockVolume()'.

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:38 -07:00
Bo Chen
6da49a0418 clh: Clear the "PCIAddr" field while blk device hotplug
[ port from runtime commit 5b96e01f1ba3b0458539c1c920d0c1aab7d5968e ]

We explicitly set "PCIAddr" to NULL, so that the "VirtPath" field can be
used by the agent to create the container.

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:38 -07:00
Bo Chen
2d6c0731eb kata_agent: Pass "VirtPath" with "PCIAddr" of blk devices to agent
[ port from runtime commit 50c1dce137bb3d608daa931c01e4941ed5fdb6cc ]

In case the "PCIAddr" of block devices is not available (e.g.
cloud-hypervisor), we also pass the "VirtPath" to the agent for adding
block devices to the container.

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:38 -07:00
Bo Chen
56ae20990d kata_agent: Allow to use "VirtPath" as volume source for blk devices
[ port from runtime commit aea29b64b66f75049cb045f9e41dff2becdbebdc ]

When the "PCIAddr" of block device is not available (e.g. cloud-hypervisor), we
allow to use the "VirtPath" as the volume source for creating containers.

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:38 -07:00
Shuicheng Lin
bdd386ba14 qemu: Fix rtc parameter is not set to qemu
[ port from runtime commit 379f19f7ccd71ebe938d9d6fe3cfe5f05f4f02bf ]

Add default value for Clock, otherwise rtc parameter will be dropped
by Valid function. "host" is the default value in qemu for rtc clock.

Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:38 -07:00
Pradipta Kr. Banerjee
51a6d60ab4 qemu: Remove PMU feature for Power (ppc64le) platform
[ port from runtime commit 6b32472c2138536ea7e859360498f175601d9ec9 ]

The bug got introduced in 06571f0

Signed-off-by: bpradipt@in.ibm.com
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-30 04:04:38 -07:00
bin liu
3ece4130c9 runtime: clean up shim abstraction
This PR will delete shim abstraction from sandbox.

Fixes: #364

Signed-off-by: bin liu <bin@hyper.sh>
2020-06-30 15:52:20 +08:00
Yang Bo
c03b796cfe Merge pull request #356 from lifupan/fix_log
Fix issue of debug console
2020-06-30 11:48:17 +08:00
Jia He
3a17e7aafe qemu: Remove pmu limitation in nested virtualization of amd/ppc64le
[ port from runtime commit 18662e16687453185ff4cf99b495a34e3ea9935f ]

It's up to the user enable/disable pmu. After previous commit, the default
pmu option has been set to off.

This patch removes the hard limitation and unit test codes.

Signed-off-by: Jia He <justin.he@arm.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 20:33:46 -07:00
Jia He
06571f0377 build: Add "pmu=off" to default cpu_features option
[ port from runtime commit 41a06d4961f51af4ec4799aaee202c744584f31e ]

The user sometimes doesn't care about pmu usage(e.g. perf tool profiling).
But pmu will cost significant overhead on boot time and virtualization
context switch. E.g. on arm64, if guest pmu is enabled, kvm should save
and restore all PMU registers when guest/host switching.

for dmesg comparision:
Before:
[    0.007620] bus: 'platform': driver_probe_device: matched device pmu with driver armv8-pmu
[    0.007622] bus: 'platform': really_probe: probing driver armv8-pmu with device pmu
[    0.036282] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    0.036285] driver: 'armv8-pmu': driver_bound: bound to device 'pmu'
[    0.036295] bus: 'platform': really_probe: bound device pmu to driver armv8-pmu

After:
[    0.007935] bus: 'platform': driver_probe_device: matched device alarmtimer with driver alarmtimer
[    0.007937] bus: 'platform': really_probe: probing driver alarmtimer with device alarmtimer
[    0.007940] driver: 'alarmtimer': driver_bound: bound to device 'alarmtimer'
[    0.007944] bus: 'platform': really_probe: bound device alarmtimer to driver alarmtimer

Because s390 doest support "pmu=off", keep the default CPUFEATURES to be ""
instead of "pmu=off".

Signed-off-by: Jia He <justin.he@arm.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 20:20:58 -07:00
Jia He
115dfa19cd annotations: add cpu_features
[ port from runtime commit f03c17d107999fd68da87d98ab3e242ac7843051 ]

So that users can use annotations to set it.

Signed-off-by: Jia He <justin.he@arm.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 20:19:21 -07:00
Jia He
fa9d619e8a qemu: add cpu_features option
[ port from runtime commit 0100af18a2afdd6dfcc95129ec6237ba4915b3e5 ]

To control whether guest can enable/disable some CPU features. E.g. pmu=off,
vmx=off. As discussed in the thread [1], the best approach is to let users
specify them. How about adding a new option in the configuration file.

Currently this patch only supports this option in qemu,no other vmm.

[1] https://github.com/kata-containers/runtime/pull/2559#issuecomment-603998256

Signed-off-by: Jia He <justin.he@arm.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 20:16:11 -07:00
Archana Shinde
520295b938 network: Detect and add static ARP entries
[ port from runtime commit 67d3e2c5c5d11738c0c0ff46b1228909a6c81ab0 ]

Some network plugins add static arp entries in the network namespace.
Scan namespace for static entries and pass these on to the
agent to be added within the guest.

If the grpc api is not implemented by the agent due to a older running
agent, check for this and do not error out to maintain
backward compatibility.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 20:06:15 -07:00
Jose Carlos Venegas Munoz
117ce4ac41 clh: remove slow boot debug flags from kernel cmdline
[ port from runtime commit 6c517548429da06d33172c8e135dc9b9a297175d ]

The systemd debug  and kernel init call debug flags make slow the boot.
The flags are not really related with the hypervisor and
can be added if needed using extra kernel command line options.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 20:03:16 -07:00
Jose Carlos Venegas Munoz
70137962d6 clh: Remove vsock log port in kernel cmdline
[ port from runtime commit 160e3a7c98043a52032b15cc8f6e32a91b032258 ]

Cloud hypervisor logs console via stdout. Using console logs help
to get not only agent logs but early boot kernel logs.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 20:02:30 -07:00
Jose Carlos Venegas Munoz
fd5d139470 clh: Improve hypervisor logging
[ port from runtime commit e1ee00d16ed621594a92ce0456eb048362962ff0 ]

Use systemd-cat to collect hypervisor output. The `systemd-cat` program
will open a journal fd and call `cat(1)` to redirect all the output to
the fd. This requires an extra binary to read from hypervisor stdout
(that has combined stdin, stderr and serial terminal). But because it is
cat the overhead is minimal and only is started on Kata debug mode.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 20:00:34 -07:00
Bo Chen
21f83348e9 clh: Set 'virtio-blk' as the default block device driver
[ port from runtime commit 5e5527204c03036f1d1a6b3122c1e0c3e1d1ba94 ]

The block device driver defaults to 'virtio-scsi' when it is not set in
the hypervisor configuration file, while cloud-hypervisor supports only
'virtio-blk' for its block devices.

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 19:59:02 -07:00
Bo Chen
8b5eed70f7 clh: Enable disk block device hotplug support
[ port from runtime commit c5f97b24d7a1eaac216f144b2c5429feb3451553 ]

With this patch, the container image can be shared from host with guest
as a block device when the 'devicemapper' is used as the storage driver
for docker. Note: The 'block_device_driver="virtio-blk"' entry is
required in the hypervisor config file to work properly.

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 19:58:00 -07:00
Xu Wang
c20179ee0e Merge pull request #353 from bergwolf/runtime-port-2
runtime port -- wave 2
2020-06-30 10:49:39 +08:00
fupan.lfp
883af9c76f agent: set hostname when running as init
it's better to set the right hostname to
guest when run rust-agent as the init process.

Fixes: #355

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-06-29 19:38:48 +08:00
fupan.lfp
899b75f2de agent: fix the issue of missing found right shell
It should iter the shells to find the existing shell
command instead of return an error directly when it
meet an absent shell command.

Fixes: #354

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-06-29 19:38:34 +08:00
Hui Zhu
e761ad318f Merge pull request #352 from bergwolf/runtime-port-1
port runtime commits -- wave 1
2020-06-29 16:33:02 +08:00
Peng Tao
2a8650baa1 agent-ctl: add Cargo.lock
A binary cargo should go with Cargo.lock

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 01:27:50 -07:00
Peng Tao
a8430b3791 gitignore: ignore more files
We don't need to track them.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 01:27:05 -07:00
Christophe de Dinechin
be9ca0d58b qemu: Don't leak file descriptors in case of error
[ port from runtime commit 7b269ff7aa2d62fe12593ff7040798e6c9bd5d65 ]

If we take one of the error paths from setupVirtiofsd() after
opening the fd variable, the fd.Close() function is not called.

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 01:19:18 -07:00
Jose Carlos Venegas Munoz
60606647de virtiofsd: Improve logging
[ port from runtime commit 882a82393305a4b11a77744b5fc77b98e42d15b9 ]

Send virtiofsd logs to syslog in the same way that qemu implementation
does. This requires not to wait for messages from virtiofsd stdout. This
takes the qemu implementation approach. Give the socket fd to virtiofsd.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 01:16:08 -07:00
Alex Price
7e250f29e9 shim: exit out of oom polling if unimplemented
[ port from runtime commit 86f581068eb9dc4b6862c7415cdc912e111177dd ]

This exits out of polling for OOM events if the getOOMEvent
method is unimplemented.

Signed-off-by: Alex Price <aprice@atlassian.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 01:11:54 -07:00
Alex Price
9f8d1baa57 virtcontainers: tests fix, nit fix
[ port from runtime commit b4833a48c81132e5a6b1c25a764cd0ebbdc6afff ]

fix tests and nit

Signed-off-by: Alex Price <aprice@atlassian.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 01:08:54 -07:00
Liam Merwick
d3b3e8bee6 virtcontainers: x86: Support microvm machine type
[ port from runtime commit 6aff077901021d9a0075c446dfe281b2487e1487 ]

With the addition of support to govmm for multiple transports (intel/govmm#111)
and microvm (intel/govmm#121) we can now enable support for the 'microvm'
machine type in kata-runtime.

Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 01:06:30 -07:00
Alex Price
198339367b virtcontainers: add support for getOOMEvent agent endpoint to sandbox
[ port from runtime commit 86686b56a2bf7f6dd62f620278ae289564da51d0 ]

This adds support for the getOOMEvent agent endpoint to retrieve OOM
events from the agent.

Signed-off-by: Alex Price <aprice@atlassian.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 00:51:23 -07:00
Alex Price
7c205be27d virtcontainers: add support for getOOMEvent agent endpoint to sandbox
[ port from runtime commit 86686b56a2bf7f6dd62f620278ae289564da51d0 ]

This adds support for the getOOMEvent agent endpoint to retrieve OOM
events from the agent.

Signed-off-by: Alex Price <aprice@atlassian.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 00:42:08 -07:00
Peng Tao
380f07ec4b proto: update agent protocol
To add GetOOMEvent API.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-29 00:34:38 -07:00
James O. D. Hunt
dbc1c30d9e versions: Remove golangci-lint and gometalinter entries
Removed the `golangci-lint` and `gometalinter` entries from the versions database:

- The `golangci-lint` package is now tracked in the `tests` versions database:

  https://github.com/kata-containers/tests/blob/master/versions.yaml

- The `gometalinter` package is no longer used.

See:

- https://github.com/kata-containers/tests/issues/1323
- d676140510

Fixes: #2636.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-28 20:51:51 -07:00
Jia He
6e7dd435a2 qemu: arm64: Set defaultGICVersion to 3 to limit the max vCPU number
[ port from runtime commit ee985a608015d81772901c1d9999190495fc9a0a ]

After removing dectect of host gic version, we need to limit the max vCPU
in different cases.

Given that in most cases, Kata is running on gicv3 host, set it as default
value. If the user really want to run Kata on gicv2 host, he/she need to
set default_maxvcpus in toml file to 8 instead of 0.

In summary, If the user uses host gicv3 gicv4, everything is fine
            If the user uses host gicv2, set default_maxvcpus=8

Signed-off-by: Jia He <justin.he@arm.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-28 20:48:48 -07:00
Wainer dos Santos Moschetta
93d1f7b4e3 Subject: [PATCH] versions: Misc changes to descriptions
[ port from runtime commit c4b5922df2 ]

Most of the description fields have capitalized text,
some of those that don't are then converted on this
change.

Fixed spelling of 'required'.

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-28 20:45:21 -07:00
Jia He
17b3021b54 Subject: [PATCH] qemu: arm64: Don't detect gic version by /proc/interrupts
[ port from runtime repository commit 4d4a153af5cb145215cb6e6e386eac2bcb8c3e32 ]

Commit b4385901da ("qemu/arm64: Detect host GIC version to configure guest
GIC") reads /proc/interrupts to detect the host gic version.

But on a ThunderX2 host with 224 cpus, the /proc/interrupts is ~762K bytes.
Hence it will costs ~900K bytes memory overhead.
From the go tool pprof results:
      flat  flat%   sum%        cum   cum%
  976.89kB   100%   100%   976.89kB   100%  github.com/kata-containers/runtime/virtcontainers.getHostGICVersion
Although the allocated memory will be freed, seems it worthy removing that
for speed up the runtime.

As per [1], there is no perfect way to detect the gic version on host.
At qemu side, if we use "gic-version=host", qemu will automatically detect
the verion by kvm ioctl. So we'd better let qemu determine the gic version.

If the user really want to start vm with gic-verion=2, he/she can set it
in machine_accelerators option.

[1]https://lists.cs.columbia.edu/pipermail/kvmarm/2014-October/011690.html

Signed-off-by: Jia He <justin.he@arm.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-28 20:43:16 -07:00
Penny Zheng
4cda90abcb dax: enable dax on arm64
[ port from runtime repository commit e36389e25e ]

After backporting patch series of enabling memory hot remove on aarch64
to v5.4.x, we finally could enable nvdimm/dax on aarch64.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-28 20:40:41 -07:00
Peng Tao
7a44025464 Makefile: add trace-forwarder/agent-ctl missing targets
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-28 20:36:33 -07:00
Ted Yu
61e011e86b vc: Version support check is ineffective in createSandbox
[ port from runtime repository commit 7e47046111 ]

If major version matches max supported major, we continue comparing the minor version.

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-28 20:32:55 -07:00
Fupan Li
0c5ace57d5 Merge pull request #346 from bergwolf/builder
osbuilder: use newest golang
2020-06-28 17:16:55 +08:00
Fupan Li
acab606f98 Merge pull request #344 from bergwolf/build
Fix make file and trace-forwarder build failure
2020-06-28 17:16:00 +08:00
Peng Tao
ebfbca031b osbuilder: use newest golang
Instead of the oldest one.

Fixes: #345
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-27 20:42:30 -07:00
Peng Tao
0fd1eb59a4 Makefile: add default rule
Otherwise `make` would only build the agent.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-27 20:16:53 -07:00
Peng Tao
3f8d4b6822 trace-forwarder: add Cargo.lock
And rely on protobuf 2.14.0. Otherwise build fails as protobuf 2.15.0
requires unstable cargo.

error[E0658]: non-builtin inner attributes are unstable

Fixes: #343
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-27 20:16:40 -07:00
Peng Tao
e587abe6b4 Merge pull request #333 from jodh-intel/improve-toplevel-makefile
build: Improve top-level Makefile
2020-06-26 16:20:01 +08:00
Peng Tao
a3d77bc0d1 Merge pull request #338 from amshinde/remove-workaround-sharedpid
shimv2 : Remove workaround for sharedPidNs
2020-06-26 16:18:48 +08:00
Peng Tao
9d90906546 Merge pull request #320 from dgibson/cleanups
Clean up some unnecessary data structures
2020-06-26 16:18:16 +08:00
Xu Wang
af4d85c257 Merge pull request #339 from bergwolf/2.0.0-alpha2
release: Kata Containers 2.0.0-alpha2
2020-06-26 15:50:29 +08:00
Peng Tao
fe5b54b38d release: Kata Containers 2.0.0-alpha2
Version bump no changes.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-25 19:02:52 -07:00
Xu Wang
f1945a4680 Merge pull request #335 from bergwolf/cleanup
cleanup: remove redundant files
2020-06-26 10:00:52 +08:00
Archana Shinde
b68d4e45ee shimv2: Removing function as no longer used
Function removeNamespace is no longer used. Get rid of
it.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-06-25 16:50:56 -07:00
Archana Shinde
f570a2cd40 shimv2 : Remove workaround for sharedPidNs
Removing code that existed as a workaround for a bug in
how shared process namespaces were handled in the agent.
That has been long fixed in the agent.
With this, sharedPidNs will now work with shimv2.

Fixes #337

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-06-25 16:50:39 -07:00
James O. D. Hunt
b2cc403eca build: Improve top-level Makefile
Define a set of functions that support the standard rules (build,
install, test, *etc*). Then simply add new components and tools to the
appropriate variable to support all the standard build semantics.

Fixes #331.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-25 11:19:12 +01:00
James O. D. Hunt
f2a19966b2 agent: Rename check rule to test
Changed the name of the rule that runs the tests to "test" for
consistency, but retained `check` for backwards compatibility
for now.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-25 11:18:23 +01:00
Peng Tao
a1ef594d2a cleanup: remove redundant files
And use top level VERSION for all components.

Fixes: #334
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-24 15:57:23 -07:00
Peng Tao
3bbb97add3 Merge pull request #312 from Pennyzct/network_throttle_on_qemu
rate-limiter: network I/O throttling on VM level
2020-06-25 04:59:44 +08:00
Peng Tao
bee02d47ed Merge pull request #310 from fidencio/wip/forward_port_c3d_and_ted_yu_patches
[forward port] Bring to the development branch fixes provided by Christophe De Dinechin and Ted Yu.
2020-06-25 04:57:48 +08:00
Salvador Fuentes
5925ed491a Merge pull request #330 from bergwolf/add-docs
merge documentation and packaging repository
2020-06-24 09:57:32 -05:00
David Gibson
ea1d799f79 qemu: Only one element of qemuPaths map is relevant
The qemuPaths field in qemuArchBase maps from machine type to the default
qemu path.  But, by the time we construct it, we already know the machine
type, so that entry ends up being the only one we care about.

So, collapse the map into a single path.  As a bonus, the qemuPath()
method can no longer fail.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-06-24 21:26:43 +10:00
David Gibson
5dffffd432 qemu: Remove useless table from qemuArchBase
The supportedQemuMachines array in qemuArchBase has a list of all the
qemu machine types supported for the architecture, with the options
for each.  But, the machineType field already tells us which of the
machine types we're actually using, and that's the only entry we
actually care about.

So, drop the table, and just have a single value with the machine type
we're actually using.  As a bonus that means the machine() method can
no longer fail, so no longer needs an error return.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-06-24 21:26:38 +10:00
David Gibson
97a02131c6 qemu: Detect and fail a bad machine type earlier
Currently, newQemuArch() doesn't return an error.  So, if passed an invalid
machine type, it will return a technically valid, but unusable qemuArch
object, which will probably fail with other errors shortly down the track.

Change this, to more cleanly fail the newQemuArch itself, letting us
detect a bad machine type earlier.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-06-24 21:07:33 +10:00
David Gibson
d6e7a58ac9 qemu: Clarify test with bad machine type
The last stanza of TestQemuAmd64Bridges is rather odd.  It tries to create
a qemu instance with a machine type of (QemuQ35 + QemuPC), or in other
words "q35pc", which isn't a thing.

What it's asserting about this is that the returned bridges list is empty
despite asking for bridges, so it looks like what this is really trying to
test is for sane behaviour when given a bad machine type.

So, split this out into a separate test, and make it explicit for clarity.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-06-24 21:02:17 +10:00
Peng Tao
e29546016e readme: fix reference to packaging tools
As we have merged it here.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-24 03:32:15 -07:00
Hui Zhu
b1a1d8e500 Merge pull request #328 from bergwolf/bump-golang
Bump golang version to 1.14.4
2020-06-24 17:52:46 +08:00
Penny Zheng
541fd58791 rate-limiter: add rate limiter unit test
add TestRxRateLimiter and TestTxRateLimiter unit tests

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:17:07 +00:00
Penny Zheng
d3098c56f6 rate-limiter: remove tc-based rate limiter
Removing tc-based rate limiter includes removing htb qdiscs, ifb
interfaces if created, etc.

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:17:07 +00:00
Penny Zheng
08551287b1 rate-limiter: add tc-based tx rate limiter
Implement tc-based tx rate limiter to control network I/O outbound traffic
on VM level for hypervisors which don't support built-in rate limiter.
We take different actions, based on various inter-networking models.
For tcfilters as inter-networking model, we simply apply htb
qdisc discipline on the virtual netpair.
For other inter-networking models, such as macvtap, we resort to ifb,
by redirecting interface ingress traffic to ifb egress, and then apply htb
to ifb egress.

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:17:07 +00:00
Penny Zheng
65a37b7d9c rate-limiter: add ifb interface
Ingress traffic shaping is very limited, and the htb
qdisc discipline couldn't be applied to interface ingress traffic.
Here, we import a new pseudo network interface, Intermediate Functional Block (ifb).
It is an alternative to tc filters for handling ingress traffic, by
redirecting interface ingress traffic to ifb and treat it as egress traffic there.

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:17:07 +00:00
Penny Zheng
cfeb966763 rate-limiter: implement hypervisor-built-in rate limiter
As for hypervisors that support built-in rate limiter, like firecracker,
we use this built-in characteristics to implement rate limiter in kata.
kata-defined rate is in bits with scaling factors of 1000, otherwise fc-defined
rate is in bytes with scaling factors of 1024, so need reversion.

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:16:58 +00:00
Penny Zheng
676ad989d7 rate-limiter: implement tc-based rx rate limiter
Implement tc-based rx rate limiter to control network I/O inbound traffic
on VM level for hypervisors which don't support built-in rate limiter.
In some detail, we use HTB(Hierarchical Token Bucket) qdisc shaping schemes
to control host interface egress traffic.
HTB shapes traffic based on the Token Bucket Filter algorithm, and one
fundamental part of the HTB qdisc is the borrowing mechanism.
Children classes borrow tokens from their parents once they have exceeded rate,
it will continue to attempt to borrow until it reaches ceil. See more details in
https://tldp.org/HOWTO/Traffic-Control-HOWTO/classful-qdiscs.html

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:14:59 +00:00
Penny Zheng
5a58ed29f1 rate-limiter: add getRateLimiter/setRateLimiter in endpoint
We use tc-based or built-in rate limiter to shape network I/O traffic
and they all must be tied to one specific interface/endpoint.
In order to tell whether we've ever added rate limiter to this interface/endpoint,
we create get/set func to reveal/store such info.

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:14:51 +00:00
Penny Zheng
527c3f4634 test: Add unit test TestNewFirecrackerHypervisor
We have defined specific config file configuration-fc.toml for firecracker,
including specific features and requirements, but the related unit test
TestNewFirecrackerHypervisor is missing.

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:14:42 +00:00
Penny Zheng
bd8658e362 rate-limiter: check if hypervisor supports built-in rate limiter
As for some hypervisors, like firecracker, they support built-in rate limiter
to control network I/O bandwidth on VMM level. And for some hypervisors, like qemu,
they don't.

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:14:34 +00:00
Penny Zheng
c2645f5d5a rate-limiter: add rate limiter configuration/annotation on VM level
Add configuration/annotation about network I/O throttling on VM level.
rx_rate_limiter_max_rate is dedicated to control network inbound
bandwidth per pod.
tx_rate_limiter_max_rate is dedicated to control network outbound
bandwidth per pod.

Fixes: #250

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-06-24 06:14:04 +00:00
Peng Tao
782cd2ed10 packaging: merge packaging repository
git-subtree-dir: tools/packaging
git-subtree-mainline: f818b46a41
git-subtree-split: 1f22d72d5d

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 22:58:18 -07:00
Peng Tao
f818b46a41 readme: fix documentation reference link
Now it is inside the docs directory.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 21:27:56 -07:00
Peng Tao
a196c85e04 docs: merge documentation repository
Generated by
git subtree add --prefix=docs git@github.com:kata-containers/documentation.git master

git-subtree-dir: docs
git-subtree-mainline: ec146a1b39
git-subtree-split: 510287204b

Fixes: #329
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 21:27:23 -07:00
Peng Tao
c7b38e2fd7 golang: bump golang version to 1.14.4
That would help checking vendor and go.mod consistency.

Fixes: #327
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 21:07:13 -07:00
Peng Tao
66d385d7ed runtime: remove unneeded tests files
These are moved to the top directory.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 21:06:26 -07:00
Peng Tao
84b8260cfe runtime: fix vendor go.mod inconsistency
As reported by golang 1.14.3.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 21:01:11 -07:00
Peng Tao
ec146a1b39 Merge pull request #321 from dgibson/ppc64le
Don't use some x86 specific kernel and qemu options
2020-06-24 10:28:07 +08:00
Christophe de Dinechin
487520ff74 qemu: Report all errors on virtiofsd execution
The virtiofs daemon may run into errors other than the file
not existing, e.g. the file may not be executable.

Fixes: #2682

Message is now:
  virtiofs daemon /usr/local/bin/hello returned with error:
  fork/exec /usr/local/bin/virtiofsd: permission denied

instead of
  panic: runtime error: invalid memory address or nil

Fixes: #2582

Message is now:
  virtiofs daemon /usr/local/bin/hello-not-found returned with error:
  fork/exec /usr/local/bin/hello-not-found: no such file or directory

instead of:
  virtiofsd path (/usr/local/bin/hello-no-found) does not exist

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-06-23 22:10:44 +02:00
Christophe de Dinechin
042426d73a katatestutils: Use the configured virtiofs daemon path
The current path is hardcoded as follows:
  virtio_fs_daemon = "/path/to/virtiofsd"

Switch to using the value of config.VirtioFSDaemon instead.

Fixes: #2686

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-06-23 22:10:44 +02:00
Ted Yu
342bf3e949 virtcontainers: drop deferred func for GetAndSetSandboxBlockIndex
Fixes #2726

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-06-23 22:10:44 +02:00
Ted Yu
8e3bd358e5 shimv2: check correct error variable for deferred func in service#StartShim
In service#StartShim, there is no applicable error variable which is checked by deferred func because the err variable is redefined.
This PR fixes the error variable.

Fixes #2727

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-06-23 22:10:44 +02:00
GabyCT
1f22d72d5d Merge pull request #1081 from GabyCT/topic/enableu20
obs: Enable ubuntu 20.04
2020-06-23 14:47:09 -05:00
Julio Montes
ac9cc96a6f Merge pull request #304 from fidencio/wip/forward_port_2703
[foward port] Add vIOMMU support to qemu q35
2020-06-23 12:20:52 -05:00
Julio Montes
98f99bb8ff Merge pull request #326 from devimc/2020-06-23/fixLogsParser
virtcontainers: Fix structured logging in cgroups package
2020-06-23 10:39:23 -05:00
Gabriela Cervantes
8fb44eaffc obs: Enable ubuntu 20.04
This PR enables the obs packages for ubuntu 20.04.

Fixes #1080

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-06-23 10:18:25 -05:00
Julio Montes
0ca5983fdf virtcontainers: Fix structured logging in cgroups package
Call the `pkg/cgroups` package `SetLogger()` function to ensure all its log
records contain all required structured logging fields.

Fixes: #2782

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-06-23 07:41:12 -05:00
Julio Montes
7d2a67340b Merge pull request #324 from bergwolf/runtime-1.11.1-for-2.0
port runtime stable commits
2020-06-23 07:12:44 -05:00
Archana Shinde
a976548fb2 shm: handle shm mount backed by empty-dir memory volumes
[cherry picked from runtime commit 3c4fe035e8041b44e1f3e06d5247938be9a1db15]

Check if shm mount is backed by empty-dir memory based volume.
If so let the logic to handle epehemeral volumes take care of this
mount, so that shm mount within the container is backed by tmpfs mount
within the the container in the VM.

Fixes: #323
Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 03:10:45 -07:00
Julio Montes
eed66021da virtcontainers: Fix structured logging in device/config package
[cherry picked from runtime commit d0dbd0485d2f4ec3760f6fa1252ded86a7709042]

Call the `device/config` package `SetLogger()` function to ensure all its log
records contain all required structured logging fields.

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 00:53:05 -07:00
Peng Tao
422768082d agent: update Cargo lock
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 00:52:46 -07:00
James O. D. Hunt
72283b86dd logging: Fix structured logging in store package
[ cherry-picked from runtime commit 13887bf89da9d2d7c215d77ca63129e1813e4c4a ]

Call the `store` packages `SetLogger()` function to ensure all its log
records contain all required structured logging fields.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 00:52:39 -07:00
Peng Tao
042135949a vc: make host shared path readonly
We need to make sure containers cannot modify host path unless it is explicitly shared to it. Right now we expose an additional top level shared directory to the guest and allow it to be modified. This is less ideal and can be enhanced by following method:
1. create two directories for each sandbox:
  -. /run/kata-containers/shared/sandboxes/$sbx_id/mounts/, a directory to hold all host/guest shared mounts
  -. /run/kata-containers/shared/sandboxes/$sbx_id/shared/, a host/guest shared directory (9pfs/virtiofs source dir)
2. /run/kata-containers/shared/sandboxes/$sbx_id/mounts/ is bind mounted readonly to /run/kata-containers/shared/sandboxes/$sbx_id/shared/, so guest cannot modify it
3. host-guest shared files/directories are mounted one-level under /run/kata-containers/shared/sandboxes/$sbx_id/mounts/ and thus present to guest at one level under /run/kata-containers/shared/sandboxes/$sbx_id/shared/

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-06-23 00:44:44 -07:00
Peng Tao
a76443485c Merge pull request #319 from lifupan/device_cgroup
Port rootfs access fix to rust agent
2020-06-23 11:06:17 +08:00
Peng Tao
285411ae89 Merge pull request #314 from jodh-intel/2.0-dev-collect-script-more-twists
runtime: Use more folds in collect script
2020-06-23 10:52:58 +08:00
Julio Montes
18c882b0fa Merge pull request #316 from bpradipt/2.0-ppc64le
qemu: Remove Qemu version check in ppc64le unit test
2020-06-22 11:02:11 -05:00
David Gibson
53473eb2fa qemu: Fix kernel_irqchip=split option for IOMMU enabled sandbox
When an x86 sandbox has a vIOMMU (needed for VFIO), it needs the
'kernel_irqchip=split' option or it can't start.  fdcd1f3a2 attempts to set
that, but ends up just writing it to a temporary (looks like Go for range
loops pass by value).

Fixes: #2694

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-06-22 16:40:18 +02:00
Adrian Moreno
b97287090b qemu: enable iommu on q35
Add a configuration option and a Pod Annotation

If activated:
- Add kernel parameters to load iommu
- Add irqchip=split in the kvm options
- Add a vIOMMU to the VM

Fixes #2694
Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-06-22 16:37:20 +02:00
Adrian Moreno
7faaa06a52 qemu: support appending a vIOMMU device
Add a new function appendIOMMU() to the qemuArch interface
and provide an implementation on amd64 architecture.

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-06-22 16:37:20 +02:00
Adrian Moreno
03735fb9ee vendor: update govmm to bring iommu support
Bring support for vIOMMU. Commit:

7efaf0b1cd

https://github.com/intel/govmm/pull/127

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-06-22 16:37:20 +02:00
Julio Montes
5c35e3e757 Merge pull request #322 from bpradipt/fwport-ppc64le
[Forward port] Bring ppc64le fixes to 2.0 dev tree
2020-06-22 09:14:39 -05:00
David Gibson
f2c6eb1639 qemu: Don't use non-existent pmu=off cpu parameter on POWER
The ppc64 specific qemu setup code adds a "pmu=off" parameter to the cpu
model if the nestedRun option is set.  But, not only does availability of
the pmu have nothing to do with nesting on POWER, there is no "pmu=" cpu
opton for ppc64 at all.

So, simply remove it.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-06-22 23:43:57 +10:00
Pradipta Kr. Banerjee
2d241a6acc qemu: Remove hard-coding of Qemu machine options for ppc64le
Hard-coded Qemu machine options create challenges when running Kata
with latest Qemu (v5.0) or with latest processor version.
This patch makes it configurable by leveraging the existing machine_accelerators
option in configuration.toml.

This patch fixes #2657 for ppc64le

Signed-off-by: bpradipt@in.ibm.com
2020-06-22 06:36:43 +00:00
Pradipta Kr. Banerjee
b4d3a0af87 qemu: Fix Qemu binary path for Power across distros
The default ppc64le Qemu binary path was specific for Ubuntu.
This patch fixes the default binary path for both Fedora and Ubuntu

Fixes: #2738

Signed-off-by: bpradipt@in.ibm.com
2020-06-22 06:35:03 +00:00
David Gibson
773582c56b qemu: Don't apply x86 specific kernel parameters on ppc64le
qemu_ppc64le.go applies the "tsc=reliable", "no_timer_check" and
"noreplace-smp" kernel parameters, despite those being x86 specific.  So,
just remove them.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-06-22 00:27:43 +10:00
GabyCT
510287204b Merge pull request #673 from fidencio/wip/shimv2-and-crio
shimv2: Add "cri-o" debugging instructions
2020-06-18 10:09:44 -05:00
Fabiano Fidêncio
e9666a9d22 shimv2: Add "cri-o" debugging instructions
Let's add information on how to debug shimv2 when using cri-o, similarly
to what already is present with containerd.

Fixes: #672

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-06-18 01:01:34 +02:00
fupan.lfp
3e00bdffaf agent: fix the issue of broken logger for agent as init process
Dup a new file descriptor for temporary logger writer,
since this logger would be dropped and it's writer would
be closed out of if definition scope, which would cause
the logger process thread terminated if it used the original
pipe write fd.

Fixes: #318

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-06-16 17:13:29 +08:00
fupan.lfp
2548426b0f device: Do not allow container access to the guest rootfs device
With this change, a container is not longer given access to
the underlying root partition.
This is done by explicitly adding the root partition
to the device cgroup of the container.

Fixes: #317

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-06-16 17:13:18 +08:00
Pradipta Kr. Banerjee
21c9535ab4 qemu: Remove Qemu version check in ppc64le unit test
The Qemu version check in unit test case is no longer needed for
Power since we don't support Kata with Qemu version < 4.x.

Fixes: #315

Signed-off-by: bpradipt@in.ibm.com
2020-06-13 17:45:01 +00:00
James O. D. Hunt
dee2cd67f2 runtime: Use more folds in collect script
Improve the output of the data collection script to use lots more folds.
This makes it easier to review the information when viewing the pasted
output in a GitHub issue.

Fixes: #313.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-12 11:40:30 +01:00
James O. D. Hunt
9665868852 runtime: Ignore empty throttlers in collect script
Fix bug by ignoring empty throttlers in the data collection script.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-12 11:35:37 +01:00
James O. D. Hunt
c8015efaa7 runtime: Refector collect script
Add `start_section()` and `end_section()` functions to the data
collection script to allow new unfoldable sections to be created.

Redefine `show_header()` and `show_footer()` to use the new functions.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-12 11:31:34 +01:00
Julio Montes
46f2618340 Merge pull request #311 from jodh-intel/2.0-dev-collect-script-add-shimv2-version
runtime: Add containerd shim v2 version to collect script
2020-06-11 14:02:55 -05:00
Yang Bo
a665f227a7 Merge pull request #303 from lifupan/pause_resume
container pause/resume support
2020-06-11 20:28:41 +08:00
James O. D. Hunt
dae74d5d7a runtime: Add containerd shim v2 version to collect script
Now that the Kata containerd shim v2 can display a version string,
add those details to the data collection script.

Fixes: #309.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-11 08:54:58 +01:00
James O. D. Hunt
13f35f3a6f Merge pull request #242 from jiangliu/netlink
Refine netlink crate to be reused by other projects
2020-06-11 08:22:54 +01:00
fupan.lfp
e6c0a0bfca container: add pause/resume container functions
add pause/resume container functions.

Fixes:#302

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-06-11 10:16:28 +08:00
James O. D. Hunt
c132bb6bf0 Merge pull request #308 from jodh-intel/2.0-dev-containerd2-add-version-option
shimv2: Add a "--version" cli option
2020-06-10 15:45:04 +01:00
Julio Montes
f9361df8bf Merge pull request #305 from tedyu/sandbox-create-err
virtcontainers: Check the correct error variable for sandbox creation
2020-06-10 09:39:10 -05:00
James O. D. Hunt
0e08712dc8 Merge pull request #225 from jodh-intel/2.0-dev-trace-forwarder
src: Add trace forwarder component
2020-06-10 11:53:40 +01:00
James O. D. Hunt
f3a37bc67a shimv2: Add a "--version" cli option
All components should support a `--version` option to allow clear
identification of the version of the component being used.

Note that the build changes are required to allow the shim binary to
access the golang code generated by the build (such as the `version`
variable).

Fixes: #307.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-10 11:51:29 +01:00
James O. D. Hunt
56b8ad995b build: Fold long clean line
Folded the overly long clean rule across multiple lines.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-10 11:51:29 +01:00
James O. D. Hunt
6890693444 Merge pull request #244 from jodh-intel/2.0-dev-add-podman-to-collect-script
runtime: Add podman and containerd shim v2 to data collection script
2020-06-10 11:29:11 +01:00
fupan.lfp
fe4166342a container: change the container status from string to enum
Change the container's status from string type to
enum.

Fixes: #302

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-06-10 16:46:41 +08:00
Ted Yu
e469d6b99d virtcontainers: Check the correct error variable for sandbox creation
This PR makes the deferred func check the correct error variable.

Fixes #2759

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2020-06-10 01:06:49 -07:00
James O. D. Hunt
48d3471cfe docs: Add trace forwarder doc reference
Add a pointer to the trace forwarder README to the top-level README.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-09 09:55:48 +01:00
James O. D. Hunt
9b987c17d9 src: Add trace forwarder component
Add a new system component, used only when tracing is enabled. The
component listens to the agent over VSOCK, forwarding trace spans
created by the agent in the virtual machine onwards to an OpenTelemetry
collector (such as Jaeger) running on the host.

Fixes: #224.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-09 09:55:47 +01:00
James O. D. Hunt
b165e2a437 runtime: Add containerd shim v2 to collect script
Capture log output from the Kata containerd shim v2.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-09 09:19:49 +01:00
James O. D. Hunt
ca8acf5895 runtime: Add podman to data collection script
Updated `kata-collect-data.sh` to gather basic podman details.

Fixes: #243.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-09 09:19:49 +01:00
James O. D. Hunt
ebbfa321ae runtime: Fix throttler log handling in collect script
Fix a long-standing bug where the KSM throttler logs would not be
collected by removing the last (unused) parameter to the
`find_system_journal_problems()` function.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-09 09:19:49 +01:00
James O. D. Hunt
40a37aa5c6 runtime: Re-order funcs in data collection script
Ensure functions defined before calling them in the data collection
script.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-09 09:19:49 +01:00
James O. D. Hunt
e0148c9cb9 runtime: Fix legacy package regex in collect script
The function that checks for legacy packages in the collect script was
missing pipes denoting regex alternation.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-09 09:15:59 +01:00
James O. D. Hunt
04eced50ad runtime: Fix whitespace in collect script
Remove extraneous whitespace from the `kata-collect-data.sh` script.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-09 09:15:59 +01:00
James O. D. Hunt
e5f5bc2278 Merge pull request #223 from jodh-intel/2.0-dev-kata-agent-ctl
tools: Add kata-agent-ctl
2020-06-08 17:41:17 +01:00
James O. D. Hunt
2e97fbfdc0 docs: Reference kata-agent-ctl doc
Add a link to the `kata-agent-ctl` README.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-08 11:22:19 +01:00
James O. D. Hunt
8a1949546c tools: Add agent-ctl tool
Add a low-level agent control tool that can manipulate the agent
via ttRPC.

Fixes: #222.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-08 11:22:19 +01:00
James O. D. Hunt
2e53d237ce logging: Add ability to convert between log level name and slog level
Added new functions to convert to/from a log level name (like `debug`)
to/from the equivalent `slog::Level::Debug`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-08 11:22:19 +01:00
James O. D. Hunt
e80124ec0f logging: Simplify and update copyright
Tiny simplification. Also updated the copyright.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-08 11:22:19 +01:00
James O. D. Hunt
b95ff30cbf cargo: Moved tempfile crate to dev deps
Don't require the `tempfile` crate unless building in dev mode (such as
when running tests).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-08 11:22:19 +01:00
James O. D. Hunt
a2dce2dc71 logging: Move agent logger to a separate package
The agent logger is useful and generic enough that it can be used by
other components, so move the agent logging package to below a top level
`pkg` to encourage re-use.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-06-08 11:22:17 +01:00
GabyCT
0aad3fb8f9 Merge pull request #1065 from devimc/2020-06-03/qemu5/updateDefaulconfigsPatches
qemu: add kata patches for QEMU 5
2020-06-04 13:56:11 -05:00
Julio Montes
1239ad0ba3 qemu: add kata patches for QEMU 5
Add the following patches for QEMU 5:
* memory-backend-file/nvdimm: support read-only files as memory-backends
* 9p: removing coroutines of 9p to increase the I/O performance

fixes #1064

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-06-03 17:25:30 +00:00
Liu Jiang
4e31bcf8b2 netlink: clean all clippy warnings
Clean up all clippy warning.
Also fix a bug in dealing with IFLA_IFNAME attribute.
nlh.addattr_var(IFLA_IFNAME, name.as_ptr() as *const u8, name.len() + 1);
The `name` is a rust String, which doesn't including the trailing '\0',
so name.len() + 1 may cause invalid memory access.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-06-01 22:31:44 +08:00
Liu Jiang
f5cfd412e4 netlink: fix an error in formatting MAC address
When formatting MAC address, we should left-padding zeros instead
of right-padding.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-06-01 17:58:28 +08:00
Liu Jiang
de23ec1943 netlink: implement TryFrom instead of From to avoid unwrap()
Implment `TryFrom<IPAddress> for RtIPAddr` instead of From<IPAddress>,
so error code could be returned instead of unwrap().
Do the same for `TryFrom<Route> for RtRoute`.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-06-01 17:58:27 +08:00
Liu Jiang
1b8c2cba60 netlink: refine interface to reduce unsafe code
There are too much unsafe code in the netlink crate, we need to reduce
unsafe code as much as possible. To achieve this, methods are classified
as public interfaces and internal methods.

All public interface of RtnlHandle has been reimplemented as safe code,
only some public helper functions to manipulater Netlink message data
structures are implemented as unsafe code.

The code to parse IPv4/IPv6/MAC addresses has been moved to a dedicated
file named parser.rs.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-06-01 16:07:46 +08:00
Liu Jiang
3fe930b946 netlink: get rid of dependency on scan_fmt
The scan_fmt crate has dependency on other four crates, and it's trivial
to use std library to implement the same logic. Get rid of scan_fmt to
reduce the dependency chain.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-06-01 16:07:45 +08:00
Liu Jiang
710932df06 netlink: use features for slog and agent handler
Use features to enable/disable slog and agent handler on demand.
This helps to reduce dependency chains if slog/agent handler is unused.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-06-01 16:07:44 +08:00
James O. D. Hunt
f7d8fc37b4 Merge pull request #1050 from dsyer/v2cri
Detect v2 schema and use correct long form of cri plugin
2020-06-01 09:02:59 +01:00
Liu Jiang
bbd40203d4 netlink: group kata agent code into a dedicated file
Group kata agent specific code into a dedicated file, so we could easily
make it optional later.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-05-31 03:12:25 +08:00
Liu Jiang
4774814c73 netlink: get rid of dependency on rustjail
The netlink crate is a library to communicate with Linux kenrel by using
the netlink socket. It's generic enough to be reused by other clients.
So get rid of dependency on the rustjail crate by:
1) normalize all pub interfaces to return Result<T, nix::Error>,
2) add helpers to reduce duplicated code,
3) move parse_mac() into lib.rs,

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-05-31 03:02:48 +08:00
Liu Jiang
6995178903 netlink: use bool for condition flags
Minor improvements for netlink by using bool for condition flags.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
2020-05-31 02:58:10 +08:00
James O. D. Hunt
43db1284e9 Merge pull request #239 from Tim-Zhang/neigh
agent: port https://github.com/kata-containers/agent/pull/784
2020-05-29 15:56:52 +01:00
Tim Zhang
635c7a785a agent: port https://github.com/kata-containers/agent/pull/784
Add grpc API for adding arp neighbours for a network
interface. These are expected to be static arp entries
sent by the runtime.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-05-29 22:28:10 +08:00
Graham Whaley
d1b4873bf5 Merge pull request #1042 from alicefr/skip-common-frag-config
fragments: skip some config base on the arch
2020-05-29 14:21:57 +01:00
Graham Whaley
f3cf6a039d Merge pull request #1063 from jongwu/virt
qemu: add virt board specific optimized qemu config for arm
2020-05-29 14:20:27 +01:00
Peng Tao
1d2f611a80 Merge pull request #240 from Tim-Zhang/fix-generate-protocols
agent: fix make generate-protocols errors
2020-05-29 17:41:10 +08:00
Tim Zhang
cb58075a26 agent: fix make generate-protocols errors
Got:
make PROTO_FILE=agent.proto generate-protocol
google/protobuf/descriptor.proto: Read access is denied for file: /usr/local/include/google/protobuf/descriptor.proto

This commit will fix this error.

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-05-29 16:05:04 +08:00
GabyCT
506ba67106 Merge pull request #235 from chavafg/2.0-dev
Move versions.yaml to root directory and use it for osbuilder scripts
2020-05-28 11:18:30 -05:00
Salvador Fuentes
4718a8398f Merge pull request #1032 from grahamwhaley/20200430_travis
CI: enable Travis static checks
2020-05-28 11:07:02 -05:00
Salvador Fuentes
81e11c9f7c osbuilder: remove references to agent and runtime repos
tools/osbuilder/scripts/lib.sh was making references to agent and
runtime repositories to get golang, rust, cmake and musl versions.
Since runtime and agent repos are consolidating, we only need to
make reference to our versions.yaml in this (kata-containers) repo.

Fixes: #234.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-05-28 10:33:25 -05:00
Salvador Fuentes
a449786544 versions: move versions.yaml to top directory
Instead of having the versions.yaml in the runtime source,
it makes more sense to have it in the root directory of
the project.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-05-28 10:33:25 -05:00
Jianyong Wu
d81fdde6b0 qemu: add virt board specific optimized qemu config for arm
qemu contains all device support for all the board qemu supported
on arm. But we use virt machine in most cases, so there are lots
of code in no relationship with virt then never used.
Here, we add a customized config, named arm-softmmu.mak.virt for
virt board. There is around 5M decrease of qemu binary using this
customized config compared with the common config.
arm-softmmu.mak includes and customizes the pci.mak and usb.mak to let
the change in aarch64-softmmu take effect. also arm-softmmu.mak.virt
is base on arm-softmmu.mak.

comparison of qemu binary between using common config and virt config
-rwxr-xr-x  1 root root 64190080 May 28 12:49 qemu-system-aarch64*
-rwxr-xr-x  1 root root 59061584 May 27 18:14 qemu-system-aarch64.virt*

Fixes: #1062
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-05-28 13:47:58 +08:00
Hui Zhu
85256e0494 Merge pull request #236 from liubin/refactoring-proto-compilation
Agent: centrally manage proto files
2020-05-28 10:05:05 +08:00
Hui Zhu
38f196b06e Merge pull request #233 from liubin/porting/agent-616
agent: porting https://github.com/kata-containers/agent/pull/616
2020-05-28 10:03:28 +08:00
Hui Zhu
d36ad1e730 Merge pull request #232 from bergwolf/runtime-port-1.11.0
port runtime commits up to 1.11.0 release
2020-05-28 09:56:56 +08:00
Julio Montes
25a1d7b2e3 Merge pull request #1061 from devimc/2020-05-27/static-build/fixQemu5
static-build: build qemu on ubuntu 20.04
2020-05-27 13:47:54 -05:00
Julio Montes
bef96a95e7 static-build: build qemu on ubuntu 20.04
Update ubuntu version to 20.04, due to the following linkage errors
is not possible to build QEMU 5 on ubuntu 18.04.

```
libmount.a(libmount_la-fs.o): In function `__mnt_fs_set_source_ptr':
(.text+0x9b1): undefined reference to `blkid_parse_tag_string'
libmount.a(libmount_la-tab.o): In function `mnt_table_find_source':
(.text+0x1dbf): undefined reference to `blkid_parse_tag_string'
libmount.a(libmount_la-utils.o): In function `mnt_tag_is_valid':
(.text+0x618): undefined reference to `blkid_parse_tag_string'
libmount.a(libmount_la-cache.o): In function `mnt_free_cache':
(.text+0x834): undefined reference to `blkid_put_cache'
libmount.a(libmount_la-cache.o): In function `mnt_cache_read_tags':
(.text+0xa24): undefined reference to `blkid_new_probe_from_filename'
(.text+0xa3d): undefined reference to `blkid_probe_enable_superblocks'
(.text+0xa4a): undefined reference to `blkid_probe_set_superblocks_flags'
(.text+0xa57): undefined reference to `blkid_probe_enable_partitions'
(.text+0xa64): undefined reference to `blkid_probe_set_partitions_flags'
(.text+0xa6c): undefined reference to `blkid_do_safeprobe'
(.text+0xb32): undefined reference to `blkid_free_probe'
(.text+0xb7c): undefined reference to `blkid_free_probe'
(.text+0xba0): undefined reference to `blkid_probe_lookup_value'
libmount.a(libmount_la-cache.o): In function `mnt_get_fstype':
(.text+0xef0): undefined reference to `blkid_new_probe_from_filename'
(.text+0xf09): undefined reference to `blkid_probe_enable_superblocks'
(.text+0xf16): undefined reference to `blkid_probe_set_superblocks_flags'
(.text+0xf1e): undefined reference to `blkid_do_safeprobe'
(.text+0xf4a): undefined reference to `blkid_free_probe'
(.text+0xf68): undefined reference to `blkid_probe_lookup_value'
libmount.a(libmount_la-cache.o): In function `mnt_resolve_tag':
(.text+0x130b): undefined reference to `blkid_evaluate_tag'
```

fixes #1060

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-05-27 16:24:22 +00:00
Julio Montes
b8c82a2c04 static-build: update qemu blacklist file
Remove `ppc_rom.bin` from the blacklist file since it's no longer
present in QEMU 5

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-05-27 16:24:22 +00:00
Julio Montes
481ca872fe Merge pull request #1045 from justin-he/qemu_size
Further optimization for qemu binary size
2020-05-27 08:19:03 -05:00
Julio Montes
512908f7c2 Merge pull request #1059 from devimc/2020-05-26/static-build/qemu5
static-build: update QEMU build dependencies
2020-05-27 08:06:57 -05:00
bin liu
a3eb0c970e Agent: centrally manage proto files
In Kata 1.x, agent interface is defined in agent repo and vendored by runtime. But in Kata 2.0, agent and runtime will use ttrpc as protocol, and agent is using rust language, so runtime can't vendor agent again, have to compile from agent's protobuf files.

This PR will hold proto files under src/agent, and compile it to rust/go sources for agent/runtime. Typing `make generate-protocols` under root of this repo or `src/agent` can see how to use it.

Signed-off-by: bin liu <bin@hyper.sh>
2020-05-27 21:05:36 +08:00
Julio Montes
4989b49d8a static-build: update QEMU build dependencies
update QEMU build dependencies to support QEMU 5

fixes #1058

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-05-26 21:23:51 +00:00
GabyCT
da83738c93 Merge pull request #661 from grahamwhaley/20200526_minikube_containerd
install: minikube: add containerd details
2020-05-26 12:33:48 -05:00
Graham Whaley
d8e8754c19 install: minikube: add containerd details
We only documented how to launch minikube/kata with CRI-O. It is
trivial to flip this to containerd, and that also works with kata-deploy,
so document it.

Fixes: #660

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-05-26 17:20:40 +01:00
Alice Frosi
b4a51d8939 docs: add fragment exclusion tag
Document how to use the !arch tag added by #1042

Fixes: #1010

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2020-05-26 16:36:36 +02:00
Alice Frosi
1c6aae1e15 fragments: skip some config base on the arch
Not all the fragments in common are needed by all the arch. The fragment
can be skipped if the have the tag !arch. For example:
      # !s390x

Fixes: #1010

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2020-05-26 16:32:31 +02:00
Salvador Fuentes
a5ef8fcac0 Merge pull request #1047 from jcvenegas/vsock-fix-backport
sock: Add mising fix to experimental kernel
2020-05-26 09:16:03 -05:00
bin liu
9b9f2b2ff0 agent: porting https://github.com/kata-containers/agent/pull/616
this PR will port the original PR to kata 2.0.

Signed-off-by: bin liu <bin@hyper.sh>
2020-05-26 18:17:54 +08:00
Peng Tao
0e0f30b152 vc: fix device driver test
We should import kata-containers path.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 01:15:24 -07:00
Jose Carlos Venegas Munoz
202a877d36 utils: Fix case version check for stable releases
For stable versions the format used `x.y.z`.

kata-env was failing trying to make a new release from 1.11.0-rc to
1.11.0

This fix kata-env for releases 1.11+ where this regression was
introduced.

Fixes: kata-containers/runtime#2674
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:51:01 -07:00
Bo Chen
48b20e75f8 clh: vsock: Supply the right VsockConfig to Vmconfig
With the new HTTP API from CLH, it removes the support of multiple
virtio-vsock devices, as the Linux kernel does not support it.

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:51:01 -07:00
Bo Chen
4887ce059c versions: Move to cloud-hypervisor v0.7.0
Changes:

96be8229 release: Release v0.7.0
5115ad6e vmm: config: Support on/off/true/false for all booleans
d5bfa2df vmm, vhost_user_block: Make parameter names match --disk
2f0bc06b vmm: Update default devices names as "internal"
aaba6e77 vmm: Add virtio-console to the list of Migratable devices
9ab4bb1a devices: serial: Expect an identifier upon device creation
06487131 vm-virtio: pci: Expect an identifier upon device creation
eeb7e10d vm-virtio: mmio: Expect an identifier upon device creation
9d84ef50 vmm: Make the virtio identifier mandatory
14350f5d devices: ioapic: Expect an identifier upon device creation
55687157 vm-virtio: iommu: Expect an identifier upon device creation
052eff1c vm-virtio: console: Expect an identifier upon device creation
354c2a4b vm-virtio: vhost-user-net: Expect an identifier upon device creation
46e0b3ff vm-virtio: vhost-user-blk: Expect an identifier upon device creation
bb7fa71f vm-virtio: vhost-user-fs: Expect an identifier upon device creation
ec5ff395 vm-virtio: vsock: Expect an identifier upon device creation
9b53044a vm-virtio: mem: Expect an identifier upon device creation
1592a929 vm-virtio: pmem: Expect an identifier upon device creation
2e91b738 vm-virtio: rng: Expect an identifier upon device creation
9eb7413f vm-virtio: net: Expect an identifier upon device creation
be946caf vm-virtio: blk: Expect an identifier upon device creation
ff9c8b84 vmm: Always generate the next device name
81831413 vmm: Add an identifier to the ioapic device
e4386c8b vmm: Add an identifier to the virtio-iommu device
75ddd2a2 vmm: Add an identifier to the --console device
eac350c4 vmm: Add an identifier to the virtio-mem device
6802ef54 vmm: Add an identifier to the --rng device
d71d52e9 vmm: Fix virtio-console creation with virtual IOMMU
b08fde59 vmm: Fix virtio-rng creation with virtual IOMMU
8031ac33 vmm: Fix virtio-vsock creation with virtual IOMMU
50134969 Jenkins: Run musl unit and integration tests on master branch
ce794f78 ci: Pass target triple to the test scripts
33b0e158 resources: Add musl tools and toolchain to the Dockerfile
ad9374bd dev_cli: Add --libc to the build and test commands
8cef3574 vmm: seccomp: Add fork, gettid and pipe2 syscalls to permitted list
ce7678f2 vmm: seccomp: Add tkill syscall to permitted list
12758d7f vmm: seccomp: Add epoll_pwait syscall to permitted list
86fcd19b build: Initial musl support
a5de4955 vmm: Only allow removal of specific types of virtio device
9ed880d7 vmm: Add an identifier to the --fs device
7e0ab6b5 vmm: Fix pmem device creation
3012975c tests: Enhance vsock integration test to support hotplug
6c2bca5f bin: ch-remote: Add support for adding vsock devices
8de7448d vmm: api: Add "add-vsock" API entry point
bf09a1e6 openapi: Add "id" field to VsockConfig
a76cf086 vmm: vm: Remove vsock device from config
99422324 vmm: vm: Add "add_vsock()"
1d61c476 vmm: device_manager: Add support for hotplugging virtio-vsock devices
f8501a3b vmm: config: Move --vsock syntax to VsockConfig
6e049e0d vmm: Add an identifier to the --vsock device
10348f73 vmm, main: Support only zero or one vsock devices
9d1f95a3 openapi: Add missing "id" field
30e2e515 build(deps): bump serde_json from 1.0.51 to 1.0.52
dd9d0d04 build(deps): bump micro_http from `0d87a94` to `c9ffb90`
cdc8493a build(deps): bump thiserror from 1.0.15 to 1.0.16

Fixes: kata-containers/runtime#2658
Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:51:01 -07:00
Jose Carlos Venegas Munoz
54f12461db clh: memory: remove pmem size argument
Pmem size now is calculated by the hypervisor. This is not required
anymore. Remove it to simplify the code.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:51:01 -07:00
Jose Carlos Venegas Munoz
83891592c1 versions: Move to latest cloud-hypervisor
Changes:

f5debc4 build(deps): bump libssh2-sys from 0.2.16 to 0.2.17
37dfb4c build(deps): bump hermit-abi from 0.1.11 to 0.1.12
e1a07ce vmm: vm: Unpark the threads before shutdown when the current state is paused
1df38da vmm, tests: Make specifying a size optional for virtio-pmem
7481e4d vmm: config: Validate that shared memory is enabled if using vhost-user
2ac6971 vmm: MemoryManager: Cleanup the usage of std::ffi/io/result
3f42f86 vmm: Add the 'shared' and 'hugepages' controls to MemoryConfig
d6aa717 build(deps): bump syn from 1.0.17 to 1.0.18
3eaeba4 vm-virtio: Fix FS_IO callback for virtio-fs
df14a68 build(deps): bump smallvec from 1.3.0 to 1.4.0
e685854 gh: Separate the build and release jobs
c790bba tests: Migrate from Ubuntu Eoan to Focal
e525af7 build(deps): bump ryu from 1.0.3 to 1.0.4
3e8a6ba ci: Ignore test_snapshot_restore
9ebf052 build(deps): bump cc from 1.0.51 to 1.0.52
f6b150a ci: Add integration test for VM migration
9f08f53 build(deps): bump pin-utils from 0.1.0-alpha.4 to 0.1.0
9c7215d docs: Add the vhost-user-blk test doc
3574437 build(deps): bump cc from 1.0.50 to 1.0.51
4fc75cf vm-virtio: Implement Snapshottable trait for Console
d41ce90 vm-virtio: Implement Snapshottable trait for Pmem
f626bd6 build(deps): bump parking_lot_core from 0.7.1 to 0.7.2
5a380a6 vmm: memory_manager: Support non-power-of-2 block sizes
f8ee89a build(deps): bump arc-swap from 0.4.5 to 0.4.6
49322c5 vm-virtio: Implement the Snapshottable trait for Net
24c2b67 vm-virtio: Improve virtio-net rx queue processing
03dd249 vm-virtio: Restore queues based on used index
cf707da vm-virtio: Extend Queue helpers
c22fd39 vmm: Remove virtio device's userspace mapping on hot-unplug
0a97c25 vmm: Extend MemoryManager to remove userspace mappings
b2de1cd vm-virtio: Implement shutdown() for virtio-fs
fbcf3a7 vm-virtio: Implement userspace_mappings() for virtio-pmem
b035399 vm-virtio: Implement userspace_mappings() for virtio-fs
3fb0a02 vm-virtio: Get userspace mappings from VirtioDevice
8b823e5 build(deps): bump backtrace-sys from 0.1.35 to 0.1.36
c23b488 ci: Factorize virtio-fs hotplug integration tests
f68b08b tests: add integration tests for vm.add-fs route
18f7789 vmm: Add hotplugged virtio devices to the DeviceManager list
c2abadc vmm: Add ability to add virtio-fs device post-boot
bb2139a vmm/api: Add vm.add-fs route
d35e775 vmm: Update KVM userspace mapping when PCI BAR remapping
49cc73a vm-virtio: pci: Make sure to return the correct list of BARs
187b1ee vm-virtio: Implement the Snapshottable trait for Block
a484aa7 vm-virtio: Implement the Snapshottable trait for Rng
ac7178e vmm: Keep migratable devices list as a Vec
b6fdbf7 vm-virtio: Implement Snapshottable trait for MmioDevice
12fec55 vm-virtio: Add helpers to update queue indexes
fd45e94 vm-virtio: Add the ability to serialize a Queue
b7faf4f vhost_user_fs: Add the WRITE_KILL_PRIV write flag.
0870028 vhost_user_fs: Add the IOCTL_COMPAT_32 flag
592cfba vhost_user_fs: Add the EXPLICIT_INVAL_DATA capability flag
621ea83 vhost_user_fs: Add the ZERO_MESSAGE_OPENDIR capability flag
a2830da vhost_user_fs: Add the CACHE_SYMLINKS flag
926a414 vhost_user_fs: Add support for MAX_PAGES
747f31d vhost_user_fs: Add the ABORT_ERROR flag
5eb903a vhost_user_fs: Add support for FOPEN_CACHE_DIR
97e2d5d vhost_user_fs: Add support for CopyFileRange
b8cfdab pci: configuration: Use correct algorithm for BAR size reporting
9bd5ec8 pci, vfio, vm-virtio: Specify a PCI revision ID of 1 for virtio-pci
e7e0e8a vmm, devices: Add firmware debug port device
82d0cdf vhost_user_net: Simplify match values for handle_event()
a517be4 vhost_user_blk: Add multithreaded multiqueue support
13c8283 vhost_user_blk: Make everything private when possible
a31f5f8 vhost_user_blk: Move disk initialization to VhostUserBlkBackend
e78e34b vhost_user_blk: Make DiskFile sharable across threads
808586e vhost_user_blk: Simplify the code by removing VringWorker
ea82632 tests: Enhance test_pmem_hotplug to also unplug device
6389418 tests: Enhance test_disk_hotplug to also unplug device
f9a0445 vmm: vm: Remove device from configuration after unplug
444e5c2 vmm: device_manager: Generalise NoAvailableVfioDeviceName
5bab9c3 vmm: device_manager: Assign ids to pmem/net/disk devices if absent
514491a vmm: device_manager: Support unplugging virtio-pci devices
2fa652a vm-virtio: pci: Add virtio_device() accessor
476e4ce vmm: device_manager: Add virtio-pci devices into id to BDF map
b38470d vmm: config: Add "id" parameter to {Net, Disk, Pmem}Config
1beb62e vmm: vm: Don't panic on kernel load error

Fixes: kata-containers/runtime#2609
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:51:01 -07:00
Julio Montes
c1959f3df3 virtcontainers: constrain runtime after creating network
Runtime must setup the network before moving itself into the cgroup, otherwise
it won't be able to get the vhost/net queues file descriptors for the
hypervisor.

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:51:01 -07:00
Julio Montes
5f9d141159 virtcontainers: update sandbox's device cgroup
Update sandbox's device cgroup before hotpluggin a device and after it has
been removed from the VM, this way the device cgroup in the host is
fully honoured and the hypervisor will have access only to the devices needed
for the sandbox, improving the security.

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:51:00 -07:00
Julio Montes
e6aac8390e virtcontainers: remove all the code related to HasCRIContainerType
All the code related to HasCRIContainerType is useless and no longer needed
since the CRIContainerType annotation is not considered for constraining or
not the sandbox

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:50:23 -07:00
Julio Montes
8f5a69373b virtcontainers: apply constraints to the sandbox cgroup
Kata relies on the cgroup parent created and configured by the container
engine, but sometimes the sandbox cgroup is not configured and the container
may have access to all the resources, hence the runtime must constrain the
sandbox and update the list of devices with the devices hotplugged in the
hypervisor.

Fixes: kata-containers/runtime#2605
Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:50:23 -07:00
Julio Montes
9cdc899c76 pkg/cgroups: update the list of devices for the hypervisor
The hypervisor needs access to `/dev/vfio/vfio` to use VFIO devices.
Remove all devicemapper devices from the allowed list, the device cgroup
must be updated when before hotpluggin any device.

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:50:23 -07:00
Julio Montes
44ed777c0f pkg/cgroups: add methods to add and remove device from the cgroup
add `AddDevice` and `RemoveDevice` to cgroup manager to allow adding
and removing devices from the device cgroup

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:50:23 -07:00
Julio Montes
045c7ae9a3 pkg/cgroups: implement functions to get information from a host device
Add functions to convert a host device to a cgroup device or linux device,
the first one is used to update the device cgroup and the second one to
update the resources in the OCI spec.

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:50:23 -07:00
Julio Montes
387d3d34dc device: add GetHostPath() to generic device
`GetHostPath()` method returns the device path in the host, this way the
runtime can get the device information for updating the sandbox's device
cgroup.

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:50:23 -07:00
Fupan Li
83f116b483 Merge pull request #228 from bergwolf/makefile
fix build with go 1.14
2020-05-26 15:45:36 +08:00
Peng Tao
97909ea2b9 gitignore: do not ignore Cargo.lock
We already include it in the repo.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-26 00:24:45 -07:00
Peng Tao
f53901ad43 makefile: add more build targets
To make it easy to build and test.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-25 23:30:42 -07:00
Peng Tao
4fdb4cffd5 runtime: update vendor/modules.txt
go 1.14 requires it to match go.mod and exposes a backtrace with
slightly difference.

Fixes: #227
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-25 23:30:42 -07:00
Peng Tao
6bc69760c0 vendor: move ttrpc proto code out of vendor
We do not really depend on the go agent generated grpc code any more.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-25 23:30:42 -07:00
Peng Tao
f7b941b6bf Merge pull request #231 from lifupan/fix_ttrpc
Fix ttrpc changes caused building issues
2020-05-26 14:29:56 +08:00
fupan.lfp
555f620653 agent: hardcode the Cargo.lock file
Hardcode the Cargo.lock file to prevent dependencies
change which would cause some compatible issues.

Fixes: #230

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-05-26 11:39:07 +08:00
fupan.lfp
08e3d259ca agent: fix the issue of building error with latest ttrpc
Since the ttrpc upgraded with async supported, which isn't
compatible with current agent, thus it's better to change
the dependency to a stable branch.

Fixes: #229

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-05-26 11:14:39 +08:00
Jose Carlos Venegas Munoz
448efe512d sock: Add mising fix to experimental kernel
Cloud hypervisor uses vsock, without this patch CI
for cloud hypervisor is not stable.

Patch information:
```
There was a race condition between bind() and listen() that was hit very
rarely when using Kata Containers and Cloud-Hypervisor. It's been
identified the problem is really coming from the virtio-vsock driver,
which is fixed by those new kernel patches uploaded for each version of
the kernels used by Kata Containers.
```

Update:
Fixed to make it build with kernel 5.6

Fixes #932

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-05-25 22:58:30 +00:00
Dave Syer
e2d08dcf43 kata-deploy: detect v1 schema and use correct long form of cri
CRI has a v2 schema that seems to be the default in a lot of
containerd installations. It uses a "long" form for the plugin
id in the TOML config file.

Fixes #881

Signed-off-by: Dave Syer <dsyer@pivotal.io>
2020-05-22 07:28:50 +01:00
Julio Montes
3d53c5d231 Merge pull request #1049 from GabyCT/topic/addcentos8
obs: Add CentOS 8
2020-05-20 13:22:18 -05:00
Gabriela Cervantes
34136ac396 obs: Add CentOS 8
Build packages for CentOS 8.

Fixes #1048

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-05-19 12:43:24 -05:00
GabyCT
e9dc1c90be Merge pull request #1053 from jcvenegas/fix-1052
pkgs: Remove debian 10
2020-05-19 07:23:15 -05:00
Jose Carlos Venegas Munoz
4c375f850a pkgs: Remove debian 10
Debian 10 has been broken for a while but CI started
to detected recently.

Remove package until find a way to build it.

Fixes: #1052

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-05-18 22:39:17 +00:00
Graham Whaley
4b130fb180 Merge pull request #994 from alicefr/kernel-config-5.4
s390x: update kernel config
2020-05-15 13:14:05 +01:00
James O. D. Hunt
478dfa4b52 Merge pull request #216 from lifupan/ttrpc_runtime
switch to Ttrpc for runtime
2020-05-11 09:26:11 +01:00
fupan.lfp
1d6e7ac405 change the protocols from grpc to ttrpc
Switch protocols from grpc to ttrpc

Fixes: #148

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-05-09 17:39:34 +08:00
fupan.lfp
010b7a9fba vendor: add the ttrpc protos
add the ttrpc protocol files

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-05-09 15:36:43 +08:00
fupan.lfp
663c7e7921 vendor: update the required vendors
update the required vendors

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-05-08 20:38:12 +08:00
Jia He
0b43941fdc qemu/configs: Add the tuned config for aarch64-softmmu
This remains the original aarch64-softmmu *explicit* default config. And
borrows the tuned configuration from i386-softmmu except the board specific
ones.

Fixes: #1044
Signed-off-by: Jia He <justin.he@arm.com>
2020-05-08 13:50:21 +08:00
Jia He
d8d7f96b69 scripts: Disable capstone for reducing qemu binary size
Capstone is a disassembly framework which is not required for Kata.

Disabling it in configure can reduce ~6M bytes on arm64.

-rwxr-xr-x  71977368 May  8 09:32 qemu-system-aarch64.with.capstone*
-rwxr-xr-x  65676640 May  8 09:39 qemu-system-aarch64.without.capstone*

Fixes: #1044
Signed-off-by: Jia He <justin.he@arm.com>
2020-05-08 13:50:07 +08:00
Yang Bo
84e389d9d1 Merge pull request #210 from bergwolf/travis
travis: enable linux-ppc64le
2020-05-07 16:35:49 +08:00
Peng Tao
6d129546e3 travis: enable linux-ppc64le
Use build jobs to enable it.

Fixes: #209
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-05-06 03:03:07 -07:00
Jose Carlos Venegas Munoz
47d34f5810 Merge pull request #1035 from jcvenegas/fix-1034
Release: Fix path to releasea pipeline
2020-05-05 23:17:44 -05:00
Peng Tao
cb6b0e1370 Merge pull request #204 from chavafg/topic/merge-osbuilder
Merge osbuilder/1.11.0-rc0 into kata-containers 2.0-dev branch
2020-05-06 11:02:06 +08:00
Salvador Fuentes
f75e1c2ce0 Merge pull request #1037 from GabyCT/topic/adddocu
release: Add documentation repository
2020-05-05 20:27:23 -05:00
Gabriela Cervantes
b257df53d6 release: Add documentation repository
This PR adds the documentation repository for the update-repository-version
verification.

Fixes #1027

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-05-05 15:57:04 -05:00
Jose Carlos Venegas Munoz
79fd667d40 Release: Fix path to releasea pipeline
Rename directory name from release_pieline to release_pipeline

Fixes: #1034

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-05-05 19:54:57 +00:00
Alice Frosi
f15557dde4 s390x: update kernel config
Update kernel configs for s390x for version 5.4.x

Fixes: #993

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2020-05-05 13:08:54 +02:00
Archana Shinde
c14b7b5b33 Merge pull request #1030 from devimc/topic/kernel/qemu5vmlinux
qemu5-x86: boot uncompressed kernels to reduce memory footprint ~15%
2020-05-01 08:55:47 -07:00
Graham Whaley
997312e574 CI: enable Travis for static checks
Enable the Travis CI configuration to perform static CI checks
on PRs to this repo.

Fixes: #1031

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-04-30 14:45:59 +01:00
Salvador Fuentes
629cc0ae8d rootfs-builder: remove EulerOS
EulerOS does not work with rust agent.

further info:
https://github.com/kata-containers/osbuilder/issues/387

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-30 08:27:25 -05:00
Salvador Fuentes
586d26480c rootfs-builder: Add license header to rootfs_lib_template.sh
Add license header to `tools/osbuilder/rootfs-builder/template/rootfs_lib_template.sh`

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-30 08:20:46 -05:00
Graham Whaley
cdc8aaad6a kata-pkgsync: Fix spelling mistake
Whilst enabling the static CI checks for this repo, it picked up
a spelling mistake. We'll need to fix that before we can enable
the CI.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-04-30 13:28:38 +01:00
Julio Montes
14a01d8eb5 Merge pull request #205 from bergwolf/travis
runtime: import new path
2020-04-30 07:23:10 -05:00
Peng Tao
e90c5d45b3 runtime: build with vendor
So that we don't have to download dependencies.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-29 19:25:40 -07:00
Peng Tao
cd9e309f63 travis: enable runtime root required UTs
We check both root and non-root cases.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-29 18:39:03 -07:00
Peng Tao
06b3f313a2 shimv2: do not reset service config
Only load runtime config when it is not set.
We do not expect a service's runtime config to change while
it is running.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-29 18:39:03 -07:00
Peng Tao
6de95bf36c gomod: update runtime import path
To use the kata-containers repo path.

Most of the change is generated by script:
find . -type f -name "*.go" |xargs sed -i -e \
's|github.com/kata-containers/runtime|github.com/kata-containers/kata-containers/src/runtime|g'

Fixes: #201
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-29 18:39:03 -07:00
Salvador Fuentes
11c3d81f68 docs: fix markdown check issues
- Removes `CODE_OF_CONDUCT.md` and `CONTRIBUTING.md` from osbuilder
directory.
- Fixes a reference from `image-builder/README.md` to
`rootfs-builder/README.md`
- Updates the main `README.md` making a reference to the local
`tools/osbuilder/README.md`

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-29 17:51:44 -05:00
Salvador Fuentes
21c830c7da repo: Merge osbuilder/1.11.0-rc0 into kata-containers/2.0-dev
Merge osbuilder into kata-containers for 2.0 development cycle.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-29 16:49:13 -05:00
Salvador Fuentes
715d342519 osbuilder: move code into tools directory
move all osbuilder files into `tools` directory to be able
to merge this into kata-containers repo.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-29 16:45:00 -05:00
Julio Montes
fb6765973f kernel: boot directly into the uncompressed kernel
QEMU >= 4.0 is able to boot into the uncompressed kernel using the PVH
entry point, but to get this `CONFIG_PVH` must be enabled in the guest
kernel and `pvh.bin` installed in the host.

Booting uncompressed kernels in QEMU 5.0 can reduce the memory footprint,
~17% for KSM and ~15% nonKSM.

fixes #1029

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-04-29 16:24:19 +00:00
Jose Carlos Venegas Munoz
66fe1d2a69 Merge pull request #199 from bergwolf/runtime-1.11.0-rc0
merge Runtime 1.11.0 rc0
2020-04-29 08:24:20 -05:00
Peng Tao
241d52d4fa travis: enable runtime
Run make and test for both agent and runtime.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-29 02:44:12 -07:00
Peng Tao
359b78c1c9 runtime: fix cli non-root ci
It turns out kata check needs root privilege to
call modprobe otherwise it fails.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-29 02:40:33 -07:00
Peng Tao
a5589196ce runtime: fix TestMainBeforeSubCommands
It is simply wrong to test kata-check within before sub commands
as it is NOT before at all. Besides it causes errors if kata is
not installed.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-29 02:40:33 -07:00
Peng Tao
3b5768e6e0 runtime: remove unneeded test conf
We don't really use them anymore.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-27 20:52:12 -07:00
Peng Tao
4fceb03d96 markdown: fix markdown checke failures
Pass markdown checker.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-27 19:50:59 -07:00
Peng Tao
93b72558ad runtime: enable make file
go test needs explicit -mod=vendor argument.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-27 19:50:45 -07:00
Peng Tao
426a9cab6e runtime: fix agnet ut
We should not use a plain unix socket reader to act as grpc
server. Place a really mock grpc server instead.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-27 19:50:37 -07:00
Peng Tao
e540648950 vendor: move to go mod
Get rid of go dep finally ;)

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-27 19:50:29 -07:00
Peng Tao
98e3e99843 Merge remote-tracking branch 'runtime/1.11.0-rc0' into runtime-1.11.0-rc0
Merge runtime 1.11.0-rc0 in.

Fixes: #192
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-27 19:49:18 -07:00
Peng Tao
a02a8bda66 runtime: move all code to src/runtime
To prepare for merging into kata-containers repository.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-04-27 19:39:25 -07:00
Yang Bo
7468750442 Merge pull request #177 from lifupan/upstream_ttrpc
Upstream ttrpc
2020-04-27 20:14:17 +08:00
Salvador Fuentes
c5f0beeacd Merge pull request #654 from amshinde/add-containerd-annotation-config
annotations: Add config documentation for containerd
2020-04-23 10:46:04 -05:00
James O. D. Hunt
56d7074180 Merge pull request #1006 from Pennyzct/kernel_fragment_on_aarch64
AArch64: Enable kernel fragment on aarch64
2020-04-23 08:42:17 +01:00
GabyCT
01ecb62a48 Merge pull request #652 from GabyCT/topic/updateslesdocum
doc: Fix SLES installation documentation
2020-04-22 09:21:30 -05:00
fupan.lfp
3ea23a9a5d add license headers to proto files
add license headers to proto files

Fixes: #148

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-04-22 22:12:38 +08:00
lifupan
a7041c27dc agent: switch from grpc to ttrpc as agent protocol
switch from grpc to ttrpc
Fixes: #148

Signed-off-by: lifupan <lifupan@gmail.com>
2020-04-22 22:12:18 +08:00
Archana Shinde
2baee26ee3 annotations: Add config documentation for containerd
Support for passing sandbox annotations to the OCI layer was added
in containerd 1.3.0. Add this to the docs along with configuration
changes needed.

Fixes #653

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-04-21 11:41:56 -07:00
Gabriela Cervantes
9c332adc25 doc: Fix SLES installation documentation
This PR updates the current version of the SLES obs packages that are
being generated.

Fixes #651

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-04-21 10:43:55 -05:00
Penny Zheng
14a281d646 config: update arm64_kata_kvm_5.4.x
The config file created by kernel fragments scheme is quite different
with the old arm64_kata_kvm_5.4.x.
So I will update arm64_kata_kvm_5.4.x for consistency.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-21 17:51:11 +08:00
Penny Zheng
a2dc502e48 configs: enable kvm-ptp on arm64
kvm-ptp is critical for mitigating time drift between host and guest.
This implementation in kernel side is still one experimental feature on
aarch64, and see https://github.com/kata-containers/packaging/pull/998
for detailed instructions.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-04-21 17:50:37 +08:00
Penny Zheng
5a0e9cc2d3 config: disable pci shpc hotplug for arm64
Since we disable pci shpc hotplug for arm64, see
https://github.com/kata-containers/packaging/pull/498 for detailed
reason.
We need to move CONFIG_HOTPLUG_PCI_SHPC from common conf to
x86_64-specific.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-04-21 14:48:02 +08:00
Penny Zheng
f188ef7f0e config: fix typo error
fix a few typo errors.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-21 14:47:58 +08:00
Penny Zheng
247a84be9c arm64/mm: backport memory hot remove patch series on aarch64
Backport Anshuman Khandual's patch series of Enabling memory hot
remove on aarch64(https://patchwork.kernel.org/cover/11419305/)
to v5.4.x.
XONE_DEVICE is dependent on the implementation of memory hot remove.
This patch series has already been merged, and queued for 5.7.
After backporting this series, we could finally enable nvdimm/dax
on arm64.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-21 14:47:53 +08:00
Penny Zheng
42e56a6309 config: add arm64-specific configs
Add a few arm64-specific configs and classify them into seven new categories
, that is,
1. base architecture-dependent options(base.conf)
It also includes varient-specific features, like CONFIG_ARM64_PMEM is
one ARMv8.2 arichitectural features.
2. crypto-related options(crypto.conf)
ARMv8 adds cryptographic instructions that could significantly improve
performance on tasks such as AES encryption and SHA1 and SHA256 hashing.
3. device tree related options(dt.conf)
The "Open Firmware Device Tree", or simply Device Tree (DT), is a data
structure and language for describing hardware, which is commonly
used in arm architecture.
4. ARM errata workarounds options(errata.conf)
There are many Kconfig entires under "Kernel Features" ->
"ARM errata workarounds via the alternatives framework", which provides
software workarounds to mitigate systems affected by those erratum.
Vendor-specific option will be left to users to decide.
5. pci related options(pci.conf)
a simplified pci host controller for mach-virt.
6. serial devices options(serial.conf)
CONFIG_SERIAL_OF_PLATFORM is used for all 8250 compatible serial ports
that are probed through device tree.
7. rtc related options(rtc.conf)
we don't have KVM’s paravirtualized clock and ptp implementation is
still under experimental mode, so we need rtc on aarch64.
QEMU provides an emulated ARM AMBA PrimeCell PL031 RTC.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-21 14:47:42 +08:00
Penny Zheng
9784bb3e6f configs: add CONFIG_COMPACTION
Compaction is the only memory management component to form high order
(larger physically contiguous) memory blocks reliably.
The page allocator relies on compaction heavily and the lack of the feature
can lead to unexpected OOM killer invocations for high order memory requests.
We shouldn't disable this option unless there really is a strong reason.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-21 14:47:35 +08:00
Penny Zheng
339d2e70e6 config: move mmio-related configs to common dir
mmio devices are required in firecracker, and for now, x86_64 and
aarch64 are all supporting kata containers with firecracker.
So, we need to move mmio-related configs to common dir.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-21 14:47:31 +08:00
Penny Zheng
538528fa9a configs: re-organize security-related configs
There exists a few security-related configs, which are x86-64 specific.
CONFIG_LEGACY_VSYSCALL_NONE=y
CONFIG_RETPOLINE=y

CONFIG_RELOCATABLE and CONFIG_RANDOMIZE_BASE are kinds of tangled on
aarch64, if CONFIG_RANDOMIZE_BASE=y, then CONFIG_RELOCATABLE will be
selected automatically.
CONFIG_RANDOMIZE_BASE will randomize the virtual address at which the
kernel image is loaded, which as a security feature could deter exploit
attempts relying on knowledge of the location of kernel internals.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-21 14:47:27 +08:00
Penny Zheng
beee33b1a4 configs: re-locate configs about linux guest support and optimization
There exists a few configs about linux guest support or optimization
that are not supported on aarch64.
CONFIG_HYPERVISOR_GUEST is only defined under arch/x86/Kconfig and
unfortunately, CONFIG_KVM_GUEST is not supported on aarch64 for now.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-21 14:47:21 +08:00
Penny Zheng
6b2d84b0dc config: re-organize acpi related config
For now, a few configs as follows in common acpi dir are truly x86-spcecific
or disable by default on arm64.
CONFIG_ACPI_CPU_FREQ_PSS=y
CONFIG_ACPI_HOTPLUG_IOAPIC=y
CONFIG_ACPI_LEGACY_TABLES_LOOKUP
CONFIG_ACPI_LPIT=y
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
CONFIG_ACPI_PROCESSOR_CSTATE=y
CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
CONFIG_HAVE_ACPI_APEI_NMI=y
And I also add a few configs which are aarch64-specific.
Like CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y, since ARM64 can run properly
in ACPI hardware reduced mode.

Fixes: #1004

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-21 14:47:15 +08:00
Julio Montes
fc8c3a024e Merge pull request #998 from jongwu/ptp
kernel: Enable ptp_kvm for 5.4 kernel on arm64.
2020-04-20 09:25:34 -05:00
Salvador Fuentes
3b98b259b4 Merge pull request #2626 from chavafg/1.11.0-rc0-branch-bump
# Kata Containers 1.11.0-rc0
2020-04-17 20:14:34 -05:00
Salvador Fuentes
c06d1d65d1 Merge pull request #1019 from chavafg/1.11.0-rc0-branch-bump
# Kata Containers 1.11.0-rc0
2020-04-17 18:21:06 -05:00
Archana Shinde
c95d09a34d Merge pull request #181 from chavafg/1.11.0-rc0-branch-bump
# Kata Containers 1.11.0-rc0
2020-04-17 14:55:51 -07:00
Salvador Fuentes
eb128f8558 Merge pull request #444 from chavafg/1.11.0-rc0-branch-bump
# Kata Containers 1.11.0-rc0
2020-04-17 16:25:20 -05:00
Salvador Fuentes
7537ad3a7c Merge pull request #647 from chavafg/1.11.0-rc0-branch-bump
# Kata Containers 1.11.0-rc0
2020-04-17 16:10:21 -05:00
Salvador Fuentes
21711eea08 release: Kata Containers 1.11.0-rc0
- makefile: Make SELinux support configurable
- clh: Boot from persistent memory device
- config: Add scsi_mod.scan=none for virtio-scsi
- katautils: Use config paths set during the build
- version: Update kernel to lts 5.4.32
- clh: virtiofs: Add no_posix_lock option
- versions: Switch to virtio-fs-dev branch for kernel
- v2: Open log fifo with `RDWR` instead of `WRONLY`
- qemu-ppc64le: Switch off large decrementer capability
- versions: Update go to 1.13.9
- qemu_ppc64le: EXpose fs support explicitly
- qemu: Don't crash if virtiofsd path is non existent
- Add SELinux support for running VM Confinement
- clh:  Implment capabilities
- Update go to v1.13.8
- Makefile: Allow change default hypervisor via env var
- clh: Report warning when requested vCPUs exceeds maxVCPU allowed
- clh: Enable memory hotplug
- virtcontainers: check PCI resource format before using it
- Support persistent memory volumes
- versions: Update containerd commit
- virtcontainers: Don't create vfio devices in the guest
- shimv2: move container rootfs mounted flag to container level
- AArch64: officially enable firecracker v0.21.0 on AArch64
- clh: add vfio support

d78ffd65 makefile: Make SELinux support configurable
7aa31685 clh: Boot from persistent memory device
e8fc25a7 version: Update clh to master
bf9758bf katautils: Use config paths set during the build
8c850d9e config: Add scsi_mod.scan=none for virtio-scsi
07d0a4f0 version: Update kernel to lts 5.4.32
ab8050c5 kata_agent: Don't use dax if virtio_fs_cache is 0
6218b2a5 kata_agent: Remove sharedDirVirtioFSOptions
95ccc0f7 agent: Use "virtiofs" instead of "virtio_fs"
4c1cacd3 versions: Switch to virtio-fs-dev branch for kernel
8e0f891e v2: Open log fifo with `RDWR` instead of `WRONLY`
afbd03cf qemu-ppc64le: Switch off large decrementer capability
432f9bea clh: virtiofs: Add no_posix_lock option
0294fcb9 versions: Update go to 1.13.9
fd625b3f qemu: Don't crash if virtiofsd path is non existent
5eec8bdf qemu_ppc64le: EXpose fs support explicitly
e4eb553d virtcontainers: Add SELinux support for running VM Confinement
39e354f6 clh: Implement capabilities
0a1ffc1d types: Make FS sharing disable by default
669b6e32 clh: Report warning when requested vCPUs exceeds maxVCPU allowed
7997218c Makefile: Allow change default hypervisor via env var
aab82f67 clh: Add memory hotplug
e62a8aa9 versions: Update containerd commit
2f948738 clh: Use MemUnit to create VM
b6a7d8d6 utils: Add memory unit abstraction
5e7d2538 clh: add vmInfo method
ebb8fd57 versions: Update clh to latest master
4d2574a7 virtcontainers: Don't create vfio devices in the guest
3b53114a virtcontainers: improve algorithm to check Large bar devices
7aff5466 virtcontainers: check PCI resource format before using it
d0a730c6 shimv2: move container rootfs mounted flag to container level
d60902a9 FC: change minimum supported version of Firecracker to v0.21.1
aadf8c4a AArch64: enable firecracker v0.21.1 on AArch64
44e23493 FC: Fix error of overlong firecracker API unix socket
c3bafd57 FC: Change default API socket path
2945bcd7 FC: Removed redundant `--seccomp-level` jailer parameter
d2cae59e FC: Removed redundant `RescanBlockDevice` action
37b91b33 FC: Remove `logger.options`
2c310fec virtcontainers: handle persistent memory volumes
434b3025 virtcontainers: hotplug block drives that are pmem devices as nvdimm
84e0ee13 virtcontainers: reimplement `createBlockDevices`
abbdf078 virtcontainers: add Pmem attribute to BlockDrive
ee941e5c virtcontainers: Implement function to get the pmem DeviceInfo
9ff44dba virtcontainers: implement function to get the backing file
0a4e2edc virtcontainers: move GetDevicePathAndFsType to utils_linux
2c7f27ec vendor: update govmm
f61eca89 clh: Add comments around clh api
6a4e667f virtiofsd: Check if PID is valid
3251beaa version: Update clh to master
c5184641 clh: Add vfio support
4d034b1e versions: update go to v1.14

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-17 17:51:39 +00:00
Salvador Fuentes
b0c76b0e8f release: Kata Containers 1.11.0-rc0
- release: Tag and fork documentation repo as part of release
- obs: let patch set in order before apply them
- scripts: Disable pie for qemu when static building
- kernel: Enable CONFIG_VIRTIO_PMEM for booting from pmem
- kernel: Fix patch ordering
- tests: Remove performing updates in Fedora dockerfile
- kata-deploy: fix k3s containerd check
- scripts: update configuration script to support QEMU 5.0
- obs: Update SLES version for packaging
- config: enable printk-time for kernel-5.4 for arm64
- actions: change trigger phrase for kata-deploy action
- kernel: enable virtio-fs for arm64.
- add kernel config for gpu
- Optimize the kata qemu binary size
- obs: Remove OpenSUSE Leap 15.0 from obs generation
- pod : optimization Some debian package manager tweaks

d271ee7 obs: let patch set in order before apply them
fbad186 kernel: Enable CONFIG_VIRTIO_PMEM for booting from pmem
652d1fd release: Tag and fork documentation repo as part of release
7e22144 scripts: Disable pie for qemu when static building
93da145 kernel: Fix patch ordering
59f7678 tests: Remove performing updates in Fedora dockerfiles
96f3b99 kata-deploy: fix k3s containerd check
fb42e38 scripts: update configuration script to support QEMU 5.0
9bdc51c obs: Update SLES version for packaging
32986db config: enable printk-time for kernel-5.4 for arm64
9b8f20c kernel: enable virtio-fs for arm64.
12d351d kernel: add usage in readme
1389500 kernel: support force setup
7a17b50 kernel: support bash debug
d248e41 kernel: support build guest kernel for gpu
cbfc7a1 obs: Remove OpenSUSE Leap 15.0 from obs generation
9a6bd12 debian: Install missing ca-certificates package
d527c4f debian: Don't install recommended software
3670074 scripts: Disable a few options to reduce qemu binary size on generic architectures
711eae6 scripts: Set --enable-pie on aarch64 arch
7cdf113 scripts: Relax the version limitation for qemu
0871391 scripts: Remove obsoleted --disable-uuid
878a223 scripts: Disable xen when builing qemu on generic architectures
e92f3db actions: change trigger phrase for kata-deploy action

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-17 17:51:22 +00:00
Salvador Fuentes
b7d1e30c9f release: Kata Containers 1.11.0-rc0
- tests: deleting stale test results when tests failed
- image_builder: Reduce the boundary mb for reducing image size on arm64
- initrd-builder: Don't error if run as non-root
- s390x: Skip rust for s390x
- image_builder: Force mount_dir to be created in /tmp

c29dbae tests: deleting when tests failed
2ac3090 s390x: Skip rust for s390x
9665563 image_builder: Force mount_dir to be created in $TMPDIR
6cae294 initrd-builder: Don't error if run as non-root
005c62a image_builder: Reduce the boundary mb for reducing image size on arm64

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-17 17:51:16 +00:00
Salvador Fuentes
63d9a8696f release: Kata Containers 1.11.0-rc0
- Fix potentianl crash
- sandbox: fix the issue of missing setting hostname
- unify the rustjail's log to contain container id and exec id
- Refactor the way of creating container process

ba3c732 grpc: fix the issue of potential crashes
32431d7 rpc: fix the issue of kill container process
986e666 sandbox: fix the issue of missing setting hostname
7d9bdf7 grpc: Fix the issue passing wrong exec_id to exec process
9220fb8 rustjail: unify the rustjail's log to contain container id and exec id
c1b6838 rustjail: refactoring the way of creating container process
e56b10f rustjail: remove the unused imported crates
ded27f4 oci: add Default and Clone to oci spec objects
7df8ede rustjail: replace protocol spec with oci spec

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-17 17:51:05 +00:00
Salvador Fuentes
36ee5c8b9d release: Kata Containers 1.11.0-rc0
Version bump no changes

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-17 17:50:59 +00:00
Archana Shinde
e72b3d7340 Merge pull request #1008 from amshinde/tag-documentation-repo
release: Tag and fork documentation repo as part of release
2020-04-17 10:34:40 -07:00
Jianyong Wu
3a0d53dba4 kernel: Enable ptp_kvm for 5.4 kernel on arm64.
The enablement of ptp_kvm for arm is under review, see [1].
So we have to apply private patch to enable it in 5.4 kernel.
ptp_kvm can offer the capability of time sync in kata even there
is no network available and higher precision than time sync
service depend on network.

note:
If you want to use this feature on your arm machine, the host kernel
also need apply this patch. we recommend that your host kernel version
is the 5.4, then you can apply this patch smoothly.

[1] https://patchwork.kernel.org/cover/11372743/

Fixes: #997
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-04-17 21:49:10 +08:00
Fabiano Fidêncio
33e5ab1bf6 Merge pull request #2624 from andreabolognani/feature-selinux
makefile: Make SELinux support configurable
2020-04-17 15:04:04 +02:00
Julio Montes
6988935b0f Merge pull request #1016 from jongwu/order
obs: let patch set in order before apply them
2020-04-17 07:10:34 -05:00
Andrea Bolognani
d78ffd653d makefile: Make SELinux support configurable
SELinux support requires libselinux to be available, but that's
not the only factor: for example, Fedora 31 has libselinux but not
a version of selinux-policy that knows about Kata containers, so
enabling SELinux support by default in that case causes usability
issues.

Another issue with the current implementation is that, when
libselinux is absent, SELinux support will be quietly disabled,
which might not be what the user (or packager) intended.

To solve both problems, introduce the new FEATURE_SELINUX user
variable. This variable takes one of three values:

  * check (default): keep the current behavior;

  * yes: enable SELinux support, erroring out if libselinux is
         not present on the system;

  * no: disable SELinux support.

In the future we might want to formalize support for optional
build-time features, but for now this will do.

Fixes: #2623

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2020-04-17 12:03:22 +02:00
Julio Montes
018348064e Merge pull request #2621 from likebreath/boot_from_pmem
clh: Boot from persistent memory device
2020-04-16 07:33:07 -05:00
Julio Montes
9c8b7c3197 Merge pull request #2561 from justin-he/scsi_async
config: Add scsi_mod.scan=none for virtio-scsi
2020-04-16 07:28:48 -05:00
James O. D. Hunt
2d9e63c26b Merge pull request #1009 from justin-he/static_pie
scripts: Disable pie for qemu when static building
2020-04-16 09:56:51 +01:00
Jianyong Wu
d271ee7479 obs: let patch set in order before apply them
obs ci for linuxcontainer will fail when apply patch set which have
dependency within. so patch set should be made in order before feed
to apply.

Fixes: #1015

Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-04-16 16:52:03 +08:00
Fupan Li
39a039cde5 Merge pull request #2617 from fidencio/wip/shimv2_config_paths
katautils: Use config paths set during the build
2020-04-16 16:40:04 +08:00
Jose Carlos Venegas Munoz
420bb2a1d2 Merge pull request #1014 from likebreath/enable_virtio_pmem
kernel: Enable CONFIG_VIRTIO_PMEM for booting from pmem
2020-04-15 23:56:58 -05:00
Bo Chen
7aa3168500 clh: Boot from persistent memory device
This patch enables clh to mount the guest rootfs on a pmem device while
booting, which can reduce the guest memory footprint.

Fixes: #2589

Depends-on: github.com/kata-containers/packaging#1014

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-04-15 17:08:20 -07:00
Bo Chen
e8fc25a7f4 version: Update clh to master
Upgrade the version of clh to the upstream master, so that we have can
boot from pmem, and have the support for virtio-blk and virtio-pmem
hotplug.

Changes:

a8ec8f33 build(deps): bump hermit-abi from 0.1.10 to 0.1.11
6cc8248a build(deps): bump num_cpus from 1.12.0 to 1.13.0
8ff36337 vm-virtio: pci: Update the BARs used by the VirtioPciDevice
56207a03 pci: Print out details of the BAR moving upon error
a216c2eb vm-virtio: pci: Implement free_bars() for VirtioPciDevice
72fdfff1 vmm: device_manager: Remove unused "_mmap_regions" member
70ecd6ba vmm, virtio: fs: Move freeing of mappped region into device
0c6706a5 vmm, virtio: pmem: Move freeing of mappped region into device
6565e478 vhost_user_net: Enable multithreaded multiqueue support
1a0a2c01 vhost_user_backend: Provide the thread ID to handle_event()
cfffb7ed vhost_user_backend: Allow for one exit_event per thread
b927dcee vhost_user_net: Prepare for multithreaded support
cd2b03f6 vhost_user_backend: Return a list of vring workers
d9eec0de vhost_user_backend: Add the ability to start multiple threads
40e4dc63 vhost_user_backend: Change handle_event as immutable
8f434df1 vhost_user: Adapt backends to let handle_event be immutable
b1554642 vmm: seccomp: Add missing mremap() syscall
886c0f90 build(deps): bump libc from 0.2.68 to 0.2.69
6c164c76 build(deps): bump thiserror from 1.0.14 to 1.0.15
0071ac8c build(deps): bump parking_lot from 0.10.0 to 0.10.2
2b7fbcb9 build(deps): bump lock_api from 0.3.3 to 0.3.4
d1155c7c build(deps): bump parking_lot_core from 0.7.0 to 0.7.1
28abfa9d vmm: openapi: Mark "initramfs" field nullable
c260640f vmm: config: Use Default::default() value for initramfs field
4617aefd tests: Test initramfs loading with PVH boot
7134f312 vmm: Allow PVH boot with initramfs
0fc39364 arch: Support loading initramfs with PVH boot protocol
b9f19370 build(deps): bump smallvec from 1.2.0 to 1.3.0
2d3f518c vmm: config: Error if both socket and path are specified for a disk
eeb7e252 vmm: config: Move max vCPUs > boot vCPUs check to validate()
12edb246 vmm: config: Validate that serial/console file mode has a path
31928fb1 main: Consistently use eprintln!() for error messages
11dd609f main: Only try and parse VM options on VM boot path
aaf382ee vmm: Move kernel check to VmConfig::validate() method
3b0da2d8 vmm: vm: Validate configuration on API boot
99b2ada4 vmm: Start splitting configuration parsing and validation
0ea706fa vmm: openapi: Update OpenAPI definition with RestoreConfig
8d9d2243 vmm: Add "prefault" option when restoring
a517ca23 vmm: Move restore parameters into common RestoreConfig structure
6712958f vmm: memory: Add prefault option when creating region
b2cdee80 vmm: memory: Restore with Copy-on-Write when possible
d771223b vmm: memory: Extend new() to support external backing files
ee5a041a vmm: memory: Add Copy-on-Write parameter when creating region
be4e1e87 vmm: memory: Use fine grained mmap wrapper
f0ab002e build(deps): bump openssl-sys from 0.9.54 to 0.9.55
b9f9f01f vmm: Extend seccomp filters to allow snapshot/restore
6eb72130 vmm: Enable restore feature
53613319 vmm: Enable snapshot feature
2cd0bc0a vmm: Create initial VM from its snapshot
b55b83c6 vmm: vm: Implement the Transportable trait
1ed357cf vmm: vm: Implement the Snapshottable trait
20ba271b vmm: memory_manager: Implement the Transportable trait
e606112c vmm: memory_manager: Implement the Snapshottable trait
50b3f008 vmm: cpu: Implement the Snapshottable trait
f787c409 vmm: cpu: Factorize vcpu starting code
722f9b66 vmm: cpu: Get and set KVM vCPU state
13756490 vmm: cpu: Track all Vcpus through CpuManager
a0d5dbce vmm: device_manager: Implement the Snapshottable trait
93d3abfd vmm: device_manager: Make serial and ioapic devices migratable
12b036a8 Cargo: Update dependencies for the KVM serialization work
183529d0 vmm: Cleanup warning from build
22958261 main: Print human readable error for command line error
c7dfbd8a vmm: config: Implement fmt::Display for error
d8119fda vmm: config: Remove unused error entries
1a10f16a vmm: config: Consolidate size parsing code
f449486b vmm: config: Make toggle parsing more tolerant
a4e0ce58 vmm: config: Consolidate on/off parsing
c731a943 vmm: config: Port vsock to OptionParser
37264cf2 vmm: config: Add unit testing for vsock
8665898f vmm: config: Port device parsing to OptionParser
a85e2fa7 vmm: config: Add unit test for VFIO device parsing
bed282b8 vmm: config: Add "valueless" options to OptionParser
2ae3392d vmm: config: Port console parsing to OptionParser
143d63c8 vmm: config: Add unit test for console parsing
5ab58e74 vmm: config: Port pmem option to OptionParser
233ad78b vmm: config: Add parsing test for pmem
13dc6373 vmm: config: Port filesystem parsing to OptionParser
7a071c28 vmm: config: Implement unit testing for virtio-fs parsing
e4cd3072 vmm: config: Port RNG options to OptionParser
708dbb97 vmm: config: Add RNG parsing unit test
057e71d2 vmm: config: Accept empty value strings
218c780f vmm: config: Port network parsing to OptionParser
a5747a84 net_util: Implement FromStr for MacAddr
8754720e vmm: config: Add unit test for net parsing
224e3dde vmm: config: Switch disk parsing to OptionParser
9e102447 vmm: config: Add unit test for disk parsing
e40ae627 vmm: config: Port memory option parsing to OptionParser
be32065a vmm: config: Add "ByteSized" type for simplifying parsing of byte sizes
f01bd7d5 vmm: config: Implement FromStr for HotplugMethod
74613803 vmm: config: Add a Toggle type for "on/off" strings
929142bc vmm: config: Add memory parsing unit test
68203ea4 vmm: config: Port CPU parsing to OptionParser
9e6a2825 vmm: config: Add unit test for CPU parsing
9e7231cd vmm: config: Introduce basic OptionParser
1e20b572 build(deps): bump serde_json from 1.0.50 to 1.0.51
baf48500 build(deps): bump serde_derive from 1.0.105 to 1.0.106
00230905 build(deps): bump serde from 1.0.105 to 1.0.106
447af8e7 vmm: vm: Factorize the device and cpu managers creation routine
c73c9b11 vmm: vm: Open kernel and initramfs once all managers are created
0646a906 vmm: cpu: Pass CpusConfig to simplify the new() prototype
b584ec3f vmm: memory_manager: Own the system allocator
ef2b11ee vmm: memory_manager: Pass MemoryConfig to simplify the new() prototype
622f3f8f vmm: vm: Avoid ioapic variable creation
164e8100 vmm: cpu: Move CPUID patching to CpuManager
1a2c1f97 vmm: vm: Factorize the KVM setup code
3eb11069 arch: regs: Rename and export create_msr_entries
c3a34903 arch: regs: Make create_msr_entries more readable
7a50646c vmm: device_manager: Convert migratable_devices to a map
8ba37a98 .gitignore: Add build directory
b3e4111e devices: serial: Implement the Snapshottable trait
98741573 devices: ioapic: Implement the Snapshottable trait
3ef1c00c ch-remote: Fix snapshot and restore subcommands
dc97b67d main: Fix restore CLI
859a9618 ch-remote: Add --restore option
35c0ea6c ch-remote: Add --snapshot option
fe2d8846 main: Support VM restore from the command line
8f300bed vmm: api: Add a /api/v1/vm.restore endpoint
92c73c3b vmm: Add a VmRestore command
39d4f817 vmm: http: Add a /api/v1/vm.snapshot endpoint
cf8f8ce9 vmm: api: Add a Snapshot command
452475c2 vmm: Add migration helpers
1b1a2175 vm-migration: Define the Snapshottable and Transportable traits
2d17f438 vmm: seccomp: Add missing open() syscall
bf135a29 build(deps): bump linux-loader from `2adddce` to `61d95eb`
da4aaee7 build(deps): bump vmm-sys-util from 0.4.0 to 0.5.0
6a934c32 build(deps): bump proc-macro-hack from 0.5.14 to 0.5.15
3b891cd3 build(deps): bump micro_http from `e89ed14` to `0d87a94`
d5199ad9 build(deps): bump anyhow from 1.0.27 to 1.0.28
6a0b4d7a build(deps): bump proc-macro2 from 1.0.9 to 1.0.10
31bbe0e5 build(deps): bump hermit-abi from 0.1.9 to 0.1.10
7f098168 build(deps): bump hermit-abi from 0.1.8 to 0.1.9
00a1eced build(deps): bump thiserror from 1.0.13 to 1.0.14
f24b7424 build(deps): bump serde_json from 1.0.48 to 1.0.50
e4ea8b0b vmm: Add missing syscalls to the seccomp filters
33be24bd vhost-user-fs: return EINVAL if req is out of range in fs_slave_mmap/unmap/sync
78b5cbc6 vhost-user-fs: validate fs_slave_map/unmap/sync request
0c29c2ec ci: Extend VFIO test with memory hotplug
9e181776 vmm: Add memory hotplug support to VFIO PCI devices
cc67131e vmm: Retrieve new memory region when memory is extended
e4a034ae vfio: Add support for memory hotplug
8fc7bf29 vmm: Move to the latest linux-loader
785812d9 vmm: Fallback to legacy boot if PVH is enabled along with initramfs
5157ba10 resources: enable initramfs in kernel config
3b470d4f tests: add support for initramfs
6cce7b95 arch: load initramfs and populate zero page
1f9bc68c openapi: Add initramfs support
4db252b4 main, vmm: add --initramfs cli option
0ce7de3e arch: provide mechanism to get page size
4b110d5b tests: Add integration test for hotplugging network device
f3f4d075 ch-remote: Add support for hotplugging network devices
c73c31b6 docs: Update API documentation to include "vm.add-net"
6244beb9 openapi: Add "vm.add-net" entry point
57c3fa4b vmm: Add "add-net" to the API
f664cdde vmm: Add support for adding network devices to the VM
8f323e61 vmm: Add support to DeviceManager for hotplugging network devices
42a9896f vmm: device_manager: Refactor make_virtio_net_devices
9df601a1 bin, vmm: Centralise the net syntax
41d7b3a3 vmm: memory_manager: Only send the GED notification for the ACPI method
15d9ec01 openapit: Add hotplug_method to MemoryConfig
abbd69ab tests: Add integration test test_virtio_mem
4a7a2cff tests: Add test for hotplug_size and hotplug_method
e63f9818 vmm: device: Add make_virtio_mem_devices
e6b934a5 vmm: Add support for virtio-mem
51d102c7 vm-virtio: Add virtio-mem device
8d05fb86 tests: Add integration test for hotplugging pmem device
0b051010 ch-remote: Add support for hotplugging persistent memory
44aef8f4 docs: Update API documentation to include "vm.add-pmem"
75878dd9 openapi: Add "vm.add-pmem" entry point
f6f4c68f vmm: Add "add-pmem" to the API
15de30f1 vmm: Add support for adding pmem devices to the VM
f7def621 vmm: Add support to DeviceManager for hotplugging pmem devices
8c3ea8cd vmm: device_manager: Refactor make_virtio_pmem_devices
a7296bbb bin, vmm: Centralise the pmem syntax
61e34331 virtio-fs: validate request len in fs_slave_io()
4c9d15d4 vmm: Fix copy and paste error message
96d4f1e3 tests: Add integration test for hotplugging disk device
05ce2dc8 ch-remote: Add support for hotplugging disks
eec1a32d docs: Update API documentation to include "vm.add-disk"
82cad99c openapi: Add "vm.add-disk" entry point
f2151b27 vmm: Add "add-disk" to the API
164ec2b8 vmm: Add support for adding disks to the VM
b3082c19 vmm: Add support to DeviceManager for hotplugging disks
2be703ca vmm: device_manager: Refactor make_virtio_block_devices
66da29d8 bin, vmm: Centralise the disk syntax
ede28878 build(deps): bump micro_http from `e712d6a` to `e89ed14`

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-04-15 17:08:12 -07:00
Bo Chen
fbad186abe kernel: Enable CONFIG_VIRTIO_PMEM for booting from pmem
To support booting from pmem with cloud-hypervisor, we need to enable
the virtio-pmem in our kernel.

Fixes: #1013

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-04-15 15:49:39 -07:00
Archana Shinde
1f57eb7bcb Merge pull request #644 from amshinde/creat-VERSION-file
version: Create a VERSION file
2020-04-15 11:01:20 -07:00
Archana Shinde
3597abdb63 version: Create a VERSION file
Since we want to start tagging and branching this repo,
create a VERSION file starting with the last version released.

Fixes #246

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-04-15 10:12:41 -07:00
Julio Montes
a1378594d1 Merge pull request #443 from Pennyzct/clean_up_when_failed
tests: deleting stale test results when tests failed
2020-04-15 10:56:36 -05:00
Archana Shinde
65865ab74d Merge pull request #2613 from amshinde/update-kernel-5-4-32
version: Update kernel to lts 5.4.32
2020-04-15 06:29:57 -07:00
Fabiano Fidêncio
bf9758bf86 katautils: Use config paths set during the build
When building kata runtime packagers can simply do something like
`make CONFDIR=/usr/share/kata-containers/defaults` and it'll make
runtime understand that `/usr/share/defaults/kata-containers/` shouldn't
be used as `defaultRuntimeConfiguration` and, instead, runtime will use
whatever as passed to `make` during build time.

This is a quite common approach, mainly for distros, as there's no
perfect agreement on directory layout and whatnot.

Kwowing that, let's also make `containerd-shim-kata-v2`, which reads the
configurations from `pkg/katautils/config-settings.go`, to have a
similar behaviour as `runtime` and respect a "build-time" configured
`defaultRuntimeConfiguration` and `defaultSysConfRuntimeConfiguration`
paths.

Fixes: #2610

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-04-15 13:40:02 +02:00
Penny Zheng
c29dbae5b2 tests: deleting when tests failed
We only dumped test results for debugging, when tests failed.
we should also delete them for avoiding leaving stale test results
under /tmp.

Fixes: #442

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-04-15 13:18:38 +08:00
Jia He
8c850d9e3a config: Add scsi_mod.scan=none for virtio-scsi
As per [1], the default scan mode of scsi is sync.
kata-agent already scans the SCSI buses [2], changing it to none
can reduce the guest boot time.

=Before this patch=
[    0.113828] [    T1] scsi host0: Virtio SCSI HBA
[    0.134006] [    T1] tun: Universal TUN/TAP device driver, 1.6

=After this patch=
[    0.105891] [    T1] scsi host0: Virtio SCSI HBA
[    0.107868] [    T1] tun: Universal TUN/TAP device driver, 1.6

It reduces about 17ms on arm64 for virtio-scsi.

This patch changes the default kernel parameter:
1. If user specifies the scan mode, use that
2. If user doesn't specify it, and the block device is virtio-scsi, use
   "none" by default

[1] https://lwn.net/Articles/201898/
[2] https://github.com/kata-containers/agent/blob/649d44117a/device.go#L322

Fixes: #2560
Signed-off-by: Jia He <justin.he@arm.com
2020-04-15 09:45:48 +08:00
Archana Shinde
652d1fdfb8 release: Tag and fork documentation repo as part of release
We should start maintaining stable branches for the documentation
repo similar to other repos.

Fixes #1007

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-04-14 16:58:34 -07:00
Archana Shinde
07d0a4f0aa version: Update kernel to lts 5.4.32
Update kernel from 5.4.15 to 5.4.32

Fixes #2612

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-04-14 15:10:29 -07:00
Jose Carlos Venegas Munoz
c369692924 Merge pull request #2595 from jcvenegas/fix-2594
clh: virtiofs: Add no_posix_lock option
2020-04-14 13:30:08 -05:00
Salvador Fuentes
84d2bacc74 Merge pull request #2604 from amshinde/update-virtiofs-kernel
versions: Switch to virtio-fs-dev branch for kernel
2020-04-14 12:04:06 -05:00
Graham Whaley
0fe23c85c2 Merge pull request #2591 from darfux/change_log_outpipe_to_rdwr
v2: Open log fifo with `RDWR` instead of `WRONLY`
2020-04-14 14:40:20 +01:00
Jia He
7e22144664 scripts: Disable pie for qemu when static building
--enable-pie is not compatible with --static option for qemu building.
Without this patch, it will report a configure error during static building:

ERROR: static and pie are mutually incompatible

Fixes: #982

Signed-off-by: Jia He <justin.he@arm.com>
2020-04-14 14:48:21 +08:00
Fabiano Fidêncio
ab8050c5e0 kata_agent: Don't use dax if virtio_fs_cache is 0
If always using dax, even if virtio_fs_cache is 0, the following error
would happen:

```
[root@f32 runtime]# podman run --security-opt label=disable  --runtime=/usr/local/bin/kata-runtime --rm -id fedora sh
Error: rpc error: code = Internal desc = Could not mount kataShared to /run/kata-containers/shared/containers/: invalid argument: OCI runtime error
```

Fixes: #2464

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-04-13 14:22:52 -07:00
Fabiano Fidêncio
6218b2a558 kata_agent: Remove sharedDirVirtioFSOptions
Although in the earlier stages of development those FUSE client mount
options were needed, when virtiofs got merged the default option values
were baked into virtiofs.ko.

Those options are not only unneeded, but they'd also cause issues when
trying to run recent enough kernels, as shown below:
```
[root@f32 runtime]# podman run --security-opt label=disable  --runtime=/usr/local/bin/kata-runtime --rm -id fedora sh
Error: rpc error: code = Internal desc = Could not mount kataShared to /run/kata-containers/shared/containers/: invalid argument: OCI runtime error
```

Fixes: #2464

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-04-13 14:22:52 -07:00
Fabiano Fidêncio
95ccc0f759 agent: Use "virtiofs" instead of "virtio_fs"
virtio_fs was the name used for the module in the very early stages of
its development.

Fixes: #2462

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-04-13 14:22:52 -07:00
Archana Shinde
4c1cacd31d versions: Switch to virtio-fs-dev branch for kernel
This includes a newer kernel and necessary overlay changes
that fix oustanding issue for running docker in docker using
overlay.

Depends-on: github.com/kata-containers/agent#738
Depends-on: github.com/kata-containers/shim#233

Fixes #2603

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-04-13 14:22:52 -07:00
Li Yuxuan
8e0f891ebc v2: Open log fifo with RDWR instead of WRONLY
The container log fifo is opened as `O_WRONLY` now. When the read side
of fifo is closed temporarily such as restarting contaienrd, write to
`tty.Stdout` will get an EPIPE error and finally cause `io.CopyBuffer`
return. Then `ioCopy` closes the tty io and exits. Thus after containerd
restarted, the log fifo can't be reopened. The container will be blocked
forever after stdout/stderr buffer is full.

Opening the log fifo with `RDWR` instead of `WRONLY` avoids the fifo
returning EPIPE when the read side is closed, and keeps the fifo open
until the reader reopening it.

Fixes: #2590

Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2020-04-10 14:58:56 +08:00
James O. D. Hunt
af24829c2a Merge pull request #2600 from nitkon/master
qemu-ppc64le: Switch off large decrementer capability
2020-04-09 11:30:54 +01:00
James O. D. Hunt
f13b4f582f Merge pull request #627 from dong-liuliu/xliu2/spdk-vhost-user
Revise use-case of Using-SPDK-vhostuser-and-kata.md
2020-04-09 10:49:40 +01:00
James O. D. Hunt
d71d5e1e54 Merge pull request #639 from amshinde/add-versions-for-privileged
privileged: Add containerd and crio versions.
2020-04-09 10:49:04 +01:00
Your Name
afbd03cf01 qemu-ppc64le: Switch off large decrementer capability
Large decrementer was introduced in Power 9 cpus.
Switch it off "cap-large-decr=off" as not all KVM hosts
support it

Fixes: #2599

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2020-04-09 00:04:57 -05:00
Archana Shinde
e5046cc0ef privileged: Add containerd and crio versions.
Add containerd and crio versions that support
`privileged_without_host_devices` behaviour.

Fixes #638

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-04-08 16:11:11 -07:00
Salvador Fuentes
367c2ac068 Merge pull request #1005 from jodh-intel/fix-patch-ordering
kernel: Fix patch ordering
2020-04-08 12:55:28 -05:00
GabyCT
c07f20637d Merge pull request #636 from GabyCT/topic/fixopensuse
docs: Fix opensuse installation guide
2020-04-08 10:51:51 -05:00
Jose Carlos Venegas Munoz
432f9bea6e clh: virtiofs: Add no_posix_lock option
This will allow lock operations, needed by programs like
`apt-get upgrade`.

Fixes: #2594

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-04-08 14:54:56 +00:00
James O. D. Hunt
93da14508f kernel: Fix patch ordering
Fix the `build-kernel.sh` script to sort patches correctly. Previously,
it relied on `find(1)` for the ordering. However, `find(1)` does not
guarantee any ordering of files within a directory. Since the ordering
could therefore be "random", it was quite possible for patches to be
applied in the wrong order, resulting in conflicts.

Fixes: #1003.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-04-08 14:21:36 +01:00
Jose Carlos Venegas Munoz
02d8ec0bf8 Merge pull request #2593 from chavafg/topic/update-golang-version
versions: Update go to 1.13.9
2020-04-07 18:05:51 -05:00
Gabriela Cervantes
832aaea1ad docs: Fix opensuse installation guide
This PR fixes the opensuse installation guide, it solves the issue of
having an extra empty space at the end of the distro name which is causing
a failure when we want to add the kata containers obs repository as we
are looking for http://download.opensuse.org/repositories/home:/katacontainers:/releases:/x86_64:/master/openSUSE_Leap_15.1%20/
which is non existing and it is giving us an error of Valid metadata not found at specified URL.
This PR replaces the URL for a correct one.

Fixes #635

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-04-07 14:56:38 -05:00
Archana Shinde
9a3a226184 Merge pull request #632 from jcvenegas/docs-pkg-test
release: docs: Add information about package testing
2020-04-07 11:51:56 -07:00
Salvador Fuentes
0294fcb992 versions: Update go to 1.13.9
Update golang to 1.13.9 in versions.yaml.
In addition, add same golang version to `.travis.yml` and
delete the call to `.ci/install_go.sh` as it started to
cause problems in travis CI.

Fixes: #2592.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-04-07 13:04:59 -05:00
James O. D. Hunt
ed13991f2d Merge pull request #1002 from GabyCT/topic/removeupdate
tests: Remove performing updates in Fedora dockerfile
2020-04-07 15:03:50 +01:00
Yang Bo
c0dc7676e0 Merge pull request #179 from lifupan/fix_potentianl_crash
Fix potentianl crash
2020-04-07 19:58:52 +08:00
Jose Carlos Venegas Munoz
ab14b29116 release: docs: Add information about package testing
A basic testing can be done using jenkins pipeline.

Fixes: #631

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-04-06 21:01:35 +00:00
Gabriela Cervantes
59f7678f94 tests: Remove performing updates in Fedora dockerfiles
For obs and running the packages testing in Fedora, we need to remove
the performing of doing an update as it is hit by
https://github.com/kata-containers/runtime/issues/2580. This is needed
to unblock the errors in the testing.

Fixes #1001

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-04-06 12:07:11 -05:00
Graham Whaley
c5a5ac9e45 Merge pull request #576 from bergwolf/annotations
howto: add sandbox config annotation howto
2020-04-06 16:16:42 +01:00
Graham Whaley
dce8d66a30 Merge pull request #999 from wilsonianb/fix-k3s
kata-deploy: fix k3s containerd check
2020-04-06 14:20:49 +01:00
Brandon Wilson
96f3b99c7a kata-deploy: fix k3s containerd check
The default k3s containerRuntimeVersion takes the form of:
containerd://1.3.3-k3s2

The awk was stripping away the k3s portion before checking if it was a
k3s containerd.

fixes #996

Signed-off-by: Brandon Wilson <brandon@coil.com>
2020-04-03 16:38:01 -05:00
Jose Carlos Venegas Munoz
6e398f7c71 Merge pull request #2585 from nitkon/QemuCapablity
qemu_ppc64le: EXpose fs support explicitly
2020-04-03 09:52:42 -06:00
Julio Montes
2b92007a5c Merge pull request #2583 from fidencio/wip/virtiofsd_not_present
qemu: Don't crash if virtiofsd path is non existent
2020-04-03 09:21:14 -06:00
Archana Shinde
2f07ec9100 Merge pull request #2503 from rhatdan/selinux
Add SELinux support for running VM Confinement
2020-04-03 07:58:58 -07:00
Fabiano Fidêncio
fd625b3fc5 qemu: Don't crash if virtiofsd path is non existent
Instead, report an error and exit gracefully, as shown below:
```
dahmer fidencio # podman run -ti --runtime=/usr/bin/kata-runtime fedora sh
Error: virtiofsd path (/usr/libexec/virtiofsd) does not exist: OCI runtime error
```

Fixes: #2582

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-04-03 15:44:06 +02:00
Nitesh Konkar
5eec8bdf9d qemu_ppc64le: EXpose fs support explicitly
Since fs sharing is not assumed as supported by default, expose
explicitly that the qemu_ppc64le supports it.

Fixes: #2584

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2020-04-03 19:08:04 +05:30
Daniel J Walsh
e4eb553d12 virtcontainers: Add SELinux support for running VM Confinement
We want to launch the KVM launcher tool (qemu?) with an SELinux label, similar
to what we do with libvirt.

Currently when I use kata with Podman, it complains if we specify a label that
kata does not support SELinux labels. What I would like to do is have kata just
use this label to apply to the KVM launcher. Then I will work to generate a new
policy type (container_kvm_t) that will allow the KVM Launcher tool to do its
thing, but prevent breakout.

Fixes: #2501

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-04-02 09:19:45 -04:00
Liu Xiaodong
688c88a60f use-cases: avoid binding PCI in using-vhost-user
By default, SPDK's setup.sh will bind PCI devices to
userspace from kernel. This may confuse beginners.
So add PCI_WHITELIST="none" to blacklist all PCI devices.

Fixes: #626

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-04-02 09:13:07 -04:00
Liu Xiaodong
2c6cb39e07 use-cases: add version notice in using vhost-user
Fixes: #626

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-04-02 09:13:07 -04:00
Liu Xiaodong
4faf21e80d use-cases: revise config on vhost-user device
Configure parameter "enable_vhost_user_store" is
added as an indicator to enable vhost-user storage
device assignment.
Also notice user hugepage should be enabled for
SPDK vhost target currently.

Fixes: #626

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-04-02 09:13:07 -04:00
Liu Xiaodong
77fb011bd1 use-cases: re-edit words in using-spdk-vhost-user
Sentences for how to do host setup for vhost-user devices
were not clear, so re-edit them.

Fixes: #626

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-04-02 09:13:02 -04:00
fupan.lfp
ba3c732f86 grpc: fix the issue of potential crashes
It's better to check whether the sandbox's get_container
result instead of unwrap it directly, otherwise it would
crash the agent if the conainer id is invalid.

Fixes: #178

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-04-02 18:58:24 +08:00
fupan.lfp
32431d701c rpc: fix the issue of kill container process
When kill a process, if the exec id is empty, then
it means to kill all processes in the container, if
the exec id isn't empty, then it will only kill the
specific exec process.

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-04-02 17:58:46 +08:00
Yang Bo
6d61ab439c Merge pull request #176 from lifupan/fix_hostname
sandbox: fix the issue of missing setting hostname
2020-04-01 10:00:31 +08:00
fupan.lfp
986e666b0b sandbox: fix the issue of missing setting hostname
When setup the persisten uts namespace, it's should
set the hostname for this ns.

Fixes: #175

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-03-31 17:22:24 +08:00
fupan.lfp
7d9bdf7b01 grpc: Fix the issue passing wrong exec_id to exec process
This issue was brought accidently by PR #174, fix this issue.

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-03-31 17:19:40 +08:00
Jose Carlos Venegas Munoz
705713b4f9 Merge pull request #2571 from jcvenegas/caps-clh
clh:  Implment capabilities
2020-03-30 16:33:42 -06:00
Jose Carlos Venegas Munoz
9fd7189388 Merge pull request #2536 from openSUSE/golang-update
Update go to v1.13.8
2020-03-30 12:12:41 -06:00
Julio Montes
e2d346c61d Merge pull request #2566 from jcvenegas/fix-2565
Makefile: Allow change default hypervisor via env var
2020-03-30 07:30:49 -06:00
James O. D. Hunt
90b9d82ce3 Merge pull request #621 from GabyCT/topic/updateslesdoc
docs: Update SLES installation guide
2020-03-30 10:33:08 +01:00
James O. D. Hunt
c948d8a802 Merge pull request #174 from lifupan/unify_log
unify the rustjail's log to contain container id and exec id
2020-03-30 10:02:39 +01:00
James O. D. Hunt
891b61c993 Merge pull request #405 from justin-he/boundary_mb
image_builder: Reduce the boundary mb for reducing image size on arm64
2020-03-30 09:57:06 +01:00
James O. D. Hunt
0312a60287 Merge pull request #423 from crobinso/initrd-nonroot
initrd-builder: Don't error if run as non-root
2020-03-30 09:56:38 +01:00
James O. D. Hunt
7cb647a78b Merge pull request #439 from alicefr/skip-rust-s390x
s390x: Skip rust for s390x
2020-03-30 09:54:47 +01:00
Julio Montes
b4ecfdb2dc Merge pull request #990 from devimc/topic/scripts/qemu5
scripts: update configuration script to support QEMU 5.0
2020-03-27 13:50:35 -06:00
Jose Carlos Venegas Munoz
e525003e96 Merge pull request #2552 from likebreath/warn_only_resizeCPU
clh: Report warning when requested vCPUs exceeds maxVCPU allowed
2020-03-27 13:01:48 -06:00
Julio Montes
0fd7873a98 Merge pull request #623 from Jimmy-Xu/update-use-case-nvidia
use-cases: Update documentation for using Nvidia GPU with Kata
2020-03-27 07:00:50 -06:00
fupan.lfp
9220fb8e0c rustjail: unify the rustjail's log to contain container id and exec id
Add the container id and exec id to start container's log
which would make it clearly to check the log.

Fixes: #173

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-03-27 20:10:50 +08:00
Alice Frosi
2ac3090c20 s390x: Skip rust for s390x
Need to verify that rust deps are available on s390x

Fixes #438

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2020-03-27 10:01:54 +01:00
Jose Carlos Venegas Munoz
39e354f609 clh: Implement capabilities
Make explicit that sharedfs is supported.

Other features are not supported today.

Fixes: #2567

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-27 06:14:20 +00:00
Jose Carlos Venegas Munoz
0a1ffc1d97 types: Make FS sharing disable by default
All the other caps are inverted (not supported by default).

Make fs sharing not supported by default and let hypervisors
expose if it supports it.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-27 06:14:20 +00:00
Jimmy Xu
21743269b0 use-cases: Update documentation for using Nvidia GPU with Kata
When running docker with Nvidia GPU, the option --cap-add=ALL is required.

Fixes: #622

Signed-off-by: Jimmy Xu <jungming.xjm@antfin.com>
2020-03-27 12:38:10 +08:00
Bo Chen
669b6e32a5 clh: Report warning when requested vCPUs exceeds maxVCPU allowed
To have a consistent behavior of CPU hotplug with qemu in clh, we should
only report warning instead of errors when the requested vCPUs exceeds
the maximum number of vCPUs allowed.

Fixes: #2551

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-03-26 19:36:09 -07:00
Jose Carlos Venegas Munoz
2a19de8aa9 Merge pull request #2556 from jcvenegas/mem-hotplug-clh-v2
clh: Enable memory hotplug
2020-03-26 15:48:19 -06:00
Julio Montes
fb42e38978 scripts: update configuration script to support QEMU 5.0
Update configure-hypervisor.sh to support QEMU 5.0.

fixes #989

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-26 21:43:27 +00:00
Jose Carlos Venegas Munoz
7997218ced Makefile: Allow change default hypervisor via env var
- Add support to change default hypervisor via env variable.

- Show in the summary the default hypervisor to be used.

```
export DEFAULT_HYPEVISOR=cloud-hypervisor
make
sudo -E make install
```

Fixes: #2565

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-26 20:59:38 +00:00
Julio Montes
4fe62ade7f Merge pull request #2543 from devimc/topic/virtcontainers/fixQ35vfioHotplug
virtcontainers: check PCI resource format before using it
2020-03-26 14:29:26 -06:00
Jose Carlos Venegas Munoz
11c998b6c7 Merge pull request #2515 from devimc/topic/pmem-CSI
Support persistent memory volumes
2020-03-26 11:57:17 -06:00
GabyCT
c9540ce641 Merge pull request #984 from GabyCT/topic/updatesles
obs: Update SLES version for packaging
2020-03-26 11:15:44 -06:00
GabyCT
36e7d3d13e Merge pull request #988 from jongwu/printk
config: enable printk-time for kernel-5.4 for arm64
2020-03-26 09:43:28 -06:00
Graham Whaley
92b2ff723c Merge pull request #2563 from chavafg/topic/update-containerd-version
versions: Update containerd commit
2020-03-26 09:33:24 +00:00
Jose Carlos Venegas Munoz
aab82f6745 clh: Add memory hotplug
Request memory to resize memory to hypervisor.

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

Fixes: #2526

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-26 04:31:21 +00:00
Salvador Fuentes
e62a8aa98e versions: Update containerd commit
We currently use containerd v1.3.0, but this version has an
issue when running the containerd/cri tests with go 1.13.
This commit: 3a4acfbc99aa976849f51a8edd4af20ead51d8d7 from
branch release/1.3 contains the fix to be able to run the
tests with go 1.13.

Depends-on: github.com/kata-containers/tests#2415
Fixes: #2562.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-03-25 18:10:52 -06:00
Gabriela Cervantes
9bdc51c982 obs: Update SLES version for packaging
Currently for our CI, we have SLES 15 SP1, this PR updates the current obs
version to match with our current testing.

Fixes #983

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-03-25 14:32:04 -06:00
Salvador Fuentes
5fe076ac8b Merge pull request #972 from grahamwhaley/20200306_silence_actions
actions: change trigger phrase for kata-deploy action
2020-03-25 12:06:01 -06:00
Gabriela Cervantes
13b7ccf921 docs: Update SLES installation guide
We need to update the SLES installation guide, as we have obs packages
for SLES 12 SP4 and not for SLES 12 SP3.

Fixes #620

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-03-25 10:54:03 -06:00
Julio Montes
c4dc530708 Merge pull request #618 from cmaf/update-howto-crioconf
howto: Update deprecated CRI-O conf option
2020-03-25 08:54:03 -06:00
Jianyong Wu
32986dbb10 config: enable printk-time for kernel-5.4 for arm64
Open PRINTK_TIME in arm64_kata_kvm_5.4.x to let kernel print timestamp
correctly.

Fixes: #987
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-03-25 17:29:19 +08:00
Jose Carlos Venegas Munoz
2f948738e4 clh: Use MemUnit to create VM
Provide memory in bytes using the new memory unit abstraction.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-25 04:32:03 +00:00
Jose Carlos Venegas Munoz
b6a7d8d63a utils: Add memory unit abstraction
Add MemUnit to help to manage memory, this will handle memory
units internally and provide proper methods to convert to different
units.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-25 04:32:03 +00:00
Jose Carlos Venegas Munoz
5e7d253859 clh: add vmInfo method
API VMInfo call is done more than one time. This leads to have
similar code in multiple times, create context, defer, do call.

Move the logic to one function.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-25 04:32:03 +00:00
Jose Carlos Venegas Munoz
ebb8fd576b versions: Update clh to latest master
Use latest master to enable memory hotplug.

Changes:

c1e6d00 ci: Add memory resizing use case to vhost-user tests
890582b ci: Factorize kernel command line
4de2584 ci: Fix mmio tests with direct kernel boot
f268246 ci: Factorize integration tests booting from vhost-user-blk
5a5b3cf ci: Factorize vhost-user-blk integration tests
dd8debf ci: Run vhost-user-blk tests for mmio builds
0c9c72c ci: Unify vhost-user-blk integration tests
c95851f ci: Run vhost-user-net tests for mmio transport
68293fc ci: Factorize vhost-user-net one step further
d75e745 vm-virtio: vhost-user: Send memory update to the backend
7ff82af vm-virtio: vhost-user: Factorize SET_MEM_TABLE setup
e54f8ec vmm: Update memory through DeviceManager
bc874a9 vm-virtio: Add update_memory() to VirtioDevice trait
93becca build(deps): bump backtrace from 0.3.45 to 0.3.46
feb8d7a vmm: Separate seccomp filters between VMM and API threads
5120c27 main: Add seccomp support
f1a23d7 vmm: api: Add seccomp to the HTTP API thread
db62cb3 vmm: Add seccomp filter to the VMM thread
cb98d90 vmm: Create new seccomp_filter module
708f02d vmm: Pull seccomp crate from Firecracker
18fbd30 vhost-user-fs: return correct result of fs_slave_io()
bbc385c devices: ioapic: Remove unused MsiMessage structure
2fc86ff dev_cli: Always pull the latest container image
4b462a5 Dockerfile: Add cpio and bsdtar to the container image
8acc15a build: Bump vm-memory and linux-loader dependencies
38ed560 build(deps): bump thiserror from 1.0.12 to 1.0.13
9f67de4 build(deps): bump proc-macro-hack from 0.5.12 to 0.5.14
ebab809 build(deps): bump thiserror from 1.0.11 to 1.0.12
c67e407 build(deps): bump syn from 1.0.16 to 1.0.17
bdcfe1e tests: Add "discard_writes" pmem test
7098602 tests: Make the test_virtio_pmem test use a temporary file
f7197e8 vmm: Add a "discard_writes=" to --pmem
d11a67b vmm: Use more generic MmapRegion constructor
7257e89 vmm: Add "readonly" parameter MemoryManager::create_userspace_mapping
03cb26c release: v0.6.0
3e9a39c github: Upload the ch-remote asset
c503118 vmm: fix a corrupted stack caused by get_win_size
0788600 build: Remove "pvh_boot" feature flag
477bc17 bin: Share VFIO device syntax between cloud-hypervisor and ch-remote
96be2db build(deps): bump serde_derive from 1.0.104 to 1.0.105
5a335fc build(deps): bump serde from 1.0.104 to 1.0.105
a31ffef openapi: Add hotplug_size for memory hotplug
87990f9 vmm: Add virtio-pci device to B/D/F hash table
fb185fa vmm: Always return PCI B/D/F from add_virtio_pci_device
462082c build(deps): bump arc-swap from 0.4.4 to 0.4.5
c821e96 vhost_user_fs: Implement support for FUSE_LSEEK
5aa9abc docs: Add document for vhost-user-net test with OVS/DPDK
6329219 vm-virtio: queue: Use a SeqCst fence on get_used_event
63eeed2 vm: Comment on the VM config update from memory hotplug
0895bcb build(deps): bump proc-macro-hack from 0.5.11 to 0.5.12
0541f5a build(deps): bump proc-macro-nested from 0.1.3 to 0.1.4
51f51ea build(deps): bump libc from 0.2.67 to 0.2.68
9cf67d1 arch: x86: Always set the bootloader type
ad35470 arch: x86: Extract common bootparams settings
28a5f9d vmm: acpi: Remove unused IORT related structures
5c1207c vhost-user-fs: handle FS_IO request
f61f78e build(deps): bump anyhow from 1.0.26 to 1.0.27
efb2447 pvh: Add integration test to validate PVH boot
da084fa pvh: Add unit tests for initial sregs and control registers
64941bf pvh: Add unit tests for start_info and memory map structures
9e247c4 pvh: Introduce "pvh_boot" feature
a22bc35 pvh: Write start_info structure to guest memory
840a9a9 pvh: Initialize vCPU regs/sregs for PVH boot
24f0e42 pvh: Introduce EntryPoint struct
98b9568 pvh: Add definitions for PVH boot protocol support
6e6ef83 build: Fix log dependency
291f1ce build(deps): bump linux-loader from `0c754f3` to `0ce5bfa`
07cc73b vhost_user_fs: add a flag to disable extended attributes
710520e vhost_user_fs: Process requests in parallel with a thread pool
90309b5 vm-virtio: queue: Add methods to switch a descriptor context
2294c2d Add .rustfmt.toml to the project
48c4885 vhost_user_fs: replace HandleData's File Mutex with RwLock
134e64c arch, qcow: Fix 1.42.0 clippy warnings
6ea85ca resources: Dockerfile: Update Rust toolchain
4579afa vmm: For --disk error if socket and path is specified
7e599b4 vmm: Make disk path optional
477d924 github: Build from a rust toolchain matrix
4f2469e main: Remove "--vhost-user-net"
8d785bb pci: Fix the PciBus using HashMap instead of Vec
04f2ccd build(deps): bump ryu from 1.0.2 to 1.0.3
02265bb build(deps): bump regex-syntax from 0.6.16 to 0.6.17
40b38a4 openapi: Make desired_ram int64 format
ca3b39c bin: Fix wrapping in help strings
ee1ba56 build: Use "wrap_help" feature for clap
3957d1e vhost_user_backend: call get_used_event from needs_notification
536323d vm-virtio: queue: hint that get_used_event should be inlined
401e1d2 vm-virtio: queue: fix a barrier comment at update_avail_event
e0bdfe8 vm-virtio: queue: add a missing memory barrier in get_used_event
df2570a resources: Simplify kernel config filename
9ab648b resources: Enable VIRTIO_MEM support
0339853 ci: Bump to kernel 5.6-rc4
abccf76 tests: Use ch-remote to add/remove devices in test_vfio
5c3ce9d tests: Extend ch-remote helper to support optional single argument
9a7d9c9 ch-remote: Support removing VFIO devices
0d53ba4 ch-remote: Support adding VFIO devices
babefbd main: Remove spurious second help line for "--device"
63c5d09 github: Trigger the build job on PRs
8cbb6d0 github: Replace Travis CI with github actions
efba48d vmm: Don't put a VFIO device behind the vIOMMU by default
34412c9 vmm: Add id option to VFIO hotplug
18dc916 vmm: Switch to the micro-http package
9023444 vmm: Add id field to --device through CLI
f4a956a vmm: Remove 32 bits MMIO range from correct address space
432eb5b vmm: Free PCI BARs when unplugging PCI device
f0dff8b vfio: pci: Remove KVM user memory region when cleaning up
34d1f43 vfio: pci: Implement free_bars() from the PciDevice trait
b8e1cf2 vm-allocator: Add new function to free 32 bits MMIO address space
f3dc245 pci: Extend PciDevice trait with new free_bars() method
911a2d6 tests: Use ch-remote to resize the VM
21160f7 ch-remote: Add "resize" command
bb2d04b ch-remote: Add support for sending a request body
bde4f73 ch-remote: Refactor HTTP response handling
6ed23bb build(deps): bump micro_http from `9bbde4f` to `6b3e5f0`
5edd812 build(deps): bump backtrace-sys from 0.1.33 to 0.1.34
f727714 ci: Add integration test for VFIO hot-unplug
b50cbe5 pci: Give PCI device ID back when removing a device
df71aae pci: Make the device ID allocation smarter
e514b12 vmm: Update VmConfig when removing VFIO device
81173bf vmm: Add id field to DeviceConfig structure
6cbdb9a vmm: api: Introduce new "remove-device" HTTP endpoint
991f3bb vmm: Remove VFIO device from everywhere it is referenced
6adebbc vmm: Detect when guest notifies about ejecting PCI device
0e21c32 devices: Add new method to remove all occurrences of a BusDevice
f8e2008 pci: Add a function to remove a PciDevice from the bus
08604ac vmm: Store PCI devices as Any devices from DeviceManager
0f99d3f vmm: Store VFIO device's name and its PCI b/d/f
13a61c4 build(deps): bump rand_chacha from 0.2.1 to 0.2.2
fcd605a build(deps): bump micro_http from `6d416af` to `9bbde4f`
30b6954 vm-virtio: Consume pause events to prevent infinite epoll_wait calls
16fd506 tests: Use new ch-remote for pause/resume integration test
ba8cd4d bin: Introduce "ch-remote" for controlling VMM
06cd31c build(deps): bump micro_http from `02def92` to `6d416af`
7e941c9 build(deps): bump linux-loader from `8cb7c66` to `0c754f3`

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-25 04:30:58 +00:00
Chelsea Mafrica
99e2d1397c howto: Update deprecated CRI-O conf option
CRI-O config option manage_network_ns_lifecycle is replaced with
manage_ns_lifecycle in 1.17, which determines whether we pin and remove
namespaces and manage their lifecycle. Update docs to reflect both.

Fixes #617

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
2020-03-24 15:42:30 -07:00
Julio Montes
213f5dbaf5 Merge pull request #2550 from devimc/topic/virtcontainers/noVFIOInGuest
virtcontainers: Don't create vfio devices in the guest
2020-03-24 09:39:23 -06:00
Yang Bo
1e15465012 Merge pull request #167 from lifupan/refactor
Refactor the way of creating container process
2020-03-24 11:18:42 +08:00
GabyCT
39f6cb6862 Merge pull request #436 from fidencio/wip/force_osbuilder_mount_dir_to_be_in_slash_tmp
image_builder: Force mount_dir to be created in /tmp
2020-03-23 15:03:21 -06:00
Julio Montes
4d2574a723 virtcontainers: Don't create vfio devices in the guest
vfio devices hotplugged in the VM are expected to be handled by the kernel
driver in the guest, hence the char vfio devices shouldn't appear in the
container under /dev/vfio/.

fixes #2539

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-23 19:53:42 +00:00
Fabiano Fidêncio
9665563145 image_builder: Force mount_dir to be created in $TMPDIR
Immutable systems, as such Red Hat Core OS and Fedora Core OS, will not
allow mount_dir to be created in a location that's not read-write.

Let's ensure we use $TMPDIR (with /tmp as fallback) as base for mount_dir,
as it's a safe writable choice for any distro supported by kata.

Fixes: #437

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-03-23 17:35:38 +01:00
Julio Montes
3b53114ad1 virtcontainers: improve algorithm to check Large bar devices
Instead of iterate in a loop dividing bytes by 1024, use right shift
to convert Bytes to GBytes and check if that number is greater than 4G

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-23 16:21:39 +00:00
Julio Montes
7aff546655 virtcontainers: check PCI resource format before using it
Make sure the number of columns in the PCI resource file is greater
or equal to 2, since the first two columns are used to calculate
the PCI bar space.
Add unit test for `isLargeBarSpace()`.

fixes #2542

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-23 16:20:09 +00:00
Julio Montes
078da1a6de Merge pull request #2533 from bergwolf/mounted
shimv2: move container rootfs mounted flag to container level
2020-03-23 09:34:38 -06:00
Graham Whaley
c028329755 Merge pull request #2505 from Pennyzct/update_FC_0.21.0
AArch64: officially enable firecracker v0.21.0 on AArch64
2020-03-23 10:03:19 +00:00
fupan.lfp
c1b6838e25 rustjail: refactoring the way of creating container process
In the previous implementation, create a container process
by forking the parent process as the container process,
and then at the forked child process do much more setting,
such as rootfs mounting, drop capabilities and so on, at
last exec the container entry cmd to switch into container
process.

But since the parent is a muti thread process, which would
cause a dead lock in the forked child. For example, if one
of the parent process's thread do some malloc operation, which
would take a mutex lock, and at the same time, the parent forked
a child process, since the mutex lock status would be inherited
by the child process but there's no chance to release the lock
in the child since the child process only has a single thread
which would meet a dead lock if it would do some malloc operation.

Thus, the new implementation would do exec directly after forked
and then do the setting in the exec process. Of course, this requred
a data communication between parent and child since the child cannot
depends on the shared memory by fork way.

Fixes: #166
Fixes: #133

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-03-23 17:12:10 +08:00
Peng Tao
d0a730c6e8 shimv2: move container rootfs mounted flag to container level
It is in fact a container specific info not sandbox level info.
We are assuming that all containers use the same snapshotter
but it may not be the fact in reality.

Fixes: #2532
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-03-23 13:41:38 +08:00
Penny Zheng
d60902a95e FC: change minimum supported version of Firecracker to v0.21.1
Some changes in Firecracker v0.21.1 is incompatible with the old versions.
So we need to update the minimum supported FC version to v0.21.1

Fixes: #2504

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-23 09:57:25 +08:00
Penny Zheng
aadf8c4a01 AArch64: enable firecracker v0.21.1 on AArch64
We offically enable firecracker v0.21.1 on AArch64.

Fixes: #2504

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-23 09:57:25 +08:00
Penny Zheng
44e23493a2 FC: Fix error of overlong firecracker API unix socket
When sandbox id is too long, it will incur error of overlong firecracker
API unix socket.
In Linux, sun_path could maximumly contains 108 bytes in size.
http://man7.org/linux/man-pages/man7/unix.7.html
So here we try to truncate FC id to only keep the size of UUID(128bit).

Fixes: #2504

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-23 09:57:25 +08:00
Penny Zheng
c3bafd5793 FC: Change default API socket path
Firecracker has changed default API socket path to `/run/firecracker.socket`.
This path also applies when running with the jailer.
Related PR: https://github.com/firecracker-microvm/firecracker/pull/1500
kata is letting jailer automatically create API socket, so we need to
change api socket path from `/api.socket` to `/run/firecracker.socket` accordingly.

Fixes: #2504

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-23 09:57:25 +08:00
Penny Zheng
2945bcd796 FC: Removed redundant --seccomp-level jailer parameter
Firecracker has removed redundant `--seccomp-level` jailer parameter
since it can be simply forwarded to the Firecracker executable using
"end of command options" convention.
Related PR: https://github.com/firecracker-microvm/firecracker/pull/1491
Since kata is just using default seccomp level for firecracker, here
then we just removed the setting for jailer.

Fixes: #2504

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-23 09:57:25 +08:00
Penny Zheng
d2cae59ec7 FC: Removed redundant RescanBlockDevice action
Firecracker has removed RescanBlockDevice from the /actions API.
Related PR: https://github.com/firecracker-microvm/firecracker/pull/1542.
We need to remove according settings in kata-containers.

Fixes: #2504

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-23 09:57:25 +08:00
Penny Zheng
37b91b3378 FC: Remove logger.options
Firecracker has removed `memory.dirty_pages` metric and `logger.options`
configuration.
Related PR: https://github.com/firecracker-microvm/firecracker/pull/1532.
We need to remove according setting in kata-containers.

Fixes: #2504

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-23 09:57:16 +08:00
Jose Carlos Venegas Munoz
2d89766d3a Merge pull request #2519 from jcvenegas/fio-clh
clh: add vfio support
2020-03-20 21:39:09 -06:00
Xu Wang
bc22bb8d7d Merge pull request #615 from Jimmy-Xu/add-nvidia-gpu-use-case
use-cases: Add documentation for using Nvidia GPU with Kata
2020-03-20 23:29:17 +08:00
Julio Montes
44bcaf7889 Merge pull request #974 from jongwu/hotrm
kernel: enable virtio-fs for arm64.
2020-03-20 09:08:42 -06:00
Julio Montes
2c310fecd4 virtcontainers: handle persistent memory volumes
A persistent memory volume MUST meet the following conditions:
* A loop device must be mounted in the directory passed as volume
* The loop device must have a backing file
* The backing file must have the PFN signature at offset 4k [1][2]

The backing file is used as backend file for a NVDIMM device in the guest

fixes #2262

[1] - https://github.com/kata-containers/osbuilder/blob/master/image-builder
/nsdax.gpl.c
[2] - https://github.com/torvalds/linux/blob/master/drivers/nvdimm/pfn.h

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-20 15:02:01 +00:00
Julio Montes
434b30255e virtcontainers: hotplug block drives that are pmem devices as nvdimm
hotplug as NVDIMM devices the block drives that can be used as pmem devices
(`Pmem=true`), the host path to such devices is a raw file that contains
the PFN signature.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-20 15:02:01 +00:00
Julio Montes
84e0ee13c8 virtcontainers: reimplement createBlockDevices
Reimplement `createBlockDevices` to identify possible volumes that can be
used as pmem devices

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-20 15:02:01 +00:00
Julio Montes
abbdf078cd virtcontainers: add Pmem attribute to BlockDrive
A `BlockDrive` can be used as pmem device, since they both are similar and
can be mounted in the same way in the guest. The `Pmem` attribute helps kata
to identify a pmem device and how it has to be hotplugged in the guest.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-20 15:02:01 +00:00
Julio Montes
ee941e5c56 virtcontainers: Implement function to get the pmem DeviceInfo
Implement function to get the pmem `DeviceInfo` from a volume.
`PmemDeviceInfo` return a new `DeviceInfo` object if a volume has a loop device
as backend and the backing file for such loop device contains the PFN signature,
needed to enable DAX in the guest.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-20 15:02:01 +00:00
Julio Montes
9ff44dba87 virtcontainers: implement function to get the backing file
Implement function the get the backing file from a loop device.
The backing file can be used as backend file for a NVDIMM device in the guest

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-20 15:02:01 +00:00
Julio Montes
0a4e2edcf4 virtcontainers: move GetDevicePathAndFsType to utils_linux
`GetDevicePathAndFsType` is a function to get the path and filesystem type
of a mount point from `/proc/mounts`.
Move `GetDevicePathAndFsType` to utils_linux since it's linux specific
and that way it can be used in other subpackages.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-20 13:56:40 +00:00
Julio Montes
2c7f27ec4f vendor: update govmm
bring `pmem` option to pmem/nvdimm devices

shortlog:
qemu: add pmem flag to memory-backend-file

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-20 13:45:58 +00:00
Julio Montes
607931c1a2 Merge pull request #938 from Jimmy-Xu/kernel-support-gpu
add kernel config for gpu
2020-03-20 07:39:11 -06:00
Jimmy Xu
7c8c907d3e use-cases: Add easy way to build guest kernel for Intel/Nvidia GPU
Related: https://github.com/kata-containers/packaging/pull/938

Fixes #616

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>
2020-03-20 20:23:33 +08:00
Jianyong Wu
9b8f20cac8 kernel: enable virtio-fs for arm64.
This patch add patch file for virtio-fs-v0.3 kernel to enable memory hot
remove to let virtio-fs available on arm64. Also, kernel config file for
virtio-fs-v0.3x for arm64 is offered.

Fixes: #973
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-03-20 18:59:50 +08:00
James O. D. Hunt
60de5bc2f8 Merge pull request #927 from justin-he/binary_size
Optimize the kata qemu binary size
2020-03-20 09:37:30 +00:00
fupan.lfp
e56b10f835 rustjail: remove the unused imported crates
remove the unused imported crates

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-03-20 17:04:05 +08:00
fupan.lfp
ded27f48d5 oci: add Default and Clone to oci spec objects
Add the clone and default feature to oci
spec objects.

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-03-20 17:03:54 +08:00
fupan.lfp
7df8edef1b rustjail: replace protocol spec with oci spec
transform the rpc protocol spec to
oci spec.

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-03-20 16:26:32 +08:00
Jose Carlos Venegas Munoz
f61eca8920 clh: Add comments around clh api
To make easier to know what a method of API is expected to do without go
to cloud-hypervisor documentation.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-20 07:03:55 +00:00
GabyCT
255feb6b18 Merge pull request #981 from GabyCT/topic/removeopensuse
obs: Remove OpenSUSE Leap 15.0 from obs generation
2020-03-19 16:34:45 -06:00
Jose Carlos Venegas Munoz
6a4e667f9c virtiofsd: Check if PID is valid
If try to kill with an not valid PID the thread goes to panic, check
to allow return a valid error from the runtime.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-19 19:15:31 +00:00
Jose Carlos Venegas Munoz
3251beaa23 version: Update clh to master
Move to master tip to get support for vfio hotplug.

Changes:

df79499 net: Do not check multiqueue for new interface
7d75b1f build(deps): bump quote from 1.0.2 to 1.0.3
841bf89 build(deps): bump failure from 0.1.6 to 0.1.7
86acdb9 build(deps): bump failure_derive from 0.1.6 to 0.1.7
4b32863 docs: Update api.md for VFIO hotplug
e518098 scripts: Make integration tests fail if some important commands fail
be6f91d tests: Refactoring vhost_user_net test cases
6341736 vhost_user_net: Provide tap option for vhost_user_net backend
e0419e9 build: Don't cancel older master builds
f0a3e7c build: Bump linux-loader and vm-memory dependencies
6539d4a vfio: handle case for missing iommu_group
cfbebd8 build(deps): bump micro_http from `88011bd` to `02def92`
4214806 tests: Remove further use of sudo subshells
2baf5ab tests: Simplfy the shm region check
97affbe tests: Re-enable the virtio-fs tests and make them work with virtio-mmio
7b1d5c1 tests: Remove entropy check from vhost-user-block test
a4cca5f tests: sha1sums --check can take a list of hashes
689415e build(deps): bump libssh2-sys from 0.2.15 to 0.2.16
09829c4 vmm: Remove IO bus strong reference from Vm
2dbb376 vmm: Remove all Weak references from DeviceManager
9e915a0 vmm: Remove all Weak references from CpuManager
49268bf pci: Remove all Weak references from PciBus
ca426cf devices: Make Bus hold a list of Weak BusDevice references
7773812 vmm: Store the list of BusDevice devices from DeviceManager
d0820cc vmm: Make add_vfio_device mutable
948f808 vm: Rename DeviceManager field in Vm structure
aa638ea build(deps): bump backtrace from 0.3.44 to 0.3.45
1152b1a ci: Add VFIO hotplug integration test
d47f733 vmm: Break the cyclic dependency between DeviceManager and IO bus
c1af13e vmm: Update VmConfig when adding new device
a86f436 vmm: Add VFIO PCI device hotplug support
320fea0 vmm: Factorize VFIO PCI device creation
00716f9 vmm: Store virtio-iommu device from DeviceManager
5902dfa vmm: Store VFIO KVM device from DeviceManager
d9c1b43 vmm: Store MSI InterruptManager from DeviceManager
02adc40 vmm: Store PciBus from DeviceManager
3f396d8 resources: Enable ACPI PCI hotplug in the kernel config
d0218e9 vmm: Trigger hotplug notification to the guest
0e58741 vmm: api: Introduce new "add-device" HTTP endpoint
0f1396a vmm: Insert PCI device hotplug operation region on IO bus
65774e8 vmm: Implement BusDevice for DeviceManager
2eb26d4 devices: acpi: Update GED to support PCI devices hotplug
8dbc843 vmm: acpi: Add PCNT method to invoke DVNT
c62db97 vmm: acpi: Add _EJ0 to each PCI device slot
4dc2a39 vmm: acpi: Create PHPR container
c3a0685 vmm: acpi: Add notification method for PCI device slots
5a68d5b vmm: acpi: Create PCI device slots
ead86bb build(deps): bump micro_http from `9945928` to `88011bd`
22dd49d tests: Test virtio-fs with virtio-mmio
642b890 vm-virtio: mmio: Enable reporting of SHM regions via config fields
0223cf8 ci: Update ClearLinux image
ed396b4 build(deps): bump vm-memory from `2099f41` to `a84a7b8`
81c2294 vhost_rs: remove unused crate
5200bf3 Cargo: switch vhost_rs to external crate
65a38e6 vm-virtio: vhost_user: Fix blk device configuration space offset value
d6e6901 vmm/api: Fix vm.info response definition
8f37200 build(deps): bump micro_http from `3eb926c` to `9945928`
cc2d03d build(deps): bump regex-syntax from 0.6.15 to 0.6.16
f5b37e3 build(deps): bump regex-syntax from 0.6.14 to 0.6.15
009f4d2 build(deps): bump micro_http from `8d48e73` to `3eb926c`
5ade9d4 tests: Remove unnecessary sleeps and kill on clean shutdown tests
c98949b tests: Wait for VMM to exit in test_serial_file/test_console_file
2f58fb8 tests: Test rebooting works for block self spawn test
e817aa6 tests: Improve VM shutdown behaviour
559b70c tests: Make output capture optional
dae7608 tests: Remove duplicated network configuration
6466ad2 tests: Remove duplicated disk configuration
9f1ac24 tests: Make the GuestCommand take a reference to the guest
49e70c6 tests: Port integration tests over to GuestCommand
67a5882 tests: Introduce new GuestCommand to handle launching the guest
8142c82 vmm: Move DeviceManager into an Arc<Mutex<>>
531f4ff vhost_user_fs: Remove an unneeded unwrap in handle_event
e52129e vhost_user_fs: Process events from HIPRIO queue
0c5c470 build(deps): bump micro_http from `b85757e` to `8d48e73`
5b96dd5 ci: Don't give special capabilities to Rust vhost-user-fs backend
d8d790b vhost_rs: Don't check for SLAVE_SEND_FD on SET_SLAVE_REQ_FD
1c5562b vhost_user_fs: Add support for EVENT_IDX
eae4f1d vhost_user_fs: Add support for indirect descriptors
ea0bc24 vhost_user_fs: Be honest about protocol supported features
42937c9 vm-virtio: Add support for indirect descriptors
d7b0b98 tests: Move integration tests to their own directory
3cb4513 vhost_rs: control SlaveFsCacheReq with vhost-user-slave feature
9de3ace devices: implement Aml trait for GED device
b77fdeb msi/msi-x: Prevent from losing masked interrupts
8423c08 build(deps): bump proc-macro2 from 1.0.8 to 1.0.9
6315f16 build(deps): bump syn from 1.0.15 to 1.0.16
4cf89d3 pci: handle extended configuration space properly
f6b9445 pci: fix pci MMCONFIG address parsing
77ee331 resources: Enable KASLR in kernel config
bba5ef3 vmm: Remove deprecated CPU syntax
374ac77 main, vmm: Remove deprecated --vhost-user-net
ffd816e main, vmm: Remove deprecated --vhost-user-blk
d04e0dc build(deps): bump crossbeam-utils from 0.7.0 to 0.7.2
7da5b53 build(deps): bump ssh2 from 0.7.1 to 0.8.0
109c7f7 build(deps): bump hermit-abi from 0.1.7 to 0.1.8
812a6b9 build(deps): bump syn from 1.0.14 to 1.0.15
ad30791 build(deps): bump memchr from 2.3.2 to 2.3.3
94f2fc3 release-notes: Update for v0.5.1 bug fix release
f190cb0 build(deps): bump libc from 0.2.66 to 0.2.67
299eb28 build(deps): bump micro_http from `6fd1545` to `b85757e`
d2f1749 vmm: config: Add poll_queue property to DiskConfig
378dd81 vmm: openapi: Add missing "direct" knob to DiskConfig
056f548 vmm: openapi: Fix "readonly" and "wce" defaults in DiskConfig
4ebf01b vhost_user_backend: Don't report out socket broken errors
b5755e9 vhost_rs: vhost_user: Return error when connection broken
c49e31a vmm: api: Return a resize error when resize fails
ebc6391 vmm: api: Fix resize command typos
9de7553 vmm: openapi: Update DiskConfig
ed1e781 vmm: Workaround double reboot triggered by the kernel
5c06b7f vhost_user_block: Implement optional static polling
0e4e27e vhost_user_block: Make use of the EVENT_IDX feature
1ef6996 vhost_user_backend: Add helpers for EVENT_IDX
d17fa78 vm-virtio: Implement support for EVENT_IDX
793d4e7 vmm: Move codebase to GuestMemoryAtomic from vm-memory
ddf6caf ci: Improve test_memory_mergeable_on stability
af621be build(deps): bump micro_http from `57ac9df` to `6fd1545`
4970e2f vhost-user-fs: add dax tests for vhost_user_fs rust daemon
59958f0 vhost_user_fs: add the ability to set slave req fd
3f09eff vhost_user_fs: add fs cache request operations
956a84f vhost_user_fs: add necessary structs for map/unmap requests
269d660 vhost_user_fs: add SlaveFsCacheReq to handle map/unmap
be78c6d vhost_rs: Fix unit test race condition
f7378bc tests: Add self spawning vhost-user-block test
1f6cbad vmm: Add support for spawning vhost-user-block backend
4d60ef5 vm-virtio: vhost_user: block: On shutdown() drop the socket
7fabca3 ci: Don't run unit tests in a privileged container
2724716 build(deps): bump micro_http from `4827569` to `57ac9df`
08a68f2 build: Run unit tests on worker node
f21cd31 scripts: dev_cli: Add more privileges for the integration tests
a94887e build: Use dev container for integration tests
3edc2bd vmm: Prevent memory overcommitment through virtio-fs shared regions
968c90a build(deps): bump hermit-abi from 0.1.6 to 0.1.7
7485a0c Revert "build: Don't fail build on test_vfio failure"
cbc0ac3 build(deps): bump micro_http from `7a23e54` to `4827569`
7fdb5ae build(deps): bump vm-memory from `eb2fc0b` to `f615b19`
0d748c5 build(deps): bump scopeguard from 1.0.0 to 1.1.0
6692fa6 build(deps): bump thiserror from 1.0.10 to 1.0.11
f03602a tests: Add self spawning vhost-user-net test
bc75c1b vmm: Add support for spawning vhost-user-net backend
d054ddd vm-virtio: Retry connections to vhost-user backends
b04eb47 vmm: Follow the "exe" symlink from the PID directory in /proc
5038878 vm-virtio: vhost_user: net: On shutdown() drop the socket
7c9e8b1 vmm: device_manager: Shutdown all virtio devices
545ea9e vm-virtio: Add shutdown method to VirtioDevice trait
ebd8369 main: Display git commit hash with the '--version' option
bdb92f9 build(deps): bump micro_http from `7fb2e46` to `7a23e54`
2061f0d tests: Always create shared VFIO directory from scratch
e8e4f43 tests: Use hugepages for test_vfio
296ada9 scripts: dev_cli: Fix post build permissions for the whole tree
287897d tests: Run test_vfio with PCI binary
1661444 build(deps): bump serde_json from 1.0.47 to 1.0.48
96479da build(deps): bump vm-memory from `f3d1c27` to `eb2fc0b`
88c1683 build(deps): bump memchr from 2.3.1 to 2.3.2
8d3e4f9 build(deps): bump micro_http from `c9e900c` to `7fb2e46`
53481aa docs: Update documentation related to multiqueue network
4dd16c2 vm-virtio: Detect if a tap interface supports multiqueue
8627656 net_util: Provide more accurate error messages
6e5338d build(deps): bump memchr from 2.3.0 to 2.3.1
014844d build: Don't fail build on test_vfio failure
779cbfe build(deps): bump backtrace from 0.3.43 to 0.3.44
700df9e vhost_user_net: Port to new exit event strategy
c33c38b vhost_user_block: Port to new exit event strategy
da7f31d bin: vhost_user_fs: Port to new exit event strategy
759a0be vhost_user_backend: Add support for handling exiting of worker thread
b17bafb build(deps): bump micro_http from `1de6f32` to `c9e900c`
7ca691f vhost_user_block: Implement and use worker shutdown
e619fe6 vhost_user_net: Remove "Clone" implementation
613f254 vhost_user_backend: Wait on the worker thread
97ab767 vhost_user_net: Shutdown worker thread on exit
7f032c8 bin: vhost_user_fs: Shutdown worker thread on exit
99cb8dc bin: vhost_user_fs use error! macro logging for consistency
710394b vhost_user_block: Forward the error from unexpected event
4f4c3d3 vhost_user_block: Make Error behave like net and fs versions
f1e19d6 vhost_user_backend: Forward the error from main thread
80c9dc2 Revert "vhost-user-backend: Correct error handling in run"
c706ca1 scripts: dev_cli: Simplify the build command exit path
0a1d6e1 scripts: dev_cli: Fix build directory permisions
c8fa809 scripts: dev_cli: Run unprivileged containers as the host user
26d8cae build(deps): bump micro_http from `ae15e75` to `1de6f32`
572aaa7 build(deps): bump serde_json from 1.0.46 to 1.0.47
04cb35e scripts: Make dev_cli.sh exit on test error
9bf100c build: Run worker and master build in parallel
bfbca59 scripts: Don't use interactive & terminal mode for docker
6e6eb5b build: Do cargo tests, unit tests and OpenAPI check on master
a5b053f scripts: dev_cli: Use a tmpfs mount for /tmp

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-19 19:13:51 +00:00
Jose Carlos Venegas Munoz
c5184641dc clh: Add vfio support
Add support to hotplug vfio devices.

Use hypervisor API to attach devices via hotplug.

Fixes: #2496

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-19 19:13:51 +00:00
Jimmy Xu
12d351d6fb kernel: add usage in readme
Add usage of build-kernel.sh to the readme

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>
2020-03-20 02:53:04 +08:00
Jimmy Xu
1389500071 kernel: support force setup
Add option '-f' in build-kernel.sh to force the generation of .config

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>

n 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
2020-03-20 02:20:21 +08:00
Jimmy Xu
7a17b50536 kernel: support bash debug
Add option '-d' in build-kernel.sh to enable bash debug.

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>
2020-03-20 02:20:00 +08:00
Jimmy Xu
d248e4144c kernel: support build guest kernel for gpu
Add option '-g' in build-kernel.sh to build a guest kernel that supports Intel/Nvidia GPU

Fixes: #979

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>
2020-03-20 02:18:47 +08:00
Gabriela Cervantes
cbfc7a1b6d obs: Remove OpenSUSE Leap 15.0 from obs generation
OpenSUSE Leap 15.0 has reached EOL, this PR removes the obs generation.

Fixes #980

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-03-19 11:35:21 -06:00
GabyCT
3b88f2cd0f Merge pull request #969 from Rajpratik71/enhancement/debian_apt
pod : optimization Some debian package manager tweaks
2020-03-19 09:38:09 -06:00
Graham Whaley
aa0d4ee0e8 Merge pull request #2512 from Pennyzct/FC_mount_noexec
Jailer: checking whether chrootBasedir is mounted `noexec`
2020-03-19 09:35:12 +00:00
Sascha Grunert
4d034b1e21 versions: update go to v1.14
We need this update for building Kubernetes and CRI-O with the latest go
version.

Fixes #2537

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2020-03-19 08:21:45 +01:00
Penny
e433719f47 Merge pull request #2390 from dong-liuliu/xliu2/vhost-user-blk
Assign vhost-user-blk device to Kata container as ephemeral or persistent storage #2380
2020-03-19 10:00:53 +08:00
GabyCT
0329dbb5aa Merge pull request #2534 from bergwolf/1.11.0-alpha1-branch-bump
# Kata Containers 1.11.0-alpha1
2020-03-18 10:13:15 -06:00
GabyCT
9f5dcfdb17 Merge pull request #611 from grahamwhaley/20200310_fluentd_shimv2
howto: fluentd: add details for shimv2
2020-03-18 09:56:10 -06:00
Jimmy Xu
16197d6855 use-cases: Reorganize GPU related documents
- Index the use-case of Intel and Nvidia GPUs
- Fix link to vfio-mediated-device in Intel GPU use-cases

Fixes #616

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>
2020-03-18 22:08:51 +08:00
James O. D. Hunt
8280208443 Merge pull request #154 from awprice/issue-152
agent: add configurable container pipe size cmdline option
2020-03-18 08:36:23 +00:00
GabyCT
efbc015efa Merge pull request #978 from bergwolf/1.11.0-alpha1-branch-bump
# Kata Containers 1.11.0-alpha1
2020-03-17 15:59:30 -06:00
GabyCT
7087b5f43c Merge pull request #165 from bergwolf/1.11.0-alpha1-branch-bump
# Kata Containers 1.11.0-alpha1
2020-03-17 13:10:53 -06:00
GabyCT
4f49b160c0 Merge pull request #426 from Rajpratik71/enhancement/debian_apt
pod : optimization Some debian package manager tweaks
2020-03-17 13:08:08 -06:00
Jimmy Xu
d0768d5c3c use-cases: Add documentation for using Nvidia GPU with Kata
This document decsribes how an Nvidia GPU can be used with Kata Containers in Nvidia GPU pass-through mode.

Fixes #616

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>
2020-03-18 01:24:33 +08:00
Salvador Fuentes
7d5cac092d Merge pull request #608 from Amulyam24/fix-documentation
docs: Change in setting up a debug console
2020-03-17 10:39:14 -06:00
James O. D. Hunt
fe0a3a0c7c Merge pull request #156 from lifupan/master
add a workspace and run all the tests in the workspace
2020-03-17 11:10:27 +00:00
Pratik Raj
9a6bd12e11 debian: Install missing ca-certificates package
Because CI build is

1.  Slow and in log it is showing because "apt-utils" not installed

2. to avoid CI build to exits with error without having certificate

Fixes: #970

Signed-off-by: Pratik Raj <rajpratik71@gmail.com>
2020-03-17 12:04:01 +05:30
Pratik Raj
d527c4ff64 debian: Don't install recommended software
By default, Ubuntu or Debian based "apt" or "apt-get" system installs recommended but not suggested packages .

By passing "--no-install-recommends" option, the user lets apt-get know not to consider recommended packages as a dependency to install.

This results in smaller downloads and installation of packages .

Refer to blog at [Ubuntu Blog](https://ubuntu.com/blog/we-reduced-our-docker-images-by-60-with-no-install-recommends) .

Fixes: #970

Signed-off-by: Pratik Raj <rajpratik71@gmail.com>
2020-03-17 12:04:01 +05:30
Pratik Raj
8d7817805a debian: Install missing ca-certificates package
Because CI build is

1.  Slow and in log it is showing because "apt-utils" not installed

2. to avoid CI build to exits with error without having certificate

Fixes: #427 

Signed-off-by: Pratik Raj <rajpratik71@gmail.com>
2020-03-17 11:55:39 +05:30
Pratik Raj
7c92854e5d debian: Don't install recommended software
By default, Ubuntu or Debian based "apt" or "apt-get" system installs recommended but not suggested packages .

By passing "--no-install-recommends" option, the user lets apt-get know not to consider recommended packages as a dependency to install.

This results in smaller downloads and installation of packages .

Refer to blog at [Ubuntu Blog](https://ubuntu.com/blog/we-reduced-our-docker-images-by-60-with-no-install-recommends) .

Fixes: #427 

Signed-off-by: Pratik Raj <rajpratik71@gmail.com>
2020-03-17 11:55:17 +05:30
Penny Zheng
00da1270be unit-test: refine related unit tests
We need to refine related unit tests.

Fixes: #2511

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-17 05:22:00 +00:00
Penny Zheng
13390df005 Jailer: re-mount jailerRoot with exec
The default chrootBaseDir "/run/vc" in many distributions is mounted
with `noexec` flag, which will bring 'permission denied' error
when running kata-containers with jailer.
Therefore, we decided to remount the jailerRoot dir with exec when setting
up a new firecracker sandbox and umount it when cleaning up.

Fixes: #2511

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-17 04:10:33 +00:00
Penny Zheng
9d3022a85a mount: modify func bindMount
originally, we forcefully set any bind-mount with `private` propagation
type, and it's not applied for all scenarios. e.g. we need to provide
`slave` or `shared` propagation type for bind-mounts in setting up jail
house.
Here, we add another parameter `pgtype` in func bindMount for providing
customized propagation parameters.

Fixes: #2511

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-17 04:10:28 +00:00
Archana Shinde
aaa4e5c661 Merge pull request #2529 from likebreath/clh_remove_deadcode
clh: Remove dead-code on maxClhVcpus
2020-03-16 11:07:10 -07:00
Archana Shinde
73eb5c1a04 Merge pull request #435 from bergwolf/1.11.0-alpha1-branch-bump
# Kata Containers 1.11.0-alpha1
2020-03-16 09:58:36 -07:00
Peng Tao
17a92aed6f release: Kata Containers 1.11.0-alpha1
- README: logging: add shimv2 information
- vc: add agent.container_pipe_size annotation
- clh: set rootfstype
- logging: reduce default log level to Warn from Info
- vc: Remove container share dir when stopping
- clh: enable CPU hotplug
- clh: add 'APIsocket' to persist HypervisorState
- vc: Use BlockIndexMap instead of BlockIndex
- vendor: update agent client
- cri-o: fix netns mount point leaking from cri-o
- cli: add virtioFsDaemon to kata-env
- qemu: pass rootfs image in readonly mode
- Fix rescan PCI conflicts with shpchp / pciehp
- clh: Fix version check
- Implement cgroup manager
- vc: do not follow symlink when umounting contanier host path

4ce44ab0 clh: set rootfstype
4c287173 vc: add agent.container_pipe_size annotation
eee4d701 katutils: logging: default log level to Warn
913d1530 cli: logging: Default to Warn level
2cd0c885 README: logging: add shimv2 information
ed431175 vc: Remove container share dir when stopping
17b9de14 clh: enable CPU hotplug
63c7ac5b clh: add 'APIsocket' to persist HypervisorState
e9a46580 vc: Use BlockIndexMap instead of BlockIndex
376c4252 cli: add virtioFsDaemon to kata-env.
171eb705 qemu: use govmm vhost user device types directly
c6cc8b93 virtcontainers: support lazy attach devices
46392945 qemu: pass guest image file readonly
63fdf532 vendor: update govmm dependency
7427fea8 dnm: vendor: update agent client
ea82922a virtcontainers/pkg/cgroups: implement cgroup manager
03cdf6c4 virtcontainers: add new package for cgroups
33459779 clh: update minimal supported version to check.
20332298 clh: Fix version check
0da10105 version-update: version update for cri-o and k8s
5f9a77cc vc: validate container path when cleaning up
5bf32312 vc: do not follow symlink when umounting contanier host path

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-03-16 12:39:48 +00:00
Peng Tao
dc7d5bb754 release: Kata Containers 1.11.0-alpha1
- ci: Provide source directory path for script execution
- kernel: Install uncompressed kernel by Image instead of  vmlinux on arm64
- ACPI: Always build evged in for experimental kernel
- obs: Update obs packages for ppc64le
- scripts: enable libpmem only for x86_64
- scripts/qemu: enable libpmem
- release: Remove release docs
- test: Test for kata-containers packages on Fedora 31
- obs: Remove obs packages and testing for ubuntu 19.04 and fedora 29
- kernel: enable BPF to support libcontainer's cgroups V2 implementation
- kata-deploy: improve logic for crio.conf runtime additions
- yq: Use install_yq.sh script from tests repository

f599c8e kernel: Install uncompressed kernel by Image instead of  vmlinux on arm64
c3949fd ACPI: Always build evged in for experimental kernel
83a69de scripts: enable libpmem only for x86_64
aad1e0e obs: Update obs packages for ppc64le
c0d45d8 scripts/qemu: enable libpmem
acf5b91 release: Remove release docs
3418d40 build: Enclose source dir for script execution
ac0d569 kernel: enable BPF to support libcontainer's cgroups V2 implementation
d7c2a38 obs: Remove obs packages and testing for ubuntu 19.04 and fedora 29
c8c3e46 test: Test for kata-containers packages on Fedora 31
43ab57f yq: Use install_yq.sh script from tests repository
cd6d364 kata-deploy: improve logic for crio.conf runtime additions

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-03-16 12:39:19 +00:00
Peng Tao
65717ba6d0 release: Kata Containers 1.11.0-alpha1
- scripts: set a default path to the yq binary
- AArch64: Build rust image on aarch64
- image-builder: Add NSDAX_BIN for passing in compiled nsdax tool
- rootfs: Don't overwrite /sbin/init if it already exists
- tests: Improve running test_images.sh locally

1c063af scripts: set a default path to the yq binary
67343a1 rust-agent: Separate the build up of rust-agent and go-agent
a390a36 rootfs: remove RUST_SRC_PATH
41aaa36 ubuntu/debian: create aarch64-specific Dockerfile.in
9cba8c4 musl: install musl on aarch64
87a5d5c rootfs: Don't overwrite /sbin/init if it already exists
4004bd8 image-builder: Add NSDAX_BIN for passing in compiled nsdax tool
134175b tests: Document the changed KATA_DEV_MODE behavior
0f4eac4 tests: Skip initrd/image launch if KATA_DEV_MODE
762ec28 tests: Drop kata-runtime env validation if KATA_DEV_MODE is set
6f17b9c tests: Skip set_runtime if KATA_DEV_MODE is set
17a8fb1 tests: Skip all kata-manager usage if KATA_DEV_MODE is set
e787bb0 tests: Define KATA_DEV_MODE
cef2591 tests: Rework dracut docker bind mounts
f3ab6d2 tests: Don't run commands with `chronic` if DEBUG is set
7a8e816 tests: Specify DRACUT_OVERLAY_DIR
7dd99c0 tests: Add project_dir helper variable
1ae3922 tests: Have DEBUG=1 set bash xtrace
555ddf3 tests: Remove unused USE_DOCKER export
0e6a12c tests: Pass DOCKER_RUNTIME to osbuilder scripts
e8624d8 tests: Rename docker_build_runtime -> DOCKER_RUNTIME
cd46d09 tests: Remove hardcoded 'runc' reference
c574ec0 tests: Remove dead unset images_dir check
44f2931 tests: Remove unused test_func_prefix

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-03-16 12:39:05 +00:00
Peng Tao
fbf1d015e7 release: Kata Containers 1.11.0-alpha1
- actions: Add verbose information
- systemd-service: build rust-agent systemd services
- grpc: fix the issue of crash agent when didn't find the process

cd233c0 actions: Add verbose information
f0eaeac path-absolutize: version update
3136712 systemd-service: build rust-agent systemd services
289d617 grpc: fix the issue of crash agent when didn't find the process

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-03-16 12:38:41 +00:00
James O. D. Hunt
2d2fb3e3d6 Merge pull request #962 from mramanathan/dir_context_bump_release_scripts
ci: Provide source directory path for script execution
2020-03-16 11:45:03 +00:00
James O. D. Hunt
1ad221eb2a Merge pull request #931 from justin-he/uncompress_kernel
kernel: Install uncompressed kernel by Image instead of  vmlinux on arm64
2020-03-16 11:40:16 +00:00
Peng Tao
8f0bb09b7c howto: add sandbox config annotation howto
It explains the details of current supported annotations.

Fixes: #486
Fixes: #294
Depends-on: github.com/kata-containers/tests#2240
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2020-03-16 03:29:38 -07:00
fupan.lfp
245183cb28 cargo: add a workspace and run all the tests in the workspace
Add a worksapce and run all of the tests in
under this workspace.

Fixes:#155

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-03-16 16:34:59 +08:00
Amulya Meka
80702f6dd7 docs: Change in setting up the debug console
The debug console can be set up with the help of both rootfs or initrd image.

Fixes: #609

Signed-off-by: Amulya Meka <amulmek1@in.ibm.com>
2020-03-16 09:29:08 +05:30
Bo Chen
94298dd15c clh: Remove dead-code on maxClhVcpus
Our CLH driver in kata defines its own constant variable 'maxClhVcpus'
which can conflict with the maximum number of vCPUs specified from the
kata configuration file 'clh.config.DefaultMaxVCPUs'. As the value from
kata configuration file is preferred anyway and the code on 'maxClhVcpus'
is not being used. We'd better remove it for better readability and
avoiding further confusions.

Fixes: #2528

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-03-13 13:02:22 -07:00
Salvador Fuentes
9e0807a7f5 Merge pull request #430 from devimc/topic/scripts/fixYqNotFound
scripts: set a default path to the yq binary
2020-03-12 12:30:00 -06:00
Julio Montes
1c063afc5f scripts: set a default path to the yq binary
Use the path where `install-yq.sh` installs `yq` as the default path to the
`yq` binary in `lib.sh`.
Install `yq` in the default path if it doesn't exist.

fixes #429

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-12 15:25:24 +00:00
GabyCT
ee01fa82b5 Merge pull request #2521 from grahamwhaley/20200310_shimv2_logs
README: logging: add shimv2 information
2020-03-12 09:02:23 -06:00
Liu Xiaodong
126fa157a3 agent: append and handle vhost-user-blk device
Kata-runtime can append vhost-user-blk device to the
device list of a container. And handle volumes who is
a block device and in VhostUserBlk type.

The vhost-user-blk device will be identified by its
PCI address by Kata-agent inside VM.

Fixes: #2380

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-03-12 03:42:02 -04:00
Liu Xiaodong
cf066b75ac devices: hotplug vhost-user-blk device to qemu
vhost-user-blk device can be hotplugged or hotremoved
by QMP commands.

Fixes: #2380

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-03-12 03:41:59 -04:00
Liu Xiaodong
3696318436 devices: filter vhost-user-blk/scsi device
Reserved number of Linux device number 241 and 242
are used to identify vhost-user-blk and vhost-user-scsi
devices.
for example, after command:
mknod <Vhost-User-Dir>/block/devices/vhost-dev0 b 241 0
this node will be recognized as vhost-user-blk device.

Fixes: #2380

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-03-12 03:41:55 -04:00
Liu Xiaodong
54b24dad4d devices: add vhost-user storage configuration
Two parameters are used to set in toml file:

1. Set "enable_vhost_user_store = true" to indicate
that vhost-user storage device feature is enabled.

2. Set "vhost_user_store_path = <Vhost-User-Dir>".
vhost-user socket files will be under
"<Vhost-User-Dir>/block/sockets/"; and device node
for vhost-user device will be under
"<Vhost-User-Dir>/block/devices/"
The default value of "vhost_user_store_path" is
"/var/run/kata-containers/vhost-user/".

Fixes: #2380

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-03-11 21:18:29 -04:00
Julio Montes
511dc4a0e4 Merge pull request #2510 from awprice/issue-2467
vc: add agent.container_pipe_size annotation
2020-03-11 11:20:16 -06:00
Julio Montes
2fc36daef4 Merge pull request #613 from eadamsintel/qat_update
subsystem: Update QAT instructions to support 5.4 kernel
2020-03-11 09:00:24 -06:00
Jose Carlos Venegas Munoz
aa40eeffe6 Merge pull request #2525 from jcvenegas/fix-ext2-warn
clh: set rootfstype
2020-03-11 08:57:46 -06:00
Jose Carlos Venegas Munoz
4ce44ab067 clh: set rootfstype
set rootfstype=ext4 to make kernel not do print errros like:

```
Mount option "data=ordered" incompatible with ext2
```

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

Fixes: #2524

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-11 12:49:13 +00:00
Alex Price
4c28717335 vc: add agent.container_pipe_size annotation
This adds the `agent.container_pipe_size` annotation which allows
configuration of the size of the pipes for stdout/stderr for containers
inside the guest.

fixes #2467

Signed-off-by: Alex Price <aprice@atlassian.com>
2020-03-11 21:04:26 +11:00
Graham Whaley
397ce26948 Merge pull request #412 from Pennyzct/build_rust_image_on_aarch64
AArch64: Build rust image on aarch64
2020-03-11 09:37:02 +00:00
Fupan Li
5717da9262 Merge pull request #2523 from grahamwhaley/20200310_log_warn
logging: reduce default log level to Warn from Info
2020-03-11 09:23:44 +08:00
Adams, Eric
fa837917e9 subsystem: Update QAT instructions to support 5.4 kernel
The QAT instructions was broken after moving to a newer 4.19 kernel. Now
that the new 5.4 kernel is out, these instructions fix that.

Fixes #612

Signed-off-by: eric.adams@intel.com
2020-03-10 15:14:01 -07:00
Julio Montes
400fed8a0f Merge pull request #418 from crobinso/nsdax-bin
image-builder: Add NSDAX_BIN for passing in compiled nsdax tool
2020-03-10 16:08:43 -06:00
Julio Montes
fc6db0b8f2 Merge pull request #420 from crobinso/init-no-overwrite
rootfs: Don't overwrite /sbin/init if it already exists
2020-03-10 16:07:38 -06:00
Graham Whaley
ff3b3cd957 howto: fluentd: add details for shimv2
shimv2/containerd logs are placed and formatted differently than for
kata CRI-O. Add some details to the Fluentd parsing document to aid
in parsing those.

Fixes: #610

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-03-10 19:20:36 +00:00
Graham Whaley
eee4d7012d katutils: logging: default log level to Warn
Set the katautils default log level to 'Warn', rather than 'Info',
as 'Info' is rather noisy.

Fixes: #2522

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-03-10 18:28:18 +00:00
Graham Whaley
913d1530fb cli: logging: Default to Warn level
Set the default log level explicitly to 'Warn', rather than taking
the logrus default (which is normally 'Info').

Fixes: #2522

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-03-10 18:28:18 +00:00
Graham Whaley
2cd0c88574 README: logging: add shimv2 information
The shimv2 runtime logs slightly differently - let's clarify
that in the existing OCI/CRI-O only runtime section.

Fixes: #2520

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-03-10 16:01:47 +00:00
Julio Montes
a5436627f5 Merge pull request #2517 from darfux/remove_ctr_share_dir_when_stop
vc: Remove container share dir when stopping
2020-03-10 08:10:44 -06:00
Penny Zheng
67343a178c rust-agent: Separate the build up of rust-agent and go-agent
Separate the build up of rust-agent and go-agent, hence you only
select one as kata-agent.
I've added the generation of rust-agent systemd service files into
rust-agent Makefile.
Therefore, we could use same `make` commands to build go-agent and
rust-agent.

Fixes: #411

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-10 21:20:53 +08:00
Penny Zheng
a390a360db rootfs: remove RUST_SRC_PATH
If user wants to use customized rust-agent, they could use
AGENT_SOURCE_BIN to pass the static binary.
The rust-agent is always statically linked with musl.

Fixes: #411

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-10 21:20:48 +08:00
Penny Zheng
41aaa36e6f ubuntu/debian: create aarch64-specific Dockerfile.in
The musl package in ubuntu/debian could not provide everything we need
on aarch64.
e.g. we need `aarch64-linux-musl-gcc` as linker, and it's not provided
in package.

Fixes: #411

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-10 21:20:43 +08:00
Penny Zheng
9cba8c4c27 musl: install musl on aarch64
The original musl-installing method is only for x86_64 and i386(see
musl config.mak template file).
musl.cc provides small and reliable pre-built musl toolchains
for many architectures.
Static so they run on supported platforms without dependencies.

Fixes: #411

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-10 21:20:38 +08:00
Jia He
3670074392 scripts: Disable a few options to reduce qemu binary size on generic architectures
This disables a few configure options on generic arches to reduce qemu
binary size.

Fixes #926
Signed-off-by: Jia He <justin.he@arm.com>
2020-03-10 09:23:24 +08:00
Jia He
711eae642c scripts: Set --enable-pie on aarch64 arch
PIE (position-independent executables) does good to security.

For some historical reason(compliation failure), it was disabled. But it
can be supported now on aarch64.

Fixes #926
Signed-off-by: Jia He <justin.he@arm.com>
2020-03-10 09:23:24 +08:00
Jia He
7cdf113cf0 scripts: Relax the version limitation for qemu
Currently arm64 kata uses 3.0 qemu version. Hence aarch64 can't use some
--disable configure options between [3.1, 4.0].

Besides, due to upstream qemu bug about --disable-replication, still
enable the replication on aarch64 for qemu 3.0. Please refer to the
commit 3ebb9c4f52 ("migration/colo.c: Fix compilation issue when disable
replication")

Fixes #926
Signed-off-by: Jia He <justin.he@arm.com>
2020-03-10 09:23:24 +08:00
Jia He
0871391efa scripts: Remove obsoleted --disable-uuid
Qemu commit 315d318 uses built-in UUID implementation, hence we can't
disable uuid. This option is for generic arch, not only for aarch64.

Otherwise there is a warning during configure:
configure: --disable-uuid is obsolete, UUID support is always built

Fixes #926
Signed-off-by: Jia He <justin.he@arm.com>
2020-03-10 09:23:24 +08:00
Jia He
878a223827 scripts: Disable xen when builing qemu on generic architectures
Previously, it misses to add the --disable-xen for reducing qemu size
on aarch64. This patch add disable-xen on all arches, hence the case
switch is removed.

Fixes #926
Signed-off-by: Jia He <justin.he@arm.com>
2020-03-10 09:23:24 +08:00
Li Yuxuan
ed43117554 vc: Remove container share dir when stopping
Remove the rootfs bind dest and finally remove the created share
directory when stopping the container.

Fixes #2516
Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2020-03-10 01:12:30 +08:00
Julio Montes
be273aa43d Merge pull request #416 from crobinso/tests-dev-mode
tests: Improve running test_images.sh locally
2020-03-09 09:33:49 -06:00
Jose Carlos Venegas Munoz
2656d1da22 Merge pull request #2509 from likebreath/hotplug_cpu
clh: enable CPU hotplug
2020-03-09 09:01:55 -06:00
Jia He
f599c8e009 kernel: Install uncompressed kernel by Image instead of
vmlinux on arm64

arm64 does not use vmlinux to boot, Image is used instead.

Otherwise, kata can't boot from vmlinux.container

Besides, given that firecracker only supports booting from Image,
don't set vmlinux for firecracker target

Fixes #930
Signed-off-by: Jia He <justin.he@arm.com>
2020-03-09 12:05:27 +08:00
Julio Montes
b99f8f7855 Merge pull request #968 from likebreath/enable-acpi-ged
ACPI: Always build evged in for experimental kernel
2020-03-06 15:27:13 -06:00
Bo Chen
17b9de140f clh: enable CPU hotplug
With the HTTP API 'vm.resize()', the CPU hotplug with CLH is much simpler
comparing with QEMU. This is because we don't need to distinguish adding from
removing CPUs.

Fixes: #2495

Depends-on: github.com/kata-containers/packaging#968
Depends-on: github.com/kata-containers/tests#2364

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-03-06 11:26:58 -08:00
Cole Robinson
87a5d5c8d7 rootfs: Don't overwrite /sbin/init if it already exists
The prepare_overlay() code path is called when rootfs.sh is invoked
with no passed in distro string. This is used for the dracut case
from the Makefile for example. In that particular case, the starting
root directory is empty.

It's also valid to pass a prepopulated directory to rootfs.sh, which
is essentially a request for the script to just make the necessary
kata changes. Currently though prepare_overlay() makes some changes
that could wipe out pre-arranged /sbin/init setup.

Check first to see if /sbin/init exists in the rootfs dir, and if so,
skip the symlink changes

Fixes: #419

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-06 13:29:28 -05:00
GabyCT
2391118363 Merge pull request #607 from grahamwhaley/20200305_v2_debug
Dev: shimv2 logs: Elaborate on shimv2 log enabling
2020-03-06 10:57:41 -06:00
Graham Whaley
e92f3db1ff actions: change trigger phrase for kata-deploy action
Let's change the kata-deploy github action trigger from:
  '/test kata-deploy'
to
 '/test-kata-deploy'

which will hopefully reduce the number of false triggers caused when
we issue the 'normal' CI runs that are triggered by other
'/test xxxx' phrases.

Fixes: #971

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-03-06 15:37:23 +00:00
Cole Robinson
6cae294e83 initrd-builder: Don't error if run as non-root
Nothing inherently requires root here. If the ROOTFS_DIR is only
root accessible then the operation may fail, but better IMO to let
that fail naturally

Fixes: #422

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-05 16:11:39 -05:00
Cole Robinson
4004bd8fbe image-builder: Add NSDAX_BIN for passing in compiled nsdax tool
In Fedora we are running the osbuilder scripts on the client machine,
to generate an initrd for the running host kernel. In this setup,
there's currently a runtime dependency on gcc for compiling the nsdax
tool, which is suboptimal.

Add NSDAX_BIN environment variable; if specified, image-builder.sh
will use that path as the nsdax tool. This let's ship a compiled
nsdax tool to users and drop the runtime gcc dependency

Fixes: #417

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-05 14:47:03 -05:00
Bo Chen
c3949fdd60 ACPI: Always build evged in for experimental kernel
This is required to support hotplug CPU/memory with cloud-hypervisor.

Fixes: #967

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-03-05 06:12:30 -08:00
Graham Whaley
bce991b505 Dev: shimv2 logs: Elaborate on shimv2 log enabling
There are two 'debug' settings in the containerd config file that
affect the shimv2 runtime log output. Add the other method to the
existing documentation, and also note that enabling full containerd
debug also affects all of containerd.

The commit also re-generates the TOC, which seems to correct a
few anomolies there.

Fixes: #596

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-03-05 14:05:49 +00:00
Jose Carlos Venegas Munoz
8cffbde514 Merge pull request #2507 from likebreath/fix-persist-clh
clh: add 'APIsocket' to persist HypervisorState
2020-03-04 16:45:09 -06:00
GabyCT
22afde1850 Merge pull request #158 from jcvenegas/fix-157
actions: Add verbose information
2020-03-04 15:15:42 -06:00
GabyCT
844f21ce5a Merge pull request #964 from GabyCT/topic/removeoldf
obs: Update obs packages for ppc64le
2020-03-04 11:41:36 -06:00
Bo Chen
63c7ac5bbe clh: add 'APIsocket' to persist HypervisorState
The 'apiSocket' member in the CloudHypervisorState struct needs to be kept
across different executions of kata-runtime with persist HypervisorState, so
that kata-runtime can talk with the same running cloud-hypervisor through
HTTP/REST API calls.

Fixes: #2506

Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-03-04 09:15:36 -08:00
Jose Carlos Venegas Munoz
cd233c047a actions: Add verbose information
Add a logs to debug actions easily

Fixes: #157

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-03-04 16:02:06 +00:00
Julio Montes
83eef430bd Merge pull request #2008 from darfux/use_block_index_map_instead
vc: Use BlockIndexMap instead of BlockIndex
2020-03-04 09:34:35 -06:00
Julio Montes
5ec99d8c2b Merge pull request #966 from devimc/topic/qemu/enableLibpmem
scripts: enable libpmem only for x86_64
2020-03-04 08:10:19 -06:00
Alex Price
204edf0e51 agent: add configurable container pipe size cmdline option
Adds a cmdline option to configure the stdout/stderr pipe sizes.
Uses `F_SETPIPE_SZ` to resize the write side of the pipe after
creation.

Example Cmdline option: `agent.container_pipe_size=2097152`

fixes #152

Signed-off-by: Alex Price <aprice@atlassian.com>
2020-03-04 15:31:59 +11:00
Julio Montes
83a69de4a2 scripts: enable libpmem only for x86_64
Not all architectures have support for libpmem.
Enable libpmem only for x86_64

fixes #965

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-03 21:24:59 +00:00
GabyCT
35c33bba47 Merge pull request #145 from Pennyzct/build_service_for_rust_agent
systemd-service: build rust-agent systemd services
2020-03-03 13:17:27 -06:00
Gabriela Cervantes
aad1e0e965 obs: Update obs packages for ppc64le
Fedora versions 28 and 29 has come EOL, we should update the generation
of obs packages but now for Fedora 30.

Fixes #963

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-03-03 11:56:25 -06:00
Salvador Fuentes
6671386dd0 Merge pull request #959 from devimc/topic/qemu/enableLibpmem
scripts/qemu: enable libpmem
2020-03-03 08:49:40 -06:00
Salvador Fuentes
afaf7cd6e6 Merge pull request #961 from amshinde/remove-release-doc
release: Remove release docs
2020-03-03 08:48:05 -06:00
Penny
e94cf0f135 Merge pull request #2454 from jcvenegas/fix-2453
vendor: update agent client
2020-03-03 17:11:17 +08:00
Penny
e0a4515609 Merge pull request #2458 from Pennyzct/netns_leak_on_crio
cri-o: fix netns mount point leaking from cri-o
2020-03-03 13:06:11 +08:00
Li Yuxuan
e9a46580b1 vc: Use BlockIndexMap instead of BlockIndex
This allows to reuse detached block index and ensures that the
index will not reach the limit of device(such as `maxSCSIDevices`)
after restarting containers many times in one pod.

Fixes: #2007
Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2020-03-03 10:30:18 +08:00
Penny Zheng
f0eaeac3be path-absolutize: version update
The latest tag version v1.2.0 fixes the error of inapporiately using
mutable static.

Fixes: #144

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-03 09:24:13 +08:00
Penny Zheng
3136712d8e systemd-service: build rust-agent systemd services
I add another sub-command `build-service` in Makefile to
generate rust-agent-related systemd service files, which
are necessary for building guest rootfs image.
The whole design is following the one in go-agent.

Fixes: #144

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-03-03 09:24:02 +08:00
Cole Robinson
134175bb9b tests: Document the changed KATA_DEV_MODE behavior
Document the KATA_DEV_MODE changes explained in the previous commits

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 18:56:11 -05:00
Cole Robinson
0f4eac434b tests: Skip initrd/image launch if KATA_DEV_MODE
The script points kata-runtime at the generated initrd/image by
editing the host config file, which we aren't doing when
KATA_DEV_MODE=1 is set, so this won't work.

Fixes: #415

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 18:09:57 -05:00
Cole Robinson
762ec28a6b tests: Drop kata-runtime env validation if KATA_DEV_MODE is set
If KATA_DEV_MODE is set, test_images.sh attempts to validate that
docker has kata-runtime as a configured --runtime value. This gives
a nicer and earlier error, but it also complicates using
/usr/bin/docker as provided by podman, which has a different 'info'
topology.

Let's drop the check and let the tests fail naturally if the host
isn't configured properly

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 18:09:57 -05:00
Cole Robinson
6f17b9cb48 tests: Skip set_runtime if KATA_DEV_MODE is set
set_runtime attempts to overwrite the host docker configuration to
default to DOCKER_RUNTIME instead of kata-runtime, which does not
work for 'docker build'.

Since this is a host altering step, skip it if KATA_DEV_MODE is set.

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 18:09:57 -05:00
Cole Robinson
17a8fb13a1 tests: Skip all kata-manager usage if KATA_DEV_MODE is set
kata-manager.sh makes host config changes. KATA_DEV_MODE is meant to
avoid such changes.

Add a helper run_mgr function which stubs out kata-manager.sh usage
if KATA_DEV_MODE is set.

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 18:09:57 -05:00
Cole Robinson
e787bb0da5 tests: Define KATA_DEV_MODE
Define KATA_DEV_MODE at the top of the file, so code doesn't need
to conditionally compare against it

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 18:09:57 -05:00
Cole Robinson
cef25917a4 tests: Rework dracut docker bind mounts
The current setup leaves images/ and rootfs-osbuilder/ dirs stranded
in the $project_dir when run locally. This simplifies things by only
passing through the project_dir and the tmp_dir that all our output
is relative to

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 18:09:57 -05:00
Cole Robinson
f3ab6d2666 tests: Don't run commands with chronic if DEBUG is set
Don't suppress output with `chronic` when the user sets DEBUG

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 18:09:36 -05:00
GabyCT
cc2583abdb Merge pull request #605 from amshinde/update-releases-doc
Update releases documents
2020-03-02 16:29:44 -06:00
Julio Montes
c0d45d8ace scripts/qemu: enable libpmem
Enable libpmem to support PMEM when running under Kubernetes.

see https://github.com/kata-containers/runtime/issues/2262

According to QEMU's nvdimm documentation: When 'pmem' is 'on' and QEMU is
built with libpmem support, QEMU will take necessary operations to guarantee
the persistence of its own writes to the vNVDIMM backend.

fixes #958

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-03-02 21:52:39 +00:00
Cole Robinson
7a8e816ded tests: Specify DRACUT_OVERLAY_DIR
Otherwise it defaults to using the $project_dir/dracut_overlay, which
leaves junk hanging around when running the tests locally

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 14:55:53 -05:00
Cole Robinson
7dd99c022b tests: Add project_dir helper variable
Rather than use ${script_dir}/.. in multiple places

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 14:55:53 -05:00
Cole Robinson
1ae392285e tests: Have DEBUG=1 set bash xtrace
This is similarly used in image_builder.sh and can be handy to
determine what is happening. Unfold the 'set' short options while
we are at it

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 14:55:53 -05:00
Cole Robinson
555ddf331a tests: Remove unused USE_DOCKER export
We now explicitly pass this to every make target we invoke, so
this is redundant

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 14:55:53 -05:00
Cole Robinson
0e6a12ce3c tests: Pass DOCKER_RUNTIME to osbuilder scripts
The rootfs and image builder scripts are wired up to handle the
DOCKER_RUNTIME, so pass our value down to those scripts

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 14:55:53 -05:00
Cole Robinson
e8624d89d9 tests: Rename docker_build_runtime -> DOCKER_RUNTIME
DOCKER_RUNTIME is the naming used in the actual osbuilder scripts
for this value. Change the test code to match

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 14:55:53 -05:00
Cole Robinson
cd46d09e0c tests: Remove hardcoded 'runc' reference
Replace it with docker_build_runtime which serves a similar purpose

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 14:55:53 -05:00
Cole Robinson
c574ec0528 tests: Remove dead unset images_dir check
This value is set globally, so this condition will never trigger.
`mkdir -p` would error anyways if it was unspecified

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 14:55:53 -05:00
Cole Robinson
44f29318dd tests: Remove unused test_func_prefix
This has been unused since 562be909

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-03-02 14:55:53 -05:00
GabyCT
8fc07e9814 Merge pull request #952 from GabyCT/topic/addfedora31
test: Test for kata-containers packages on Fedora 31
2020-03-02 11:50:12 -06:00
GabyCT
a1dcaac9ed Merge pull request #2492 from jongwu/env
cli: add virtioFsDaemon to kata-env
2020-03-02 09:39:30 -06:00
Jianyong Wu
376c42523a cli: add virtioFsDaemon to kata-env.
virtiofsd should be added in kata-env as virtiofs enabled kata then
it will be easy to get the info of virtiofsd from kata-env.

Fixes: #2491
Change-Id: I37ff58ed4315344d1e2b87f3abcd04311661e910
Jira: ENTOS-1579
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2020-03-02 11:37:41 +08:00
Archana Shinde
acf5b91ea9 release: Remove release docs
All the release docs have been added to the documentation repo.

Fixes #960

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-28 18:00:32 -08:00
Archana Shinde
0067551e09 release: Fix any references to deleted docs.
Replace reference to Releases.md by Stable-Branch-Strategy.md

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-28 17:49:52 -08:00
Archana Shinde
ffb6c80cf7 release: Add a document to describe steps for making a release
Much of the information is from the release docs from packaging repo.
Plan is to maintain all the release information in this repo.

Fixes #600

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-28 17:49:52 -08:00
Archana Shinde
56606b9dec release: Merge Releases.md into Stable-Branch-Strategy.md
Some of the information in this doc has gone stale.
Move the relevant information over to Stable-Branch-Strategy.md.
It is a good idea to not have information dispersed accross
too many docs.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-28 10:47:59 -08:00
James O. D. Hunt
89b5ee68c5 Merge pull request #602 from grahamwhaley/20200218_fluentd_logging
howto: import kata logs with fluentd
2020-02-28 11:38:41 +00:00
Graham Whaley
5e7742fbc3 howto: add index for fluentd doc
Add a link to the new fluentd document.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-02-28 10:11:09 +00:00
GabyCT
226ff36bfd Merge pull request #954 from GabyCT/topic/removepa
obs: Remove obs packages and testing for ubuntu 19.04 and fedora 29
2020-02-27 10:37:47 -06:00
Ramanathan.M
3418d40158 build: Enclose source dir for script execution
1. For the git clone operation, 'sh' step in a single line would suffice.
2. Provide directory context using 'dir', this avoids having to provide the
path to the scripts twice, while executing each and every script in that folder.

Signed-off-by: Ramanathan Muthaiah <rus.cahimb@gmail.com>
2020-02-27 21:19:17 +05:30
Julio Montes
90943c7c4a Merge pull request #956 from devimc/topic/kernel/BPFcgroupsv2
kernel: enable BPF to support libcontainer's cgroups V2 implementation
2020-02-27 07:12:29 -06:00
Julio Montes
74ebc0945e Merge pull request #604 from devimc/topic/design/cgroups
design: document cgroups v1 and v2
2020-02-27 06:54:47 -06:00
Graham Whaley
decb62bf28 howto: import kata logs with fluentd
Document examples of how to import Kata logs with `fluentd`.
Show examples both from the systemd/logfmt method and the
file/JSON method.

Fixes: #601

Depends-on:github.com/kata-containers/tests/pull/2334

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-02-27 11:49:35 +00:00
Julio Montes
ac0d569694 kernel: enable BPF to support libcontainer's cgroups V2 implementation
libcontainer's cgroups V2 implementation requires BPF to run a BPF
program in the container

fixes #955

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-26 22:09:09 +00:00
Archana Shinde
94dd708421 Merge pull request #594 from grahamwhaley/20200213_kernel_boot
Developer: document how to get kernel boot messages
2020-02-26 10:34:57 -08:00
Gabriela Cervantes
d7c2a384c1 obs: Remove obs packages and testing for ubuntu 19.04 and fedora 29
Now that ubuntu 19.04 and fedora 29 has come EOL, we should remove the generation of
the obs generation and testing for ubuntu 19.04.

Fixes #953

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-02-26 11:21:32 -06:00
Gabriela Cervantes
c8c3e4694a test: Test for kata-containers packages on Fedora 31
This will test the kata-containers packages that are available on
Fedora 31 to see that they are working properly.

Fixes #951

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-02-26 10:19:25 -06:00
Julio Montes
28e5834c74 design: document cgroups v1 and v2
document what cgroups are supported and what changes are needed in the
configuration file to support them.

fixes #603

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-02-26 15:27:06 +00:00
Fupan Li
6bed2a724d Merge pull request #2477 from bergwolf/ro
qemu: pass rootfs image in readonly mode
2020-02-26 19:22:13 +08:00
Fupan Li
fde6447c16 Merge pull request #2461 from Jimmy-Xu/support-lazy-attach-device
Fix rescan PCI conflicts with shpchp / pciehp
2020-02-26 17:49:35 +08:00
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
Jimmy Xu
c6cc8b93f9 virtcontainers: support lazy attach devices
- support attach large bar space vfio devices after create container

fixes #2460

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>
2020-02-26 11:56:07 +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
Jose Carlos Venegas Munoz
7427fea864 dnm: vendor: update agent client
changes:
367b5296e protocols: client: Add timeout for hybrid vsock handshake

Fixes: #2453

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-25 21:16:32 +00:00
GabyCT
18b21eb6ca Merge pull request #2490 from jcvenegas/fix-2489
clh: Fix version check
2020-02-25 14:53:58 -06:00
Graham Whaley
7ff8c4a422 Developer: document how to get kernel boot messages
Add a section detailing the minimum debug you need to configure in
order to capture the kernel boot messages in the system journal.

Fixes: #593

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-02-25 14:59:39 +00:00
James O. D. Hunt
7965445adf Merge pull request #138 from lifupan/master
grpc: fix the issue of crash agent when didn't find the process
2020-02-25 10:53:00 +00:00
James O. D. Hunt
9a37ebec66 Merge pull request #929 from grahamwhaley/20200212_deploy_fixes
kata-deploy: improve logic for crio.conf runtime additions
2020-02-25 10:52:30 +00:00
Archana Shinde
079b5883c8 release: This checklist is no longer relevant
We have automated most of the steps and follow
a different process now.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-21 15:40:28 -08:00
GabyCT
d9d4820684 Merge pull request #2441 from devimc/topic/virtcontainers/cgroupsV2
Implement cgroup manager
2020-02-21 15:01:39 -06:00
Salvador Fuentes
ad1911bdea Merge pull request #940 from chavafg/topic/yq-install
yq: Use install_yq.sh script from tests repository
2020-02-21 10:55:52 -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
Xu Wang
2a53993a69 Merge pull request #592 from teawater/vm
how-to: Add how-to for Kata Containers with virtio-mem
2020-02-21 15:01:04 +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
Salvador Fuentes
a6b3f1e111 Merge pull request #948 from amshinde/tag-kata-containers-repo-last
release: tag the kata-containers/kata-contaners repo last
2020-02-20 15:30:30 -06: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
Archana Shinde
453d4be4a4 release: tag the kata-containers/kata-contaners repo last
This repo triggers the github action to create release tarballs.
It looks for release tags in other repos. So tag this repo
last to make sure tags have been created on other repos.

Fixes #947

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-20 10:53:28 -08:00
Salvador Fuentes
43ab57ffc5 yq: Use install_yq.sh script from tests repository
Removes two (similar) functions that install `yq`. Instead of
having different functions, use the one that we have in the
tests repository.
In addition, removes the `.ci/lib.sh` which only had an additional
`clone_tests_repo` function which was not being used.

Fixes: #939.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-02-20 12:40:45 -06:00
Jose Carlos Venegas Munoz
9116b56df4 Merge pull request #933 from sboeuf/fix_cloud_hypervisor
vsock: Fix race condition happening in the virtio-vsock driver
2020-02-20 11:55:13 -06:00
GabyCT
17a9857ac6 Merge pull request #599 from amshinde/update-release-cadence
Update release cadence in our release docs
2020-02-20 10:00:52 -06: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
Penny Zheng
0da101055e version-update: version update for cri-o and k8s
cri-o v1.16.x has network namespace mount point leaking problem, and
the latest v1.17.x has fixed this problem.
since cri-o and k8s follow the same release cycle and deprecation policy,
I will also update k8s to the latest release v1.17.3-00 as well.

Fixes: #2457

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-02-20 21:40:20 +08: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
Archana Shinde
946fdb7d23 release: Add documentation mentioning alpha releases
We now make alpha releases before making a release candidate release.
Mention this in the docs.

Fixes #598

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-19 18:10:27 -08:00
Archana Shinde
ed140f157e releases: Update release cadence
Update release doc to mention that patch releases are not made
every 3 weeks, while minor releases are made every 12 weeks now.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-19 17:54:16 -08:00
Archana Shinde
8a9aa41247 Merge pull request #410 from amshinde/1.11.0-alpha0-branch-bump
# Kata Containers 1.11.0-alpha0
2020-02-19 17:46:28 -08:00
Archana Shinde
ded4e5dd25 Merge pull request #946 from amshinde/1.11.0-alpha0-branch-bump
# Kata Containers 1.11.0-alpha0
2020-02-19 17:20:57 -08:00
Salvador Fuentes
9d7bbdc5a6 Merge pull request #143 from amshinde/1.11.0-alpha0-branch-bump
# Kata Containers 1.11.0-alpha0
2020-02-19 17:24:45 -06:00
Salvador Fuentes
5b908ddb4a Merge pull request #941 from jcvenegas/fix-kernel-build-pg
pkgs: fix kernel build
2020-02-19 17:21:30 -06: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
Xu Wang
36e9ed147f Merge pull request #597 from lifupan/master
debug: add notes about how to enable debug for shimv2
2020-02-19 18:13:37 +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
fupan.lfp
ba40da0df1 debug: add notes about how to enable debug for shimv2
The containerd's debug option will determine whether
the kata's log forared to containerd's log pipe or
not.

Fixes:#596

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-02-19 09:29:42 +08:00
Jose Carlos Venegas Munoz
4a3ad8a8b8 pkgs: spec do not check for 'not in final'
Do not check for 'not in final' in spec creation, the logic
to fully validate is longer that just one grep.

Next should:

Use the same script build-kernel.sh to generate spec and validate it.

For now is still safe as CI will run all the build-kernels.sh to verify
the resulting config.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-18 20:48:26 +00:00
Jose Carlos Venegas Munoz
2e3b090762 pkgs: fix kernel build
Kernel build for packages got broken after upgrade, this add needed
changes to build again.

Fixes #924

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-18 20:48:26 +00: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
Archana Shinde
62b0aeaac3 release: Kata Containers 1.11.0-alpha0
- Config changes for  5.4 kernel
- kernel: Enable new LTS 5.4.x on ppc64le arch
- lib: yq: explode anchors to get real value of image values
- kernel: use the maximum number of CPUs supported by KVM
- release: use absolute path for kubeconfig
- network: Enable ipv6 config CONFIG_IPV6_MULTIPLE_TABLES
- actions: check for packaging before clone
- release: bump kata-containers repository
- kernel/configs: enable CONFIG_X86_MPPARSE
- obs: Add ubuntu 19.04 testing
- release: tag and branch kata-containers repository
- add workflow for testing kata-deploy
- fixes for qemu 4.2.0
- config: enable printk_time for arm64.
- kernel: Enable new LTS 5.4.3 on AArch64
- FC: ELF format kernel image unsupported with firecracker on AArch64
- kata-static: Add sudo while building cloud hypervisor docker image
- obs: Remove fedora 28 obs packages
- snap: fix how latest stable version is obtained
- qemu: Patch qemu to support image without write access.
- snap: fix snap in launchpad
- kata-deploy: action: take updated yaml paths into account

04386a6 kernel: Enable new LTS 5.4.x on ppc64le arch
ea8b775 lib: yq: explode anchors to get real value of image values
b66fb43 kernel: Remove CONFIG_INET6 options from fragments
17d86c3 kernel: Always apply  whitelist
ba68012 kernel: use the maximum number of CPUs supported by KVM
e0a57b6 network: Enable ipv6 config CONFIG_IPV6_MULTIPLE_TABLES
0751072 release: use absolute path for kubeconfig
32f2ff1 actions: check for packaging before clone
0ff7072 release: bump kata-containers repository
a95b359 kernel/configs: enable CONFIG_X86_MPPARSE
b023d8d kata-deploy: use clh instead of cloud-hypervisor
59a34bb static-build: drop NEMU, add CLH
6c9db9b kata-deploy-action: test CLH
f184afc testing: add workflows for testing kata-deploy
c14ded3 obs: Add ubuntu 19.04 testing
3ce2d36 release: tag and branch kata-containers repository
2ef9bbc FC: ELF format kernel image unsupported with firecracker on AArch64
ca6df85 kata-static: Add sudo while building cloud hypervisor docker image
59dc61d kernel: Enable new LTS 5.4.3 on AArch64
34d2c81 obs: Remove fedora 28 obs packages
ce2accc qemu/patches: add patches for qemu 4.2.0
7c13dc3 static-build: update blacklist for qemu 4.2.0
a407c92 config: enable printk_time for arm64.
5877ab7 snap: fix how latest stable version is obtained
43a6e67 snap: overwrite Makefile variables
bfe65e0 kernel: make get_config_version quiet
076cfa9 qemu: Patch qemu to support image without write access.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-18 19:37:12 +00:00
Archana Shinde
c54e5caf37 release: Kata Containers 1.11.0-alpha0
- Rootfs builder: build rust agent using osbuilder
- image-builder: make docker runtime configurable
- image_builder: Remove nsdax binary after its usage

1a7b735 rootfs-builder: build rust agent using osbuilder
c407421 image-builder: make docker runtime configurable
98ac62d image_builder: Remove nsdax binary after its usage

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-18 19:37:05 +00:00
Archana Shinde
83b1712fa9 release: Kata Containers 1.11.0-alpha0
- should ignore  invalid a key-value pair as an env
- Revert: "Makefile: Fix rust agent build using "--release"."
- Makefile: Fix rust agent build using "--release".
- vsock: support log_vport and debug_console_vport
- Agent: Separate logging into a single crate
- agent: fix the issue of crash agent without spec
- fix the issue of missing restore process's cwd
- Running rust-agent on AArch64
- ci: Remove run_rust_test functions as not being used
- add oci compatibility test case
- agent: Add unit tests for sandbox.rs
- version: Add VERSION file
- ci: Add minimal makefile to use central go test script
- netlink: pull out netlink as library crate.
- Fixup workflow 103

40b5a56 agent: ignore invalid a key-value pair as an env
269daa9 Revert: "Makefile: Fix rust agent build using "--release"."
a3e46a3 Makefile: Fix rust agent build using "--release".
3c1252e vsock: support log_vport and debug_console_vport
c373f84 agent: separate logging into a single crate
2be8661 agent: fix the issue of missing restore process's cwd
6c7453d agent: fix the issue of crash agent without spec
4edf537 ci: Remove run_rust_test functions as not being used
d222533 agent: add oci compatibility test case
7dfc4e0 linker: `no such file` linking error on AArch64
44b2caa AArch64: missing symbols on target `aarch64-unknown-linux-musl`
9621a7f ABI: only support arm 64-bit platform
8d60612 version: Add VERSION file
a5192a1 netlink: pull out netlink as library crate.
3881c06 ci: Add minimal makefile to use central go test script
1c57665 workflows: make sure we build the experimental kernel, CLH
cbd5fa0 workflows: fix step output usage
92301a6 agent: Add unit tests for sandbox.rs

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-18 19:36:52 +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
Jose Carlos Venegas Munoz
901f9ba294 Merge pull request #925 from amshinde/config-5.4
Config changes for  5.4 kernel
2020-02-17 11:26:55 -06: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
Sebastien Boeuf
a8ba86c965 vsock: Fix race condition happening in the virtio-vsock driver
There was a race condition between bind() and listen() that was hit very
rarely when using Kata Containers and Cloud-Hypervisor. It's been
identified the problem is really coming from the virtio-vsock driver,
which is fixed by those new kernel patches uploaded for each version of
the kernels used by Kata Containers.

Fixes #932

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2020-02-14 22:34:02 +00:00
Jose Carlos Venegas Munoz
cf1ae9e492 Merge pull request #937 from nitkon/kernel5.4
kernel: Enable new LTS 5.4.x on ppc64le arch
2020-02-14 09:32:27 -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
Nitesh Konkar
04386a66c8 kernel: Enable new LTS 5.4.x on ppc64le arch
Linux has embraced another LTS kernel version v5.4.x.
Update the kernel config for Power as well.

Fixes: #936

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2020-02-14 13:24:07 +05:30
Archana Shinde
e074df65c8 Merge pull request #935 from jcvenegas/fix-934
lib: yq: explode anchors to get real value of image values
2020-02-13 21:40: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
Jose Carlos Venegas Munoz
ea8b7754ba lib: yq: explode anchors to get real value of image values
yq is not exploding anchors anymore and requiere an extra flag.

Add flag to fix CI.

Fixes: #934

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-13 20:53:32 +00:00
Graham Whaley
cd6d364fba kata-deploy: improve logic for crio.conf runtime additions
Now crio.conf has some kata entries in by default, but commented
out and without the runtime_path elements to them, our deploy
script gets a little confused and fails to add the kata-qemu
elements to the config.

This is because the grep spots the commented out lines, and tries
to, unsuccessfully, update the matching runtime_path elements, that
don't actually exist.

Improve this by matching only uncommented config lines, so now the
script sees that the runtime is not really configured already, and
instead of trying to edit/update it, will place a entry at the
end of the file.

Fixes: #928

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-02-13 14:00:25 +00: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
GabyCT
4d443056bf Merge pull request #2448 from chavafg/topic/update-yq
CI: update yq to 3.1.0
2020-02-11 13:09:03 -06:00
Salvador Fuentes
22c486aa62 CI: update yq to 3.1.0
To match the version used in the tests repo.
Related: https://github.com/kata-containers/tests/issues/2290

Fixes: #2447.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2020-02-11 07:25:08 -06:00
Jia He
005c62a871 image_builder: Reduce the boundary mb for reducing image size on arm64
Qemu merely limits the memory-backend-file size to be aligned to page_size
instead of section size(arm64 1GB). Please see file_ram_alloc() in qemu
exec.c. If we use 1024MB, the generated image size will be 3-4 times bigger
than the original one.

After relaxing it, the image size will be changed from 1G to 300M+ on arm64
with Fedora 29 rootfs's default configuration.

I do see there are some different limitation for ram_block on other arches
(e.g. s390x). So gracefully keep other arches unchanged here.

Fixes #404
Signed-off-by: Jia He <justin.he@arm.com>
2020-02-11 16:28:38 +08:00
Penny Zheng
a8dcff5b4e AArch64: change image rootfs from fedora to ubuntu
Ubuntu distribution is the most suitable one for AArch64 to build
image rootfs.
I think the size of rootfs is the key point we should consider most
and first.
And ubuntu has the smallest rootfs, only approximately 100MB.

Fixes: #2449

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-02-11 11:19:45 +08:00
fupan.lfp
289d61730c grpc: fix the issue of crash agent when didn't find the process
It's better to catch the  error of couldn't find the process
in tty_win_resize service, other wise, an invalid process id
could crash the agent.

Fixes: #137

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-02-11 10:04:19 +08:00
Archana Shinde
de7383b2d1 kernel: Update kernel to latest stable 5.4.15
Depends-on: github.com/kata-containers/packaging#925

Fixes: #2421

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-10 16:31:39 -08:00
Archana Shinde
d142bf73e6 Merge pull request #2446 from amshinde/fix-dep
dep: Fix dep check
2020-02-10 15:15:05 -08:00
Archana Shinde
5c3bcd884c dep: Fix dep check
Gopkg.lock has gone out of sync.
Ran dep ensure to fix it.

Fixes #2445

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-10 13:46:54 -08:00
Archana Shinde
b66fb4389f kernel: Remove CONFIG_INET6 options from fragments
Dont think these are options are required at all.
Remove them from fragments and whitelist.

Fixes #924

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-10 12:14:39 -08:00
Archana Shinde
17d86c3c14 kernel: Always apply whitelist
The whitelist contains options that we dont really care.
Always apply it, irrespective of if we are using an
experimental kernel.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-10 12:09:51 -08:00
Yang Bo
e2c9426ebf Merge pull request #134 from liubin/master
should ignore  invalid a key-value pair as an env
2020-02-10 11:14:36 +08:00
Yang Bo
11a1cf53c2 Merge pull request #361 from yyyeerbo/wip
Rootfs builder: build rust agent using osbuilder
2020-02-10 10:57:19 +08:00
Fupan Li
31a97031f8 Merge pull request #136 from yyyeerbo/wip
Revert: "Makefile: Fix rust agent build using "--release"."
2020-02-10 09:17:11 +08:00
Kant
40b5a56688 agent: ignore invalid a key-value pair as an env
Fixes #135

Signed-off-by: Kant <lb203159@antfin.com>
2020-02-08 13:51:28 +08:00
Yang Bo
269daa94ef Revert: "Makefile: Fix rust agent build using "--release"."
This reverts commit a3e46a369f.

There is still problem with static link, built binary will
segmentfault on clearlinux. So revert this patch for now.

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

Fixes: #69

Signed-off-by: Yang Bo <bo@hyper.sh>
2020-02-08 12:56:34 +08:00
Bo Chen
1fa10fea78 Merge pull request #2440 from jcvenegas/clh-fixes-integration
Update Cloud Hypervisor to v0.5.0
2020-02-07 14:03:09 -08:00
Archana Shinde
12996ca1db Merge pull request #2414 from grahamwhaley/20200128_readme_updates
docs: README: Minor grammatical updates
2020-02-07 13:57:23 -08:00
Jose Carlos Venegas Munoz
836e3c216d clh: update to v0.5.0
Changes:

Virtual Machine Dynamic Resizing
With 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot
unplug and memory hot plug as well. This allows to dynamically resize
Cloud Hypervisor guests which is needed for e.g. Kubernetes related use
cases.
The memory hot plug implementation is based on the same framework as the
CPU hot plug/unplug one, i.e. hardware-reduced ACPI notifications to the
guest.

Next on our VM resizing roadmap is the PCI devices hotplug feature.

Multi-Queue, Multi-Threaded Paravirtualization
We enhanced our virtio networking and block support by having both
devices use multiple I/O queues handled by multiple threads. This
improves our default paravirtualized networking and block devices
throughput.

New Interrupt Management Framework
We improved our interrupt management implementation by introducing an
Interrupt Manager framework, based on the currently on-going rust-vmm
vm-device crates discussions. This move made the code significantly
cleaner, and allowed us to remove several KVM related dependencies from
crates like the PCI and virtio ones.

Development Tools
In order to provide a better developer experience, we worked on
improving our build, development and testing tools.
Somehow similar to the excellent Firecracker's devtool, we now provide a
dev_cli script.

With this new tool, our users and contributors will be able to build and
test Cloud Hypervisor through a containerized environment.

Kata Containers Integration
We spent some significant time and efforts debugging and fixing our
integration with the Kata Containers project. Cloud Hypervisor is now a
fully supported Kata Containers hypervisor, and is integrated into the
project's CI.

Log:

62ccccc vmm: Make sure to retry creating the VM on EINTR
671b49b build(deps): bump vm-memory from `d6229fc` to `4237db3`
e5b7fff build(deps): bump micro_http from `1eb80f8` to `ab44474`
da2b3c9 vm-device: interrupt: Remove InterruptType dependencies and definitions
84fc807 interrupt: Interrupt manager split
56d7c04 vm-virtio: vsock: Don't return error when epoll_wait is interrupted
6e6b2b8 scripts: Check the Rust formatting is valid
705f271 scripts: dev_cli: Pass unit and integration test args to cargo test
bc053f1 main: Ignore error on log writing
91739be main: Add help info for block-backend
ae6cf4c tests: integration: Add memory overhead test
7cb61d3 main: Don't panic (by calling .expect()) if writing to the log fails
880a57c vmm: Remove VmInfo struct
07bc292 vmm: device_manager: Get VmFd from AddressManager
6411c3a vmm: device_manager: Use MemoryManager to get guest memory
066fc6c vmm: device_manager: Get VM config from the struct member
77ae3de vmm: device_manager: Make legacy device addition a method
599275b vmm: device_manager: Make ACPI device creation a method
b8c1b2e vmm: device_manager: Make console creation a method
b5440e2 vmm: device_manager: Make virtio device creation functions methods
e90c6f3 vmm: device_manager: Make make_virtio_devices a method
dbc09ad vmm: device_manager: Make add_vfio_devices a method
d9e1c2c vmm: device_manager: Make add_virtio_pci_device a method
aaa5e2e vmm: device_manager: Make add_virtio_mmio_device a method
2987476 vmm: device_manager: Make add_pci_devices and add_mmio_devices methods
3dbae42 vmm: device_manager: Only add MemoryManager to I/O bus on ACPI builds
68fa97e vmm: device_manager: Always embed MemoryManager in the struct
789a39a ci: Add MQ support in the test cases
99da1df vhost-user-blk: Add MQ support in backend
1038a07 vhost-user-blk: Device support multiple queues
839f3a7 build(deps): bump serde_json from 1.0.45 to 1.0.46
652b603 vfio: Use the vfio-binding FAM wrappers
275cb5c scripts: dev_cli: Add clean command support
8676759 README: Basic dev_cli documentation
76087f1 script: cargo: Improve the cargo tests
db6f894 scripts: Add container based development script
31c3685 build(deps): bump micro_http from `e5ef374` to `1eb80f8`
8dfb79e build(deps): bump vm-memory from `df6207f` to `d6229fc`
e99b640 build(deps): bump regex-syntax from 0.6.13 to 0.6.14
92b3764 build(deps): bump openssl-sys from 0.9.53 to 0.9.54
de91c30 build(deps): bump micro_http from `9e68aa4` to `e5ef374`
aa4efdd ci: Update kernel related to virtio-iommu
ac01ced vmm: Cleanup list of PCI IDs related to virtual IOMMU
097cff2 vmm: Use virtio topology for virtio-iommu
bac0d1e iommu: Implement virtio topology configuration
0c73ff8 iommu: Add topology structures
db42cae vm-virtio: Handle special virtio-pci capability CAP_PCI_CFG
db9f9b7 pci: Make self mutable when reading from PCI config space
655d9cd build(deps): bump smallvec from 1.1.0 to 1.2.0
74ab468 build(deps): bump backtrace from 0.3.42 to 0.3.43
1651cc3 build(deps): bump kvm-ioctls from 0.4.0 to 0.5.0
b4d04bd tests: Add CLI <-> API validation test for --disk changes
3c8cf09 docs: Update device model to clarify how to enable vhost-user-block
75e6762 vmm: Give deprecation warning for "--vhost-user-blk" syntax
969b5ee vmm: config: Add warning about specifying "wce" without "vhost-user"
12f4cd9 tests: Use "--disks" for vhost-user-block testing
aeeae66 vmm: Support vhost-user-block via "--disks"
362942f build(deps): bump micro_http from `53cf1ba` to `9e68aa4`
b5992fe build(deps): bump thiserror from 1.0.9 to 1.0.10
2c6f528 vmm: Give deprecation warning for "--vhost-user-net" syntax
f322e92 docs: Update device model to clarify how to enable vhost-user-net
4888dd2 tests: Add CLI <-> API validation test for --net changes
8f096b8 tests: Use "--net" parameter for vhost-user-net setup
a831aa2 vmm: Support vhost-user-net via "--net"
e155e36 vm-virtio: Simplify virtio-fs configuration
8e48fc4 vm-virtio: Simplify virtio-blk configuration
8946a09 vm-virtio: Simplify virtio-net configuration
9efaff7 ci: Consolidate virtio-blk integration tests
a33e834 ci: Add integration test for virtio-blk multiqueue support
f5b53ae vm-virtio: Implement multiqueue/multithread support for virtio-blk
08e47eb vmm: Add num_queues and queue_size parameters to virtio-blk
c4b3ed7 vm-virtio: Further factorization
bce7627 vm-virtio: Define a separate macro alias for ctrl queue devices
2e2b1e4 vm-virtio: Remove the multiqueue argument from the pausable macro
2cb7ec0 vm-virtio: Pausable macro factorization improvements
c06a827 vm-virtio: Rename epoll_thread to epoll_threads
f648f28 vm-virtio: Make all virtio devices potentially multi-threaded
ac8e4b9 build(deps): bump vm-memory from `8a606cd` to `df6207f`
45d43f9 build(deps): bump micro_http from `af25399` to `53cf1ba`
9174709 build(deps): bump arrayref from 0.3.5 to 0.3.6
90810a9 build(deps): bump micro_http from `1f931c6` to `af25399`
16af54e build(deps): bump signal-hook from 0.1.12 to 0.1.13
4ff972c build(deps): bump ssh2 from 0.6.0 to 0.7.1
3508440 build(deps): bump itoa from 0.4.4 to 0.4.5
0fa1e2c vmm: Handle mapping from devices regions through vm-memory
694da82 ci: Make the integration tests fail if images are not valid
0ea6406 build(deps): bump vm-memory from `beaf215` to `8a606cd`
148a9ed vmm: Fix map_err losing the inner error
0a7bcc9 vm-virtio: Fix map_err losing the inner error
4587cc7 vhost_user_net: Fix map_err losing the inner error
f444ef6 vfio: Fix map_err losing the inner error
aa5ae76 src: Fix map_err losing the inner error
cf25bd7 qcow: Fix map_err losing the inner error
0639659 net_util: Fix map_err losing the inner error
f5a52ed arch: Fix map_err losing the inner error
a34893a Revert "vmm: Move MemoryManager from I/O ports to MMIO region"
57ed006 Revert "devices, vmm: Move GED device to MMIO region"
6120d0f Revert "vmm: Move CpuManager device to MMIO region"
6475052 build(deps): bump micro_http from `1db1bbd` to `1f931c6`
980e03f vmm: Move CpuManager device to MMIO region
5e3c62d devices, vmm: Move GED device to MMIO region
03108fb vmm: Move MemoryManager from I/O ports to MMIO region
3202e8a vfio: Fix 64bits BAR size reading
d5d4053 README.md: Update kernel instructions to use branch
0042f1d ioapic: Rely fully on the InterruptSourceGroup to manage interrupts
2dca959 ioapic: Create the InterruptSourceGroup from InterruptManager
52800a8 vmm: Create an InterruptManager dedicated to IOAPIC
29e668c cargo: Update Cargo.lock
cafab9e main: Add some command line argument conflicts
611d13e main: Move logging arguments to their own group
8aabb90 main: Add "--vhost-user-blk" to the "vm-config" group
bdb0ad9 tests: Use cloud-hypervisor binary for "--{net,block}-backend"
45fb918 main: Allow main binary to be used as net or block backend
7f73eeb vhost_user_block: Split launching backend into its own function
9fd187c vhost_user_net: Split launching backend into its own function
b851887 main: Split current VMM running code into it's own function
1dd2451 vhost_user_block: Refactor vhost_user_block backend code into a new crate
fb763c4 vhost_user_net: Refactor vhost_user_net backend code into a new crate
dd82064 main: Delay converting command line to VM params
e12179a bin: vhost_user_net: Rename "--backend" to "--net-backend"
3ede2dc bin: vhost_user_blk: Rename "--backend" to "--block-backend"
032b8e4 build(deps): bump micro_http from `ebc15f2` to `1db1bbd`
204f05f build(deps): bump serde_json from 1.0.44 to 1.0.45
7ee9eca build(deps): bump vmm-sys-util from 0.3.1 to 0.4.0
2034fc2 vmm: Fix LENGTH_OFFSET_HIGH of MemoryManager
503e047 build(deps): bump redox_users from 0.3.3 to 0.3.4
605fa83 ci: Add integration test for virtio-blk with 'direct=on'
925c862 vmm: device_manager: Add 'direct' support for virtio-blk
2bd90d9 ci: Add integration test for virtio-blk with 'readonly=on'
fb79e75 vmm: device_manager: Add read-only support for virtio-blk
9ac06bf ci: Run clippy for each specific feature
e91638e pci: Cleanup the crate from unneeded types
99f3929 pci: Simplify PciDevice trait
a20b383 vmm: Always use a reference for InterruptManager
bb8cd9e vmm: Use LegacyUserspaceInterruptGroup for acpi device
75e22ff vmm: Use LegacyUserspaceInterruptGroup for serial device
8d7c4ea vmm: Use LegacyUserspaceInterruptGroup for mmio devices
12657ef vmm: Fully implement LegacyUserspaceInterruptGroup
f70c993 vmm: Add ioapic to KvmInterruptManager
c9ea235 vmm: Add LegacyUserspaceInterruptGroup skeleton for legacy interrupts
2aabf58 vmm: Move irq_routes creation to specific MSI use case
d34f31f vmm: Fix KvmInterruptManager when base is different from 0
e73cb1f vmm: Initialize InterruptManager sooner
9fab9bc build(deps): bump micro_http from `f77960b` to `ebc15f2`
9fe6ece build(deps): bump redox_users from 0.3.1 to 0.3.3
c27be84 build(deps): bump syn from 1.0.13 to 1.0.14
9731be1 build(deps): bump remain from 0.2.0 to 0.2.1
eedfb36 build(deps): bump micro_http from `6327290` to `f77960b`
3901a1d vmm: Log an error if VM resize fails
76d9bf2 vmm: Start memory slots at zero
0ab22fe vmm: Only generate GED event when new DIMM added
211786a vmm: Only generate GED interrupt when the number of vCPUs has changed
8049666 vm-virtio: Cleanup from kvm_iotcls and kvm_bindings dependencies
50a4c16 pci: Cleanup the crate from kvm_iotcls and kvm_bindings dependencies
4bb12a2 interrupt: Reorganize all interrupt management with InterruptManager
92082ad vmm: Fully implement interrupt traits
0f72712 vmm: Implement InterruptSourceGroup and InterruptManager skeleton
11d4d57 vm-device: Introduce InterruptManager and InterruptSourceGroup traits
be421dc vm-virtio: Optimize vhost-user interrupt notification
1f029dd vm-virtio: Add notifier to VirtioInterrupt trait
c396bac vm-virtio: Modify VirtioInterrupt callback into a trait
ef7d889 vfio: Remove unused GSI routing functions
1a4b5ec msi: Set KVM routes from MsiConfig instead of VFIO
f3c3870 msi: Create MsiConfig to embed MsiCap
1e5e028 msix: Perform interrupt enabling/disabling
19aeac4 msix: Remove the need for interrupt callback
3fe362e msix: Set KVM routes from MsixConfig instead of VFIO
2381f32 msix: Add gsi_msi_routes to MsixConfig
9b60fcd msix: Add VmFd to MsixConfig
86c760a msix: Add SystemAllocator to MsixConfig
f77d2c2 pci: Add some KVM and interrupt utilities to the crate
f5704d3 vmm: Move gsi_msi_routes creation to be shared across all PCI devices
ed5459f ci: Add integration test for vhost_user_blk with 'direct'
e0a8da2 vhost_user_blk: Add missing WCE property support
c7e9056 vhost_user_blk: implement support for direct (O_DIRECT) mode
a14aee9 qcow: Use RawFile as backend instead of File
c5a656c vm-virtio: block: Add support for alignment restrictions
e483cde docs: Update networking.md with multiple queue support
973eb16 src: Add multiple queue checking in vhost-user-net integration test
4885dc0 src: Update test_valid_vm_config_net with new option for virtio-net
652e7b9 vm-virtio: Implement multiple queue support for net devices
404316e vmm: Add multiple queue option and update config for virtio-net device
4ab88a8 net_util: Add multiple queue support for tap
cf7e0cd vm-virtio: Add multiple queue handling with control queue
709f7fe vm-virtio: Implement control queue support for net devices
d38787c vm-virtio: Add control queue support in net_util.rs
1ae7deb vm-virtio: Implement refactor for net devices and backend
6ae2597 vm-virtio: Create new module to abstract common parts for net devices
3485e89 vm-virtio: Stop delivering interrupt while NO_VECTOR
1324aa4 build(deps): bump proc-macro2 from 1.0.7 to 1.0.8
dcb6d02 build(deps): bump micro_http from `db75e88` to `6327290`
cde2c44 build(deps): bump backtrace from 0.3.41 to 0.3.42
d8adf6a build(deps): bump micro_http from `52e21d0` to `db75e88`
14041e9 docs: Add memory resizing documentation
32506da docs: Document CPU unplug
8b500d7 deps: Bump vm-memory and linux-loader version
7310ab6 devices, vmm: Use a bit field for ACPI GED interrupt type
d2d1248 tests: Add test combining memory and vCPU hotplug
2073007 tests: Add integration test for RAM hotplug
351058a resources: Add memory hotplug support to the kernel configuration
28c6652 vmm: Upon VmResize attempt to hotplug the memory
4e414f0 vmm: device_manager: Scan memory devices upon GED interrupt
284d5e0 vmm: Add memory hotplug ACPI entries to DSDT
8ecf736 vmm: device_manager: Add the MemoryManager to the I/O bus
1218765 vmm: memory_manager: Expose the slots details via an I/O port
9880a2a vmm: memory_manger: Add support for adding new memory to the VM
82fce5a vmm: Add support for resizing the memory used by the VM
78dcb18 vmm: device_manager: Store the type of notification in a local value
5da7c63 acpi_tables: aml: Add support for creating fields
f5137e8 vmm, main: Add optional "hotplug_size" to --mem
f1b6657 vmm: Make desired vCPUs optional in resize command
72b9e92 vmm: memory_manager: Further refactor memory region allocation
1af11a7 vmm: memory_manager: Refactor GuestMemoryMmap construction
281b99a build(deps): bump micro_http from `803c8fa` to `52e21d0`
0acabcd build(deps): bump libssh2-sys from 0.2.13 to 0.2.14
85f43c7 build(deps): bump micro_http from `edbff4c` to `803c8fa`
5788d36 vmm: Do not create virtio devices when missing a transport
41895d7 build(deps): bump rand from 0.7.2 to 0.7.3
85d1555 build(deps): bump micro_http from `0987cdc` to `edbff4c`
3430e20 build(deps): bump memchr from 2.2.1 to 2.3.0
7d85324 build(deps): bump constant_time_eq from 0.1.4 to 0.1.5
fc8bfe0 build(deps): bump backtrace from 0.3.40 to 0.3.41
fa34fae ci: Move to personal branch for virtiofsd
f427d94 virtio-fs: Update virtiofs daemon parameters
345c922 build(deps): bump micro_http from `0bfaf39` to `0987cdc`
b38beb6 build(deps): bump regex-syntax from 0.6.12 to 0.6.13
c2f6dfc vm-virtio: Fix VirtioDeviceType traits
9d775a1 build(deps): bump pnet from 0.23.0 to 0.25.0
70d80cc build(deps): bump pnet_sys from 0.23.0 to 0.23.1
f493d43 build(deps): bump vm-memory from `467eda6` to `218afdd`
2500d0a build(deps): bump micro_http from `2953365` to `0bfaf39`
279c4f9 build(deps): bump pnet_macros from 0.23.0 to 0.25.0
24cf15d vfio: Don't throw an error if a region cannot be found
c2ae380 pci: Refine detection of BAR reprogramming
07bad79 pci: Fix detection of expansion ROM BAR reprogramming
0d2e38d build(deps): bump cc from 1.0.49 to 1.0.50
38468d3 vm-virtio: Improve virtio-console input processing
e4c3401 vm-virtio: Don't waste a descriptor if not filled
7a3e6ca vm-virtio: Simplify virtio-console input processing
ad223f2 fs: Use cache=none by default
84445aa vm-virtio: Implement multi-mapping for virtio-fs
143471b fs: Update mount command to mount virtiofs filesystem
e1822cf vm-virtio: Implement VIRTIO_IOMMU_F_PROBE feature
ae6f272 acpi: Introduce VIOT to support latest virtio-iommu implementation
4dbb33a resources: Update kernel config
c56af8d ci: Use a temporary kernel branch before we override the current one
d756844 build(deps): bump getrandom from 0.1.13 to 0.1.14
9d3f656 build(deps): bump cc from 1.0.48 to 1.0.49
f59665e build(deps): bump epoll from 4.0.1 to 4.1.0
9482ded build(deps): bump micro_http from `aec25f9` to `2953365`
e4ea60d build(deps): bump rand from 0.7.0 to 0.7.2
44dd056 build(deps): bump remain from 0.1.5 to 0.2.0
091c9d9 build(deps): bump pnet from 0.22.0 to 0.23.0
d8c3912 build(deps): bump micro_http from `be97831` to `aec25f9`
1a28f64 build(deps): bump atty from 0.2.13 to 0.2.14
8f6cbf8 build(deps): bump vm-memory from `291dc2e` to `467eda6`
5a0d01c build(deps): bump blake2b_simd from 0.5.9 to 0.5.10
38c0d32 build(deps): bump syn from 1.0.12 to 1.0.13
134bcd8 tests: Use the workspace to unit test all the crates
b6f6772 vhost_rs: Fix compile failure in tests
cf1983c vhost_rs: Mark some broken tests ignored
32a39f9 vm-virtio: Fix broken write_base_regs() unit test
b2589d4 vm-virtio, vmm, vfio: Store GuestMemoryMmap in an Arc<ArcSwap<T>>
5c0bb38 build(deps): bump vm-memory from `09c119f` to `291dc2e`
b997130 build(deps): bump syn from 1.0.11 to 1.0.12
fda8a04 build(deps): bump vm-memory from `3ef06be` to `09c119f`
34e35c9 build(deps): bump anyhow from 1.0.25 to 1.0.26
95352db build(deps): bump vm-memory from `ec69de9` to `3ef06be`
a551398 vmm: device_manager: Use MemoryManager to create KVM mapping
962dec2 vmm: memory_manager: Refactor KVM userspace mapping creation
7df8879 vmm: device_manager: Get device range from MemoryManager
61cfe3e vmm: Obtain sequential KVM memory slot numbers from MemoryManager
260cebb vmm: Introduce MemoryManager
bcfe546 build(deps): bump vm-memory from `bb29ec8` to `ec69de9`
f668603 ci: Fix flaky test_memory_mergeable_on test
1e3fd2f tests: Remove many redundant clones
d5682cd vmm: device_manager: Rewrite if chain using match
21b88c3 vmm: cpu: Rewrite if chain using match
e25a47b vmm: device_manager: Remove redundant clones
9fb1c46 vm-virtio: Remove unnecessary cloning
deb3cbd arch_gen: Remove unused bootparam module
9701fde vm-virtio: Add connection handshake to vsock
5c4e172 ci: test the vhost-user-blk readonly function
cee01ed vhost-user-blk backend: add readonly support
91549dd tests: Add integration test for CPU unplug
a6878ac vmm: cpu: Implement CPU removal
7b3fc72 vmm: cpu: Notify guest OS that it should offline vCPUs
7e81b0d vmm: cpu: Create vCPU state for all possible vCPUs
156ea39 vmm: cpu: Only do ACPI notify on newly added vCPUs
e8313e3 vmm: acpi: Refactor ACPI CPU notification
43d2e09 ci: Add unit tests to compare CLI and OpenAPI
d139090 vmm: config: Derive Debug and PartialEq for configuration structures
93f5f6e vmm: config: Provide a default empty command line through OpenAPI
43bd0e5 main: Move VmParams creation into a dedicated function
17a167d main: Move default values preparation into a dedicated function
9c3a7dd main: Move clap::App creation into a dedicated function
11750ef build(deps): bump log from 0.4.8 to 0.4.10
dea5776 build(deps): bump serde from 1.0.103 to 1.0.104
7909f7a build(deps): bump serde_derive from 1.0.103 to 1.0.104
23150f8 tests: Throttle tests based on disk space
d59fe4e ci: Add some time measurements to CI scripts
fa0fdc6 cargo: Update Cargo.lock for the 0.4.0 release
cec884e release: v0.4.0
6444e29 docs: Add CPU hot plug documentation
a002093 build(deps): bump anyhow from 1.0.23 to 1.0.25
43f0478 build(deps): bump thiserror from 1.0.6 to 1.0.9
664431f vsock: vhost_user: vfio: Fix potential host memory overflow
1e97d14 README: Update for newer distribution support
e8e21ae README: Update the --cpus command line examples
a40a70a ci: Rely on latest virtiofsd version
f0b7412 vmm: device_manager: Add all virtio devices to the migratable list
37557c8 vmm: vm: Implement the Pausable trait
9756fc2 vmm: cpu_manager: Implement the Pausable trait
35dd152 vmm: device_manager: Implement the Pausable trait
a122da4 vm-virtio: vhost: Implement the Pausable trait for all vhost-user devices
dae0b2e vm-virtio: Implement the Pausable trait for all virtio devices
35d7721 vmm: Convert virtio devices to Arc<Mutex<T>>
5450de0 cargo: Do not run fmt on anyhow's build code
0361df4 vm-device: Initial Migratable trait
36daf9c ci: Skip testing RFC or WIP PRs
64c5e3d vmm: api: Adjust FsConfig for OpenAPI
4bfd51c vmm: api: Match VhostUserBlkConfig defaults between CLI and HTTP API
1c2587f vmm: api: Match VhostUserNetConfig defaults between CLI and HTTP API
5e0bbf9 vmm: Don't factorize vhost-user configurations
793327c vmm: api: Make ConsoleConfig default match between CLI and HTTP API
cc08c44 vmm: api: Make MemoryConfig default match between CLI and HTTP API
5a72225 vmm: api: Update CpuConfig name to match the internal name
f7c215d cli: Fix default CPU argument
59ae01f ci: Cancel older builders on Jenkins
c61104d vmm: Port to latest vmm-sys-util
4c92f89 ci: Add OpenAPI validation
93bd88e ci: Simplify travis.yml
d42ef18 ci: Offload cargo tests to the worker node VM
ee528ae vmm: api: Make FsConfig defaults match between CLI and HTTP API
befd342 vmm: api: Make NetConfig defaults match between CLI and HTTP API
eff78f7 resources: Prevent kernel config interactive shell from showing up
99e608c openapi: Fix schema
f994665 vmm: Reduce the minimum IRQ constant
ba59c62 vmm, devices: Remove hardcoded IRQ number for GED device
ce1bd9c resources: turn on CONFIG_ACPI_REDUCED_HARDWARE_ONLY
0374c3d build(deps): bump ssh2 from 0.5.0 to 0.6.0
aa94e9b Revert "vmm: api: Modify FsConfig to be OpenAPI friendly"
9b1ba14 vmm: Delegate device related ACPI DSDT table work to DeviceManager
60e6609 vmm: Delegate CPU related ACPI tables to CpuManager
defc5dc vmm: api: Modify FsConfig to be OpenAPI friendly
66e00ce ci: Extend VFIO integration test
59d0171 vmm: Remove kernel based IOAPIC handling from the device manager
afea6a1 vmm: Stop initialising kernel based IOAPIC/PIC
9b1cb96 vmm: Remove pin based interrupt setup for virtio devices
72fb687 vmm: Check for required capabilities
904b1ea build(deps): bump unicode-width from 0.1.6 to 0.1.7
fcf92d8 tests: Add rebooting to the CPU hotplug test
f98b16f vmm: Update the configuration to preserve hot-plug CPUs after reboot
1722708 vmm: Switch to storing VmConfig inside an Arc<Mutex<>>
c063bb8 vmm: acpi: Make GED interrupt edge triggered
e1af17d vmm: Restore tty to canonical mode when SIGTERM or SIGINT received
44d026b build(deps): bump serde_json from 1.0.43 to 1.0.44
a1285ea build(deps): bump cc from 1.0.47 to 1.0.48
23929f4 vfio: Don't override MSI Enable bit through VFIO ioctl
1dfd60b vfio: use correct flags to disable interrupts
5208ff8 vmm: Detect and handle AMD SME (Secure Memory Encryption)
dcfd6ff build(deps): bump serde_json from 1.0.42 to 1.0.43
08258d5 vfio: pci: Allow multiple devices to be passed through
4115fa8 vfio: pci: Update irqfd registration
1379abb pci: msi: Fix MSG_CTL update through 32 bits write
c81e808 docs: Update instructions regarding virtiofsd
17badfb vmm: cpu: Call vcpu configure() on the vCPU thread
1350306 api: Fix OpenAPI specification entries
e1ff142 tests: Remove MSI only test from test_serial_off
e083064 tests: Add integration test for hotplugging vCPUs
66a31c1 vmm: acpi: Upon GED interrupt notify on all vCPUs
48bf141 vmm: Trigger a hotplug device notification when resizing
b629727 vmm: acpi: Add a CTFY method to notify on all CPU objects
ae9359c vmm: acpi: Create the CPU entries in the DSDT for all vCPUs
791ca33 vmm: device_manager: Add ability to notify via GED device
623755c devices: Add ACPI GED device
7ad68d4 vmm: device_manager: Allocate I/O port for ACPI shutdown device
86339b4 vmm: Add HTTP API to resize the VM
e7d4eae vmm: cpu: Add support for starting more vCPU threads
0ef9999 vmm: cpu: Support only partially configuring the vCPU
c8b3041 vmm: openapi: Update OpenAPI for CpuConfig struct
b6801e3 vmm: cpu: Refactor vCPU thread starting
66d5163 vmm: cpu: Encapsulate vCPU state into its own struct
ea19bb0 tests: Add a test to check that the boot vs max cpus work
1bbe48b vmm: acpi: Mark non-boot vCPUs as disabled in the MADT table
4bc8635 tests: Use new "--cpus" syntax for integration tests
82bc07c vmm: Add boot and max vCPU handling to command line parser
7543e00 vmm: Use new CpuManager accessor to get boot vCPUs
df09078 vmm: cpu: Introduce concept of maximum vs boot vCPUs in CpuManager
669d9a8 vhost_user_backend: fix memory region offsetting
d378da6 build(deps): bump vcpkg from 0.2.7 to 0.2.8
b1cfdc7 build(deps): bump syn from 1.0.9 to 1.0.11
0f21781 cargo: Bump the kvm and vmm-sys-util crates
ca97385 build(deps): bump libc from 0.2.65 to 0.2.66
f7dace1 build(deps): bump syn from 1.0.8 to 1.0.9
861d902 acpi_tables: aml: Add support for binary operators
f787139 build: Reorder travis build commands to reuse build assets
338beeb misc: Update locations to point to new kernel fork
4de04e8 vfio-pci: unmap regions when dropping VfioGroup
62fa595 cargo: set cloud-hypervisor as default crate
ab16af2 openapi: make context ID vsock int64
9fd5ea4 build(deps): bump signal-hook from 0.1.11 to 0.1.12
d6d1074 build(deps): bump serde_derive from 1.0.102 to 1.0.103
4cff045 build(deps): bump serde_json from 1.0.41 to 1.0.42
0ae9610 build(deps): bump serde from 1.0.102 to 1.0.103
0274b79 build(deps): bump signal-hook-registry from 1.1.1 to 1.2.0
edd59a0 build(deps): bump remain from 0.1.4 to 0.1.5
c718225 build(deps): bump openssl-sys from 0.9.52 to 0.9.53
360f063 Revert "vfio: use correct flags to disable interrupts"
8fe5a43 tests: Only setcap on test binary
f1c7f0c ci: Add integration test for vhost_user_fs daemon
50b0e58 vhost_user_fs: Allow specific shared directory to be specified
ba17758 src: Add vhost-user-fs daemon
5c12802 vhost_user_fs: Add Server structure to consume FileSystem implementation
e1fccc3 vhost_user_fs: Add virtio descriptor helper traits
5f7935f vhost_user_fs: Add file traits to handle writing volatile memory
e33ccb0 vhost_user_fs: Implement FileSystem trait for Passthrough
1b76c0a vhost_user_fs: Add FileSystem trait
1e65bda vhost_user_fs: Add multikey module
cd1684b vhost_user_fs: Add FUSE definitions
03361a6 vhost_user_fs: Add new crate
8845326 vm-virtio: Introduce DescriptorChain iterator
3d6b545 ci: Make the integration test binary run with same caps
ac118c9 ci: Parse the smaps file with Rust
bdb7bcd ci: Add integration test for mergeable memory
f979380 vmm: Mark guest persistent memory pages as mergeable
0f9afc3 vmm: Add mergeable=on|off option to --pmem flag
e4e8062 vmm: Mark guest RAM pages as mergeable
880f62b vmm: Add mergeable=on|off option to --memory flag
0213177 Jenkinsfile: Add timeout for build
d642060 Jenkinsfile: Switch to pipeline (declarative format)
1d852e9 vmm: Provide vmm version to start_vmm_thread
a518651 http: api: implement vmm.ping
348a1bc vmm: cpu: Allocate I/O port for the CPU manager
07cdb37 vmm: cpu & acpi: Query CPU manager for CPU status
5faf8b7 vmm: acpi: Add an _MAT for the CPU devices containing a LAPIC
e51ebe0 acpi_tables: Add support for Buffer objects
1da0ff3 vmm: cpu: Add the CpuManager onto the IO bus
39a1b8f acpi_tables: aml: Add support for calling methods
d5bb078 acpi_tables: aml: Add support for while loops
89f0db2 acpi_tables: aml: Add support for device notification
d6696e1 acpi_tables: aml: Add support for mutexes
3d70ce9 acpi_tables: aml: Add "if" with local variables and arguments
d06623f acpi_tables: aml: Add support for OpRegion
93ee6f5 acpi_tables: aml: Add support for field definitions
4b5ce23 acpi_tables: Add PkgLength variant that does not include itself
50c8335 vmm: device_manager: Expose the SystemAllocator
1ac1231 vmm: Encase CpuManager within an Arc<Mutex<>>
d7dc1a9 pci: don't cleanup msi/msix interrupts repeatedly
66fde24 vfio: use correct flags to disable interrupts
8ec89bc misc: Update to new repository locations
64305da docs: device_model: Fix formatting error
b55d75e docs: Add device model
f0e6184 vmm: device_manager: Use consistent naming when adding devices
a2ee681 vmm: device_manager: Add an MMIO devices creation routine
79b8f8e vmm: device_manager: Add a PCI devices creation routine
5087f63 vmm: device_manager: Add an IOAPIC creation routine
ce1765c vmm: device_manager: Add an ACPI device creation routine
cfca275 vmm: device_manager: Add a legacy devices creation routine
4b469b9 vmm: device_manager: Add a console creation routine
e1281b5 build(deps): bump cast from 0.2.2 to 0.2.3
fa0d573 build(deps): bump arc-swap from 0.4.3 to 0.4.4
d9695a0 docs: fs: Update virtio-fs documentation
4d0872d build(deps): bump vm-memory from `8d6ca35` to `bb29ec8`
c204d54 docs: networking: Fix typo in hyperlink
b930b3f vmm: api: Specify which integers are 64 bit wide
6af2f57 vmm: api: Fix the vm.info response payload
2dcd36f build(deps): bump synstructure from 0.12.2 to 0.12.3
6958ec4 vmm: Move CPU management code to its own module
7b77189 build(deps): bump vm-memory from `366a907` to `8d6ca35`
3dde848 vmm: api: Update our OpenAPI document
96aa244 vmm: http: Convert to micro_http HttpServer
f34ace7 vmm: http_endpoint: Do not sent 200 status code when our body is empty
ede2626 API: HTTP: change response content type to JSON
7498647 cargo: Update micro_http
fa94635 build(deps): bump syn from 1.0.7 to 1.0.8
ff36fa9 vm-virtio: Replace use of deprecated std::mem::uninitialized
3c715da vmm: Fix rustfmt failure by removing extra ";"
73b4668 acpi_tables: Fix rustfmt failure by removing extra ";"
a1a5fe0 vmm: Split CPU management into it's own struct
0319a4a arch: vmm: Move ACPI tables creation to vmm crate
c3eaa41 ci: use the new vhost-user-blk backend for integration tests
ceafd4c vhost_user_backend: remove ownership check in set_features()
5870452 src: add vhost-user-blk backend
3a3dd00 vm-virtio: export block::Request and related funcs/structs
08bebaa vhost_user_backend: move protocol_features to the backend
85e936d vhost_rs: fix VhostUserConfig payload management
2cc723f build(deps): bump blake2b_simd from 0.5.8 to 0.5.9
d1f03ba build(deps): bump pnet_macros from 0.22.0 to 0.23.0
ae5e8c4 build(deps): bump cc from 1.0.46 to 1.0.47
8cd45e4 build(deps): bump synstructure from 0.12.1 to 0.12.2
c999ea6 arch: x86_64: acpi: Add basic processor details
64368a1 acpi_tables: aml: Add support for Method and Return
08d6386 acpi_tables: aml: Add support for strings
5cd4f5d vmm: Release the old vm before build a new one
b3388c3 vmm: device_manager: Ensure I/O ports are allocated
2d25862 build(deps): bump pkg-config from 0.3.16 to 0.3.17
ce386ba tests: Use release build for integration tests
87e9ce6 build(deps): bump num_cpus from 1.10.1 to 1.11.0
5694ac2 vm-virtio: Create new VirtioTransport trait to abstract ioeventfds
3fa5df4 vmm: Unregister old ioeventfds when reprogramming PCI BAR
587a420 cargo: Update to the latest kvm-ioctls version
c7cabc8 vmm: Conditionally update ioeventfds for virtio PCI device
de21c9b pci: Remove ioeventfds() from PciDevice trait
3be95db pci: Remove KVM dependency
296f2e1 ci: Add integration test for PCI BAR reprogramming
d6c68e4 pci: Add error propagation to PCI BAR reprogramming
3e819ac pci: Use a weak reference to the AddressManager
149b61b pci: Detect BAR reprogramming
04a449d pci: Pass DeviceRelocation to PciBus
e93467a vmm: Implement DeviceRelocation trait
4f8054f pci: Store the type of BAR to return correct address
b51a9e1 pci: Make PciBarRegionType implement PartialEq
8746c16 vmm: Create AddressManager to own SystemAllocator
1870eb4 devices: Lock the BtreeMap inside to avoid deadlocks
733e636 devices: Allow for bus range removal and update
e536f88 vfio: Implement move_bar() from PciDevice trait
c865f93 pci: Extend PciDevice trait with move_bar() function
3e37f59 pci: Add new DeviceRelocation trait
5cc1e73 Fix Cargo.lock
05eb567 build: Ensure there is a release build artifact for travis to upload
75bf240 cargo: Move to 0.3.0
be6a197 build(deps): bump serde_derive from 1.0.101 to 1.0.102
f27893f build(deps): bump vm-memory from `8669369` to `366a907`
696f6ca build(deps): bump signal-hook from 0.1.10 to 0.1.11
1f7f484 build(deps): bump serde from 1.0.101 to 1.0.102
4e0b5e8 build(deps): bump syn from 1.0.6 to 1.0.7
c159515 build(deps): bump syn from 1.0.5 to 1.0.6
2633636 build(deps): bump getrandom from 0.1.12 to 0.1.13
7c2c4fb acpi_tables: aml: Rename to_bytes() to to_aml_bytes()
ad60fe1 arch: x86_64: acpi: Mark 64-bit device area uncacheable
025f1f9 arch: x86_64: acpi: Remove 16-bit PCI range
555ac68 arch: x86_64: acpi: Generate DSDT programatically
dd539df acpi_tables: sdt: Add ability to add to the table from a slice
c76fd6d acpi_tables: aml: Implement AML Zero, One, Ones
9269e40 acpi_tables: aml: Add support for device and scope
e1e0ac2 acpi_tables: aml: Add support for creating IO and interrupt resources
08aff4e acpi_tables: aml: Add support for address spaces
c4c3540 acpi_tables: aml: Add resource templates and Memory32Fixed
03d8cdc acpi_tables: aml: Generate EISA name IDs
3cb73b3 acpi_tables: aml: Add Package support
bf0d0d9 acpi_tables: aml: Add support for named definitions
5a70764 acpi_tables: aml: Implement numbers
a4ce596 acpi_tables: aml: Add support for generating AML name paths
1387ac5 ci: Add cargo audit to the travis pipeline
de9eb3e Bump vmm-sys-utils to 0.2.0
dc951af build(deps): bump c2-chacha from 0.2.2 to 0.2.3
3dff551 build(deps): bump ppv-lite86 from 0.2.5 to 0.2.6
4783fe7 build(deps): bump autocfg from 0.1.6 to 0.1.7
e10413b build(deps): bump proc-macro2 from 1.0.5 to 1.0.6
317d754 build(deps): bump ssh2 from 0.4.0 to 0.5.0
eff1ece build(deps): bump openssl-sys from 0.9.51 to 0.9.52
05c7130 ci: Update ClearLinux image
8e8a7b6 release-notes: v0.3.0 release
2d7bfdd build(deps): bump libc from 0.2.64 to 0.2.65
5822969 docs: Update instructions to create custom ClearLinux image
defc339 docs: iommu: Improve VM boot time and performance
efbafdf vm-virtio: Allow 2MiB mappings
2b60452 build(deps): bump backtrace from 0.3.39 to 0.3.40
e8a25c2 build(deps): bump backtrace from 0.3.38 to 0.3.39
b8be1dc build(deps): bump backtrace-sys from 0.1.31 to 0.1.32
8363159 build(deps): bump cc from 1.0.45 to 1.0.46
78e2f7a api: http: handle cpu according to openapi
205b8c1 api: http: make consistent api and implementation
3acf9df vfio: Don't map guest memory for VFIO devices attached to vIOMMU
63c30a6 vmm: Build and set the list of external mappings for VFIO
c65ead5 vm-virtio: Trigger external map/unmap from virtio-iommu
837bcbc vfio: Create VFIO implementation of ExternalDmaMapping
3598e60 vfio: Add a public function to retrive VFIO container
34bb317 vm-device: Add new crate for virtio and VFIO agnostic traits
9085a39 vmm: Attach VFIO devices to IORT table
5fc3f37 vmm: Add iommu=on|off option for --device
3bb51d4 build(deps): bump libc from 0.2.62 to 0.2.64
cc72ed1 vhost_user_net: Propagate errors correctly
8663b42 vhost_user_net: Remove unnecessary checks for unconfigured memory
df336ad vhost_user_net: Remove debugging println! messages
9e78c2e build(deps): bump ryu from 1.0.1 to 1.0.2
786e339 api: http: Fix openpi schema.
90d1083 build(deps): bump syn from 1.0.3 to 1.0.5
5ca068a build(deps): bump proc-macro2 from 1.0.1 to 1.0.5
2a0ba7a vmm: vm: Add state validation unit test
097b306 vmm: vm: Verify that state transitions are valid
ef090cf build(deps): bump ryu from 1.0.0 to 1.0.1
db3ece8 build(deps): bump failure from 0.1.5 to 0.1.6
af41d6f main: Add VM pause/resume test
d2d3abb vmm: Rename Booted vm state to Running
dbbd04a vmm: Implement VM resume
4ac0cb9 vmm: Implement VM pause
80c3fd9 ci: Allow enough time for L2 VM to boot
37a7000 ci: Make sure VFIO test don't conflict with Azure private IP
6e9e24e ci: Extend virtio-iommu integration test
1fc8ee9 ci: Remove QEMU dependency for nested VFIO test
cb59f82 scripts: Use virtio-fs-virtio-iommu branch as custom kernel
688ec0e resources: Update kernel config
8e018d6 vfio: Move vfio-bindings to crates.io
c446b9d Cargo: Move virtio-bindings to crates.io
6df7cd0 build(deps): bump openssl-sys from 0.9.50 to 0.9.51
3a04db5 build(deps): bump arrayvec from 0.4.11 to 0.4.12
ad7d02c build(deps): bump nodrop from 0.1.13 to 0.1.14
1298b50 vmm: Manage the exit and reset behaviours from the control loop
a95fa1c vmm: api: Add a VMM shutdown command
228adeb vmm: Unreference the VM when shutting down
14eb071 Cargo: Move to crates.io vmm-sys-util
5652cc7 README: Remove wrong statement about the firmware
2c50c96 docs: Explain how to use the virtual IOMMU
46848fd ci: Add integration test for virtio-iommu
b918220 vmm: Support virtio-pci devices attached to a virtual IOMMU
278ab05 vmm: Add iommu=on|off option for --vsock
32d07e4 vmm: Add iommu=on|off option for --console
63869bd vmm: Add iommu=on|off option for --pmem
fb47693 vmm: Add iommu=on|off option for --rng
20c4ed8 vmm: Add iommu=on|off option for --net
4b8d7e7 vmm: Add iommu=on|off option for --disk
6e0aa56 vmm: Add iommu field to the VmConfig
03352f4 arch: Create ACPI IORT table
f40adff vm-virtio: Add virtio-iommu support
0acb1e3 vm-virtio: Translate addresses for devices attached to IOMMU
6566c73 vm-virtio: Add IOMMU support to virtio-vsock
9ab00dc vm-virtio: Add IOMMU support to virtio-rng
ee1899c vm-virtio: Add IOMMU support to virtio-pmem
392f1ec vm-virtio: Add IOMMU support to virtio-console
9fad680 vm-virtio: Add IOMMU support to virtio-net
9ebb1a5 vm-virtio: Add IOMMU support to virtio-blk
85e1865 vm-virtio: Implement reset() for vhost-user-fs
4b1328a vm-virtio: Implement reset() for vhost-user-net
8225d4c vm-virtio: Implement reset() for virtio-console
dac7737 vm-virtio: Implement reset() for virtio-vsock
3e750de vm-virtio: Implement reset() for virtio-pmem
eb91bc8 vm-virtio: Implement reset() for virtio-rng
59b4aab vm-virtio: Implement reset() for virtio-net
8288cb2 micro_http: Use Firecracker version
2a46613 vmm: api: Set the HTTP response header Server field
fc5c210 micro_http: Set the response headers Server value
8dbb16d main: Add a simple HTTP API integration test
7abbad0 vmm: Be more idiomatic when calling into the VMM API
7328ecd vmm: Implement the /api/v1/vm.delete endpoint
f9daf2e vmm: Factorize the vm boot and shutdown code
43b3642 vmm: Clean Error handling up
4275824 vmm: Implement the /api/v1/vm.info endpoint
27af983 vmm: Track the VM state
b703441 vmm: Handle the missing VM error
7e0cb07 vmm: Only build a new VM when booting it
9a93f4f micro_http: Fix clippy warning
c505cfa vmm: Implement the VM HTTP endpoint handlers
8a5e47f vmm: Implement the shutdown and reboot API
46cde1a vmm: Rename the VM start and stop operations to boot and shutdown
ce0b475 vmm: Move the VM creation and startup helpers to the api module
f674019 vmm: {De}serialize VmConfig
f2de4d0 vmm: config: Make the cmdline config serializable
6a722e5 vmm: config: Make VhostUser configs serializable
aa31748 vmm: Start the HTTP server thread
b14fd37 vmm: Make --kernel optional
f27aa21 main: Add API socket option
fe5561d main: Group cli options logically
2371325 vmm: api: Add HTTP server
e50f441 micro_http: Import Firecracker HTTP 1.x implementation
8916dad vmm: api: Add cloud-hypervisor OpenAPI documentation
1b66a2f build(deps): bump serde_json from 1.0.40 to 1.0.41
8ea4145 devices, vmm: Add legacy CMOS device
47367eb build(deps): bump openssl-sys from 0.9.49 to 0.9.50
df3e5c8 tests: Add support for integration testing Ubuntu "eoan"
8ec6cda ci: Do not look for vubridge to decide if qemu must be built
8c33eb3 src: Add integration test for vhost-user-net backend
f6d1a9d src: Add vhost-user-net backend
d724511 vm-virtio: Add set_protocol_features in vhost-user-net
9ff4206 vhost_user_backend: Fix clippy issues
db15181 Cargo.toml: Add workspace config changes
9356af8 arch: Mark the PCI MMCONFIG region as reserved in the E820 tables
6a4a931 arch: acpi: Reserve the PCI MMCONFIG region
038f198 arch: acpi: Fix off-by-one error in size of PCI device region
833a3d4 pci, vmm: Expose the PCI bus for configuration via MMIO
c0ca3b6 arch: acpi, layout: Correctly calculate and expose PCI MMCONFIG area
a9eb352 arch: acpi: Patch the 32-bit PCI device area in the APCI table
09392f0 vhost_user_backend: Fix remaining issues
527dd68 vhost_user_backend: Update vmm_va_to_gpa with adding offset
4a1af7f vhost-user-backend: Correct error handling in run
c430951 vhost-user-backend: Remove one checking from set_features
347611b vhost_user_backend: Pass a backend that can be modified
f14ab87 vhost_user_backend: Give access to the EpollVringHandler
cfc8c39 vhost_user_backend: Provide some default trait implementations
1aab372 vhost_user_backend: Make the backend a server
c1b26b1 vhost_user_backend: Don't process disabled queues
d80ac43 vhost_user_backend: Remove useless started field
5f07692 vhost_user_backend: Allow for proper error propagation
36de390 vhost_user_backend: Make some trait functions as mutable
d4f7f73 vhost_user_backend: Move to a per-queue RwLock
4ed8189 vhost_user_backend: Replace Mutex with RwLock when possible
2e2cad9 vhost_user_backend: Add new crate
b5ee921 vmm, devices: Use APIC address constant
162791b vmm, arch: Use IOAPIC constants from layout in DeviceManager
8207b2e arch: Move addresses for GDT and IDT tables to layout module
a045516 vmm: Use layout constant for kernel command line
1bc4750 arch: Move initial page table addresses to layout module
5ba61f6 arch: Move address of MPTABLE to layout module
6d6e290 arch: Move APIC and IOAPIC addresses into layout
0e7a1fc arch, vmm: Start documenting major regions of RAM and reserved memory
f63cb85 net_util: Implement fmt::Display for MacAddr
ff1cb11 arch: Use if-let notation
df2516f vhost_rs: Add clippy override
2ae3919 vm-virtio: Fix formatting
8188074 main: Start the VMM thread
e235c6d vmm: Add VM creation and startup helpers
151f96e vmm: Add a VMM thread startup routine
2f1ff23 vmm: (Re-)Introduce a VMM structure
4671a58 vmm: Move the EpollContext implementation to lib
03ab683 vmm: Introduce Cloud Hypervisor IPC
6710a39 vmm: Pass the exit and reset fds to the vm creation method
feb1c33 vmm: Add a VM config getter
47167a6 vmm: Add a VM console handling method
ea7abc6 vmm: Add a VM stop method
e6ef9ec vmm: Move the tty setting to the VM start routine
2e9d815 vmm: Use a reference counted VmConfig when creating a new VM
2e0f1c2 README: Update Slack invitation link
e869283 build(deps): bump cfg-if from 0.1.9 to 0.1.10
bdfd1a3 vmm: Remove the Vmm structure
9c5135d vmm: Simplify the VM start flow
b79c1f7 vmm: Derive the clone trait for VmConfig
acc60b0 vmm: Make VsockConfig owned
3dc7aff vmm: Make vhost-user configuration owned
5f8a62f vmm: Make DeviceConfig owned
3613723 vmm: Make ConsoleConfig owned
79a02f9 vmm: Make PmemConfig owned
00674cd vmm: Make FsConfig owned
5323da0 vmm: Make RngConfig owned
0688bec vmm: Make NetConfig owned
675e463 vmm: Make DiskConfig owned
036890e vmm: Make KernelConfig owned
9c5bfb8 vmm: Make MemoryConfig owned
dbff0e9 build(deps): bump backtrace from 0.3.37 to 0.3.38
0c8f9d2 ci: Boot from vhost-user-blk with hypervisor-fw
f06b2aa vm-virtio: vhost-user: Set the right vring size
a2f3da3 build(deps): bump arc-swap from 0.4.2 to 0.4.3
2cd406b vm-virtio: Fix virtio-pci BAR type
29b3848 ci: Add a test to validate the VM can be booted from vhost-user-blk
d723b7d vm-virtio: vhost-user-blk: Add support for reset
0a229ef ci: Extend vhost-user-blk test to validate the content
6b06cec ci: add test case for vhost-user-blk
360980d vhost-user-blk: enable write_config for WCE
39083d7 vhost-user-blk: make read_config work
a949ab2 main: add arguments entry for vhost-user-blk
4164853 vmm: add vhost-user-blk support
c7559bb config: make error definition common
397d388 vm-virtio: Add vhost-user-blk implementation
b232de9 vhost_rs: Add INFLIGHT_SHMFD protocol feature
927148d vhost_rs: Fix GET_CONFIG command
c347f84 Revert "vhost_rs: add config messge support"
0a0c735 virtio-bindings: Rely on the upstream crate from rust-vmm
5f0337c tests: Add a "huge" memory test
b488d48 arch: x86_64: Fix E820 table for RAM
5b3ca78 vmm: Use the full host physical address range
180e6d1 vm-virtio: Allocate BARs for virtio-block devices in 32-bit hole
f0360c9 arch: acpi: Set the upper device range based on RAM levels
f9b0875 arch: acpi: Correct range for the 32-bit device hole
bf4f3db build(deps): bump vmm-sys-util from `07ef2e2` to `27e7ff1`
eb60106 arch: acpi: Correct starting length of MCFG table
67ef4f0 build(deps): bump linux-loader from `b270081` to `6cf23a8`
f622a76 build: Build test all supported build configurations on Travis
3bc11a4 vmm: Make the "mmio" only build generate no errors
4df5ebe vmm: Add devices to IO/MMIO bus closer to creation
0739c2c vm-virtio: Fix compilation warning from "mmio" feature only build
7358144 vmm: Cleanup warning from "pci" feature only build
3567206 build, tests: Update to ssh2 0.4.0
ea7f4d7 build(deps): bump serde from 1.0.100 to 1.0.101
c0fede0 build(deps): bump libssh2-sys from 0.2.11 to 0.2.12
1097afb tests: Run MMIO supported integration tests
ccb8328 tests: Add integration testing for MMIO based virtio
3ad4b84 tests: Remove unused "kernel_path" variable
1099f07 vmm: Add MMIO support
26974c7 vm-virtio: Add MMIO transport
c042483 build: make PCI (virtio and vfio) disableable at build time
6d27ac9 vmm: Allow the DeviceManager to inject extra kernel commandline entries
3df1680 devices: Require Interrupt trait implementations to support Sync
f5a44ea docs: Explain how to create a custom Clear Linux cloud image
e950aa6 ci: Reduce integration testing time
05b5115 vmm: Call DeviceManager's register_devices() on creation
7edc46f vmm: Make virtio device creation independent of PCI
7c6ef7f ci: Add integration test for virtio-vsock
bf37b96 ci: Rely on custom Clear Linux cloud image
4d86359 ci: Install socat on the host VM
5e5c2f2 ci: Allow tests to print some useful information with println
a9b2207 ci: Allow threads to send ssh commands
40fc6c3 README: Update rust-hypervisor-firmware link
389f9e3 tests: Check that the test binary cleanly terminated
8f37dec vmm: "close" the SIGWINCH signal handler
c00b58d build(deps): bump pkg-config from 0.3.15 to 0.3.16
5f752da build(deps): bump serde from 1.0.99 to 1.0.100
8e7d67f build(deps): bump vmm-sys-util from `8703cfd` to `07ef2e2`
b515d48 build(deps): bump cc from 1.0.42 to 1.0.45
eb46aa2 vmm: If acpi feature is disabled make "reboot" shutdown
7975394 vm-virtio: vsock: Port unit testing from Firecracker
5a34728 vm-virtio: vsock: Implement VsockEpollHandler
475e487 vmm: Create vsock backend
434a5d0 vm-virtio: vsock: Port submodule unix from Firecracker
df61a8f vm-virtio: vsock: Port submodule csm and packet from Firecracker
22f91ab vm-virtio: Move vsock to its own module
4ccc81f vmm: Create virtio-vsock device
11e7ece vmm: Add new flag "--vsock"
c48ca61 vm-virtio: Add virtio-vsock skeleton
69e2728 vmm: Allocate enough MSI-X vectors for multiqueue virtio devices
d2db34e vmm: Hide underlying console setup from VM
d089ee4 vmm: Move ownership of the exit/reset EventFd to Vm structure
2f4de81 vmm: Access ioapic/io_bus/mmio_bus from DeviceManager via accessor
9ac967e vmm: Split DeviceManager into it's own file
f740a35 build(deps): bump getrandom from 0.1.11 to 0.1.12
e21bc97 build(deps): bump vmm-sys-util from `fd4dcd1` to `8703cfd`
d446a82 build(deps): bump blake2b_simd from 0.5.7 to 0.5.8
2432ad0 build(deps): bump cc from 1.0.41 to 1.0.42
9661e8d build: Really make the acpi feature disableable
7688e6e release-notes: Add table of contents
d784ac2 release-notes: Add v0.2.0 notes
8c2a9a7 vm-virtio: Update backend feature set for vhost-user-net
b8622b5 vm-virtio: Address event count error and refactor data setting
fe9398f scripts: Fix integration tests script
1f06c59 Revert "vmm, tests: Disable reboot support"
5dd6757 vmm: Call munmap() on regions that have been mmap()ed
037807f build(deps): bump backtrace from 0.3.36 to 0.3.37
47ca277 build(deps): bump backtrace from 0.3.35 to 0.3.36
f59cad1 vmm: Cleanup signal_handler thread used for console SIGWINCH handling
7ce0db9 build(deps): bump regex-syntax from 0.6.11 to 0.6.12
9e764fc vmm, arch, devices: Put ACPI support behind a default feature
bb2e7bb vmm: Shutdown vCPU threads
40f9da5 tests: Add a basic direct boot test with acpi=off
8308e1b vmm, tests: Disable reboot support
ad128bf vmm: Give vCPU and signal handler thread useful names
7205700 tests: Add integration testing for VM reboot
3af5619 tests: Use shutdown rather than reboot to shutdown the VMs
614eb68 vm: Make triple-fault and i8042 reset reboot the VM
5a187ee x86_64/devices: acpi: Add support for ACPI shutdown & reboot
ae66a44 vmm: Support both reset and shutdown
ebe8edd devices: i8042: Use error! macro
011496b arch: acpi: Fix legacy interrupt for serial device
2610f43 arch: acpi: Only add ACPI COM1 device if serial is turned on
15387cd arch: x86_64: acpi: Add DSDT table entries for PCI and COM1
638bf03 arch: x86_64: acpi: Generate MCFG table
451502b vm: If a VCPU thread errors out then exit the hypervisor
98f81c3 arch: x86_64: acpi: Generate MADT aka APIC table
ee83c2d arch: x86_64: Generate basic ACPI tables
eea6f1d acpi_tables: Add initial ACPI tables support
3e99098 vhost_rs: add config messge support
e05de45 vhost_rs: The vhost user version we support
6fb7c3b vhost_rs: remove config space offset setting
a44a903 vhost_rs: Change get_config()/set_config()
b4187a1 vhost_rs: Change the VhostUserConfigFlags
8718043 cloud-hypervisor: Bump vmm-sys-util crate version
add0471 vfio: Use the log crate macros
772191b vm-virtio: vhost-user: Rely on acked features to setup backend
97699a5 vm-virtio: vhost-user: Vring should be enabled after initialization
a4ebcf4 vm-virtio: vhost-user-net: Map proper error when getting features
cdfe576 vm-virtio: vhost-user-net: Set the right set of features
bc42420 vm-virtio: Expand vhost-user handler to be reused from virtio-fs
b7d3ad9 vm-virtio: fs: Factorize vhost-user setup
56cad00 vm-virtio: Move fs.rs to vhost_user module
cc7a96e main: Add integration test
f21d54f main: Add arguments entry for vhost-user-net
584a2cc vmm: Add vhost-user-net support
633f51a vm-virtio: Add vhost-user-net implementation
5130655 vmm: Add hugetlbfs handling support
ce60ff1 build(deps): bump vmm-sys-util from `a0b3893` to `829d605`
3dd3290 build(deps): bump vmm-sys-util from `2177381` to `a0b3893`
b2f85cb vhost_rs: Wait for full request to be satisfied
18a8bb0 build(deps): bump vmm-sys-util from `7222869` to `2177381`
151637b build(deps): bump cc from 1.0.40 to 1.0.41
c316c16 build(deps): bump vm-memory from `1635f25` to `8669369`
808fcaa build(deps): bump lazy_static from 1.3.0 to 1.4.0
bc87c9f build(deps): bump kvm-ioctls from `37669f6` to `30adb02`
66a7a94 build(deps): bump getrandom from 0.1.10 to 0.1.11
dfb18ef net: Make TAP registration functions immutable
0b8856d vmm: Add RwLock to the GuestMemoryMmap
ec0b556 vmm: Share the guest memory instead of cloning it
f4d41d6 virtio: net: Remove TAP fd from epoll when no available descriptors
582fc7f build(deps): bump constant_time_eq from 0.1.3 to 0.1.4
44d8ab0 vm-virtio: Remove unused dependency from unit tests
5f52dd2 net_util: Fix clippy error
aface5b build(deps): bump unicode-width from 0.1.5 to 0.1.6
dc31db4 ci: Fix virtio-fs tests
b528e99 build(deps): bump backtrace from 0.3.34 to 0.3.35
e841799 build(deps): bump blake2b_simd from 0.5.6 to 0.5.7
1d9ad9e build(deps): bump autocfg from 0.1.5 to 0.1.6
26a210a arch: x86_64: Fix EBDA adddress
55f01b2 build(deps): bump remain from 0.1.3 to 0.1.4
49a129f build(deps): bump serde from 1.0.98 to 1.0.99
1c23a09 build(deps): bump getrandom from 0.1.9 to 0.1.10
f0082fe tests: Make panics generate a backtrace
8b78e12 tests: Use newgrp to run unit tests
f5a6e3c build: Drop vendor directory from rustfmt command
d6e3b70 tests: Rename virtiofsd build path
71154d8 tests: Use "-f" on directory rm commands
7245cf7 build(deps): bump rust-argon2 from 0.5.0 to 0.5.1
7adb9d5 build(deps): bump libc from 0.2.61 to 0.2.62
760791a build(deps): bump openssl-sys from 0.9.48 to 0.9.49
7b718f3 build(deps): bump vmm-sys-util from `5f8c251` to `7222869`
08ed88c tests: Remove potential sources of nested panics
ab6a8f1 tests: Fix virtio-fs with dax=off integration test
567eda4 tests: Retrieve the bionic image from the Azure storage bucket
0affdd0 docs: Add networking HOWTO
658c076 linters: Fix clippy issues
c836417 docs: Add debug I/O port HOWTO
c52e276 vmm: Log debug ioport timestamps
48a9300 vmm: Log 0x80 IO port writes
10abfd4 build(deps): bump vmm-sys-util from `54e256b` to `5f8c251`
6678cbf build(deps): bump getrandom from 0.1.8 to 0.1.9
513d2fd arch: x86_64: Update linux-loader crate
76e3a30 pci: Simplify PciDevice trait
0d53a58 build(deps): bump rustc-demangle from 0.1.15 to 0.1.16
b3c809a tests: Fix virtio-pmem
af9a72e tests: Add virtio-fs tests with dax=on and dax=off
2e0508c vm-virtio: fs: Add DAX shared region support
3c29c47 vmm: Create shared memory region for virtio-fs
74225ab config: Add option dax and cache_size to virtio-fs
f30ba06 vm-virtio: Allocate shared memory regions on dedicated BAR
e0fda06 vm-virtio: Remove virtio-pci dependency from VirtioDevice
e2b38cc vm-virtio: Extend VirtioDevice trait to retrieve shared memory regions
d97079d vm-virtio: Update VirtioPciCap and introduce VirtioPciCap64
d180deb vm-virtio: pci: Fix PCI capability length
c6feb03 vhost_rs: Allow MasterReqHandler to reply when needed
ef2e8b6 tests: Update virtio-fs mount command
3645bf8 tests: Build virtiofsd from specific branch
021e8d9 tests: Move to new kernel 5.3-rc3
4b3fd90 build(deps): bump cc from 1.0.38 to 1.0.40
bc5b72f build(deps): bump libc from 0.2.60 to 0.2.61
6c06420 vm-virtio: net: Fix out-of-range slice panic when under load
b608671 build(deps): bump syn from 0.15.43 to 0.15.44
97c9648 build(deps): bump arc-swap from 0.4.1 to 0.4.2
df5058e vm-virtio: Implement console size config feature
d9a355f vmm: Add new "null" serial/console output mode
f910476 vmm: Only send stdin input to serial/console if it can handle it
aa44726 vm-virtio: Don't trigger an MSI-X interrupt if not enabled
c0e2bbb pci: Add MSI-X helper to check if interrupts are enabled
4c9759e build(deps): bump syn from 0.15.42 to 0.15.43
b7ed71b build(deps): bump vmm-sys-util from `9014b7a` to `54e256b`
8fcaf91 build(deps): bump redox_users from 0.3.0 to 0.3.1
87195c9 pci: Fix vector control read/write from/to MSI-X table
fca911e main: Add logging support controlled by command line
91ce39e tests: Ensure that the test pipeline fails
6cc3e88 build(deps): bump getrandom from 0.1.7 to 0.1.8
d1cd3c8 build(deps): bump vmm-sys-util from `c0bbae5` to `9014b7a`
91c7f27 build(deps): bump utf8-ranges from 1.0.3 to 1.0.4
87f148c build(deps): bump regex-syntax from 0.6.10 to 0.6.11
778c60f build(deps): bump vmm-sys-util from `71b5b25` to `c0bbae5`
846505d pci: Fix add_capability unit test
9caad73 build, misc: Bump vmm-sys-util dependency
ac950d9 build: Bulk update dependencies
a1f408a qcow: bounds check the refcount table offset and size
dfd44a6 qcow: Add a zero_cluster method to raw file
7d6bf75 qcow: limit the size of a qcow file
20f8d8d qcow: Avoid overflow when taking ceiling of division
4ba1d22 qcow: disallow crazy l1 table sizes
bd612b6 qcow: Fix invalid_cluster_bits test
b713737 qcow: Limit file setups that consume excessive RAM
35a3b47 qcow: Calculate the max refcounts as a u64
f927d1a qcow: better limits on cluster size
0c95476 build(deps): bump vm-memory from `4c329f4` to `1635f25`
6abd50f build(deps): bump clap from 2.27.1 to 2.33.0
c7f8498 build(deps): bump log from 0.4.6 to 0.4.8
8a7cfe8 build(deps): bump dirs from 2.0.1 to 2.0.2
49ef201 vfio: pci: Provide the right MSI-X table offset
a548a01 pci: Fix MSI-X table and PBA offsets
baec276 vm-virtio: Don't break from epoll loop on EINTR
1a484a8 vmm: Don't break from epoll loop on EINTR
532f6a9 vmm: Factorize VM related information into a structure
c0756c4 vmm: Increase memory slot from virtio-pmem
8c4c162 arch: x86_64: Set MTRR default memory type as WB
d526844 tests: Add Ubuntu Bionic version of test_simple_launch
facc3b3 tests: Add Bionic to integration test script
09aced9 tests: Use logical name for disk paths
56c4b70 tests: Refactor integration tests to support different distributions
d18c8d4 vfio: pci: Add support for expansion ROM BAR
d217089 pci: Add support for expansion ROM BAR
347f8a0 vfio: pci: Mask multi function device bit
b6ae2cc pci: Disable multiple functions
f86b9dd scripts: Add Ubuntu cloud-init data
be199e5 tests: Move Clear Linux cloud-init files to subdirectory
98d7955 vm-virtio: Add support for notifying about virtio config update
93b7753 release-notes: Add v0.1.0 notes
fa41ddd arch: Add a Reserved memory region to the memory hole
299d887 arch: Add SubRegion memory type
792cc27 vfio: Propagate the KVM routes setting error
421b896 vfio: Don't expose an Interrupt Pin
2f80288 vfio: Disable the ROM expansion BAR
e180521 vfio: Fix Memory BAR alignment
d92d797 vfio: Update memory slot index to support multiple VFIO devices
b9f677c vmm: Fix the memory slot index
b5eab43 vfio: Create a global KVM VFIO device for all VFIO devices
0ff074d vm-allocator: Fix potential allocation errors
927861c pci: Fix end of address space check
1971c94 tests: Adjust down entropy expectation
ebe04f6 tests: Use custom kernel for all tests
3cc6f48 docs: Add VFIO usage example
46eaea1 README: Fix kernel command line console argument
1f6f522 build: Upload release binary on tag
5ae3144 tests: Add VFIO integration test
4d16ca8 vmm: Support direct device assignment
b746dd7 vfio: Map MMIO regions into the guest
c93d536 vfio: pci: Build the KVM routes
20f0116 vfio: pci: Track MSI and MSI-X capabilities
db5b476 vfio: Initial PCI support
2cec3aa vfio: VFIO API wrappers and helpers
5372554 vfio-bindings: Initial commit
4e48309 vm: Factorize all virtio devices creation routines
8ba54af vm-virtio: Add integration test for virtio console device
24438e0 vm-virtio:  Enable the vmm support for virtio-console
577d44c vm-virtio: Add virtio console device for single port operation
f98a69f vm-allocator: Introduce an MMIO hole address allocator
a761b82 vm-allocator: Fix the aligned address check
7091488 vm-allocator: Fix free range allocation
0a04a95 vm-allocator: Expand the IRQ allocation API to support GSI
96fb38a vm-allocator: Align address at allocation time
af7cd74 vm-allocator: Make port IO non optional
1268165 pci: Allow for registering IO and Memory BAR
b157181 pci: Fix the way PCI configuration registers are being written
185b108 pci: Add a helper to set the BAR type
ee39e46 pci: Add MSI capability structure
72007f0 pci: Improve MSI-X code to let VFIO rely on it
2987895 pci: Implement the From trait for the PciCapabilityID structure
3f02cca qcow: Add support for QCOW v2 header
6f65f34 build: Ensure caps needed for unit test are set
998140f tests: Remove single test limit
492ab7a build: Use tmpfs for /tmp
80f3311 tests: Use incrementing IP and mac address for VMs
93c2099 tests: Abstract guest management under a struct
eab639e tests: Support customising the cloud-init network details
e9f0174 tests: Create cloud-init image from source files in tests
0776d9d tests: Sleep more in order to speed up tests
7ebfe90 tests: Use a temporary directory for the temporary test files
78fe807 build: Run unit tests on the Jenkins server
1dfe16c vhost_rs: vhost_user: Update unit tests
7499210 vm-virtio: net: Remove attributes for test exclusions
af15ce9 vm-virtio: Update test activate() function
a50c546 qcow: Make unit tests pass
9a17871 pci: Make unit tests compile
74d079f pci: Mark add_capability test as #[ignore] as it is currently failing
18d5286 arch: x86_64: Make unit tests pass
224f775 devices: serial: Make the serial unit tests pass
9e372a8 net_util: Bump pnet dependency
cb81f8b vmm: Make serial port controllable via command line
00df79a README: Really fix the memory parameters examples
bc742d6 main: Add a PCI bridge class integration test
2b2c31d pci: Use device PCI header type for our root bridge
d6d9b76 README: Fix the memory parameter examples
7ed0738 config: Fix default memory size parameter
d9ce291 vmm: Flag --disk should be optional
f0a76ad vmm: Add support for multiple virtio-net devices
a2947f9 cli: Accept K,M,G suffixes for size parameters
2bb0b22 pci: Refine pci topology
4605ecf pci: Extend the Device trait to carry the device BARs
8173e1c devices: Extend the Bus trait to carry the device range base
42e5458 devices: bus: Return the range base address when resolving
33796c4 devices: bus: Sync with crosvm code
4a15316 vm-virtio: Fix the network and storage PCI class and sub-class
77684f4 vm-virtio: Implement the u32 to VirtioDeviceType conversion
0b7fb42 pci: Export network and mass storage sub classes
49d6b49 vmm: Remove println! from debugging
34e0992 vmm: Add support for multiple virtio-pmem devices
785db62 test: Add virtio-pmem integration tests
294c26b vmm: Add virtio-pmem support to cloud-hypervisor
8862d61 vm-virtio: Add virtio-pmem implementation
c0336e8 docs: Add virtio-fs documentation
1cb2378 vmm: Add support for multiple virtio-fs devices
0fcca3e tests: Add virtio-fs testing
53085c7 memory: Allow memory to be backed by a file
2ede30b vmm: Add virtio-fs support to the VMM
1ddc8f2 vm-virtio: Add vhost-user-fs support
8f70771 vhost_rs: Copy vhost crate from jiangliu/v1
8dc06aa vm-virtio: Remove unneeded code
30266a4 vm-memory usage: vm-memory latest codes rename MmapError to Error
9da2343 device: Improvement for BusDevice trait and PciDevice trait
5f7d520 tests: Add split_irqchip test
5e803ab vmm: Integrate userspace IOAPIC
950bd20 devices: Add userspace IOAPIC implementation
c8c4a4d devices: Create Interrupt trait to abstract interrupt delivery
2a7fbe8 CI: Fix the Ubuntu VM update stuck on an interactive window
fe43e86 README: Use a permanent Slack invite link
c4c8b93 build: Switch over to using rust-vmm linux-loader crate
226d336 tests: Add direct boot test using bzImage
429b53a vmm: Add bzimage loader support
0f54429 vmm: Move all the CPUID related code to CpuidPatch
a0f4376 vmm: Set the APIC ID in the extended topology
0d0d19e vmm: Enable TSC_DEADLINE_TIMER allows for PIT emulation removal
946a5d4 build: Update Cargo.lock for syn crate update
72f3a69 tests: Add test for booting from vmlinux
445b484 fixup! resources: Shrink 5.0 kernel config
a45f473 tests: Loosen memory check requirements
52ce042 tests: Bump the Clear Linux version
fa0f1c8 resources: Shrink 5.0 kernel config
24dbe70 irq: Fix pin based interrupt for virtio-pci
4be3dfe build: Update Cargo.lock for linux-loader crate update
4d98dcb msix: Handle MSI-X device masking
d810c77 msix: Handle MSI-X vector masking
42378ca vm-virtio: Fix alignment and MSI-X table size on the BAR
edd1279 pci: Allow QWORD read and write to MSI-X table
00cdbbc pci: Make MSI-X PBA read only
bbd0f5e build: Update Cargo.lock for linux-loader crate update
b0a575d tests: Add a test for PCI MSI
47a4065 interrupt: Use a single closure to describe pin based and MSI-X
8df05b7 vmm: Add MSI-X support to virtio-pci devices
13a065d dep: Rely on latest kvm-ioctls crate
4b53dc4 pci: Add MSI-X implementation
d3c7b45 interrupt: Make IRQ delivery generic
1f53488 tests: Switch to launching by command
ddce3df tests: Add basic integration testing
f63d4a7 vm: Disable stdin and terminal reconfiguration when headless
425841a vm: Do not explictly exit on reset
74a21f2 vendor: Remove vendoring
842515c vendor: Add vmm-sys-util duplicate
89fc75d docs: Initial vendoring documentation
a6b7715 vendor: Move to the rust-vmm vmm-sys-util package
d5f5648 vendor: Add vendored dependencies
e3f7bc2 build: Update Cargo.lock to reflect changed dependencies
8370a5b vmm: Repair the port IO memory alignment
e5e6518 config: Reorganize command line parsing
9900daa README: Update for new --disk usage
a09f918 main, vmm: Add support for multiple --disk options
5279042 vm-allocator: Force documenting all public APIs
9f24775 vm-allocator: Allow for freeing system resources
4b451b0 vm-allocator: Allow for freeing address ranges
8bb71fa vmm: Simplify the vcpu run switch
6615d55 Revert "main: Fix --net behavior"
8e9e760 main: Fix --net behavior
e52132c main: refactored parameter parsing CONTRIBUTING.md: removed a space to suport markdown linking
9299502 cloud-hypervisor: Switch to crates.io kvm-ioctls
0d81937 README: Add travis build status badge
c1f1fe7 vm: Propagate errors appropriately
6ecdd98 virtio: Enable qcow support for virtio-block
919226f cloud-hypervisor: Add README
b60ef22 cloud-hypervisor: Add CREDITS
bcd562e cloud-hypervisor: Add a contributing guide
4daf999 cloud-hypervisor: Add initial list of maintainers
929b343 cloud-hypervisor: Adopt the Contributor Covenant code of conduct
adb0abf main: Make supplying the commandline optional
2c94529 vmm: Propagate boot_kernel errors properly
43965ed main: Improve guest setting log format
fe99c29 vm-virtio: Remove useless PCI BAR debug log
83dadb8 vmm: Remove useless memory setting log
3f38b42 vmm: Fix the Error enum comment
cacce5f vmm: Use random local MAC address as the default one
576a28a net_util: Add helper for generating a random local MAC
5934f30 vmm: Add support for letting the VMM create the TAP interface
0c4c330 cloud-hypervisor: Switch to the linux-loader pending PR branch
ac328df cloud-hypervisor: Switch to the vmm-sys-util pending PR branch
8e7579b vm-virtio: Add virtio-rng implementation
97865b6 vmm: Provide a common method to build a virtio PCI device
c0be664 vmm: Leverage virtio-net to provide connectivity
53f5295 network: Add virtio-net dependencies
6d27cfb vm-virtio: Create virtio-net device
1d450c5 gitignore: Don't track Cargo.lock files
513e4ff gitignore: Don't track rusty-tags.vi files
4b58eb4 pci: configuration: Fix rustfmt issue
ce1d90c devices: legacy: Fix rustfmt issue
a0bbcef cloud-hypervisor: Recursively run rustfmt
a9ed8fa resources: Add a 5.0 kernel config
81875f5 cloud-hypervisor: Add basic Travis based CI
1151b07 vm-virtio: block: Add support for resetting a block device
3b2faa9 vm-virtio: Reset underlying device on driver request
040ea54 cloud-hypervisor: Add proper licensing
8f05773 vmm: Fix build warning
5c9fc81 serial: Set terminal in raw mode
112418d main: Add kernel command line support
1270d09 cloud-hypervisor: Add --disk option to provide VM rootfs
b67e0b3 vmm: Use virtio-blk to support booting from disk image
65f96e4 virtio: Add virtio-blk implementation
80ac3a8 qcow: Add qcow support
c2c51dc vm-virtio: Add PCI transport support
8246434 vm-virtio: Initial crate
c780bc7 virtio-bindings: Add virtio bindgen generated bindings
2a539ab vmm: Expose Hypervisor CPUID bit
0adc348 vmm: Add PCI root
e8308dd pci: Add minimal PCI host emulation crate
fa3951d devices: Add PCI configuration registers method to the BusDevice Trait
db7937d allocator: Add a basic resource allocation crate
342bdc3 devices: Add support for i8042 reset device
29b90a8 vmm: Create and handle an exit event
afbf824 vmm: Handle stdin from a generic epoll loop
a7bdf5e vmm: Register an irqfd for our serial device
c6c5e10 vmm: Add a basic stdin loop
0b6ec34 vmm: Retry running a CPU when getting EAGAIN or EINTR from the run ioctl
25f4063 cloud-hypervisor: Add the --memory option
59b5e53 cloud-hypervisor: Add the --cpus option
1853b35 cloud-hypervisor: Add devices crate
7e2d1ac vmm: Boot kernel
044f664 vmm: Set CPUID
0921cfb vmm: Basic Vcpu implementation
539367b cloud-hypervisor: Initial kernel booting implementation
b56b4ca cloud-hypervisor: Add the architecture crates
a0da3de cloud-hypervisor: Call into the test_vm() routine
16f2bed cloud-hypervisor: Add a vmm crate
2ed17ab cloud-hypervisor: Application handling
73337c8 cloud-hypervisor: Initial commit
0f28074 README: Placeholder to create a usable initial repo

Fixes: #2444

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-02-07 19:18:51 +00:00
Archana Shinde
055f31716c selinux: Disable selinux
Till we implement support for selinux, disable selinux
by not passing selinux labels in the container spec.

Fixes #2442

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-02-07 10:13:44 -08:00
Jose Carlos Venegas Munoz
b444393c31 Merge pull request #2379 from Pennyzct/FC_v0.20.0
FC: Update Firecracker to v0.20.0
2020-02-07 10:15:02 -06:00
Yang Bo
1a7b735c3c rootfs-builder: build rust agent using osbuilder
Build rust agent and go agent using the same rootfs bulder image.
When building rust agent, just add RUST_AGENT=yes before command line.
The documentation will be updated later

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

Fixes: #360

Signed-off-by: Yang Bo <bo@hyper.sh>
2020-02-07 21:47:33 +08:00
Hui Zhu
96518f220b how-to: Add how-to for Kata Containers with virtio-mem
Add how-to for Kata Containers with virtio-mem.

Fixes: #591

Signed-off-by: Hui Zhu <teawater@antfin.com>
2020-02-07 17:47:05 +08:00
Yang Bo
afc7b4d523 Merge pull request #129 from yyyeerbo/wip
Makefile: Fix rust agent build using "--release".
2020-02-07 15:31:58 +08:00
Penny Zheng
7498978ca7 Vendor: update agent client
We need to include changes in PR github.com/kata-containers/agent#706
(https://github.com/kata-containers/agent/pull/706)here, to use
the new vsock-trivial-handshake scheme implemented in FC v0.20.0.

Fixes: #2378

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-02-07 07:03:45 +00:00
Penny Zheng
27d9e4334d FC: update Firecracker to v0.20.0
The new release for Firecracker is `v0.20.0`.

Fixes: #2378

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-02-07 07:03:31 +00:00
Yang Bo
a3e46a369f Makefile: Fix rust agent build using "--release".
Based on @ericho's work on the bug

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

Fixes: #69

Signed-off-by: Yang Bo <bo@hyper.sh>
2020-02-07 11:38:03 +08:00
Fupan Li
356222fbba Merge pull request #132 from yyyeerbo/wip2
vsock: support log_vport and debug_console_vport
2020-02-07 10:06:42 +08:00
Julio Montes
bd7d3102c8 Merge pull request #2410 from Jimmy-Xu/fix-q35-hotplug-pcie
Support hotplug PCIe in q35
2020-02-06 08:03:26 -06:00
Jimmy Xu
bb41b7248a qemu: Support PCIe device hotplug for q35
- add pcie-root-port device to qemu command line for q35
- hotplug a PCIe device into a PCIe Root Port

Fixes: #2432

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>
2020-02-06 14:56:41 +08:00
Jose Carlos Venegas Munoz
39e2357024 Merge pull request #2436 from sboeuf/fix_cloud_hypervisor
virtcontainers: clh: Set the serial to NULL instead of OFF
2020-02-05 13:14:22 -06:00
Graham Whaley
4ee2f8c5b1 Merge pull request #2385 from alicefr/fix-refactoring
s390x: fix refactoring
2020-02-05 10:07:32 +00:00
Jimmy Xu
fa7d00ec25 vendor: update github.com/intel/govmm
Update github.com/intel/govmm.

shortlog:
    cab4709 qemu: Add pcie-root-port device support.

Fixes: #2432

Signed-off-by: Jimmy Xu <junming.xjm@antfin.com>
2020-02-05 10:52:37 +08:00
Salvador Fuentes
a90dde04c4 Merge pull request #2435 from Pennyzct/arm_ci_bug_fix_2020_2_4
AArch64: fix golint error on ARM CI.
2020-02-04 17:10:02 -06:00
Sebastien Boeuf
b2fb86f3ff virtcontainers: clh: Set the serial to NULL instead of OFF
The guest Linux kernel might try to access the serial port, and in case
the serial is "off", this might cause some slowness because the port is
not emulated at all. Problem is, when the port is not emulated, the
default value when reading the I/O port will be 0, which has a special
meaning in case of the serial port. It means there is some data ready
to be read, which the kernel might try to read for some time, causing
global system slowness.

That's why it's safer to use "null" by default as this means the serial
port will be emulated but anything written to it will be redirected to
/dev/null.

Fixes #2437

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2020-02-04 18:25:31 +01:00
Fupan Li
7d667a92ee Merge pull request #130 from Tim-Zhang/separate-logging
Agent: Separate logging into a single crate
2020-02-04 22:29:50 +08:00
Yang Bo
3c1252ea79 vsock: support log_vport and debug_console_vport
Fixes: #61, #64

Signed-off-by: Yang Bo <bo@hyper.sh>
2020-02-04 20:32:07 +08:00
Penny Zheng
96a49a894d AArch64: arm ci failed on stale Gopkg.lock.
Arm CI failed on the following error:

Gopkg.lock is out of sync:
github.com/opencontainers/runc/libcontainer/system:
imported or required, but missing from Gopkg.lock's input-imports.

Fixes: #2434

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-02-04 16:33:38 +08:00
Penny Zheng
9bf4b859a1 AArch64: fix golint error on ARM CI.
Recently, ARM CI frequently failed on the following golint error:

Error: pkg/rootless/rootless.go:57:2: comment on exported var
`IsRootless` should be of the form `IsRootless ...` (golint)

Fixes: #2434

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-02-04 12:07:12 +08:00
Tim Zhang
c373f846f5 agent: separate logging into a single crate
Since the codes in logging.rs is weakly related to the project,
separating it from the project will reduce coupling and make it reusable.

Fixes: #131

Signed-off-by: Tim Zhang <tim@hyper.sh>
2020-02-03 20:40:26 +08:00
Julio Montes
a91cb13be8 Merge pull request #2425 from haircommander/conmon-bump
versions: bump conmon version to v2.0.5
2020-01-30 11:01:56 -06:00
Peter Hunt
2560e65e75 versions: bump conmon version to v2.0.5
in hopes the old failures were fixed, and to investigate them if not

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2020-01-30 10:31:42 -05:00
Salvador Fuentes
01beb2fda9 Merge pull request #2423 from andreabolognani/virtcontainers-fix-error-message
virtcontainers: Fix error message in mockHypervisor
2020-01-29 13:02:53 -06:00
Archana Shinde
db679fb869 Merge pull request #2418 from devimc/topic/virtcontainers/improveRootless
rootless: use libcontainer API to detect rootless
2020-01-29 09:31:37 -08:00
Andrea Bolognani
693ad23846 virtcontainers: Fix error message in mockHypervisor
The error raised by toGrpc() mentions Firecracker instead of
mockHypervisor, which is incorrect; the fromGrpc() functions
right above it gets this right.

Fixes: #2424

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2020-01-29 18:19:35 +01:00
Julio Montes
61d826e1b7 Merge pull request #2420 from amshinde/ipv6-support
Add Ipv6 support
2020-01-29 08:15:55 -06:00
Archana Shinde
c5d79eb2c1 ipv6: Add support for ipv6 for netmon as well.
Netmon should now handle ipv6 addresses and routes as well.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-01-28 16:31:31 -08:00
Archana Shinde
b169476be9 ipv6: Add support for ipv6
Do not ignore ipv6 addresses and routes. These are now processed
along with ipv4 addresses/routes. Add unit tests to verify ipv6.

Fixes #147

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-01-28 14:42:16 -08:00
Julio Montes
4a77b0f8ec rootless: use libcontainer API to detect rootless
libcontainer already has an API to detect if the runtime is running rootless.
Use libcontainer API instead of reinventing the wheel.

fixes #2415

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-28 21:59:51 +00:00
Graham Whaley
b602e62a0e docs: README: Minor grammatical updates
Minor updates on some wording and clarificaitons.

Fixes: #2144

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-01-28 11:04:07 +00:00
Archana Shinde
8cf66ce86b Merge pull request #923 from devimc/topic/kernel/fixMaxCpus
kernel: use the maximum number of CPUs supported by KVM
2020-01-27 14:37:19 -08:00
GabyCT
7087d7ddc7 Merge pull request #917 from jcvenegas/fix-915
release: use absolute path for kubeconfig
2020-01-27 15:03:10 -06:00
Julio Montes
ba68012480 kernel: use the maximum number of CPUs supported by KVM
Since we don't know how many CPUs can have the host, we should
use the maximum number of CPUs supported by KVM (240).

255 is the maximum number of CPUs supported in the kernel, but the
maximmum number of CPUs recommended by KVM is 240, if more than 240
CPUs are used, next error will be returned by QEMU

```
Number of hotpluggable cpus requested (255) exceeds the
recommended cpus supported by KVM (240)
```

fixes #922
fixes kata-containers/runtime#2413

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-27 20:31:30 +00:00
Jose Carlos Venegas Munoz
f1f9414a59 Merge pull request #2411 from jcvenegas/fix-2397
vendor: update agent client
2020-01-27 12:48:26 -06:00
Salvador Fuentes
03573d4528 Merge pull request #921 from amshinde/config-ipv6-multiple-tables
network: Enable ipv6 config CONFIG_IPV6_MULTIPLE_TABLES
2020-01-27 09:42:08 -06:00
Jose Carlos Venegas Munoz
c26ce18672 vendor: update agent client
Update agent client to improve CI stability.

Changes:

660e61f Revert: client.go: HybridVSockDialer: Change Read EOT to recv peek
6cfb75d Revert: client.go: HybridVSockDialer: Check return size n of unix.Recvfrom
54eb918 Revert: client.go: HybridVSockDialer: Close dup fd after receive packet
2f49115 agent: Fix mem-hotplug on x86 when ARCH_MEMORY_PROBE is set

Fixes: #2397

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-01-27 15:29:52 +00:00
Julio Montes
09dfd79322 Merge pull request #2407 from teawater/virtio-mem2
qemu: Add virtio-mem support
2020-01-27 08:55:03 -06:00
Archana Shinde
e0a57b6a08 network: Enable ipv6 config CONFIG_IPV6_MULTIPLE_TABLES
Although CONFIG_IPV6 is enabled, this additional config is
needed so that multiple route tables are used for ipv6.
Without this, the kernel adds routes for "fe80::/64"
with proto kernel in the main table instead of the
local routing table.
This makes the behaviour similar to regular containers.

Fixes #920

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2020-01-24 16:14:22 -08:00
Julio Montes
003d0d637a Merge pull request #589 from devimc/topic/design/updateHostCgroups
design: update host-cgroups documentation according to the new changes
2020-01-24 11:56:59 -06:00
Julio Montes
1fa12cf5a2 design: update host-cgroups documentation according to the new changes
update host-cgroups documentation according to the new changes in the runtime

fixes #588

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-24 15:53:18 +00:00
GabyCT
e416a0ec61 Merge pull request #2409 from devimc/topic/virtcontainers/cgroupsV2
virtcontainers: constrain docker container when sandbox_cgroup_only=true
2020-01-24 08:54:20 -06:00
Hui Zhu
01a12b003b qemu: Add virtio-mem support
This commit adds qemu virtio-mem support.
Then qemu can use virtio-mem support memory resize.

To enable this function, need the Linux and the qemu that support
virtio-mem.
Use command "echo 1 > /proc/sys/vm/overcommit_memory" to enable memory
overcommitment of the Linux kernel.  Because qemu virtio-mem device need
to allocate a lot of memory.
Set "enable_virtio_mem" of kata configuration to true.

Fixes: #2406

Signed-off-by: Hui Zhu <teawater@antfin.com>
2020-01-24 17:19:31 +08:00
Julio Montes
c3cf98aca6 virtcontainers: constrain docker container when sandbox_cgroup_only=true
The sandbox cgroup will be constrained if there is no container
type annotation, otherwise kata will rely on container engine's cgroup
configuration

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

fixes #2408

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-23 21:25:22 +00:00
GabyCT
a51efa9ada Merge pull request #587 from dong-liuliu/xliu2/spdk-vhost-user
use-cases: Add initial SPDK vhost-user instructions
2020-01-23 13:35:36 -06:00
Graham Whaley
ec13b28567 Merge pull request #2404 from c3d/minor-fixes
Fix typo in 'sandbox'
2020-01-23 09:37:04 +00:00
Julio Montes
54482f18df virtcontainers: remove json cgroups struct tag
json struct tags are not longer needed in sandbox's structures

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-22 22:40:35 +00:00
Hui Zhu
b337428947 vendor: Update github.com/intel/govmm
Update github.com/intel/govmm.

shortlog:
    6667f4e qmp_test: Add TestExecMemdevAdd and TestExecQomSet
    201fd0a qmp: Add ExecMemdevAdd and ExecQomSet API
    e04be2c qmp: add ExecutePCIVhostUserDevAdd API
    13aeba0 qmp: support command 'chardev-remove'
    6d6b2d8 s390x: add s390x travis support

Fixes: #2406

Signed-off-by: Hui Zhu <teawater@antfin.com>
2020-01-22 13:50:54 +08:00
Liu Xiaodong
7f5873159a use-cases: Add initial SPDK vhost-user instructions
These instructions cover how to install and setup SPDK
vhost-user target, construct a vhost-user-blk device based
memory, configure the vhost-user-blk device to be available
for kata container, and run kata container with SPDK
vhost-user-blk device via docker.

Fixes: #586

Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com>
2020-01-21 22:34:38 -05:00
Archana Shinde
4d47c3fa8d Merge pull request #585 from jodh-intel/add-debian-10
docs: Add Debian 10 to distro table
2020-01-21 16:56:22 -08:00
Christophe de Dinechin
316b5f2b2c virtcontainers: Fix typo in logger message
There is a typo "sandox" instead of "sandbox" in a logger warning

Fixes: #2405

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2020-01-21 17:04:33 +01:00
Julio Montes
7526f4957d Merge pull request #398 from devimc/topic/imagebuilder/configureDockerRuntime
image-builder: make docker runtime configurable
2020-01-20 16:19:37 -06:00
Julio Montes
c407421a26 image-builder: make docker runtime configurable
Add DOCKER_RUNTIME variable to change container runtime depending on the
CI/environment.

fixes #397

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-20 20:39:04 +00:00
Julio Montes
73a63baab5 Merge pull request #2308 from tedyu/mount-detach-device
vc: Detach device when unable to store sandbox device
2020-01-20 14:14:11 -06:00
Ted Yu
1f957e1b87 vc: Detach device when unable to store sandbox device
In Container#mountSharedDirMounts, if sandbox.storeSandboxDevices() returns error, we should detach the device.

Fixes #2301

Signed-off-by: Ted Yu yuzhihong@gmail.com
2020-01-20 09:39:19 -08:00
Julio Montes
df802cc359 Merge pull request #2399 from Pennyzct/cleanup_dir_temp
unit-test: cleaning up stale files under /tmp
2020-01-20 09:38:55 -06:00
Julio Montes
ae6d43470a Merge pull request #583 from grahamwhaley/20200115_toc_doc
docs: reqs: add link/recommendation to check-markdown
2020-01-20 08:43:10 -06:00
James O. D. Hunt
b5e741ba8b Merge pull request #125 from lifupan/fix_agent_crash
agent: fix the issue of crash agent without spec
2020-01-20 11:29:16 +00:00
James O. D. Hunt
174f9abee8 Merge pull request #127 from lifupan/fix_cwd
fix the issue of missing restore process's cwd
2020-01-20 11:28:11 +00:00
James O. D. Hunt
e45be66e72 docs: Add Debian 10 to distro table
Now that [1] has landed, update the list of supported distros to include
Debian 10.

[1] - https://github.com/kata-containers/packaging/issues/647

Fixes: #584.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2020-01-20 09:34:13 +00:00
fupan.lfp
2be8661ffa agent: fix the issue of missing restore process's cwd
It should restore to it's previous cwd after it
create container in which it would change it's
cwd to container's bundle path.

Fixes: #126

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-01-20 11:00:48 +08:00
fupan.lfp
6c7453db78 agent: fix the issue of crash agent without spec
To check is the oci spec passed in, other wise,
it would crash the agent unwrap it directly.

Fixes: #124

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
2020-01-18 18:26:01 +08:00
Julio Montes
0e4c497c68 Merge pull request #395 from fidencio/wip/cleanup_nsdax
image_builder: Remove nsdax binary after its usage
2020-01-17 10:33:28 -06:00
Fabiano Fidêncio
98ac62dec9 image_builder: Remove nsdax binary after its usage
Leaving nsdax behind may create some isses for the distro packages
of kata-osbuilder, as every package would have to take care of purging
the file on each distro.

Knowing that, we better remove the file as part of the script, mainly
because the file is already regenerated everytime in any case.

Fixes: #394

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
2020-01-17 13:30:11 +01:00
Penny Zheng
7186c01d6e unit-test: delete what ioutil.TempFile creates
ioutil.TempFile creates a new temporary file in the directory dir.
It is the caller's responsibility to remove the file
when no longer needed.

Fixes: #2398

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-01-17 15:29:50 +08:00
Penny Zheng
0244d95edd unit-test: delete what ioutil.TempDir() creates
Normally, ioutil.TempDir will create a new temporary
dir under /tmp.
And we should do cleaning up after ioutil.TempDir().

Fixes: #2398

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-01-17 13:50:51 +08:00
Penny Zheng
aa62781aa7 unit-test: reconstuct TestMain
os.Exit will skip all deferred instructions.
So we should reconstruct TestMain to leave all setup-related
code in setup(), and all cleanup-related code in shutdown().

Fixes: #2398

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-01-17 13:50:42 +08:00
Julio Montes
d11696de9a Merge pull request #2351 from devimc/topic/virtcontainers/cgroupsV2
support systemd cgroups and cgroupsV2
2020-01-16 16:37:40 -06:00
Graham Whaley
1af686c18d docs: reqs: add link/recommendation to check-markdown
Recommend the use of our own check-markdown tool to generate
TOCs.

Fixes: #582

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2020-01-16 10:02:20 +00:00
Jose Carlos Venegas Munoz
0751072ca7 release: use absolute path for kubeconfig
Use absolute path to kubeconfig to allow kubectl use it.

Fixes: #915

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-01-15 21:06:27 +00:00
Jose Carlos Venegas Munoz
94f4955167 Merge pull request #912 from jcvenegas/fix-911
actions: check for packaging before clone
2020-01-15 14:29:43 -06:00
GabyCT
6860373107 Merge pull request #906 from jcvenegas/fix-905
release: bump kata-containers repository
2020-01-15 13:18:00 -06:00
Julio Montes
d042d5c0da virtcontainers: fix unit tests
fix unit test that may need a cgroup path or root to create a new cgroup

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 19:03:36 +00:00
Julio Montes
776da0878e virtcontainers/hook: fix HookState
`HookState` was removed from libcontainer, fortunately it was an alias for
`specs.State`, use `specs.State` instead.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 19:03:36 +00:00
Julio Montes
f372b85848 virtcontainers: reimplement setupSandboxCgroup
Reimplement `setupSandboxCgroup` to support cgroupsV2 and systemd cgroups
using libcontainer instead of containerd/cgroups.
As an initial effort to support these cgroups, `sandbox_cgroup_only` must
be set to `true` in configuration file.

fixes #2350

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 19:03:36 +00:00
Julio Montes
9949daf4dc virtcontainers: move validCgroupPath
move `validCgroupPath` to `cgroups.go` since it's cgroups specific.
Now `validCgroupPath` supports systemd cgroup path and returns a cgroup path
ready to use, calls to `renameCgroupPath` are no longer needed.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 19:03:36 +00:00
Julio Montes
ce2795e949 virtcontainers: remove systemd paramenter from constraintGRPCSpec
systemd paramenter is no longer needed since `isSystemdCgroup` function
can be used to know if the cgroup path is a systemd cgroup path.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 19:03:36 +00:00
Julio Montes
8c63c18098 virtcontainers: add function to create a new cgroup manager
Add function to create a new cgroup manager depending on the cgroups path and
if the runtime is running rootless.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 19:03:36 +00:00
Julio Montes
8057cd72c3 virtcontainers: add function to identify systemd cgroup path
Add function to identify if the given cgroup path is a systemd
cgroup path.
We need to parse the cgroup path to know which cgroup manager we have to use,
since some container engines do not use `--systemd-cgroup` runtime option.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 19:03:36 +00:00
Julio Montes
4126968bf9 virtcontainers: save CgroupPaths and Cgroups in sandbox
`CgroupPaths` is a map that saves the cgroup type and path that were used for
the sandbox to create the cgroups
`Cgroups` contains information about sandbox's cgroups and its constraints.
Both variables can be used to create a cgroup configuration needed to
manipulate cgroups in the host.
currently kata uses `containerd/cgroups` and `libcontainer` to create cgroups.
`CgroupPaths` will replace to `CgroupPath` once kata uses *only* `libcontainer`

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 19:03:36 +00:00
Julio Montes
a170d00b4c vendor: update agent
dep fails if golang/x/sys is updated and agent not,
update agent to fix this issue

shortlog:
44608b2 vendor: update golang/sys

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 17:23:55 +00:00
Julio Montes
112f90b7a0 vendor: update golang/x/sys
latest libcontainer requires a newer version of golang/x/sys

shortlog:
b016eb3 unix: test UtimesNanoAt on *bsd and solaris
5f8ca72 unix: don't zero out extra registers on riscv64 syscalls
a1369af unix: add flags argument in //sys comments for Fstatvfs1 and Statvfs1
        on netbsd
c96a22e unix: add Dup3 on netbsd and openbsd
04cbcbb unix: correct build tag to define Getdirentries for darwin/arm with
        Go 1.11
c709ea0 windows: added SO_RCVTIMEO and IPPROTO_ICMP constants
5a3cf84 unix: compare Stat_t members in TestFstatat
abf886d unix: unify definition of func fcntl
0732a99 unix: use correct file name in comment
d4481ac unix: add Readv/Writev family of syscalls for linux
af0d71d windows: fix recvfrom and sendto data types
4a24b40 unix: add PrctlRetInt, a Prctl variant that returns (int, error)
ac6580d unix: move functions Ptrace{Get|Set}RegSetArm64 to a separate file
eeba5f6 unix: replace readlink in mkall.sh with portable shell commands
bc7efcf unix: add functions PtraceGetRegSetArm64 and PtraceSetRegSetArm64
ce4227a unix: add Statvfs and Fstatvfs on NetBSD
85b82a3 cpu: support reading arm64 CPU feature registers
6d18c01 windows: add Recvfrom and Sendto implementations
63cb32a unix: add new fscrypt declarations from Linux v5.4
8a8471f unix/linux: bump Linux and Go versions to latest stable releases
bd43791 unix: check number of ready file descriptors in TestPselect
76d669a unix: don't fail TestSelect on EINTR from Select
6bfc516 windows: add Get*PreferredUILanguages
f068ffe unix: use same TestSelect on all Unices
e882bf8 unix: fix EINTR check in TestPselect
cf1e2d5 unix: regenerate zerrors for AIX
b5d5184 windows: revert security_windows.go change of CL 202177
2f86c98 unix: don't fail TestPselect on EINTR from Pselect
6254a7c unix: fix EINTR check in TestClockNanosleep
81af739 unix: don't fail TestClockNanosleep on EINTR from ClockNanosleep
52ab431 unix: fix EpollEvent padding on mips64{,le}
4c7a9d0 unix: check correct CPU for being enabled in old mask in
        TestSchedSetaffinity
344fec8 cpu: don't redeclare doinit on ppc64le
fee6b63 unix: accept time.Now()±1 as valid in TestTime
2f3576d cpu: add basic support for GOARCH=riscv64
e43da5d cpu: move empty doinit to own file
8ad3422 unix: skip TestPselect on EINTR
59a1497 unix: test returned fd in TestEpoll
d32e6e3 windows: add empty.s to fix build with Go 1.11 and earlier
c1f4481 unix: add TestEpoll on linux
ac3223d unix: add methods to manipulate *FdSet
e8c54fb windows: add EnumProcesses function
f43be2a windows/registry: make '-gcflags=all=-d=checkptr' flag work
195ce5e unix: add devlink Linux generic netlink API constants
b67d8b4 unix: add missing HCI_CHANNEL_LOGGING constant
f8518d3 windows/registry: remove TestWalkFullRegistry due to false assumptions
33540a1 unix: don't use non-existing uint128 type on freebsd/arm64
53bf42e windows/registry: allow for non-null terminated strings
6c3a3bf unix: make convertFromDirents11 checkptr safe
b4ff53e unix: remove un-used ptrSize
e66fe6e unix: regenerate darwin libc trampolines after CL 202837
f89234f unix: __sysctl is sysctl on darwin
b69606a unix: comply with -d=checkptr in Test_anyToSockaddr
742c48e windows: respect permission bits on file opening
3e7259c unix: don't use 32-bit aligned access for cmsgAlignOf on dragonfly
        after ABI change
9984515 windows, unix: fix wrong unsafe.Pointer alignment in syscall
727590c unix: avoid "just past the end" pointers in UnixRights
b09406a windows: add GetDiskFreeSpaceEx function
06d7bd2 unix: update rtnetlink constants
543471e unix: add new func PtraceInterrupt on Linux
0b153f5 windows: fix ShellExecute return condition
ef33b2f windows: use go:linkname instead of assembly
5f54ce5 windows: add module handle functions
4ac5d0c unix: add new func PtraceSeize on Linux
aed5e4c unix: add Klogset and related SYSLOG_ACTION_ constants
c178f38 windows/mkwinsyscall: import mksyscall_windows.go from go repo
b397fe3 windows/svc: use CloseServiceHandle for service handles
3421d5a unix: avoid __getdirentries64 on darwin
34b0ac8 unix: update openbsd/{386,amd64.arm} MAP_* consts
bb3f8db windows: add LockFileEx, UnlockFileEx system calls
c990c68 cpu: support ARM feature detection on Linux
855e68c windows: revert breaking API changes from CL 196798, add new accessor
        funcs
2837fb4 unix: add NFDBITS const on Linux, update TestSelect
e2fefa8 unix: fix Select to return number of ready fds on Solaris
2f72d4f unix: re-generate Select on dragonfly
98129a5 windows: use pseudo handle constants to implement GetCurrentProcess
2aa67d5 unix: fix Select to return number of ready fds on Darwin and *BSD
0a153f0 windows: make SID.String() conform to the String interface
2dccfee windows: do not return invalid error for psuedo-handle functions
5c00192 windows: use correct type for security attributes' descriptor member
14da1ac windows: support SECURITY_DESCRIPTOR and ACL for secured objects
ef0ce17 unix: add KEYCTL_RESTRICT_KEYRING capabilities
0c1ff78 windows: do not corrupt stack with larger boolean return value
b4ddaad unix: redefine TIPC_WAIT_FOREVER as a uint32 value
8a69140 windows: add various functions for shutting down and logging out
1a3b71a unix: update Dockerfile to Linux 5.3 and use ubuntu 19.04 base image
c3b328c unix: add IfaCacheinfo on linux
bc967ef unix: sort Linux-specific includes in linux/types.go and mkerrors.sh
7ad0cfa cpu: remove encoding/binary dependency
bbd1755 unix: add Msghdr.SetIovlen for solaris/amd64
f460065 unix: add Msghdr.SetIovlen
d223b2b unix: disable sysctl on iOS
749cb33 cpu: add a space before build tag comment
43c0116 unix: implement AF_TIPC sockets on Linux
1f305c8 unix/linux: upgrade Docker build container to Go 1.13
9109b76 unix: add IoctlRetInt for Linux
1e83adb unix: fix coredump bit on aix/ppc64
acfa387 windows: open process tokens with duplicate access
08d80c9 unix: unify Ioctl* functions
19e00fa windows: add mutex management functions
5fe476d unix: use bits.OnesCount64 instead of local copy
c7b8b68 windows: add Windows directory accessors
acd9dae windows: allow re-enabling priority boost
fb81701 windows: allow retrieving true version with RtlGetNtVersionNumbers
fde4db3 unix/linux: update Dockerfile to glibc 2.30
4e8604a unix: disable ptrace on iOS
9eafafc unix: fix epoll_event padding on riscv64
51ab0e2 windows: add support for automatic delayed start in windows service
cbf593c unix: remove nacl build tag from dirent code
1393eb0 unix: fix several staticcheck issues
fc99dfb windows: add CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, and
        CTRL_SHUTDOWN_EVENT
94b544f unix: add riscv64 tag to endian_little.go
fae7ac5 unix: add constants and types to work with Linux loop devices
6ec70d6 unix: update Dockerfile to Linux 5.2 and Go 1.13beta1
04f50cd unix: add missing dirent* helper functions on aix
e07cf5d unix: don't use syscall.ParseDirent
c5567b4 unix: add Getdents on dragonfly
e93b963 unix: use ParseDirent in testGetdirentries
d432491 unix: fix nil pointer dereference in Getdirentries on 32-bit freebsd 12
4d87348 unix: add missing import in readdirent_getdirentries.go
a26fa11 unix: fix Getdirentries emulation using Getdents on netbsd, openbsd
d6ba46b unix: add test for Getdirentries
8f4f963 unix: merge implementation for ReadDirent
943d512 unix: add support to get/set Linux capabilities
06bbe82 unix: correctly rename Val member in Sigset_t on freebsd
bf70e46 unix: add ptrace support for FreeBSD
6f217b4 unix: add AT_SYMLINK_FOLLOW const on openbsd
6f551f7 unix: add AT_SYMLINK_FOLLOW const on netbsd
e40ef34 windows: make CoTaskMemFree public
17bc616 unix: remove net dependency
516e3c2 windows: allow determining real version number
15dcb6c unix: fix Getdirentries emulation using Getdents on netbsd, openbsd
b47fdc9 unix: change the mksysnum master to point to stable/11 on freebsd
d442b75 windows: rename some arguments to follow MSDN
5ed2794 windows: allow looking up well-known folder paths
ab3f67e windows: add OpenThread function
914ada5 windows: add GetProcessId function
93c9922 unix: fix Getdirentries on 32-bit freebsd 12
1e42afe windows: expose GetCurrentProcessId function
301114b windows: allow determining if manager is locked
6df407b windows: correct types and error values of internal GUID handling
5b15430 windows: add Thread32{First,Next} funcions
83eebf7 windows: properly plumb sidtype into service creation
7fc4e5e windows: add GUID handling functions
5da2858 windows: add accessor for duration since boot
79a91cf windows: add constants for access rights
4c4f7f3 windows: make it easier to iterate over groups and privileges
afe0988 windows: delete mkerrors.go
4c3a928 unix: provide linux/riscv64 assembly for syscalls
69e3a3a unix: fix TestFchmodat on illumos
46560c3 Revert "windows: make zsyscall_windows.go generatable on non-WSL env"
ad28b68 windows: make zsyscall_windows.go generatable on non-WSL env
95d888e windows: add GenerateConsoleCtrlEvent function
6a60838 plan9: modify mkall.sh to support zsyscall*.go files generation
5219a1e cpu: add missing linkname for libc_getsystemcfg on aix/ppc64
cc92027 windows: add SetInformationJobObject functions
854af27 windows: add functions for priority class
3626398 cpu: don't depend on the golang.org/x/sys/unix package for AIX
adf421d unix: fix Signalfd function signature on linux
9cd6430 windows: add ResumeThread function
ea4c425 windows: allow Windows-style printf debugging via MessageBox
56c252d windows: add ShellExecute
791d8a0 windows: allow determining if running 32-on-64bit
2219a01 windows: add SID getter functions for the various components
e44a3b5 windows: add SetErrorMode function
dbbf3f1 windows: add IP() accessor to SocketAddress type
c3d486d windows: add JobObject functions
abf6ff7 unix: add MCAST_* constants on linux
0e01d88 unix: add RawSockaddrDatalink on aix
8097e1b windows: do not query library for inline functions
30999d6 windows: add missing service constants
c46e0d9 windows/registry: do not generate unaligned loads
c432e74 unix: remove unused stringsFromByteSlice for tests on aix
ad400b1 unix: remove StTimespec type on AIX
61b9204 windows: add functions for dealing with elevated tokens
cedb8e1 windows: add token group adjustment function
cab0731 unix: fix TestStatFieldNames on aix and TestUtimesNanoAt on darwin
87c8727 unix: rename Stat_t time fields to [AMCB]tim
06a5c49 windows: add token environment functions
f91f9b3 windows: add basic WTS functions for windows/svc usage
24a5b22 windows: add service notification support
3a4b5fb windows: add token manipulation functions and constants
a5b02f9 windows: add "generate" build tag
2d07862 unix: add IoctlGetUint32 on Linux
12bbe5a unix: add BPF constants on Linux
ecd444e unix: export KexecFileLoad on linux/arm
2953c62 unix: update Dockerfile to Linux 5.1
ca7f33d windows: CreateFile's templatefile parameter has always been a HANDLE
a43fa87 unix: add missing tpacket block (sub)header
3ef323f unix: add illumos case
c0b2631 unix: support generating netbsd/arm64 files in mkall.sh
050d976 unix: drop reference to mkunix.pl from comment
d89cdac windows: don't return EINVAL on zero Chmod mode
2cc0cad windows: document new ProcessId field
804c0c7 unix: replace "mksysctl_openbsd.pl" script with a Go program
a129542 unix: skip TestOpenByHandleAt if name_to_handle_at not supported
1607263 windows: allow querying service ProcessId
9f0b1ff unix: add FileHandle, NewFileHandle, NameToHandleAt, OpenByHandleAt
18eb32c unix: add Linux crypto configuration API constants and types
4347357 unix: add support for openbsd/arm64
8296894 unix: remove arch specific build for openbsd_pledge.go
953cdad unix: add unexported name_to_handle_at and open_by_handle_at types &
        wrappers
e8e3143 unix: add Unmount syscall for AIX
f0ce4c0 unix: add Select syscall on AIX
d20716e unix: use nsendmsg and nrecvmsg on AIX
1250054 unix: fix cmsg alignment on aix
ebb4019 unix: move helper handler before AIX handler in TestPassFD
3fd5a36 unix: enable TestPassFD on AIX 7.2 TL >= 2
16da32b windows: add GetFileInformationByHandleEx function
9773273 windows: add missing error constants
b44545b unix: add missing rtnetlink IFLA_* constants on Linux
0ad05ae unix: add missing rtnetlink neighbor constants on Linux
cc4d4f5 unix: add missing rtnetlink IFA_* constants on Linux
4b34438 unix: allow empty string argument to SetsockoptString
81d4e9d unix: don't generate raw syscall wrapper for ClockGettime on darwin
baf5eb9 unix: remove ClockGettime for darwin/amd64 on Go 1.11
e409398 unix: add SysctlClockinfo on darwin
9eb1bfa unix: add GetsockoptUint64 and SetsockoptUint64
f49334f windows: add GetOverlappedResult function for async I/O
f7bb7a8 windows: add missing file flags to types
6c81ef8 unix: add SysctlClockinfo on OpenBSD
a2f829d windows: add support for creating well known SIDs
fead790 cpu: use unix.Getsystemcfg to detect POWER8/POWER9 on aix/ppc64
c8c8c57 unix: run mkasm independent of mktypes in mkall.sh
7c207b7 unix: add Getsystemcfg on aix
10058d7 windows: use proper system directory path in fallback loader
980fc43 unix, unix/linux: add additional Linux perf API bits
584f3b1 cpu: add build tag to cpu_wasm.go
572b51e unix: add SetsockoptPacketMreq on Linux
b294cbc all: add go directive to go.mod
b354f8b cpu: define cacheLineSize and doinit for WASM
70f5298 windows/svc: safely load system DLLs
3e9a981 unix: add functions to get/set tpacket socket options
a98ae47 unix: on ARM GNU/Linux let Pipe fall back to pipe
30e92a1 unix: add Lutimes
e844e01 unix: update Dockerfile to Go 1.12 and Linux 5.0
c2f5717 unix: add fanotify API on Linux
d455e41 unix: add SignalNum to convert signal name to a number
b688937 windows/svc: align ctlHandler parameters
12036c1 windows/svc: add Context to ChangeRequest
a34e955 unix: use 64-bit alignment on netbsd-arm
6c9a33b cpu: add CPU features for s390x
92a0ff1 cpu: don't panic on error reading /proc/self/auxv
775f819 all: add a go.mod file
cc5685c unix: don't overwrite unrelated file descriptors in TestDup
cd39177 unix: add type NdUseroptmsg on Linux
a9d3bda unix: add SetsockoptCanRawFilter for linux
ec7b60b unix: add SetsockoptSockFprog on Linux for attaching BPF filters
b4e8571 cpu: fix build for GOARCH=ppc64{,le} on GOOS!=linux
629670e windows: gofmt -w windows/security_windows.go
90b0e44 unix: do not invoke Mkfifo with a relative path in a read-only
        directory
153ac47 cpu: unexport HWCap and HWCap2
d0b11bd cpu: fix auxval parsing on big-endian systems
e777721 cpu: fix build for GOARCH=arm64 on GOOS!=linux
983097b unix: replace Perl script references in "README.md" with Go programs
cea5d2f unix: replace "mksyscall_solaris.pl" script with a Go program
3b52091 unix: add ClockGettime on darwin/amd64
f54c5e0 unix: update zsysnum_darwin_amd64 for macOS 10.14
446ad8e unix: require GOOS be set in mksyscall
41f3e65 unix/linux: update Dockerfile to glibc 2.29 and Go 1.12beta2
980327f windows: Implement WaitForMultipleObjects
7ae0202 unix: set 100644 mode on mksyscall_aix_ppc64.go
afcc84f unix: add RND* ioctl consts on Linux
2970a37 cpu: detect RDRAND and RDSEED instructions on x86
aca4487 unix: add ioctl wrappers to get and set RTC time on Linux
302c3dd unix: fix misspellings
d573998 unix: regenerate sysnum files for freebsd/arm64 and netbsd/arm64
b907332 unix: use glibc release branch in Dockerfile
c6b37f3 unix: replace "mksyscall_aix_ppc64.pl" script with a Go program
054c452 unix: add socket error queue constants and types from linux/errqueue.h
770c602 unix: add netbsd/arm64 files.
11f53e0 unix: use int8 for RawSockaddrUnix.Path on linux/riscv64
e5ecc2a unix: use Renameat2 to implement Renameat on linux/riscv64
5552a98 unix: add Renameat on dragonfly
a457fd0 unix: add Signalfd on linux
2be5172 unix: add ClockNanosleep and TIMER_ABSTIME
48ac38b unix: get *BSD syscalls.master files using HTTPS
7fbe1cd unix: replace "mksyscall_aix_ppc.pl" script with a Go program
20be8e5 cpu: add linux/ppc64x
cb59ee3 plan9: replace "mksyscall.pl" with Go program
1775db3 unix: make Fcntl* routines use libSystem on Darwin
badf558 plan9: remove "use" function and calls from generated code.
82a175f unix/linux: update Dockerfile to Linux Kernel 4.20
a91c4d2 unix: add support for freebsd/arm64
9a3f9b0 unix: fix Fstatat by using fillStat_t on linux/mips64x
c6cbdbf unix: mksysnum: correct +build restriction
367055b unix: replace mksysnum_*.pl scripts with Go program
b4a75ba unix: generate linux/sparc64 go files using Docker
a79f1b1 unix: fix unused import in syscall_darwin_386.go
8ff4e54 unix: add space to generated code
9fbf701 unix: reverse default for 1.11/1.12 split
36ca6f1 unix: add Sendfile test
b00e65a unix/linux: set 100644 mode on mksysnum.go
7c4c994 unix: remove raw syscall from Sendfile
8588221 unix: remove raw syscall from getAttrList
22c30cd unix: remove raw syscall from getattrlistTimes
4dcd0b7 unix: remove raw syscall from Getfsstat
54d2441 unix: remove Getdirentries on iOS
8b8312a unix: avoid "64"-postfixed libSystem calls on iOS
45d26eb unix: convert Darwin syscalls from raw to libSystem
97b4c2a unix: update Dockerfile to Go 1.12beta1
074acd4 windows/svc: use wevtutil.exe instead of powershell for windows/arm
dcdaa63 windows: use netevent.dll in TestFormatMessage for windows/arm
4d1cda0 unix: remove Flock syscall for aix
586ba8c unix: add SyncFileRange on linux/arm
73d4af5 unix: evaluate cmsg alignment in cmsgAlignOf at compile time
b05ddf5 unix: use correct cmsg alignment for openbsd/arm
7da8ea5 unix: regenerate ztypes for openbsd/arm
2a47403 unix: always use fstatat(AT_SYMLINK_NOFOLLOW) over lstat on AMD64
b0bfa5d unix: always use inotify_init1 over inotify_init on AMD64
ad97f36 unix: avoid index out of range in Vmsplice with empty iovs
70b957f cpu: add linux/arm64
a5c9d58 unix/linux: replace "mksysnum.pl" script with a Go program
4ed8d59 unix: replace "mksyscall.pl" script with a Go program
62eef0e unix: rework TestGetwd to handle test dirs whose names contain symlinks
0cf1ed9 unix: add IoctlSetPointerInt
ec83556 unix: add ioctl definitions for PPP interfaces.
93218de unix: add sockaddr and defines for PPPoE sockets.
5ac8a44 unix: export FdSet bits field on freebsd
66b7b13 unix: add IoctlGetPtmget on netbsd
3a76605 unix: test UtimesNanoAt on darwin
3a27cdc unix: don't use deprecated sys/capability.h header on FreeBSD
7155702 unix: fix errors in syscalls when using -linkshared on ppc64x
9b800f9 unix: avoid index out of range in *setxattr on BSD
7e31e0c unix: add remaining *at functions on dragonfly
f7626d0 unix: add remaining *at functions on netbsd
c8e3364 unix: add remaining *at functions on openbsd
d69651e unix: add Readlinkat on openbsd
95b1ffb unix: add Openat on dragonfly
9ff3f17 unix: add Openat on netbsd
2772b66 unix: allow to pass a NULL pointer to the pledge syscall
731415f unix: add kernel module load/unload syscalls on Linux
d989b31 unix: add support for OpenBSD unveil(2)
5cd93ef unix: use ppoll to implement Pause on linux/{arm64,riscv64}
22bddfe unix: add Openat on openbsd
44b849a unix: add Ppoll on openbsd
8a28ead unix: update Dockerfile to Linux 4.19
8b8824e unix: don't use local syscall number in Pledge()
5535b4e unix: FreeBSD 12 ino64 support
eda9bb2 unix: update syscall numbers to OpenBSD 6.4
8e24a49 unix: add SOF_TIMESTAMPING_* flags on Linux
8f1d3d2 unix: add support for aix/ppc64, gc implementation
fa43e7b unix: add marker comments to zsyscall_solaris_amd64.go
4497e2d unix: convert errorList and signalList to new format for linux/sparc64
f81de40 unix: add KexecFileLoad on linux/{amd64,ppc64x,s390x}
8469e31 unix: export sizeof consts
af653ce unix: use correctly aligned result buffer in SysctlClockinfo
679a27d unix: add SysctlUvmexp on OpenBSD
219bb53 unix: re-add vm.* sysctl strings on openbsd/amd64
e4b3c5e unix: add NCSI generic netlink constants
dad3d9f unix: add ClockGetres on Linux
8ccfc68 unix: add SysctlClockinfo on NetBSD
c2ed4ed unix: fix TestSchedSetaffinity for smt settings
2f1df4e unix: add additional rlimit resource constants on NetBSD
b09afc3 unix: add MNT_* flags on OpenBSD
90868a7 windows: add support for windows/arm
f02c795 unix: add MNT_* flags on DragonflyBSD
c01370c unix: add MNT_* flags on NetBSD
d47a0f3 unix: implement Linux AF_XDP sockets
d641721 unix: add more RTA_* constants on Linux
1561086 unix: add Termio, Winsize, Statfs_t, TC[GS]ET, Mkdir and Mknod for AIX
1061eb6 unix: change MemfdCreate flags parameter to int for all GOARCHes
ee1b12c unix: add MemfdCreate on Linux
d0be072 unix: correct misspelling in test output
4526dd3 windows: correct misspelling in comment
917fdcb unix: add remaining RTA_* constants for use with rtnetlink on Linux
8cf3aee unix: add support for linux/riscv64
ebe1bf3 unix: add SYNC_FILE_RANGE_* constants on Linux
d9c697b unix: correct argument order for SyncFileRange syscall on
        linux/ppc64{,le}
2b02437 Revert "unix: implement SyncFileRange for ARM"
1b73967 unix: implement SyncFileRange for ARM
fa5fdf9 windows: add support for AF_UNIX sockets
49385e6 unix: update Dockerfile to Go 1.11
d99a578 unix: code for AIX ppc and ppc64, for gccgo
4910a1d unix: add UBI ioctl constants on Linux
11551d0 unix: use pipe2 syscall on FreeBSD instead of pipe
3b58ed4 unix: add additional file mode bit constants from sys/stat.h on Solaris
4ea2f63 unix: add example for Flock
1a700e7 unix: add NOSTD syscall numbers on FreeBSD
1c95834 unix: add additional file mode bit constants from sys/stat.h on FreeBSD
871208d unix: add additional file mode bit constants from sys/stat.h on
        DragonflyBSD
14742f9 windows: add Wincrypt.h Cert related values
4e1fef5 unix: update Dockerfile to Linux 4.18, glibc 2.28 and Go 1.11beta3
98c5dad unix: update the OpenBSD pledge interface to handle execpromises
f0d5e33 unix: add *xattr functions on NetBSD
57f5ac0 unix: add additional file mode bit constants from sys/stat.h on OpenBSD
904bdc2 unix: add F*xattr on Darwin
3249cb6 unix: drop incorrect Fsetxattr size return value
f62c962 unix: add S_IRWXG and S_IRWXO to FreeBSD types
acbc56f unix: add F*xattr on Linux
90887a5 unix: add IFLA_INFO_KIND on Linux
0718ef2 unix: remove *xattr from list of unimplemented syscalls on FreeBSD
2be389f unix: add Renameat2 on Linux
34b17bd unix: fix OpenBSD codegen to include F_OK
0ffbfd4 unix, windows: add type aliases to std syscall for Signal, Errno,
        SysProcAttr
3dc4335 unix: add Linux network namespace constants
bd9dbc1 unix: support Faccessat flags argument
e3f9388 unix: add Linux blkpg_ioctl_arg and blkpg_partition types
10b189e x/sys: improve NewCallback documentation
c4d1ff1 unix: implement pipe() on linux/mips
e072cad unix: document IoctlSetWinsize and IoctlSetTermios and fix pointer
        lifetime

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 17:23:55 +00:00
Julio Montes
4a1dc1ee25 vendor: update libcontainer
bring support for cgroups v2

shortlog:
8541d9cf Fix race checking for process exit and waiting for exec fifo
52951a7c Fix race in tty integration test with slow startup
8ddd8920 libcontainer: add method to get cgroup config from cgroup Manager
cd7c59d0 libcontainer: export createCgroupConfig
41a20b58 Expose network interfaces via runc events
48b055c4 Makefile: allow overriding `docker` command
42690e68 Make event types public
faf1e44e cgroup2: ebpf: increase RLIM_MEMLOCK to avoid BPF_PROG_LOAD error
ccd4436f .travis.yml: add Fedora 31 vagrant box (for cgroup2)
faf673ee cgroup2: port over eBPF device controller from crun
74a3fe5d cgroup2: do not parse /proc/cgroups
9c81440f cgroup2: allow mounting /sys/fs/cgroup in UserNS without unsharing
         CgroupNS
13919f5d Remove the static_build build tag.
dbd771e4 cgroup2: implement `runc ps`
9996cf7d README.md: clarify cgroup2 support is not ready for production
d918e7f4 cpuset_v2: skip Apply when no limit is specified
033936ef io_v2.go: remove blkio v1 code
a610a848 criu: Ensure other users cannot read c/r files
b28f58f3 Set unified mountpoint in find mnt func
f017e0f9 checkpoint: Set descriptors.json file mode to 0600
4be50fe3 SECURITY: Add Security Policy
2111613c VERSION: back to development
d736ef14 VERSION: update to 1.0.0-rc9
d463f648 *: verify that operations on /proc/... are on procfs
9aef5044 vendor: update github.com/opencontainers/selinux
28e58a0f Support different field counts of cpuaact.stats
84373aaa Add SCMP_ACT_LOG as a valid Seccomp action (#1951)
331692ba Only allow proc mount if it is procfs
af7b6547 libcontainer/nsenter: Don't import C in non-cgo file
718a566e cgroup: support mount of cgroup2
115d4b9e bump golang/protobuf v1.0.0
85c02f3f bump coreos/go-systemd v19, godbus/dbus v5.0.1
21498b8e bump mrunalp/fileutils 7d4729fb36185a7c1719923406c9d40e54fb93c7
eb86f603 bump syndtr/gocapability d98352740cb2c55f81556b63d4a1ec64c5a319c2
1150ce9c bump urfave/cli v1.20.0
8e4f645f bump docker/go-units v0.3.3
0fc06623 bump cyphar/filepath-securejoin v0.2.2
414a39de bump containerd/console 0650fd9eeb50bab4fc99dceb9f2e14cf58f36e7f
de24d733 bump github.com/pkg/errors 0.8.1
4be3c48e Reformat vendor.conf and pin all deps by git-sha
524cb7c3 libcontainer: add systemd.UnifiedManager
ec111368 libcontainer, cgroups: rename systemd.Manager to LegacyManager
1932917b libcontainer: add initial support for cgroups v2
4316e4d0 Bump x/sys and update syscall to start Risc-V support
0bc069d7 nsenter: fix clang-tidy warning
b225ef58 nsenter: minor clean up
e4aa7342 Rename cgroups_windows.go to cgroups_unsupported.go
c740965a libcontainer: update masked paths of /proc
518c8558 Remove libcontainer detection for systemd features
4ca00773 Update vendored dependencies to remove go-systemd/util
588f040a Avoid the dependency on cgo through go-systemd/util package
afc24792 Make get devices function public
9c822e48 cgroups/fs: check nil pointers in cgroup manager
1712af0e man: fix man-pages
f08cdaee Skip searching /dev/.udev for device nodes.
808e809f doc: First process in container needs `Init: true`
5e0e67d7 fix permission denied
351bfb4b integration: remove blkio.weight (unavailable in kernel 5.0)
7e678625 Bump CRIU to 3.12
68cc1a77 Update busybox source and fix runc exec bug
371d13c9 Update bash completion for v1.0.0 release
652297c7 Update dependency libseccomp-golang
6770c869 Allow to define `COMMIT` by env
b54fd85b libcontainer: change seccomp test for clone syscall
6f77e35d Export list of HugePageSizeUnits
c6445b1c Add tests for GetHugePageSize
273e7b74 Fix cgroup hugetlb size prefix for kB
65032b55 libcontainer: fix TestGetContainerState to check configs.NEWCGROUP
8383c724 main: not reopen /dev/stderr
7a9ffa89 Change the permissions of the notify listener socket to rwx for
         everyone
46351eb3 Move systemd.Manager initialization into a function in that module
62bd2593 VERSION: back to development
425e105d VERSION: release 1.0.0-rc8
8362cd02 Vendor in latest selinux code for keycreate errors
a1460818 Write logs to stderr by default
68b4ff5b Simplify bail logic & minor nsexec improvements
17b37ea3 libcontainer: intelrdt: add missing destroy handler in defer func
475aef10 Remove redundant log function
ba3cabf9 Improve nsexec logging
e7831f2a Update to Go 1.12 and drop obsolete versions
da5a2dd4 `r.destroy` can defer exec in `runner.run` method.
8296826d specconv: always set "type: bind" in case of MS_BIND
c486e3c4 Address comments in PR 1861
feebfac3 Remove pipe close before exec.
9a599f62 Support for logging from children processes
3e6688f5 add selinux label for runc exec
dcf994b4 Fix SELinux failures on disabled SELinux Machines
6b5ee713 VERSION: back to development
69ae5da6 VERSION: release v1.0.0-rc7
eab53309 Fixes regression causing zombie runc:[1:CHILD] processes
9fe7c939 Add a Travis-CI job for systemd cgroup driver
5369f9ad Skip CRIU tests when $RUNC_USE_SYSTEMD for now
d4586090 Update tests that depend on cgroupfs paths to consider systemd cgroups
a9056a34 Add $RUNC_USE_SYSTEMD to use systemd cgroup driver in tests
4b2b9782 Add cgroup name to error message
6f714aa9 Use getenv not secure_getenv
cd96170c Need to setup labeling of kernel keyrings.
472fe623 criu image path permission error in rootless checkpoint
dbf6e48d README: link to /org/security/
2d4a37b4 nsenter: cloned_binary: userspace copy fallback if sendfile fails
16612d74 nsenter: cloned_binary: try to ro-bind /proc/self/exe before copying
af9da0a4 nsenter: cloned_binary: use the runc statedir for O_TMPFILE
2429d593 nsenter: cloned_binary: expand and add pre-3.11 fallbacks
7cb3cde1 fix preserve-fds flag may cause runc hang
5b775bf2 nsenter: cloned_binary: detect and handle short copies
52f4e0fa exec: expose --preserve-fds
f1da0d30 switched travis to xenial
9edb5494 Use vendored in CRIU Go bindings
bfca1e62 Vendor in go-criu
bb7d8b1f nsexec (CVE-2019-5736): avoid parsing environ
cd41feb4 Remove detection for scope properties, which have always been broken
7354546c Create mountpoints also on restore
f661e023 factor out bind mount mountpoint creation
0a8e4117 nsenter: clone /proc/self/exe to avoid exposing host binary to
         container
ec069fe3 Vendor opencontainers/runtime-spec 29686dbc
4a600c04 Update vendored golang.org/x/sys to latest
565325fc integration: fix mis-use of libcontainer.Factory
dd50c7e3 Add 'org.criu.config' annotation documentation
5f32bb94 Update runc-checkpoint man-page
28a697cc rootfs: umount all procfs and sysfs with --no-pivot
f0192337 systemd: fix setting kernel memory limit
acb75d0e libcontainer: intelrdt: fix null intelrdt path issue in Destroy()
403986c5 Add CRIU patch to fix checkpoint test
6f3e13cc Added test for container specific CRIU configuration files
e1579630 Enable CRIU configuration files
360ba8a2 Update criurpc definition for latest features
0855bce4 Fix .Fatalf() error message
bdf3524b Retry adding pids to cgroups when EINVAL occurs
769d6c4a Fix some typos
dce70cdf cr: get pid from criu notify when restore
8a4629f7 cgroups: nokmem: error out on explicitly-set kmemcg limits
07d1ad44 kill: allow to signal paused containers
30817421 Modify check-config.sh in accordance with Moby Project updates
a0200001 MAINTAINERS: remove @vmarmol
2efedb02 MAINTAINERS: remove @rjnagal
87a18899 may kill other process when container has been stopped
061dfe95 VERSION: back to development
ccb5efd3 VERSION: release v1.0.0~rc6
bc0b0471 Small fixes for CRIU based test cases
37634277 Bump CRIU to 3.11
056909bd Adds note about user ns for rootless containers
48189715 add missing intelRdt parameters in 'runc update' manpage
e2386860 libcontainer: Set 'status' in hook stdin
95af9eff libcontainer: intelrdt: add support for Intel RDT/MBA Software
         Controller in runc
714a4d46 rootless: fix potential panic in shouldUseRootlessCgroupManager
16d55f17 libcontainer: fix potential panic if spec.Process is nil
95d1aa18 test: fix TestDupNamespaces
f1b1407e readme: add nokmem build tag
1e0d04c6 Makefile: rm cgo tag
6a2c1559 libcontainer: ability to compile without kmem
df3fa115 Add support for cgroup namespace
869add33 rootless: fix running with /proc/self/setgroups set to deny
5c6b9c3c libcontainer: map PidsLimit to systemd's TasksMax property
9a3a8a5e libcontainer: implement CLONE_NEWCGROUP
630fb5b8 Bump Travis versions
6c307f8f libcontainer: intelrdt: add user-friendly diagnostics for Intel RDT
         operation errors
d59b17d6 libcontainer: intelrdt: Add more check if sub-features are enabled
f0973392 libcontainer: intelrdt: add test cases for Intel RDT/MBA
1ed597bf libcontainer: intelrdt: add update command support for Intel RDT/MBA
27560ace libcontainer: intelrdt: add support for Intel RDT/MBA in runc
c1cece7e libcontainer: intelrdt: add Intel RDT/MBA docs in SPEC.md
bd905416 vendor: bump runtime-spec to 5684b8af48c1
0b412e94 various cleanups to address linter issues
0d011647 Fix travis Go: tip
36f84720 fix build break
1499c746 Move spec.Linux.IntelRdt check to spec.Linux != nil block
26bdc0dc clarify license information
a1d5398a Respect container's cgroup path
5de99cd3 tty: clean up epollConsole closing
ec0d23a9 tty: close epollConsole on errors
40f14684 keyring: handle ENOSYS with keyctl(KEYCTL_JOIN_SESSION_KEYRING)
5963cf2a test: add more test case for CleanPath
06f789cf Disable rootless mode except RootlessCgMgr when executed as the root
         in userns
feb90346 doc: fix typo
4eb30fcd code optimization: use securejoin.SecureJoin and CleanPath
4fae8fcc code optimization after review
d2d226e8 fix unexpected delete bug when container id is ..
3ce8fac7 libcontainer: add /proc/loadavg to the white list of bind mount
636b6640 linux: drop check for /proc as invalid dest
b34d6d8a libcontainer: CurrentGroupSubGIDs -> CurrentUserSubGIDs
fe3d5c4c Remove unused veth setup code
832ac8a5 tests: add external network namespace tests
fa43a72a criu: restore into existing namespace when specified
b399167f Add docker proxy settings for make test in a proxy environment
62a4763a When doing a copyup, /tmp can not be a shared mount point
4803faf0 cr: don't restore net namespace by default
cb3e35b5 Add missing data to man page
26ec8a97 Revert "libcontainer/rootfs_linux: minor cleanup"
e389f575 Dockerfile: update criu to v3.10 + checkpoint-restore/criu@27034e7c
34ed6269 Update outdated nsenter README content
a2faaa13 Fix duplicate entries and missing entries in getCgroupMountsHelper
0880503b Add an explanation for TESTPATH
3321aa1a Fix regression with mounts with non-absolute source path
b681b58e Fix the problem TESTFLAGS is not to be used in Makefile correctly
8187fb74 cr: don't dump network devices and their configuration
46221e39 criu tests: rename criu feature check
7fb79f31 Add osusergo flag to static build
53fddb54 Pass GOMAXPROCS to init processes
472fcb30 docs: add information about terminals
e5a7c61f Add test for testing cgroup mounts on bedrock linux
5ee0648b Stop relying on number of subsystems for cgroups
823c06ea libcontainer: improve "kernel.{domainname,hostname}" sysctl handling
d18a45f6 Stop using unix.SIGUNUSED which has been removed from golang.org/x/sys
a0e99e7a libcontainer: devices: fix mips builds
39f679c4 travis: test cross compilation
c205e9fb libcontainer: fix compilation on GOARCH=arm GOARM=6 (32 bits)
cbcc85d3 runc: not require uid/gid mappings if euid()==0
aa3fee6c SELinux labels are tied to the thread
bd3c4f84 Fix race in runc exec
63bb0fe9 Fix merge conflict
939d5a37 cgroup: clean up isIgnorableError for skippable EROFS
c9381573 libcontainer: remove extra CAP_SETGID check for SetgroupAttr
b515963c systemd cpu quota ignores -1
fd0febd3 Wrap error messages during init
cdb7f23d main: add condition to isRootless()
f103de57 main: support rootless mode in userns
9c7d8bc1 libcontainer: add parser for /etc/sub{u,g}id and /proc/PID/{u,g}id_map
40680b2d Make the setupSeccomp function public.
1b27db67 libcontainer/rootfs_linux: minor cleanup
165ee453 Make channel for StartTransientUnit buffered
1a506462 nsexec.c: fix GCC 8 warning
4521d4b1 Only configure networking when creating a net ns
0e16bd9b Detect whether Delegate is available on both slices and scopes
8ab251f2 Fix systemd.Apply() to check for DBus error before waiting on a
         channel.
985628dd libcontainer: Don't set container state to running when exec'ing
73f3dc63 libcontainer: allow setgroup in rootless mode
ed58366c libcontainer: fix Boolmsg alignment
58415b4b Fix error message
4f4af7bf rootless: set sticky bit if using XDG_RUNTIME_DIR
fd3a6e6c libcontainer: handle unset oomScoreAdj corectly
03e58598 rootless: cgroup: treat EROFS as a skippable error
74e961e2 tests: allow to load kernel modules from a test container
43aea059 Label the masked tmpfs with the mount label
0aa6e4e5 libcontainer/specconv/spec_linux: Support empty 'type' for bind mounts
04e95b52 Add timeout while waiting for StartTransinetUnit completion signal
         from dbus
3d26fc3f cgroups/fs: fix NPE on Destroy than no cgroups are set
e7e303ab Minor wording enhancement in readme
bf749516 libcontainer/user: platform dependent calls
8d7b5731 makefile: make "release" PHONY
10a4cde4 Fix make shell
442a6cff VERSION: back to development
4fc53a81 VERSION: bump to v1.0.0-rc5
2420eb1f The setupUserNamespace function is always called.
8be31629 upgrade criu to v3.7
121c7b45 upgrade to go 1.10 with debian stretch
3f32e729 fix lint error in specconv
0f3d8245 adding go get instruction to readme
59e5b61c Update console dependency to fix runc exec on BE
50dc7ee9 libcontainer/capabilities_linux: Drop os.Getpid() call
7019e1de fix systemd slice expansion so that it could be consumed by cAdvisor
72f92cf9 Warning message if 'go-md2man' is not yet installed
7ac503d1 kill.go: Remove unnecessary checks
be16b136 libcontainer/state_linux_test: Add a testTransitions helper
91ca3314 chroot when no mount namespaces is provided
5a46c2ba nsenter: move namespace creation after userns creation
dd5eb3b9 make: validate C format
5c0af14b Return from goroutine when it should terminate
8d3e6c98 Avoid race when opening exec fifo
862e4911 man: Fix manpages related to console
cd1e7abe libcontainer: expose annotations in hooks
d5b4a3ed Fix race against systemd
a1edc03c Pin version of gojsonschema in tests
db093f62 libcontainer: remove dependency on libapparmor
bb912eb0 libcontainer: Do not wait for signalled processes if subreaper is set
5061fd3e stopped container can't be checkpoint
fec6b0fe Update criu_opts_linux.go
57edfbba specconv: avoid skipping gidmappings applied when uidmappings is empty
0495fece Ensure container tests do not write on the host
93c5f706 vendor: removed more build=ignore vendor
8898b6b4 remove placeholder for non-linux platforms
4d27f20d libcontainer: drop FreeBSD support
38d1e6ec Delete xattr related code
17db6560 support unbindable,runbindable for rootfs propagation
bca53e7b systemd: adjust CPUQuotaPerSecUSec to compensate for systemd
         internal handling
604dbfbe enable integration test on arm64 platform
03ca562b Remove github.com/docker/docker from vendor
3ca4c78b Import docker/docker/pkg/mount into runc
ab0a6dd2 Add build 1.9 to travis
0aac2368 specconv.Example(): add /proc/scsi to masked paths
dc609cc5 enable unit test on arm64 platform
fdbb9e3e Avoid disk usage explosion when copying busybox
59450147 Use cyphar/filepath-securejoin instead of docker pkg/symlink
780f8ef5 Specconv: Test create command hooks and seccomp setup
1cda65c3 tests: add missing cgroups_kmem requirement
c0e6e12f Test Cgroup creation and memory allocations
ffe5cdc4 tests: add various !terminal tests
ff5075c3 init: correctly handle unmapped stdio with multiple mappings
e9193ba6 Fix breaking change in Seccomp profile behavior
d8921751 libcontainer: intelrdt: fix a GetStats() issue
0eed453b libcontainer: use Major/Minor from x/sys/unix
80988286 propagate argv0 when re-execing from /proc/self/exe
23f4d316 tests: improve rootless_cg testing
d2bc0814 libcontainer: merge common syscall implementations
acb93c9c libcontainer: cgroups: Write freezer state after every state check
5f9284cb Check for negative gid
f55f79d6 Use Int64SliceFlag instead of StringFlag to get additional gids.
7a386c2b Add --additional-gids to runc exec.
472fa3d0 Update Travis config to use trusty-backports libseccomp
bbc847a4 Add integration tests for multi-argument Seccomp filters
03a5a747 Vendor updated libseccomp-golang for bugfix
bfe3058f Make process check more forgiving
eb68b900 Prevent invalid errors from terminate
d4f0f9a5 specconv: emit an error when using MS_PRIVATE with --no-pivot
ca4f427a Support cgroups with limits as rootless
2edd36fd libcontainer: create Cwd when it does not exist
605dc5c8 Set initial console size based on process spec
65918b02 intelrdt: add update command support
2549545d intelrdt: always init IntelRdtManager if Intel RDT is enabled
9c36ffbc make localintegration fails on Ubuntu 17.04
117c9274 rootfs: switch ms_private remount of oldroot to ms_slave
d01050e6 Add support for mips/mips64
9916b791 Put signalMap in a separate file, so it may be arch-specific
602c85fd trailing punctuation in header

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 17:23:54 +00:00
Julio Montes
908a42a4af vendor: update logrus
latest agent version requires logrus v1.4.2

shortlog:
839c75f Release 1.4.2
744fc4c fix build break for plan9
f2849a8 add full cross compilation in travis (#963)
1bc909a Add a checkTerminal for nacl to support running on play.golang.org
1a601d2 remove go 1.10 from ci build matrix
5521996 Update x/sys/unix to fix AIX support
c1b6154 Fix solaris build
8bdbc7b Release 1.4.1
6c615e1 remove field if val is empty string for func and file field in text
        formatter
ede5b63 Make isTerminal un-exported
3e06420 Move files to main directory
38bc297 return new entry for Entry.WithContext
7d700cd Test more platforms
c49ef1d Move terminal package
5d8c3bf Updated travis.yml
41ee4dd Moved moved unix-related parts into terminal
7de3dd8 Removed golang.org/x/crypto refs
10ff0d0 Got rid of IsTerminal call to reduce external dependencies
c076594 Add Go 1.12 to Travis CI build matrix
02141df Add CHANGELOG for v1.4.0
68e41f6 Add WithContext
cf1b9fd fix sync.Once usage instead of adding a mutex lock
b9d4514 fix ReportCaller race condition
99a5172 Add and example for CallerPrettyfier
5c2b39a Remove debug trace
ffec2f2 Add a CallerPrettyfier callback to the text formatter
5e9b246 Add a CallerPrettyfier callback to the json formatter
4f5fd63 Fix infinite recursion on unknown Level.String()
c4e4882 prevent string formatting in Entry.Logf when log level is not enabled
774bb8e Fix error formatting based on best practices from Code Review Comments
4ea4861 Add a DeferExitHandler function
68a2b57 Add nested-logrus-formatter to README.md
f61e48b logger: fix wrong callback method
0f544bf Add a unit test to ensure hook are called in their registration order
a99ca47 Add an example hook which adds default fields
78fb385 Remove unused variables in TextFormatter
eef6b76 Update Changelog for 1.3.0
bd9534b Test Log
e8fd0ba Remove sensitivity to file line changes
ff695da Implement TextUnmarshaller interface for Level type
a6668e7 Add Generic Log functions with level via argument
9abefb9 do not clear error formatting informative field
d962013 respect ForceColor and environment variables over OS check
08e8d65 Skip func pointer type value in fields
0c5e33c Travis: fix checkout dir to help contributors run Travis on their fork
f1b98e4 ignore expected color on windows
e902658 Disable colored output on windows entirely
eab2c44 fix hook example
c7183bf fix missing parameter
2cafb78 fix race condition caused by writing to entry.Data, using the same
        technique as JSONFormatter
bcd833d v1.2.0 changelog
d10c2f9 fix panic in text formatter
5a78c38 make file name comparison os independant
d2654b7 add file and line number in output when report caller is enabled
fa01b53 move test functions and test utils functions in their own package
ec57031 store a runtime.Frame in Entry instead of the caller function name
975c406 Use a sync.Once to init the reportCaller data
5fcd19e add a SetReportCaller on Logger object
0c52582 Add GELF to third party formatters
5c1f2cd Make logrus.Level implement encoding.TextUnmarshaler
bb98c6c Fix the version of windows coloring library dependency
ed3ffa0 PR#844: Added Trace to TestLogLevelEnabled() (requested by @dgsb)
b54cafe Addresses @stevvooe's backward compatibility concerns.
ef9d84e Added trace log level.
c7a33dc Add Trace level logging
4981d81 Added TRACE level logging.
9c7692c disable colors on hook example
f2ab87f Add an example for tracing global variable with hook
ff92509 Attempt to fix build break on aix
a13c5db Fix typo in comment
4346c76 Remove unnecessary wrapper function on `os.Exit`
99bc300 Add a method Exit on Logger that calls `os.Exit` or alternate exit
        function.
ad15b42 Update changelog for v1.1.1 release
3f90cee Rationalize os specific build constraints
2be6202 Add option to panic in `test.NewNullLogger` to allow testing of calls
        to `Fatal*`
7b467df Skip func type value in fields.
a67f783 Update changelog for v1.1.0 release
73bc94e Add custom sorting function in text formatter
5a88d3c Add missing module dependency for windows build
629982b DisableColors in two tests to fix AppEngine configuration
0a8fc8d Add AppEngine test configurations to travis to a void regression
f1ce1ba Fix copypasta
90501cf Fix AppEngine builds
98c898c Fix gopherjs build constraint name
eed7c22 Fix travis build for go 1.11 with modules
66895ce Fix module name and remove unused dependencies
88eb166 Fix spelling in Entry.Buffer comment
f75951b Add go module support
4bcb47b commit to trigger appveyor build
8b12043 Fix example build on windows
7556e24 Use syslog instead of airbrake as syslog example
e58aa84 bump go toolchain version in travis
98d0f31 Add previously forgotten v1.0.6 description in changelog
90bf2e7 feat(LogLevel): taking in account code review from David Bariod
13d10d8 return old hooks from RelplaceHooks
7a0120e logger.ReplaceHooks
b5e6fae Cleanup on unit test on isColored
cadf2ce Add unit test for TextFormatter.isColored
eb968b6 Fix for CLICOLOR_FORCE handling
8a6a17c Fixed missing brace after wrong merge
d950ecd Remove unnecessary text_formatter file
da39da2 Keep terminal check naming convention
37d651c Add CLICOLOR support
179037f Ensure a new entry data fields are empty
d316277 Add logger benchmark
54db2bb limit the build/test matrix to the two latest stable version
6999e59 properly fix the hooks race test
725f3be Adds WithTime to Logger and Entry types, as well as a pure module-level
        function.
52b92f5 Allows overriding Entry.Time.
fc9bbf2 [#241] Allow to set writer during logger usage.
eed1c0f Fix GopherJS build tags
2ce6c0c Support for Entry data under nested JSON dictionary.
6b28c2c error message
5d60369 Fixed prefixFieldClashes for TextFormatter and added coverage
4225d69 feat: new methods to check enabled log level
070c81d Revert the change introduced in #707 and do the proper fix. Fixes #729
098a5a7 Move the hook services list to a wiki page
caed59e Fix Logger.WithField doscription
aa6766a PERF: use buffer pool in json formatter
b1e82be Update go versions in travis configuration.
8369e2f Fix a race condition in TestLoggingWithHooksRace
507c822 add mysql hook
e63a8df added Anexia CloudLog to list of hooks
5513c60 Improve documentation for Fatal* class functions
2f58bc8 Unified terminal initialization code handling
9bc59a5 Fixed initTerminal() was run for non-terminals
cf5eba7 Simplified file structure
c9a46a1 Added terminal check on Windows
7d2a521 Extended conditions to include non-native builds
f142d81 Improved building of non-windows code
bb487e0 Added support for text coloring on Windows 10
19b9c9e delete dead link
b537da5 Fix run-on sentence
723dd3c changed prettyprinting to use spaces as opposed to /t
c155da1 changelog: add 1.0.5
91b159d Add Kafka REST Proxy hook to README
c840e59 add gopherjs build tag
1893e9a Fixed: comment
f4118d2 reamde: add logrus-clickhouse-hook
efab7f3 Have prefixFieldClashes respect the JSON FieldMap
be56909 Make fireHooks() method receive a copy of Entry structure to avoid race
        conditions
178041e Fix typo in README.md
828a649 rename fieldLogger to entry
eeb6535 Lock mutex before formatting to avoid race
efbfdb5 Add failing test for using a FieldLogger with hooks inside goroutines
0cf9f0b Made text consistent with other hooks
516f6c1 Add Application Insights hook to README
977e033 Fix deadlock on panics at Entry.log
92aece5 TextFormatter behaviour aligned with stdlib log (fixes #167)
eb15690 remove .gitignore changes and update AddHook
20cc8e2 remove .gitignore changes
0c03a05 mirror and wrap Logger instance methods in exported.go
d682213 changelog: 1.0.4
b9eceae fix example
bf1fb70 Add FieldMap support to TestFormatter
73a1342 Fix typo in README.md
10d6a5b removed useless line from readme
639325f added pretty print option for json logs
9700beb Update README.md
1858a85 Adds `logbeat` hook to README
c44d524 Fix typo in docstring
4844e58 Add promrus to list of hooks.
7d3ddc6 Split terminal check to add build tags to support App Engine.
e3d1776 MD formatting
9ce1c9e add github path to log message in readme
b1db1b9 regex assertion rather than literal, for github path
3cb9e18 test updates
bc6d984 add caller logic to DisableTimestamp case
1f59c9a Add DisableLevelTruncation description to README
88dd8df responses to code review
d8fd234 add syntax hilighting to new example blocks
2e7c40e README formatting tweak
802fba1 add note on caller-reporting overhead to README
306956c tweak timing tests to handle slower VMs and older GoLang
65f3af3 simplify hasCaller check
a5c845c responses to review comments
4575b7a revert slight added complexity in NewEntry()
05a8f4d fix test description
348bace doc updates, and relabel ReportMethod
1e21450 push compilation even higher, to reduce to one call
8161d93 performance: precompile regex before iterating
473c344 Add README notes and CHANGELOG entries
93af604 First cut at adding calling method
e5b6713 Added testing for DisableLevelTruncation
7a1f601 Added ability to disable level text truncation. Fixes #406

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-15 17:23:54 +00:00
Jose Carlos Venegas Munoz
32f2ff181c actions: check for packaging before clone
If already exit do not clone it, but fetch.

Fetch will keep repository is up-to-date before checkout.

Fixes: #911

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-01-15 16:02:35 +00:00
Yang Bo
1b1e066083 Merge pull request #108 from Pennyzct/build_bug_fix
Running rust-agent on AArch64
2020-01-15 21:43:31 +08:00
Salvador Fuentes
7ce9c40c76 Merge pull request #122 from GabyCT/topic/removetest
ci: Remove run_rust_test functions as not being used
2020-01-15 07:21:43 -06:00
Salvador Fuentes
626536e7bd Merge pull request #902 from devimc/topic/kernel/fixFcVcpuCount
kernel/configs: enable CONFIG_X86_MPPARSE
2020-01-14 14:47:14 -06:00
Jose Carlos Venegas Munoz
0ff707214f release: bump kata-containers repository
kata-containers is now part of the release processs.

Lets update the version for that repository.

Fixes: #905

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-01-14 20:28:33 +00:00
Gabriela Cervantes
4edf5379ca ci: Remove run_rust_test functions as not being used
This PR removes a function that is never used as the script that is
referring is also non existing at the test repository.

Fixes #113

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-01-14 14:23:14 -06:00
Julio Montes
a95b359861 kernel/configs: enable CONFIG_X86_MPPARSE
Firecracker needs CONFIG_X86_MPPARSE to support `vcpu_count`, otherwise the
amount of cpus wil always be 1.

fixes #901

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-14 16:55:36 +00:00
Peng Tao
c3629d37c4 Merge pull request #2239 from WeiZhang555/persist-storage
Land experimental "newstore" as formal feature
2020-01-14 13:12:05 +08:00
Julio Montes
3660bb426f Merge pull request #2387 from devimc/topic/qemu/bump-4.1.1
versions: update qemu to 4.1.1
2020-01-13 10:15:20 -06:00
Julio Montes
0af481979b versions: update qemu to 4.1.1
Fixes CVE-2019-12068

fixes #2388

shortlog:
99c5874a9b Update version for 4.1.1 release
e092a17d38 mirror: Keep mirror_top_bs drained after dropping permissions
088f1e8fd9 block/create: Do not abort if a block driver is not available
145b562990 vhost: Fix memory region section comparison
42b6571357 memory: Provide an equality function for MemoryRegionSections
c0aca9352d memory: Align MemoryRegionSections fields
54c130493c tests: make filemonitor test more robust to event ordering
3d018ff3bd block: posix: Always allocate the first block
f0d3fa265d file-posix: Handle undetectable alignment
7db05c8a73 block/file-posix: Let post-EOF fallocate serialize
d9b88f7e0d block: Add bdrv_co_get_self_request()
590cff8230 block: Make wait/mark serialising requests public
2e2ad02f2c block/io: refactor padding
b3b76fc643 util/iov: improve qemu_iovec_is_zero
cff024fe85 util/iov: introduce qemu_iovec_init_extended
40df4a1bf7 qcow2-bitmap: Fix uint64_t left-shift overflow
b156178553 iotests: Add peek_file* functions
15f5e8c367 iotests: Add test for 4G+ compressed qcow2 write
405deba14f qcow2: Fix QCOW2_COMPRESSED_SECTOR_MASK
01be50603b virtio-blk: Cancel the pending BH when the dataplane is reset
051c9b3cbc scsi: lsi: exit infinite loop while executing script
           (CVE-2019-12068)
b387531323 target/xtensa: regenerate and re-import test_mmuhifi_c3 core
cdc6896659 target/arm: Allow reading flags from FPSCR for M-profile
c0b35d87de hbitmap: handle set/reset with zero length
fcd7cba6ac util/hbitmap: strict hbitmap_reset
aea18ef938 COLO-compare: Fix incorrect `if` logic
4887acf574 virtio-net: prevent offloads reset on migration
8010d3fce0 virtio: new post_load hook
6705b9344f ui: Fix hanging up Cocoa display on macOS 10.15 (Catalina)
c0e2fbf124 mirror: Do not dereference invalid pointers
b077ac637d iotests: Test large write request to qcow2 file
9e51c5306c qcow2: Limit total allocation range to INT_MAX
aae0faa5d3 hw/core/loader: Fix possible crash in rom_copy()
7b404cae7f vhost-user: save features if the char dev is closed
d868d30db6 iotests: Test internal snapshots with -blockdev
7a8aa6c734 block/snapshot: Restrict set of snapshot nodes
331c08d300 s390: PCI: fix IOMMU region init
fc5afb1a92 roms/Makefile.edk2: don't pull in submodules when building from
           tarball
c5c9b1362d make-release: pull in edk2 submodules so we can build it from
           tarballs
220816989c hw/arm/boot.c: Set NSACR.{CP11,CP10} for NS kernel boots
783e7eb52c block/backup: fix backup_cow_with_offload for last cluster
e01ed1a1ae block/backup: fix max_transfer handling for copy_range
416a692e51 qcow2: Fix corruption bug in qcow2_detect_metadata_preallocation()
e9bb3d942e coroutine: Add qemu_co_mutex_assert_locked()
84f22c7285 block/qcow2: Fix corruption introduced by commit 8ac0f15f335
86b0f4022b blockjob: update nodes head while removing all bdrv
2d86df1f78 curl: Handle success in multi_check_completion
18e1b71937 curl: Report only ready sockets
0888ddac8e curl: Pass CURLSocket to curl_multi_do()
4be97ef966 curl: Check completion in curl_multi_do()
78ea94e389 curl: Keep *socket until the end of curl_sock_cb()
3648493495 curl: Keep pointer to the CURLState in CURLSocket
0694c489cd block/nfs: tear down aio before nfs_close
c9ffb12754 qcow2: Fix the calculation of the maximum L2 cache size
28a9a3558a libvhost-user: fix SLAVE_SEND_FD handling
9027d3fba6 target/arm: Don't abort on M-profile exception return in linux-user
           mode
38fb634853 target/arm: Free TCG temps in trans_VMOV_64_sp()
ad95e0573e iotests: Test blockdev-create for vpc
593beeaf81 iotests: Restrict nbd Python tests to nbd
eee776fbc0 iotests: Restrict file Python tests to file
819ba23575 iotests: Add supported protocols to execute_test()
4d9bdd3149 iotests: add testing shim for script-style python tests
97c478c355 vpc: Return 0 from vpc_co_create() on success
725dfa851f x86: do not advertise die-id in query-hotpluggbale-cpus if
           '-smp dies' is not set
57fdf4a13f pr-manager: Fix invalid g_free() crash bug
3361d03ff0 iotests: Test reverse sub-cluster qcow2 writes
6f1a94035b block/file-posix: Reduce xfsctl() use
c12adfd8f6 xen-bus: check whether the frontend is active during device reset...
b6cedc911e xen-bus: Fix backend state transition on device reset
7ebcd375ad pc: Don't make die-id mandatory unless necessary
4bfd496be3 target/alpha: fix tlb_fill trap_arg2 value for instruction fetch
499a5d6bb4 s390x/tcg: Fix VERIM with 32/64 bit elements
73a5bf4729 Revert "ide/ahci: Check for -ECANCELED in aio callbacks"
fbde196c30 dma-helpers: ensure AIO callback is invoked after cancellation

Signed-off-by: Julio Montes <julio.montes@intel.com>
2020-01-10 17:27:24 +00:00
Julio Montes
d34d66099f Merge pull request #2363 from Pennyzct/config_file_on_jailer
FC: jailer failed when importing new flag "--config-file"
2020-01-10 08:44:12 -06:00
Salvador Fuentes
8f5cb26eba Merge pull request #581 from vijaydhanraj/update_kata_acrn
doc: update how-to on Kata Containers with ACRN hypervisor
2020-01-09 14:59:12 -06:00
Julio Montes
cb559c1449 Merge pull request #896 from GabyCT/topic/test19
obs: Add ubuntu 19.04 testing
2020-01-09 14:59:11 -06:00
Salvador Fuentes
fc969c4993 Merge pull request #895 from jcvenegas/894-fix
release: tag and branch kata-containers repository
2020-01-09 14:57:51 -06:00
Vijay Dhanraj
a187c3806a doc: update how-to on Kata Containers with ACRN hypervisor
Update start-up guide on setting up kata containers with ACRN hypervisor.
The udpated guide is tested using KBL-NUC and addresses 2 parts,
	1. Fixes broken links.
	2. Adds a pre-requisite to enable MACVTAP for networking
	   in the Service OS.

Fixes: #580
Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2020-01-09 11:10:40 -08:00
Alice Frosi
3594855094 s390x: fix refactoring
On s390x we need to set the devno that's why we need a custom
appendBlkDevice function.

Fixes: #2384

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2020-01-09 16:29:20 +01:00
Fupan Li
8fbc673e68 Merge pull request #119 from quanweiZhou/add-test-case
add oci compatibility test case
2020-01-09 14:54:11 +08:00
Wei Zhang
290339da6b compatibility: keep oldstore for compatibility
Keep old store restore functions for keeping backward compatibility, if
old store files are found from disk, restore them with old store first.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2020-01-09 13:33:23 +08:00
Yang Bo
c4f15f1280 Merge pull request #91 from ericho/master
agent: Add unit tests for sandbox.rs
2020-01-09 12:51:41 +08:00
quanweiZhou
d2225334d9 agent: add oci compatibility test case
add oci compatibility test case for src/agent/oci/src/lib.rs
follow by Open Container Initiative Runtime Specification

Fixes: #118

Signed-off-by: quanweiZhou <quanweiZhou@linux.alibaba.com>
2020-01-09 11:14:24 +08:00
Penny Zheng
7dfc4e0219 linker: no such file linking error on AArch64
When using default cc linker, we will have segfault.
Debugging with `rust-gdb`, the specific error is as follows:
src/string/memcpy.c: No such file or directory.
Only changing linker with `aarch64-linux-musl-gcc`, the
`rust-agent` could be totally statically linked and run successfully.

Fixes: #107

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-01-09 11:08:23 +08:00
Penny Zheng
44b2caa2e5 AArch64: missing symbols on target aarch64-unknown-linux-musl
The __addtf3, __subtf3 and __multf3 symbols are used by aarch64-musl,
but are not provided by rust compiler-builtins.
For now, the only temporary but functional workaround accepted by rust
communities is to get them from libgcc.

Fixes: #107

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-01-09 11:06:04 +08:00
Penny Zheng
9621a7f3f5 ABI: only support arm 64-bit platform
We only support running Kata Containers on AArch64.

Fixes: #107

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2020-01-09 09:59:20 +08:00
Eric Ernst
f338363a3e Merge pull request #844 from egernst/kata-deploy-workflow
add workflow for testing kata-deploy
2020-01-08 14:18:38 -08:00
Eric Ernst
b023d8d634 kata-deploy: use clh instead of cloud-hypervisor
Let's use clh consistently.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2020-01-08 11:17:14 -08:00
Eric Ernst
59a34bb1d5 static-build: drop NEMU, add CLH
We still were adding NEMU binaries - remove, and make sure we create a
kata-clh file for kata-deploy binaries.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2020-01-08 11:17:14 -08:00
Eric Ernst
6c9db9b853 kata-deploy-action: test CLH
Make sure we test CLH

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2020-01-08 11:17:14 -08:00
Eric Ernst
f184afc4b8 testing: add workflows for testing kata-deploy
1. AKS based action updated to be run from either packaging or remote
repository. We will only clone kata-deploy for yaml/scripts/tests if we
are running the action outside of the packaging repo. If in packaging,
the bits are already included. Misc. cleanup as well.

2. Workflow introduced which leverages the updated AKS action. This will
allow testing of packaging changes to kata-deploy.

The workflow itself uses the following github action: xt0rted/slash-command-action

The workflow will create a kata-deploy container image based off of the latest
release, utilizing the latest released Kata artifacts off of master. It
will then use the AKS kata-deploy GitHub action.

Users with admin access on the repo can trigger this test by:
/test kata-deploy

Fixes: #845

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2020-01-08 11:17:14 -08:00
Gabriela Cervantes
c14ded39c7 obs: Add ubuntu 19.04 testing
Now that we have obs packages for ubuntu 19.04, we should add it in the
testing script.

Fixes #884

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2020-01-08 10:47:27 -06:00
Julio Montes
e8e4d75a91 Merge pull request #878 from devimc/topic/qemu/4.2.0
fixes for qemu 4.2.0
2020-01-08 08:14:49 -06:00
Wei Zhang
4a298cb9b7 persist: address comments
Address some comments.

Signed-off-by: Wei Zhang <weizhang555@gmail.com>
2020-01-08 10:03:56 +08:00
Wei Zhang
d33b154dd7 persist: add interface for global read/write
Add two interfaces for fs storage driver for supporting global writing
and reading, which is used by ACRN.

Signed-off-by: Wei Zhang <weizhang555@gmail.com>
2020-01-08 10:03:56 +08:00
Jose Carlos Venegas Munoz
3ce2d362a3 release: tag and branch kata-containers repository
Now CI depends on this repository, needed to make work stable
branches starting stable-1.10

Fixes: #894

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2020-01-07 15:51:03 +00:00
Wei Zhang
ed4a1954e4 persist: remove unused struct
Remove unused struct from persist structures.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-12-30 18:42:15 +08:00
Wei Zhang
8e88859ee4 persist: remove all usage of VCStore
Remove VCStore usage from all modules

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-12-30 18:42:15 +08:00
Wei Zhang
01b4a64be2 persist: remove VCStore from sandbox/apis
Remove VCStore usage from sandbox.

Signed-off-by: Wei Zhang <weizhang555@gmail.com>
2019-12-30 18:41:02 +08:00
Wei Zhang
b63e517f6d persist: replace sandbox lock with newstore.Lock
Replace rLockSandbox and rwLockSandbox with new store lock functions.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-12-30 18:41:02 +08:00
Wei Zhang
508101bc0f persist: fix vmtemplate storage leak
Fix VM template storage leak by adding delete operations, we need to
delete sandbox storage dirs when stop VM.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-12-30 18:41:02 +08:00
Wei Zhang
29b55ab88b persist: remove VCStore from container
Remove VCStore from container struct.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-12-30 18:41:02 +08:00
Wei Zhang
633748aa76 persist: remove VCStore from hypervisor
Remove usage of VCStore from hypervisors.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-12-30 18:39:39 +08:00
Wei Zhang
687f2dbe84 persist: move "newstore" out of experimental
Fixes #803

Move "newstore" features out of experimental feature list, from this
commit "newstore" will be default enabled.

Signed-off-by: Wei Zhang <weizhang555@gmail.com>
2019-12-30 18:39:39 +08:00
Fupan Li
3ea3d3201b Merge pull request #2371 from bergwolf/ut
ut: fix make test failures
2019-12-27 08:40:18 +08:00
Peng Tao
3ed472dc8d store: UT tmp path should be random
Otherwise we might end up using the previously created store instead.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-26 00:38:59 -08:00
Peng Tao
5617120649 nsenter: skip ut on non-root
nsenter needs root privilege to run.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-26 00:38:54 -08:00
Peng Tao
e5b04a5bf2 ut: fs test should set RunStoragePath
Otherwise it failes with permission errors.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-26 00:32:37 -08:00
Peng Tao
9bf0d67fdd ut: direct factory needs to set VCStorePrefix
Otherwise it fails with permission errors.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-26 00:32:37 -08:00
Peng Tao
4c35d0911a vc: set store RunVMStoragePath for ut
Otherwise we fail ut on failures like:

=== RUN   TestCloudHypervisorCleanupVM
--- FAIL: TestCloudHypervisorCleanupVM (0.00s)
    clh_test.go:191: cloudHypervisor.cleanupVM() expected error != open /run/vc/vm: permission denied
    clh_test.go:200: Unexpected error = stat /run/vc/vm/cleanVMID: permission denied
=== RUN   TestClhCreateSandbox
--- PASS: TestClhCreateSandbox (0.00s)
=== RUN   TestClooudHypervisorStartSandbox
time="2019-12-25T00:48:47-08:00" level=error msg="trace called before context set" source=virtcontainers subsystem=cloudHypervisor type=bug
--- FAIL: TestClooudHypervisorStartSandbox (0.00s)
        Error Trace:    clh_test.go:266
        Error:          Received unexpected error:
                        mkdir /run/vc/vm: permission denied

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-26 00:32:37 -08:00
Peng Tao
3deb24e5de cli: flush coverage report in defer function
Do not flush it atexit(), where the test report file might be already
closed and it causes go test failure like:

PASS
testing: can't write /tmp/go-build146132196/b001/testlog.txt: close /tmp/go-build146132196/b001/testlog.txt: file already closed
FAIL    github.com/kata-containers/runtime/cli  4.256s

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-26 00:32:37 -08:00
Peng Tao
f56d70ccd6 vc: UT should set VCStorePrefix
Otherwise we fail to run it with non-root user with errors like:
`mkdir /var/lib/vc/uuid: permission denied`

Fixes: #2370
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-26 00:32:37 -08:00
Penny
b9120b2bb1 Merge pull request #2373 from bergwolf/image
qemu: add disable_image_nvdimm option
2019-12-26 10:17:52 +08:00
Peng Tao
7c7a4a3b11 annotations: add disable_image_nvdimm
So that users can use annotations to set it.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-25 00:39:37 -08:00
Peng Tao
652bb76dde cli: syscall return value check is wrong
ret is uintptr and always >= 0. errno is enough for error checking.
This is causing lint error:
/home/vagrant/workplace/golang/src/github.com/kata-containers/runtime/virtcontainers/utils
cli/kata-check.go:446:20: SA4003: no value of type uintptr is less than 0 (staticcheck)
                if errno != 0 || ret <= 0 {
                                 ^

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-24 23:53:29 -08:00
Peng Tao
a8717286ca qemu: add disalbe_image_nvdimm option
To control whether an image rootfs is used as nvdimm device or just
plain virtio-block device.

Fixes: #2372
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-24 23:16:48 -08:00
Peng Tao
dd5b446997 qemu: refactor appendImage
Do not implement in each arch code. We should have a generic
implementation instead.

-. amd64 and arm64 uses nvdimm
-. ppc64le and s390x uses virtio-blk

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-24 20:13:50 -08:00
GabyCT
4084b7d130 Merge pull request #574 from amshinde/update-priv-doc-crio
privileged: Update docs for privileged mode with crio
2019-12-23 10:15:55 -06:00
Jose Carlos Venegas Munoz
687a524a05 Merge pull request #876 from jongwu/dmesg
config: enable printk_time for arm64.
2019-12-23 09:57:13 -06:00
James O. D. Hunt
8488286937 Merge pull request #883 from Pennyzct/LTS_v5.4.3
kernel: Enable new LTS 5.4.3 on AArch64
2019-12-23 08:44:10 +00:00
Julio Montes
1296f6f1ad Merge pull request #2368 from jcvenegas/clh-unit-test
clh: Increase unit test using mock testing
2019-12-20 12:58:18 -06:00
Jose Carlos Venegas Munoz
a2d3f9f32d vitiofsd: Add virtiofsd interaface
In oderder to make unit testing simpler,
lets add an interface that could be mocked.

Let hypervisor have a instance of virtiofsd interface,
and this makes a loose dependency to allow mock testing.

With the inteface is possible to add startSandbox unit test:

- use utils.StartCmd to mock call to start hypervisor process.

- Add unit test for startSandbox.

Fixes: #2367

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-20 17:21:03 +00:00
Jose Carlos Venegas Munoz
2a085ee67b clh: virtiofsd: check path is not empty
Check if path is not empty this makes, this help
unit test know why the function failed.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-20 17:21:03 +00:00
Jose Carlos Venegas Munoz
af5c9c2320 clh: hypervisor: Do not set 9p values for virtiofs
9p values are ignored by virtiofs, but this should be
not changed on validation to allow have unit test with
virtiofs config.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-20 17:21:03 +00:00
Jose Carlos Venegas Munoz
6a10cd960d clh: test: add unit test
Add unit test for clh.

- Check endpoint has valid values for CH.
- Add unit tests
- Add force flag to ignore cleanup errors.
- Add unit tests.
- Fail if hypervisor ID is empty.
- Add createSandbox uni test

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-20 17:19:52 +00:00
Jose Carlos Venegas Munoz
8a439eab9d clh: add Client Interface and bootVM test
Add interface with the same methods of client,
this will help to decouple the implementation
and help use to do mock testing.

Add Mock client and add bootVM unit test

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-20 17:19:19 +00:00
Julio Montes
2572cbd7eb Merge pull request #887 from Pennyzct/build_fc_kernel
FC: ELF format kernel image unsupported with firecracker on AArch64
2019-12-20 06:57:22 -06:00
Penny Zheng
09198eed84 FC: jailer failed when importing new flag "--config-file"
When we used jailer to launch firecracker, kata container failed due
to the following causes:
1. new flag `--config-file` belongs to the jailed firecracker,
so, adhering to the `end of command options` convention, we need to
give `--config-file` a prefix `--`.
2. The path of the config file(`fcConfig.json`) should be also
relative to the jailed firecracker.
3. Since we do the configuration before func `fcInit` now, we also need
to bring `jailer check` ahead.
4. The config file should be umounted and cleaned up.

Fixes: #2362

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-12-19 05:47:43 +00:00
Jose Carlos Venegas Munoz
a198efcf1d Merge pull request #2366 from GabyCT/topic/updateurl
versions: Update cloud hypervisor url
2019-12-18 14:45:19 -06:00
Gabriela Cervantes
661956f5bc versions: Update cloud hypervisor url
This updates the cloud hypervisor url.

Fixes #2365

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-12-18 12:46:42 -06:00
James O. D. Hunt
98059586a0 Merge pull request #890 from GabyCT/topic/fixclh
kata-static: Add sudo while building cloud hypervisor docker image
2019-12-18 10:10:28 +00:00
Penny Zheng
2ef9bbc16a FC: ELF format kernel image unsupported with firecracker on AArch64
The bootloader in firecracker on ARM platform only supports kernel
in Portable Executable(PE) format.
So we need `build-kernel.sh` to provide correct kernel image format
when parameter `hypervisor_target`, `-t`, defined with firecracker.

Fixes: #886

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-12-18 09:44:56 +08:00
Gabriela Cervantes
ca6df8510c kata-static: Add sudo while building cloud hypervisor docker image
If we want to run the build.sh by using a user this is failing by saying
that `failed to dial gRPC: cannot connect to the Docker daemon...
/var/run/docker.sock: connect: permission denied`. This PR fixes that issue.

Fixes #889

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-12-17 16:44:54 -06:00
Archana Shinde
3ea682d6e0 Merge pull request #2320 from amshinde/fix-rootless-net-none
rootless: fix rootless for case net=none
2019-12-16 14:21:38 -08:00
Archana Shinde
b96c7e5abe rootless: fix rootless for case net=none
When kata-runtime was invoked as rootless by podman with
net=none, an empty net namespace path is provided.
kata-runtime was then trying to create a new network namespace
and bind-mounting it under /var/run/netns, resulting in a permission error.

Instead, with this commit, the runtime checks if it is
running rootless and instead creates network namespace bind mount
under rootless directory instead.

Fixes #2319

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-12-16 12:26:57 -08:00
Peng Tao
3de4bdd508 Merge pull request #2285 from teawater/update_a
vendor: Update github.com/kata-containers/agent
2019-12-16 20:21:23 +08:00
Penny Zheng
59dc61df5b kernel: Enable new LTS 5.4.3 on AArch64
Linux has embraced another LTS kernel version v5.4.x.
If we, AArch64, update stable guest kernel version
to v5.4.x, we could get rid of huge chunkes of backport
patches under patches/4.19.x/.
Except following configs are penny-defined turned on/off,
all the other are sort of `built-in` defined or inherited
from v4.19.x.
1. CONFIG_IO_URING = y
This option enables support for the io_uring interface.
2. CONFIG_RODATA_FULL_DEFAULT_ENABLED = n
Apply read-only attributes of VM areas to the linear
alias of the backing pages as well.
3. CONFIG_ARM64_TAGGED_ADDR_ABI = n
When this option is enabled, user applications can opt in to
a relaxed ABI allow virtual tagged addresses to be passed to
system calls as pointer arguments.
4. CONFIG_ARM64_PTR_AUTH = n
Pointer authentication provides instructions for signing and
authenticating pointers against secret keys, which can be used to
mitigate Return Oriented Programming (ROP) and other attacks.

Fixes: #882

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-12-16 17:41:07 +08:00
Hui Zhu
a215f87e23 vendor: Update github.com/kata-containers/agent to handle hvsock issue
Update github.com/kata-containers/agent to handle hvsock issue.

Shortlog:
    33f3208 client.go: HybridVSockDialer: Close dup fd after receive packet
    74a3b95 release: Kata Containers 1.10.0-rc0
    afd0871 ci: install docker before configure
    c502552 client.go: HybridVSockDialer: Check return size n of unix.Recvfrom
    f8e4ce8 client.go: HybridVSockDialer: Change Read EOT to recv peek
    5b64d42 agent: get current cpuset from /sys/devices/system/cpu/online
    183a24a release: Kata Containers 1.10.0-alpha1
    1ee8516 config: add option to control hotplug timeout of block devices
    40567f6 release: Kata Containers 1.10.0-alpha0
    19bee57 agent: connect debugging console in a specific vsock port
    8361150 docs: Add enable services and installation steps for TRACING.md
    a4f7373 agent: fix pause bin on musl
    f9f129a docs: Add missing steps at TRACING.md
    d3e66bf tracing: Wrapper for tracing functions
    7a7dba7 network: ensure parent directories exist
    455f728 tracing: Generate an alias for opentracing.Span
    5f302e5 agent: Revert "client: remove the parameter of 'enableYamux'"
    717ee24 client: remove the parameter of 'enableYamux'
    d387c77 vendor: Update github.com/syndtr/gocapability/capability
    b3d737b vendor: update libcontainer to 1.0.0-rc9
    6eac713 release: Kata Containers 1.9.0-rc0

Fixes: #2284

Signed-off-by: Hui Zhu <teawater@antfin.com>
2019-12-16 14:52:12 +08:00
Xu Wang
39d7a144a9 Merge pull request #2333 from bergwolf/configpath
shimv2: support runtime config path via annotation
2019-12-16 12:37:28 +08:00
Hui Zhu
68fc9abc5e Merge pull request #2346 from bergwolf/hostdir
shimv2: clean up properly if vmm quits unexpectedly
2019-12-16 10:34:37 +08:00
Xu Wang
af3a710921 Merge pull request #2356 from teawater/update_sys
vendor: Update golang.org/x/sys
2019-12-15 16:31:14 +08:00
Peng Tao
1c11fe20ba shimv2: support runtime config path via annotation
So that user can have per pod runtime config which is easiler
to manage in some cases.

Fixes: #2332
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-14 20:13:07 -08:00
Hui Zhu
6cd9b3b0b6 vendor: Update golang.org/x/sys
Update golang.org/x/sys to ac767d655b305d4e9612f5f6e33120b9176c4ad4
that same with agent.

Shortlog for golang.org/x/sys:
    ac767d6 windows/svc/mgr: add ability to set a reboot message and command when a service fails
    1b2967e unix: implement RFCOMM sockets on Linux
    7b495ad unix: update Dockerfile to Go 1.11beta1
    3c6ecd8 windows: add missing file attributes
    ce36f38 unix: regenerate syscall wrappers for linux/ppc64{,le}
    151529c windows, windows/svc/mgr: add ability to modify service recovery settings.
    7138fd3 unix: do not return non-nil error for 0 errno in FcntlInt
    c4afb3e unix: fix TestUtimesNanoAt for filesystems with 1-second resolution time stamps
    a200a19 unix: don't check atime in TestUtimesNanoAt
    63fc586 unix: use private copy of ustat_t on Linux
    ad87a3a unix: check faccessat flags parameter on Linux
    fc8bd94 unix: don't use deprecated syscalls on linux/arm64
    f24d3d4 unix: add Faccessat on Solaris
    6c888cc windows: replace uintptr in crypto structs
    8014b7b windows: follow convention for generated code comment
    8883426 plan9: follow convention for generated code comment
    9e6071e unix: follow convention for generated code comment
    56ede36 unix: add rtc defines and types
    8ee9f3e unix: add Faccessat on NetBSD
    f4b713d unix: add Faccessat on OpenBSD
    a9e25c0 unix: update Dockerfile to Ubuntu 18.04, Linux 4.17, and Go 1.10.3
    bff228c windows: update TOKEN_ALL_ACCESS according to WinNT.h
    24c297a unix: support compiling with gccgo on linux/386
    7c1e4f3 unix: drop use function stub for gccgo
    9527bec cpu: fix gccgo build
    bc2ef10 cpu: add gccgo implementation
    538ab54 cpu: introduce and export type CacheLinePad
    c11f84a unix: don't check atime in TestStatx
    d4cedef unix: make Nfgenmsg a type definition
    3135538 unix: add nftables defines and types
    b269ba2 unix: fix TestXattr on android
    04b8398 unix: fix or skip failing tests on android and iOS
    e2c7578 unix: delete TestDevices for *BSD and Darwin
    56ad15c windows: add QueryServiceStatusEx function
    77b0e43 unix: add symlink-safe *xattr functions on darwin
    f3b0f5f unix: skip TestStatx if the operation is not permitted
    028bb33 unix: delete TestDevices test for Solaris
    88eb85a unix: add tests for *xattr functions
    dc67e5b windows: address error reported by vet
    0b6bef9 unix: add {get,set,remove,list}xattr on darwin
    7f59abf unix: update openbsd/amd64 to OpenBSD 6.3
    89da893 unix: exclude AUDIT_RECORD_MAGIC constant on darwin
    7c87d13 unix: add tpacket types and constants on Linux
    d0faeb5 unix: fix TestSCMCredentials to not fail when root
    9950ad1 unix: add statfs and filesystem magic constants on Linux
    7dfd129 windows: address vet reports
    64746a4 unix: address vet's finding of  wrong argument size
    7db1c3b cpu: use t.Fatal instead of t.Fatalf
    6f686a3 unix: add ErrnoName and SignalName
    78d5f26 windows/svc: correct MOVL instruction in sys_amd64.s
    4adea00 cpu: new package
    f67ecc1 unix: use Fstatat for Stat on linux/amd64
    cbbc999 unix: use pselect on amd64 to satisfy Android
    bb9c189 unix: 32-bit MIPS splice system call returns int, not int64
    79b0c68 unix: add Linux block device ioctl types and constants
    a2a4594 unix: avoid extra syscall on send/recvmsg on Linux
    3ccc7e5 unix: fix typos in linux/types.go.
    9b00609 unix: add tcp_md5sig on Linux
    b126b21 unix: re-export Fsid and Sigset_t Val member on Linux
    ecfd8b5 unix: implement getrtable/setrtable syscalls on OpenBSD
    2f57af4 unix: add wrapper around perf_event_open on Linux
    2281fa9 unix: don't export any padding/alignment fields on all platforms
    f6f3529 unix: add a step to mkall.go that generates ABI headers to be referenced from types.go
    3b87a42 unix: update Dockerfile to Linux 4.16 and Go 1.10.1
    1d206c9 unix: add FcntlInt
    fcb792c unix: unify Getsockopt*
    f67933e unix: solicit EPERM via wrong PID in creds test.
    378d26f unix: add CRTSCTS on netbsd and openbsd
    2de2067 unix: add sendfile support on Solaris
    13d03a9 unix: add GetsockoptLinger and GetsockoptTimeval
    91ee8cd unix: use strings.IndexByte instead of for loops
    1e3c777 unix: don't export padding fields on Darwin
    c488ab1 unix: add Fadvise on linux/{arm64,mipsx.mips64x,ppx64x,sparc64}
    ee8db00 unix: add Fadvise on NetBSD
    bb729a5 unix: fix TestFchmodat on Illumos
    6416052 unix: enable TestFchmodat for all Unices
    dd203b8 unix: add Fchmodat on NetBSD
    7ceb54c unix: add Fchmodat on DragonflyBSD
    f8f1a95 unix: add Fchmodat on OpenBSD
    d8e400b unix: fix example
    01acb38 plan9, unix, windows: add paragraph breaks in docs
    0deb464 unix: add Exec call
    2f1e207 unix: add IFLA attributes on linux/sparc64
    cc7307a unix: add Fstatat on Darwin
    5c2edb5 unix: add Fstatat on OpenBSD
    89ac7f2 CONTRIBUTING.md: remove note about not accepting Pull Requests
    932fb22 unix: add Fstatat on NetBSD
    2477406 unix: add Fstatat on FreeBSD
    bcaab34 unix: don't export padding fields on DragonflyBSD
    0edb963 unix: add Fstatat on DragonflyBSD
    6035cb0 unix: don't export padding fields on Solaris
    591c159 unix: add Fstatat on Solaris
    8c0ece6 unix: extend rlimit test on Linux
    c28acc8 unix: fix seek while compiling with gccgo under arm and 386
    7dca6fe plan9: use bytes.IndexByte instead of a for loop
    e64a828 unix: use bytes.IndexByte instead of a for loop
    349b81f unix: skip SchedAffinity test on single CPU system
    dd2ff4a unix: fix nil pointer dereference in Select on linux/{arm64,mips64x}
    f6cff07 windows/registry: improve ReadSubKeyNames permissions

Fixes: #2284

Signed-off-by: Hui Zhu <teawater@antfin.com>
2019-12-15 10:53:48 +08:00
GabyCT
d1cd6c3e2e Merge pull request #880 from GabyCT/topic/removefedora28
obs: Remove fedora 28 obs packages
2019-12-13 15:59:41 -06:00
Julio Montes
39261ae3e6 Merge pull request #873 from devimc/topic/snap/fixSnap
snap: fix how latest stable version is obtained
2019-12-13 15:40:06 -06:00
GabyCT
449a3a9a14 Merge pull request #2344 from jcvenegas/test-api-fixes-clh
clh: update to latest master
2019-12-13 15:22:06 -06:00
Gabriela Cervantes
34d2c8136c obs: Remove fedora 28 obs packages
Fedora 28 has come to end of life status which makes not possible to
retrieve the repositories while performing an update. This PR removes
this distro with this version so we not longer create and test obs packages
for fedora 28.

Fixes #879

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-12-13 11:59:50 -06:00
Julio Montes
ce2acccd4f qemu/patches: add patches for qemu 4.2.0
Some patches are still needed in qemu 4.2.0

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-12-13 17:46:29 +00:00
Julio Montes
7c13dc3842 static-build: update blacklist for qemu 4.2.0
spapr-rtas.bin is no longer part of qemu 4.2.0, so it should be removed from
blacklist.

fixes #877

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-12-13 17:12:30 +00:00
Jose Carlos Venegas Munoz
9c3151e5ed clh: remove not requried values
- ip and mask are not needed anymore.
- fs queues are set by cloud-hypervisor.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-13 17:02:18 +00:00
Jose Carlos Venegas Munoz
e9a852dd79 clh: update api calls for latest master
cpu api changed, update to latest API

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-13 16:44:50 +00:00
Jose Carlos Venegas Munoz
1a7539c1f5 clh: update client
update api based latest master.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-13 16:44:50 +00:00
Jose Carlos Venegas Munoz
553237884a versions: update clh to v0.4.0
Update to latest master code.

Changes:

fa0fdc6 cargo: Update Cargo.lock for the 0.4.0 release
cec884e release: v0.4.0
6444e29 docs: Add CPU hot plug documentation
a002093 build(deps): bump anyhow from 1.0.23 to 1.0.25
43f0478 build(deps): bump thiserror from 1.0.6 to 1.0.9
664431f vsock: vhost_user: vfio: Fix potential host memory overflow
1e97d14 README: Update for newer distribution support
e8e21ae README: Update the --cpus command line examples
a40a70a ci: Rely on latest virtiofsd version
f0b7412 vmm: device_manager: Add all virtio devices to the migratable list
37557c8 vmm: vm: Implement the Pausable trait
9756fc2 vmm: cpu_manager: Implement the Pausable trait
35dd152 vmm: device_manager: Implement the Pausable trait
a122da4 vm-virtio: vhost: Implement the Pausable trait for all vhost-user devices
dae0b2e vm-virtio: Implement the Pausable trait for all virtio devices
35d7721 vmm: Convert virtio devices to Arc<Mutex<T>>
5450de0 cargo: Do not run fmt on anyhow's build code
0361df4 vm-device: Initial Migratable trait
36daf9c ci: Skip testing RFC or WIP PRs
64c5e3d vmm: api: Adjust FsConfig for OpenAPI
4bfd51c vmm: api: Match VhostUserBlkConfig defaults between CLI and HTTP API
1c2587f vmm: api: Match VhostUserNetConfig defaults between CLI and HTTP API
5e0bbf9 vmm: Don't factorize vhost-user configurations
793327c vmm: api: Make ConsoleConfig default match between CLI and HTTP API
cc08c44 vmm: api: Make MemoryConfig default match between CLI and HTTP API
5a72225 vmm: api: Update CpuConfig name to match the internal name
f7c215d cli: Fix default CPU argument
59ae01f ci: Cancel older builders on Jenkins
c61104d vmm: Port to latest vmm-sys-util
4c92f89 ci: Add OpenAPI validation
93bd88e ci: Simplify travis.yml
d42ef18 ci: Offload cargo tests to the worker node VM
ee528ae vmm: api: Make FsConfig defaults match between CLI and HTTP API
befd342 vmm: api: Make NetConfig defaults match between CLI and HTTP API
eff78f7 resources: Prevent kernel config interactive shell from showing up
99e608c openapi: Fix schema
f994665 vmm: Reduce the minimum IRQ constant
ba59c62 vmm, devices: Remove hardcoded IRQ number for GED device
ce1bd9c resources: turn on CONFIG_ACPI_REDUCED_HARDWARE_ONLY
0374c3d build(deps): bump ssh2 from 0.5.0 to 0.6.0
aa94e9b Revert "vmm: api: Modify FsConfig to be OpenAPI friendly"
9b1ba14 vmm: Delegate device related ACPI DSDT table work to DeviceManager
60e6609 vmm: Delegate CPU related ACPI tables to CpuManager
defc5dc vmm: api: Modify FsConfig to be OpenAPI friendly
66e00ce ci: Extend VFIO integration test
59d0171 vmm: Remove kernel based IOAPIC handling from the device manager
afea6a1 vmm: Stop initialising kernel based IOAPIC/PIC
9b1cb96 vmm: Remove pin based interrupt setup for virtio devices
72fb687 vmm: Check for required capabilities
904b1ea build(deps): bump unicode-width from 0.1.6 to 0.1.7
fcf92d8 tests: Add rebooting to the CPU hotplug test
f98b16f vmm: Update the configuration to preserve hot-plug CPUs after reboot
1722708 vmm: Switch to storing VmConfig inside an Arc<Mutex<>>
c063bb8 vmm: acpi: Make GED interrupt edge triggered
e1af17d vmm: Restore tty to canonical mode when SIGTERM or SIGINT received
44d026b build(deps): bump serde_json from 1.0.43 to 1.0.44
a1285ea build(deps): bump cc from 1.0.47 to 1.0.48
23929f4 vfio: Don't override MSI Enable bit through VFIO ioctl
1dfd60b vfio: use correct flags to disable interrupts
5208ff8 vmm: Detect and handle AMD SME (Secure Memory Encryption)
dcfd6ff build(deps): bump serde_json from 1.0.42 to 1.0.43
08258d5 vfio: pci: Allow multiple devices to be passed through
4115fa8 vfio: pci: Update irqfd registration
1379abb pci: msi: Fix MSG_CTL update through 32 bits write
c81e808 docs: Update instructions regarding virtiofsd
17badfb vmm: cpu: Call vcpu configure() on the vCPU thread
1350306 api: Fix OpenAPI specification entries
e1ff142 tests: Remove MSI only test from test_serial_off
e083064 tests: Add integration test for hotplugging vCPUs
66a31c1 vmm: acpi: Upon GED interrupt notify on all vCPUs
48bf141 vmm: Trigger a hotplug device notification when resizing
b629727 vmm: acpi: Add a CTFY method to notify on all CPU objects
ae9359c vmm: acpi: Create the CPU entries in the DSDT for all vCPUs
791ca33 vmm: device_manager: Add ability to notify via GED device
623755c devices: Add ACPI GED device
7ad68d4 vmm: device_manager: Allocate I/O port for ACPI shutdown device
86339b4 vmm: Add HTTP API to resize the VM
e7d4eae vmm: cpu: Add support for starting more vCPU threads
0ef9999 vmm: cpu: Support only partially configuring the vCPU
c8b3041 vmm: openapi: Update OpenAPI for CpuConfig struct
b6801e3 vmm: cpu: Refactor vCPU thread starting
66d5163 vmm: cpu: Encapsulate vCPU state into its own struct
ea19bb0 tests: Add a test to check that the boot vs max cpus work
1bbe48b vmm: acpi: Mark non-boot vCPUs as disabled in the MADT table
4bc8635 tests: Use new "--cpus" syntax for integration tests
82bc07c vmm: Add boot and max vCPU handling to command line parser
7543e00 vmm: Use new CpuManager accessor to get boot vCPUs
df09078 vmm: cpu: Introduce concept of maximum vs boot vCPUs in CpuManager
669d9a8 vhost_user_backend: fix memory region offsetting
d378da6 build(deps): bump vcpkg from 0.2.7 to 0.2.8
b1cfdc7 build(deps): bump syn from 1.0.9 to 1.0.11
0f21781 cargo: Bump the kvm and vmm-sys-util crates

Fixes: #2343

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-13 16:43:56 +00:00
James O. D. Hunt
76f9b34b59 Merge pull request #2273 from Pennyzct/cache_server
cache-factory: a few bug fix
2019-12-13 09:08:21 +00:00
Archana Shinde
47a87ceb94 privileged: Update docs for privileged mode with crio
cri-o now supports running privilged containers without passing devices
from the host to the container.

Fixes #529

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-12-12 09:14:54 -08:00
Jianyong Wu
a407c9291c config: enable printk_time for arm64.
As no printk time enabled for arm64, printk and dmesg will show
without timestamp.
This patch enables printk_time in kernel for arm64.

Fixes: #875
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2019-12-12 23:33:28 +08:00
Julio Montes
5877ab78d7 snap: fix how latest stable version is obtained
Use `sort -V -r` to sort versions and use a regexp to
make sure the tag has the right format, since not all
tags follow Semantic Versioning 2.0.0.

fixes #872

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-12-11 19:23:00 +00:00
Archana Shinde
55e81c2d39 Merge pull request #871 from amshinde/allow-read-only-image
qemu: Patch qemu to support image without write access.
2019-12-11 10:43:29 -08:00
Julio Montes
e76cf80b50 Merge pull request #869 from devimc/topic/snap/fixSnap
snap: fix snap in launchpad
2019-12-11 11:58:03 -06:00
Peng Tao
6eae033f48 shimv2: cleanup container if not found
Shutdown API relies on it being cleaned up in order to proceed.
Otherwise it fails silently and shimv2 process never quits.

This can be triggered by killing the vmm while pod is running.

Fixes: #2345
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-11 06:06:11 -08:00
Fupan Li
d10adfdc03 Merge pull request #2200 from Pennyzct/fc_launch_on_config
FC: introduce `--config-file` to bypass API ready state
2019-12-11 16:30:55 +08:00
Peng Tao
743309cdc9 vc: stop container should change container state at last
Otherwise if we fail to stop it, container state is set as StateStopped.
And future force stop will just be ignored. Then when we force delete
the container, we are deleting it without actually cleaning up container
resources especially the host shared mounts, which would be removed by
agent cleanup code and we endup removing container volume contents
unexpectedly.

Fixes: #2345
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-10 22:16:56 -08:00
Salvador Fuentes
e3115e344e Merge pull request #2342 from jcvenegas/clh-update-client-using-versions
clh: client: update acording to versions.yaml
2019-12-10 16:24:17 -06:00
Julio Montes
43a6e67e70 snap: overwrite Makefile variables
Overwrite Makefile variable `DISTRO` in order to
build rootfs and initrd images with the right distro.

fixes #868

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-12-10 21:28:19 +00:00
Julio Montes
bfe65e0dc5 kernel: make get_config_version quiet
`get_config_version` should not log anything because it's used
by functions that print a string as return value, hence its return value
can be tainted, i.e `get_config_version`.

fixes #867

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-12-10 21:28:19 +00:00
Archana Shinde
810a528096 Merge pull request #2325 from tedyu/store-state-err
vc: Check error return from storeState
2019-12-10 13:24:44 -08:00
GabyCT
9ddf91d1f2 Merge pull request #2328 from jcvenegas/2327-fix
makefile: honor virtiofs config for default config
2019-12-10 14:21:18 -06:00
Archana Shinde
076cfa9b6a qemu: Patch qemu to support image without write access.
Modify existing patch to include EACCES condition to account for files
that do not have write access to be used as a memory backend.
With this not-only files on a read-only filesystem, but files without
write access on a read-write filesystem can be used as a memory
backend in qemu.
This will alow the image to be used read-only by a rootless user as
well.

Fixes #870

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-12-10 11:56:01 -08:00
Jose Carlos Venegas Munoz
efb611aa65 clh: client: update acording to versions.yaml
Instead of point to master use the version defined
in versions.yaml

Fixes: #2341

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-10 19:53:37 +00:00
Julio Montes
d0e30ef11f Merge pull request #2280 from jongwu/cache_mode
virtiofs: add default value for virtioFsCache type.
2019-12-10 08:14:19 -06:00
Archana Shinde
01a6b6b82e Merge pull request #864 from egernst/fixup
kata-deploy: action: take updated yaml paths into account
2019-12-09 22:47:55 -08:00
Eric Ernst
b27e721f45 kata-deploy: action: take updated yaml paths into account
Since kustomize was introduced, we need to take into account the new
paths for our kata-deploy yamls.

Fixes: #865

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-12-09 20:00:33 -08:00
Archana Shinde
ac5846dcde Merge pull request #861 from amshinde/fix-unbound-variable
kernel: checkout patched based on kata_version
2019-12-09 16:17:34 -08:00
Jose Carlos Venegas Munoz
e2782dafe1 test: remove not useful tests
This test is not executed at all and it is problematic when
tags are not updated.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-09 22:14:24 +00:00
GabyCT
9049395de8 Merge pull request #2338 from katabuilder/1.10.0-rc0-branch-bump
# Kata Containers 1.10.0-rc0
2019-12-09 15:19:34 -06:00
Archana Shinde
0dbd00b19e kernel: checkout patched based on kata_version
NEW_VERSION may be unbound whereas kata_version should be defined
following manual release process docs and while using github actions.
Use kata_version instead to checkout correct version of patches.
Check if kata_version is not empty before doing so,
as the release may be triggered for master as well.

Fixes #857

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-12-09 13:02:12 -08:00
Eric Ernst
29c3374116 Merge pull request #859 from katabuilder/1.10.0-rc0-branch-bump
# Kata Containers 1.10.0-rc0
2019-12-09 11:46:24 -08:00
GabyCT
dbbf16082d Merge pull request #389 from katabuilder/1.10.0-rc0-branch-bump
# Kata Containers 1.10.0-rc0
2019-12-09 13:01:21 -06:00
Jose Carlos Venegas Munoz
851db2708e Merge pull request #575 from egernst/CLH-docs
arch: add virtualization specific document
2019-12-09 12:37:23 -06:00
katacontainersbot
abaa45068f release: Kata Containers 1.10.0-rc0
- versions: bump firecracker version
- clh: use http client
- rootless: Disable vhost-net for rootless
- compatoci: Add a SetLogger call
- virtiofs: stop sandbox when virtiofsd quits
- vc: Remove device when AddDevice encounters error
- kernel: update to 4.19.83
- Cloud Hypervisor: driver update number 2
- vc: Use map to represent ignoredMounts
- Fc comment
- vc: Check return value from os.MkdirAll in virtiofsdArgs
- vc: Drop Sandbox#Pause and Sandbox#Resume
- vc: Use map built-in accessor to find container in Sandbox#GetContainer
- Makefile: fix suspicious line
- k8s: fix wrong number cpus after killing a container
- vc: Utilize map for newMounts to speed up replaceOCIMountSource
- vc: Sandbox#getAndSetSandboxBlockIndex shouldn't alter BlockIndex in case of error
- virtcontainers: rename GetOCISpec to GetPatchedOCISpec
- tracing: Unbreak tracing test
- fc.go: Set firecracker log level to debug if hypervisor.enable_debug …
- virtcontainers: honour ContainerConfig struct comment and don't save OCI spec
- virtcontainers: improve algorithm to find containers
- Merge #3 of kata-containers/runtime
- FC: extract error info from firecracker built-in log and metrics scheme
- gitignore: include cloud hypervisor configuration toml
- Respect containerd's debug config
- Clh driver: removed hard-coded vsock contextid (cid)
- vc: Persist file handle may leak in FS#ToDisk
- vc: Clean up directories in case MkdirAll fails
- vc: Restore sandbox state when there is error starting containers
- vc: Persist file handle may leak in FS#FromDisk
- sync fork after merge clh driver #1

810c2c9 versions: bump firecracker version
0afeb52 clh: clh http  unit test
42061f6 clh: cleanup VM dir
c688a15 version: CH bump to master
9f15dd2 clh: remove cli builder
f73723a clh: use http client
0babd38 rootless: Disable vhost-net for rootless
6010218 clh: Implement check()
a10da3e vendor: update openapi deps
1836226 clh: generate client code
dcac021 clh: Add Generation tools for API client
abbb536 virtiofs: stop sandbox when virtiofsd quits
9c0872d vc: Remove device when AddDevice encounters error
67f203f compatoci: Add a SetLogger call
bec46bb vc: Use map to represent ignoredMounts
628799a vc: Check return value from os.MkdirAll in virtiofsdArgs
9dd3f13 Makefile: Move the .git-commit: rule block to below the all: rule
7bcce3d Makefile: do not use tabs in if/else blocks
38224e8 vc: Use map built-in accessor to find container in Sandbox#GetContainer
544730b vc: Drop Sandbox#Pause and Sandbox#Resume
d4be097 Makefile: fix suspicious line
e8cc87b clh: basic/unit tests for clh driver
0697124 fc: update comments for startSandbox
3ef8f6c clh: fixes erroneous killing of virtiofsd
6af127f clh: improve driver logging for failed hypervisor
c58e6f9 kernel: update to 4.19.86
b7731e9 virtcontainers: don't consider non-running container resources
43f0513 virtcontainers: update resources after adding container to sandbox
613fd0f virtcontainers: rename GetOCISpec to GetPatchedOCISpec
330cc72 tracing: Unbreak tracing test
191ee63 fc.go: Set fc log level to debug if hypervisor.enable_debug is true
336edf7 virtcontainers: honour ContainerConfig struct comment and not save Spec
7f67b9f virtcontainers: improve algorithm to find containers
0ac4355 gitignore: include cloud hypervisor configuration toml
1abe52a clh: removed hard-coded vsock contextid (cid)
c833ac2 vc: BlockIndex should not be altered in case of error
b8b6733 vc: Persist file handle may leak in FS#ToDisk
03478d4 vc: Clean up directories in case MkdirAll fails
51d7c23 shim: Respect containerd's debug config
93a0336 vc: Restore sandbox state when there is error starting containers
2331e87 vc: Persist file handle may leak in FS#FromDisk
9a4ee4f vc: Utilize map for newMounts to speed up replaceOCIMountSource
daae1db log: extract error info from firecracker built-in log and metrics scheme

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-12-09 17:18:29 +00:00
katacontainersbot
c334d3b8d8 release: Kata Containers 1.10.0-rc0
- release: Fix bug in how version is determined for actions
- kata-deploy: improve debug message, longer cleanup timeout
- v4.19.86: patch update for v4.19.86 on AArch64
- kata-deploy: add k3s support
- ci: Add obs testing for packaging
- kernel: Fix that the help is not printed twice
- obs: Check for broken packages
- kata-deploy: Increase the wait timeout for control plane to come up
- obs: Failed when we have unresolvable packages
- obs: Add fakeroot dependency for ubuntu 19.04

ff20f20 release: Checkout right version of kernel patches
9377c5d release: Fix bug in how version is determined for actions
168709c v4.19.86: patch update for v4.19.86 on AArch64
bbcffc3 kata-deploy: improve debug message, longer cleanup timeout
34ce361 ci: Add obs testing for packaging
0d84085 kernel: Fix that the help is not printed twice
e9bb8e5 kata-deploy: Increase the wait timeout for control plane to come up
37bce87 obs: Check for broken packages
9e716ae kata-deploy: add k3s support
380bd92 kata-deploy: reorganize files to support kustomize
0b9b722 obs: Add fakeroot dependency for ubuntu 19.04
5956065 obs: Failed when we have unresolvable packages

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-12-09 17:18:13 +00:00
katacontainersbot
640fee2e2a release: Kata Containers 1.10.0-rc0
- make: use `cd` instead of '--directory' option of `cpio`

38d0be3 make: use `cd` instead of '--directory' option of `cpio`

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-12-09 17:18:03 +00:00
Eric Ernst
5baacae0ff Merge pull request #2335 from bergwolf/fc
versions: bump firecracker version
2019-12-09 09:04:15 -08:00
Peng Tao
810c2c93d6 versions: bump firecracker version
To include the latest fix for CVE-2019-18960.

Fixes: #2334
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-12-09 07:33:41 -08:00
Eric Ernst
a660d802ad Merge pull request #2275 from jcvenegas/ch-api-support
clh: use http client
2019-12-06 17:23:20 -08:00
Eric Ernst
952c98da81 arch: add virtualization specific document
Improve our virtualization documentation, as well as introduce
the Cloud Hypervisor VMM. This creates a virtualization specific
document, and references this from the primary architecture document.

We are still limited on ACRN documentation: this should be augmented
in a follow on PR.

The PNGs included were grabbed from https://docs.google.com/presentation/d/1ZJg3w3O6F_j3ucQhdbBdj2hZUwg7L7qF347xC07L2_w

Fixes: #567

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-12-06 16:37:01 -08:00
Jose Carlos Venegas Munoz
0afeb527ff clh: clh http unit test
Add initial unit test around http client

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-06 21:26:26 +00:00
Jose Carlos Venegas Munoz
42061f6c39 clh: cleanup VM dir
remove dirtory created for VM. This should be refactored in all
hypervisors

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-06 21:26:26 +00:00
Jose Carlos Venegas Munoz
c688a1504c version: CH bump to master
test with recent API changes of CH.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-06 21:26:26 +00:00
Jose Carlos Venegas Munoz
9f15dd2da3 clh: remove cli builder
Remove cli builder code as now that we use http client

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-06 21:26:26 +00:00
Jose Carlos Venegas Munoz
f73723a23f clh: use http client
Instead of build a command, use Cloud Hypervisor http API.

Fixes: #2165

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-06 21:26:26 +00:00
Erich Cordoba
92301a6382 agent: Add unit tests for sandbox.rs
These are the unit tests for the sandbox struct. This is the summary
of the most important changes:

  - To test containers it was needed to create a `LinuxContainer` type
    and this requires root privileges. So, some tests now requires root
    user to be run.
  - There was a bug in the `unset_sandbox_storage` method. The return
    type was wrapped in a `Result` to avoid this problem.

Fixes: #50

Signed-off-by: Erich Cordoba <erich.cordoba.malibran@intel.com>
2019-12-06 13:11:07 -06:00
Jose Carlos Venegas Munoz
ab2088f7d5 makefile: honor virtiofs config for default config
Fix config used when qemu-virtiofs is set as default.

Fixes: #2327

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-06 06:26:31 +00:00
Ted Yu
9a15457064 vc: Check error return from storeState
Fixes #2324

This achieves parity with the check on line 293.

Signed-off-by: Ted Yu yuzhihong@gmail.com
2019-12-05 18:55:57 -08:00
Jose Carlos Venegas Munoz
dc05d7dbbf Merge pull request #2322 from amshinde/disable-vhost-net-for-rootless
rootless: Disable vhost-net for rootless
2019-12-05 17:39:35 -06:00
Archana Shinde
0babd38de0 rootless: Disable vhost-net for rootless
Since the /dev/vhost-net device is owned by root, we cannot used
vhost-net networking in rootless mode. Instead of having to
do this manually in the toml, disable vhost-net when the runtime
detects it is running rootless.

Fixes #2321

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-12-05 13:22:57 -08:00
Jose Carlos Venegas Munoz
60102188cd clh: Implement check()
Implement check hypervisor interface method, using VmmPing

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-05 20:03:09 +00:00
Jose Carlos Venegas Munoz
a10da3efbf vendor: update openapi deps
dep ensure to update new deps from openapi client

golang.org/x/oauth2

Signed-off-by: Bo Chen <chen.bo@intel.com>
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-05 15:36:26 +00:00
Jose Carlos Venegas Munoz
183622652a clh: generate client code
Generated using OpenAPITools/openapi-generator.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-05 15:36:26 +00:00
Jose Carlos Venegas Munoz
dcac021637 clh: Add Generation tools for API client
cloud-hypervisor provides an API server to send commands
in a qmp and Firecracker style over an Unix socket.

The API is defined via OpenAPI, this commit adds
scripts to help to generate a client using:

https://github.com/OpenAPITools/openapi-generator

This will make easy to update any change related with the API
in the future.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-12-05 15:36:26 +00:00
Peng Tao
00ff99bcb6 Merge pull request #2306 from jodh-intel/fix-compatoci-logger
compatoci: Add a SetLogger call
2019-12-05 13:57:38 +08:00
Fupan Li
84e4d68b13 Merge pull request #2316 from eryugey/dev
virtiofs: stop sandbox when virtiofsd quits
2019-12-05 09:06:44 +08:00
Eric Ernst
e3ba17123a Merge pull request #2296 from tedyu/rm-dev-when-err
vc: Remove device when AddDevice encounters error
2019-12-04 14:23:49 -08:00
Eric Ernst
62d9bf2ed0 Merge pull request #832 from amshinde/fix-version-bug-GH
release: Fix bug in how version is determined for actions
2019-12-04 10:10:20 -08:00
Salvador Fuentes
df7982b95f Merge pull request #385 from shiloong/master
make: use `cd` instead of '--directory' option of `cpio`
2019-12-04 06:34:59 -06:00
Eryu Guan
abbb536cc4 virtiofs: stop sandbox when virtiofsd quits
Commit 89e0dfae11 ("qemu: stop qemu process when virtiofsd quits")
stops sandbox when virtiofsd quits so that virtiofs mount inside guest
won't hang. But commit d5a3d0a61c ("virtiofs: use virtiofsd
--fd=FDNUM") deleted this monitor logic.

Add the Scanner back to monitor virtiofsd's stderr and stop sandbox if
Scanner returns error.

Note that we don't monitor the virtiofsd process itself is because
virtiofsd may be live-upgraded (when available) and the original
process may quit, but virtiofs service is still running.

Fixes: #2315
Signed-off-by: Eryu Guan <eguan@linux.alibaba.com>
2019-12-04 19:54:41 +08:00
James O. D. Hunt
e2aff807ff Merge pull request #847 from egernst/cleanup-timeout
kata-deploy: improve debug message, longer cleanup timeout
2019-12-04 09:05:29 +00:00
Penny Zheng
8f6d0ab165 FC: introduce --config-file to replace API configure request
New command-line parameter for firecracker v0.19.0, named `--config-file`,
which represents the path to a file that contains a JSON which can be
used for configuring and starting a microVM without sending any API
requests.

Fixes: #2199

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-12-03 23:46:29 -08:00
Penny Zheng
f2d8d715d3 FC: func checkVersion should be more independent
func checkVersion could be called anywhere, not always after
DescribeInstance `\` API request, so it should be more independent.
We could also get version number from `firecracker --version` command.

Fixes: #2199

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-12-03 23:46:24 -08:00
Penny Zheng
9ce2113535 FC: remove API Ready state
Since we decide to adopt config file to configure, we could bypass
API Ready state.
Here, we also create a new config ready state: `cfReady`, to represent
configuration part is done.

Fixes: #2199

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-12-03 23:46:19 -08:00
Archana Shinde
ff20f2008b release: Checkout right version of kernel patches
Checkout tag for packaging repo based on env variable NEW_VERSION
or kata_version with kata_version taking precedence.
With this, we checkout to the right version of packaging repo before
applying kernel patches.

Fixes #849

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-12-03 18:08:08 -08:00
Archana Shinde
9377c5d5ca release: Fix bug in how version is determined for actions
Althought, we changed the script "gen_versions_txt.sh" to accept a tag
rather than a branch, this change is not sufficient.
This script generates the right version file based on a tag, but
function `get_from_kata_deps` does not use this, and ends up using the
master branch instead. This is because this function looks at an env
variable called $BRANCH and ends up using master branch if the variable
is not defined.

Pass the tag/new version to the build scripts, so that this tag is
passed along to `get_from_kata_dep`.
With this change, the correct version information is consumed by the
build scripts for the various hypervisors and kernel.

Fixes #831

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-12-03 17:56:03 -08:00
Shile Zhang
38d0be3824 make: use cd instead of '--directory' option of cpio
Due to the option '--directory' just added from 'cpio' v2.12, so the
osbuilder will failed with old version 'cpio' before v2.12, such as in
Centos 7 with v2.11.
Fix it by replacing this option with '(cd ...; cat ...)'.

Fixes: #384

Signed-off-by: Shile Zhang <shile.zhang@linux.alibaba.com>
2019-12-04 09:27:07 +08:00
Julio Montes
62f4536d46 Merge pull request #807 from Pennyzct/update_on_4.19.83
v4.19.86: patch update for v4.19.86 on AArch64
2019-12-03 17:14:28 -06:00
Penny Zheng
168709ca62 v4.19.86: patch update for v4.19.86 on AArch64
we need to do patch update for kernel bump to v4.19.86.

Fixes: #806
Depends-on: github.com/kata-containers/runtime#2185

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-12-03 13:29:05 -08:00
Eric Ernst
bbcffc32b5 kata-deploy: improve debug message, longer cleanup timeout
I am seeing tests fail at times waiting for label cleanup. Let's improve
the error message when this fails, and give the control plane a bit more
time, to improve stability of this test.

Fixes: #846

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-12-03 12:07:09 -08:00
Eric Ernst
6318f0a40b Merge pull request #823 from wilsonianb/k3s
kata-deploy: add k3s support
2019-12-03 12:01:28 -08:00
GabyCT
07195c1eee Merge pull request #836 from GabyCT/topic/addtests
ci: Add obs testing for packaging
2019-12-03 13:10:22 -06:00
Jose Carlos Venegas Munoz
62cd08044d Merge pull request #2185 from egernst/kernel-bump
kernel: update to 4.19.83
2019-12-03 12:53:18 -06:00
GabyCT
ce32fb8689 Merge pull request #838 from GabyCT/topic/fixhelp
kernel: Fix that the help is not printed twice
2019-12-03 12:08:43 -06:00
Gabriela Cervantes
34ce361a40 ci: Add obs testing for packaging
This will test that is possible to install the obs packages in different
distributions.

Fixes #621

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-12-03 11:27:28 -06:00
Salvador Fuentes
8e23f2c114 Merge pull request #837 from GabyCT/topic/addbroken
obs: Check for broken packages
2019-12-03 11:23:48 -06:00
Gabriela Cervantes
0d840850ae kernel: Fix that the help is not printed twice
While running the build-kernel.sh script with no arguments, the help is
printed twice. This PR will fix that.

Fixes #433

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-12-03 10:12:38 -06:00
GabyCT
2462241c7a Merge pull request #840 from amshinde/increase-aks-timeout
kata-deploy: Increase the wait timeout for control plane to come up
2019-12-03 09:48:46 -06:00
Ted Yu
9c0872dc7e vc: Remove device when AddDevice encounters error
Fixes #2295

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-12-03 06:07:11 -08:00
Jianyong Wu
cc25216b11 virtiofs: add default value for virtioFsCache type.
If no virtioFsCache type set in configuration file, virtiofsd will
not starts, which makes kata-container start fail if virtio-fs
as its shared file system.

Fixes: #2279
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2019-12-03 14:01:29 +08:00
Archana Shinde
e9bb8e58ff kata-deploy: Increase the wait timeout for control plane to come up
Recent runs of setting up aks with github workflows shows that a timeout
of 5m is not always sufficent fot aks control plane to come up.
Increase this from 5m to 10m.

Fixes #839

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-12-02 13:38:11 -08:00
Gabriela Cervantes
37bce87661 obs: Check for broken packages
We need to check for broken packages at the obs-wait script.

Fixes #492

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-12-02 15:31:10 -06:00
Jose Carlos Venegas Munoz
d50eea66eb Merge pull request #2274 from ericooper/ich-driver-002
Cloud Hypervisor: driver update number 2
2019-12-02 13:48:36 -06:00
Graham Whaley
1c27897ba2 Merge pull request #2300 from tedyu/map-ignored-mounts
vc: Use map to represent ignoredMounts
2019-12-02 16:41:48 +00:00
Eric Ernst
c384359209 Merge pull request #2278 from egernst/fc-comment
Fc comment
2019-12-02 07:53:27 -08:00
James O. D. Hunt
67f203f1b8 compatoci: Add a SetLogger call
Add a standard `SetLogger()` call to allow the `compatoci` package to be
provided a base logger which it can then customise.

Fixes: #2305.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-12-02 10:10:37 +00:00
James O. D. Hunt
fc9114dbdc Merge pull request #2298 from tedyu/mkdir-all-ret
vc: Check return value from os.MkdirAll in virtiofsdArgs
2019-12-02 09:43:21 +00:00
Peng Tao
0a5315b1c6 Merge pull request #2283 from tedyu/rm-pause-resume
vc: Drop Sandbox#Pause and Sandbox#Resume
2019-12-02 13:19:15 +08:00
Peng Tao
450a646afd Merge pull request #2290 from tedyu/get-container
vc: Use map built-in accessor to find container in Sandbox#GetContainer
2019-12-02 10:29:44 +08:00
Peng Tao
e49569a286 Merge pull request #2287 from devimc/topic/make/FixSuspiciousLine
Makefile: fix suspicious line
2019-12-02 10:29:20 +08:00
Ted Yu
bec46bb59b vc: Use map to represent ignoredMounts
We can use map from Source to Mount as ignoredMounts representation.
Inner loop in kataAgent#removeIgnoredOCIMount is removed.

Fixes #2299

Signed-off-by: Ted Yu yuzhihong@gmail.com
2019-11-30 12:36:27 -08:00
Ted Yu
628799a42f vc: Check return value from os.MkdirAll in virtiofsdArgs
Fixes #2297

Signed-off-by: Ted Yu yuzhihong@gmail.com
2019-11-30 08:43:23 -08:00
Julio Montes
9dd3f13a92 Makefile: Move the .git-commit: rule block to below the all: rule
the first rule defined becomes the default and the default rule should be all.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-29 15:39:43 +00:00
Julio Montes
7bcce3da63 Makefile: do not use tabs in if/else blocks
tabs should only appear in rules, not in ifeq/ifneq blocks
(since otherwise make can get very confused on error).

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-29 15:38:53 +00:00
Ted Yu
38224e8b7b vc: Use map built-in accessor to find container in Sandbox#GetContainer
Fixes #2289

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-29 07:17:15 -08:00
Ted Yu
544730b4b1 vc: Drop Sandbox#Pause and Sandbox#Resume
Fixes #2276

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-29 05:58:06 -08:00
Julio Montes
d4be097b71 Makefile: fix suspicious line
Emacs (the good and infalible text editor) detects a suspicious line in
Makefile, this line contains both space and tab (something that could be
introduced by a less sophisticated text editor) that is not correct
for a Makefile.

fixes #2286

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-29 13:49:35 +00:00
Johan Kuijpers
e8cc87b378 clh: basic/unit tests for clh driver
- added clh unit tests
- removed some inconsistencies in the cli builder to enable unit tests
- suppressed version check for in startSandbox to enable unit tests
- added clh related constants and methods to virtcontainer test
- small corrections after review applied

Fixes: #2205

Signed-off-by: Johan Kuijpers <johan.kuijpers@ericsson.com>
2019-11-28 10:27:37 +01:00
Brandon Wilson
9e716ae6ed kata-deploy: add k3s support
By default, k3s uses an embedded containerd. Reconfiguring this
containerd requires modifying a template config file and restarting the
k3s (master node) or k3s-agent (worker node) systemd service.

Signed-off-by: Brandon Wilson <brandon@coil.com>
2019-11-27 16:07:23 -06:00
Brandon Wilson
380bd9257b kata-deploy: reorganize files to support kustomize
Signed-off-by: Brandon Wilson <brandon@coil.com>
2019-11-27 15:55:02 -06:00
Eric Ernst
06971246ea fc: update comments for startSandbox
The comment didn't reflect what the function does. Updated accordingly.

Fixes: #2277

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-11-26 15:25:51 -08:00
Archana Shinde
d054556f60 Merge pull request #2251 from devimc/topic/k8s/fixWrongNumberCPUs
k8s: fix wrong number cpus after killing a container
2019-11-26 10:12:36 -08:00
Archana Shinde
cc3506403b Merge pull request #2220 from tedyu/new-mount-map
vc: Utilize map for newMounts to speed up replaceOCIMountSource
2019-11-26 09:10:25 -08:00
Graham Whaley
1fd8ac65bf Merge pull request #568 from shinebayar-g/fix/centos-docker-install
Fix centos docker installation docs.
2019-11-26 10:14:26 +00:00
Penny Zheng
837a0ee0ae cache-factory: set bridge info when creating vm
For now, we will encounter `failed to get available address from
bridges` error when launching kata containers from cache factory.
Although we've already passed bridges info to clients from cache factory
server, we still missed the setting part when creating vm.

Fixes: #2272

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-11-26 00:42:39 -08:00
Penny Zheng
3d8ffe4120 cache-factory: fix nil pointer runtime panic
For now, when we're using cache factory to launch kata containers,
we would encounter nil pointer runtime panic.

Fixes: #2272

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-11-26 00:42:12 -08:00
Johan Kuijpers
3ef8f6cf1b clh: fixes erroneous killing of virtiofsd
remove type in kill statement for virtiofsd

Fixes: #2270

Signed-off-by: Johan Kuijpers <johan.kuijpers@ericsson.com>
2019-11-26 09:12:13 +01:00
Johan Kuijpers
6af127f7f9 clh: improve driver logging for failed hypervisor
added logging of stdout and stderr for failed hypervisor

Fixes: #2271

Signed-off-by: Johan Kuijpers <johan.kuijpers@ericsson.com>
2019-11-26 09:08:11 +01:00
Eric Ernst
c58e6f973c kernel: update to 4.19.86
Fixes: #2193
Depends-on: github.com/kata-containers/packaging#807

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-11-25 14:10:11 -08:00
Eric Ernst
552e9407b8 Merge pull request #2245 from tedyu/block-index-update
vc: Sandbox#getAndSetSandboxBlockIndex shouldn't alter BlockIndex in case of error
2019-11-25 13:19:06 -08:00
Archana Shinde
545d61cbe8 Merge pull request #2253 from devimc/topic/virtcontainers/GetPatchedOCI
virtcontainers: rename GetOCISpec to GetPatchedOCISpec
2019-11-25 11:29:58 -08:00
GabyCT
d937c067f2 Merge pull request #2265 from jodh-intel/unbreak-tracing-test
tracing: Unbreak tracing test
2019-11-25 13:16:01 -06:00
Julio Montes
b7731e97dd virtcontainers: don't consider non-running container resources
Don't hot add again non-running container resources to avoid having extra
and useless resources

fixes #2186

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-25 18:42:34 +00:00
Julio Montes
43f051313e virtcontainers: update resources after adding container to sandbox
Status of container should know prior to calculate the number of CPU
and memory

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-25 18:42:34 +00:00
Julio Montes
613fd0fb60 virtcontainers: rename GetOCISpec to GetPatchedOCISpec
GetOCISpec returns a patched version of the original OCI spec, it was modified
to support:
* capabilities
* Ephemeral storage
* k8s empty dir

In order to avoid consusions and make api clear, rename GetOCISpec
to GetPatchedOCISpec and ContainerConfig.Spec to ContainerConfig.CustomSpec

fixes #2252

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-25 17:22:23 +00:00
James O. D. Hunt
330cc72ef3 tracing: Unbreak tracing test
Force Jaeger to log when it reports traces to ensure the tracing test
[1] works as expected.

Fixes: #2264.

[1] - https://github.com/kata-containers/tests/blob/master/tracing/tracing-test.sh

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-11-25 16:48:41 +00:00
Julio Montes
dd15db3250 Merge pull request #2261 from teawater/fc_log_debug
fc.go: Set firecracker log level to debug if hypervisor.enable_debug …
2019-11-25 10:32:26 -06:00
Peng Tao
35d4cac999 Merge pull request #2257 from devimc/topic/virtcontainers/honourDontSaveSpec
virtcontainers: honour ContainerConfig struct comment and don't save OCI spec
2019-11-25 20:41:35 +08:00
Graham Whaley
6727c68005 Merge pull request #2255 from devimc/topic/virtcontainers/useMapSearch
virtcontainers: improve algorithm to find containers
2019-11-25 09:29:51 +00:00
Hui Zhu
191ee63750 fc.go: Set fc log level to debug if hypervisor.enable_debug is true
Set firecracker log level to debug if hypervisor.enable_debug is true.

Fixes: #2260

Signed-off-by: Hui Zhu <teawater@antfin.com>
2019-11-25 17:08:00 +08:00
Johan Kuijpers
7b8e15f3a7 Merge pull request #3 from kata-containers/master
Merge #3 of kata-containers/runtime
2019-11-25 09:37:27 +01:00
Hui Zhu
562d9fd5c2 Merge pull request #2073 from Pennyzct/firecracker_fifo_log
FC: extract error info from firecracker built-in log and metrics scheme
2019-11-25 16:15:36 +08:00
Julio Montes
336edf75ea virtcontainers: honour ContainerConfig struct comment and not save Spec
Currently kata-runtime saves the Container OCI Spec even when it's not needed
and a comment in `ContainerConfig struct` specifically indicates that
it won't be saved to disk.
Use '-' as json tag instead of '_' to indicates that `Spec` field shouldn't
be saved to disk.

fixes #2256

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-22 21:16:11 +00:00
Julio Montes
0b3f5c7570 Merge pull request #822 from GabyCT/topic/addcifix
obs: Failed when we have unresolvable packages
2019-11-22 14:22:03 -06:00
Julio Montes
7f67b9f084 virtcontainers: improve algorithm to find containers
Do not iterate over a map to find a container, use map built-in
method instead.

fixes #2254

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-22 20:08:37 +00:00
Salvador Fuentes
fea166d8eb Merge pull request #2250 from devimc/topic/gitignore/addClhToml
gitignore: include cloud hypervisor configuration toml
2019-11-22 11:33:34 -06:00
GabyCT
7938cd8965 Merge pull request #2208 from choury/patch-1
Respect containerd's debug config
2019-11-22 08:33:34 -06:00
Julio Montes
0ac43558c8 gitignore: include cloud hypervisor configuration toml
update .gitignore to include configuration-clh.toml to the list of
untracked files

fixes #2249

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-22 13:39:39 +00:00
Julio Montes
0ff0e54769 Merge pull request #2217 from ericooper/clh-driver-fix-2206
Clh driver: removed hard-coded vsock contextid (cid)
2019-11-22 07:23:14 -06:00
James O. D. Hunt
a878afb7c3 Merge pull request #821 from GabyCT/topic/addubuntud
obs: Add fakeroot dependency for ubuntu 19.04
2019-11-22 11:41:52 +00:00
Johan Kuijpers
1abe52abd7 clh: removed hard-coded vsock contextid (cid)
update after review 2. applied ci static checks

Fixes: #2206

Signed-off-by: Johan Kuijpers <johan.kuijpers@ericsson.com>
2019-11-22 09:35:41 +01:00
Fupan Li
eae8449231 Merge pull request #2242 from tedyu/to-disk-close
vc: Persist file handle may leak in FS#ToDisk
2019-11-22 09:12:50 +08:00
Archana Shinde
db696da98b Merge pull request #2232 from tedyu/rm-persist-dir
vc: Clean up directories in case MkdirAll fails
2019-11-21 15:42:23 -08:00
Ted Yu
c833ac2c53 vc: BlockIndex should not be altered in case of error
BlockIndex should not increment in case of error.

Similar issue applies to decrementSandboxBlockIndex where the symptom may be more severe - in worst case, the block index may become negative.

Fixes #2244

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-21 15:34:35 -08:00
Ted Yu
b8b6733f62 vc: Persist file handle may leak in FS#ToDisk
Fixes #2241

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-21 12:42:10 -08:00
Julio Montes
a17ca14c7a Merge pull request #2238 from tedyu/start-sandbox-running
vc: Restore sandbox state when there is error starting containers
2019-11-21 13:58:56 -06:00
Gabriela Cervantes
0b9b7222e8 obs: Add fakeroot dependency for ubuntu 19.04
It seems that to build ksm-throttler, proxy, runtime and shim OBS packages
for ubuntu 19.04, we need fakeroot in order to have unresolvable OBS packages. This adds that dependency so we can build the packages.

Fixes #776

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-11-21 12:20:35 -06:00
Gabriela Cervantes
595606500b obs: Failed when we have unresolvable packages
We need to fail when we have unresolvable packages as they are not build
correctly.

Fixes #820

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-11-21 11:01:01 -06:00
Julio Montes
3a4025fbf4 Merge pull request #2234 from tedyu/close-cf
vc: Persist file handle may leak in FS#FromDisk
2019-11-21 09:38:29 -06:00
Ted Yu
03478d4540 vc: Clean up directories in case MkdirAll fails
Fixes #2230

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-21 02:27:30 -08:00
choury
51d7c23e41 shim: Respect containerd's debug config
There are too many logs from kata shim in containerd's log.
Fixes #2209

Signed-off-by: choury <chouryzhou@tencent.com>
2019-11-21 14:46:29 +08:00
Ted Yu
93a03369ae vc: Restore sandbox state when there is error starting containers
Fixes #2237

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-20 18:47:37 -08:00
Archana Shinde
88205cff6d Merge pull request #2224 from amshinde/1.10.0-alpha1-branch-bump
# Kata Containers 1.10.0-alpha1
2019-11-20 12:21:28 -08:00
Eric Ernst
660728fb65 Merge pull request #2229 from amshinde/disable-jailer
config: Disable jailer by default for firecracker
2019-11-20 12:14:43 -08:00
Ted Yu
2331e879af vc: Persist file handle may leak in FS#FromDisk
Fixes #2233

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-20 11:48:43 -08:00
Archana Shinde
1f71114291 Merge pull request #2223 from tedyu/sandbox-anno
vc: Sandbox#Annotations should use annotationsLock read lock
2019-11-20 11:11:31 -08:00
Archana Shinde
fab759db73 config: Disable jailer by default for firecracker
Comment out jailer path so that it is disabled by default.

Fixes #2228

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-20 09:18:56 -08:00
James O. D. Hunt
34b28aca01 Merge pull request #817 from amshinde/1.10.0-alpha1-branch-bump
# Kata Containers 1.10.0-alpha1
2019-11-20 11:24:26 +00:00
Archana Shinde
36a9dc5c72 Merge pull request #381 from amshinde/1.10.0-alpha1-branch-bump
# Kata Containers 1.10.0-alpha1
2019-11-19 20:06:18 -08:00
Fupan Li
48c8d669fe Merge pull request #2179 from WeiZhang555/persist-storage
Support "Configuration" in "newstore" feature
2019-11-20 10:08:13 +08:00
Archana Shinde
df889c37e0 release: Kata Containers 1.10.0-alpha1
- vc: Remove unnecessary call to kill
- versions: Add cloud-hypervisor
- clh: fix build
- vc: Remove extra call to Kill
- FC: log out the firecracker's console when debug enabled
- Add support for intel cloud hypervisor
- Remove nemu
- fc: config: vhost-net not supported
- qemu-configs: update disable_vhost_net description
- Topic/network simplify
- support firecracker 0.19.0
- rootless: Fix cgroup creation logic for rootless
- FIPS: Add support for starting VM in FIPS mode.
- vc/qemu: add mutex to qmp monitor channel in qmpSetup()
- version: Update containerd version to 1.3.0
- rootless: Fix rangeUID parsing
- versions: Update kubernetes and cri-o to 1.16

1e04679 versions: Add cloud-hypervisor
618666e vc: Remove unnecessary call to kill
510f0a6 clh: fix build
ee9a53c vc: Remove extra call to Kill
784066a Makefile: clh: Use virtiofs kernel
01713d5 runtime: added cloud hypervisor driver
70297c2 nemu: remove nemu support
a2b6afc FC: log out the firecracker's console when debug enabled
13a00a2 virtcontainers: add a stateful to FC struct
0c482b2 qemu-configs: update disable_vhost_net description
519eff7 fc: config: vhost-net not supported
6154210 versions: bump firecracker version
78ca966 virtcontainers: bump firecracker minimum supported version
77b0dfb virtcontainers: use new firecracker API
0def9b0 virtcontainers/firecracker: update API
744ccd4 network: Set the default config to tcfilter
27433d9 config: Get rid of bridged model docs in the configuration
dffc988 virtcontainers: Eliminate legacy networking models
f6ffb79 rootless: Fix cgroup creation logic for rootless
0bd41b9 FIPS: Add support for starting VM in FIPS mode.
3f1a39c rootless: Fix rangeUID parsing
69ab092 versions: Add cri-tools and conmon to the versions.yaml
5b31282 vc/qemu: add mutex to qmp monitor channel in qmpSetup()
0e70b38 versions: Update kubernetes and cri-o to 1.16
62f64bb version: Update containerd version to 1.3.0

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-20 00:13:14 +00:00
Archana Shinde
9ac8b0fe8d release: Kata Containers 1.10.0-alpha1
- kata-static: Add cloud-hypervisor to tarball
- obs: Do not wait on excluded packages
- kata-deploy: add or overwrite runtimes in containerd config
- kata-deploy: add support for Cloud Hypervisor and remove nemu
- qemu-virtiofs: Add one patch to fix libvhost-user
- release: Rename generated artifacts to a particular format
- scripts: Fix static build docker config script
- obs: Disable repo-publishing for CI builds
- release: Fix bug in evaluation kata_version.
- obs: Add ubuntu 19.04
- CI: Fix bump test
- kata-deploy: don't remove pre-existing containerd
- kernel: Enable configuration for fips mode.
- kata-deploy: action: reference kata-containers instead of fork
- snap: make launchpad happy again

dabef60 kata-static: Add cloud-hypervisor to tarball
233dfb6 static: fix qemu-virtiofs build
e4a8c6b obs: Do not wait on excluded packages
c745308 kata-deploy: add or overwrite runtimes in containerd config
c78f10f kata-deploy: remove nemu
5431096 kata-deploy: add support for Cloud Hypervisor
5d8f405 qemu-virtiofs: Add one patch to fix libvhost-user
c6f4313 release: Remove all traces of qemu-lite from packaging
e6c2a53 release: Pass the qemu tarball name as a docker build arg
7895958 release: Rename generated artifacts to a particular format
14558de scripts: Fix static build docker config script
627445e obs: Add ubuntu 19.04
4abfa70 obs: Disable repo-publishing for CI builds
c12c533 kata-deploy: don't remove pre-existing containerd
05a8d4b CI: Fix bump test
853a99c release: Fix bug in evaluation kata_version.
4d129fd kata-deploy: action: reference kata-containers instead of fork
ec95961 kernel: Enable configuration for fips mode.
27c7773 snap: reimplement image part
43a5d14 snap: use adopt-info to set grade and version

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-20 00:12:58 +00:00
Archana Shinde
75392a744f release: Kata Containers 1.10.0-alpha1
- rootfs-builder/alpine: use latest stable

50c9378 rootfs-builder/alpine: use latest stable

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-20 00:12:51 +00:00
Archana Shinde
5c636a2199 Merge pull request #813 from jcvenegas/ch-tarball-build
kata-static: Add cloud-hypervisor to tarball
2019-11-19 15:45:44 -08:00
Ted Yu
1afad1c0ad vc: Sandbox#Annotations should use annotationsLock read lock
Fixes #2222

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-19 13:44:53 -08:00
GabyCT
e01275052a Merge pull request #816 from amshinde/quit-waiting-for-excluded-packages
obs: Do not wait on excluded packages
2019-11-19 15:05:44 -06:00
Jose Carlos Venegas Munoz
dabef60649 kata-static: Add cloud-hypervisor to tarball
Include cloud-hypervisor to Kata release tarball

Fixes: #792

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-11-19 20:46:00 +00:00
Jose Carlos Venegas Munoz
233dfb6c2e static: fix qemu-virtiofs build
virtiofs build failed using docker build.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-11-19 20:46:00 +00:00
Archana Shinde
e4a8c6b2a3 obs: Do not wait on excluded packages
In case a package in obs is excluded ie no longer being built,
do not wait for it to be built. Wait as long as there are packages
being built or blocked on others to be built.

Fixes #815

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-19 10:45:35 -08:00
Archana Shinde
80a2b344de Merge pull request #812 from wilsonianb/overwrite
kata-deploy: add or overwrite runtimes in containerd config
2019-11-19 09:58:24 -08:00
Graham Whaley
66f0ec526e Merge pull request #2216 from tedyu/kata-vc-kill
vc: Remove unnecessary call to kill
2019-11-19 17:30:18 +00:00
Jose Carlos Venegas Munoz
289b6bc587 Merge pull request #2219 from jcvenegas/ch-versions
versions: Add cloud-hypervisor
2019-11-19 10:44:02 -06:00
Ted Yu
9a4ee4f205 vc: Utilize map for newMounts to speed up replaceOCIMountSource
Fixes #2212

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-19 07:47:02 -08:00
Jose Carlos Venegas Munoz
1e046791a3 versions: Add cloud-hypervisor
Needed to build as part of release and CI process.

Fixes: #2218

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-11-19 14:25:12 +00:00
Ted Yu
618666ed8c vc: Remove unnecessary call to kill
Fixes #2207

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-19 05:46:33 -08:00
Johan Kuijpers
164fa18858 Merge pull request #2 from kata-containers/master
sync fork after merge clh driver #1
2019-11-19 12:35:45 +01:00
Wei Zhang
7943dd95b4 persistence: store configuration in newstore
Fixes #803

Store the configuration data in persist.json.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-11-19 18:40:19 +08:00
zhangwei_cs
c0d2867a0e Merge pull request #2214 from bergwolf/fix-build
clh: fix build
2019-11-19 18:39:57 +08:00
Graham Whaley
45faacfe49 Merge pull request #2204 from tedyu/rm-extra-kill
vc: Remove extra call to Kill
2019-11-19 09:17:12 +00:00
Peng Tao
510f0a6687 clh: fix build
PR #2202 changed createSandbox() interface but didn't get a chance
to match with cloud hypervisor change.

Fixes: #2213

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-11-19 01:02:04 -08:00
Peng Tao
be6110d234 Merge pull request #2202 from lifupan/watch_firecracker_console
FC: log out the firecracker's console when debug enabled
2019-11-19 14:06:24 +08:00
Brandon Wilson
c7453087ff kata-deploy: add or overwrite runtimes in containerd config
Match indented CRI-O config fields.
Fix CRI-O qemu virtiofs runtime_path.

Fixes: #802

Signed-off-by: Brandon Wilson <brandon@coil.com>
2019-11-18 18:14:07 -06:00
Archana Shinde
ca7fb82003 Merge pull request #809 from chavafg/topic/clh-support
kata-deploy: add support for Cloud Hypervisor and remove nemu
2019-11-18 13:57:13 -08:00
Archana Shinde
dff5e7da1d Merge pull request #811 from sboeuf/ch_virtiofs
qemu-virtiofs: Add one patch to fix libvhost-user
2019-11-18 13:54:06 -08:00
Salvador Fuentes
c78f10f9aa kata-deploy: remove nemu
nemu is no longer supported, so remove it from kata-deploy.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-11-18 11:35:12 -08:00
Salvador Fuentes
5431096f13 kata-deploy: add support for Cloud Hypervisor
Add Cloud Hypervisor to kata-deploy.

Fixes: #808.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-11-18 11:35:12 -08:00
Sebastien Boeuf
5d8f405e7b qemu-virtiofs: Add one patch to fix libvhost-user
In order to get both QEMU and Cloud-Hypervisor working with virtio-fs, a
patch needs to be applied in order to fix a libvhost-user bug.

Fixes #810

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2019-11-18 09:29:49 -08:00
Sebastien Boeuf
c22fba934b Merge pull request #804 from amshinde/rename-artifacts
release: Rename generated artifacts to a particular format
2019-11-18 09:24:05 -08:00
Ted Yu
ee9a53ca4b vc: Remove extra call to Kill
Fixes #2207

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
2019-11-18 07:06:35 -08:00
Archana Shinde
c6f43134b8 release: Remove all traces of qemu-lite from packaging
qemu-lite has long been deprecated.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-15 15:06:27 -08:00
Sebastien Boeuf
547d580ad5 Merge pull request #2164 from ericooper/ich-driver-001
Add support for intel cloud hypervisor
2019-11-15 13:22:27 -08:00
Jose Carlos Venegas Munoz
784066a49d Makefile: clh: Use virtiofs kernel
use virtiofs kernel to allow boot kata.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-11-15 19:35:34 +00:00
Johan Kuijpers
01713d59cb runtime: added cloud hypervisor driver
Initial release of cloud hypervisor driver for kata-runtime

Fixes: #2046

Signed-off-by: Johan Kuijpers <johan.kuijpers@ericsson.com>
2019-11-15 19:35:29 +00:00
Salvador Fuentes
3886dcf646 Merge pull request #2196 from egernst/remove-nemu
Remove nemu
2019-11-15 08:51:50 -06:00
Eric Ernst
70297c2184 nemu: remove nemu support
NEMU deprecation was announced in 1.8 of Kata. Removing from tree.

Thanks for all the fish!

Fixes: #2195

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-11-14 23:06:43 -08:00
lifupan
a2b6afcd9a FC: log out the firecracker's console when debug enabled
For shimv2 case, when hypervisor's debug option set, log out
the firecracker's console output which contains the kernel boot
logs; thus it would be easy for system panic debugging.

When agent debug was enabled by passing "agent.log=debug" to
kernel parameter, it will also log out the agent logs from
the console output.

Fixes: #2201

Signed-off-by: lifupan <lifupan@gmail.com>
2019-11-15 11:51:32 +08:00
lifupan
13a00a2cf2 virtcontainers: add a stateful to FC struct
Add a 'sateful' variable to FC to indicate
when it is called with cli or shimv2.

Signed-off-by: lifupan <lifupan@gmail.com>
2019-11-15 11:48:13 +08:00
GabyCT
35f54fdb8a Merge pull request #2194 from egernst/fixup-vhost-fc
fc: config: vhost-net not supported
2019-11-14 14:22:09 -06:00
Archana Shinde
e6c2a53953 release: Pass the qemu tarball name as a docker build arg
Rather than hardcoding the tarball name to be generated in the
Dockerfile, pass this as an argument.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-14 12:06:07 -08:00
Archana Shinde
78959588f7 release: Rename generated artifacts to a particular format
Rename artifacts to format kata-static-{artifact-name}.tar.gz.
These predictable names are intended to be consumed by github
actions in our release process.

Fixes #803

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-14 12:06:07 -08:00
Eric Ernst
733710c8e4 Merge pull request #801 from jodh-intel/fix-static-binaries-docker-cfg-script
scripts: Fix static build docker config script
2019-11-13 16:53:14 -08:00
Eric Ernst
f2bbcf4eb6 Merge pull request #2197 from egernst/disable-vhost-comment
qemu-configs: update disable_vhost_net description
2019-11-13 16:51:49 -08:00
Eric Ernst
0c482b2557 qemu-configs: update disable_vhost_net description
Updated to better clarify this configuration option. Currently in QEMU
pre 1.9 release of Kata, vhost-net is used for the virtio-net backend.
This results in efficient network I/O performance, but does rely on the
backend running in ring0 (host kernel). Update comment to clarify this
trade-off for end-users.

Fixes: #2198

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-11-13 14:52:29 -08:00
Eric Ernst
75d149c2a6 Merge pull request #1214 from mcastelino/topic/network-simplify
Topic/network simplify
2019-11-13 14:40:12 -08:00
Eric Ernst
519eff7236 fc: config: vhost-net not supported
vhost-net backend is not supported by the Firecracker VMM. It doesn't
make sense to have this in the configuration, and we should explicitly
disable it.

Fixes: #2192

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-11-13 14:10:18 -08:00
Eric Ernst
3283208a25 Merge pull request #798 from rhafer/ci-no-publish
obs: Disable repo-publishing for CI builds
2019-11-13 08:14:15 -08:00
Xu Wang
219ffbca05 Merge pull request #571 from egernst/update-on-vmms
architecture: update architecture docs to reflect VMM support
2019-11-13 15:03:18 +08:00
Eric Ernst
541ec4c08a architecture: update architecture docs to reflect VMM support
The existing document hasn't been updated since ~1.4. Updated to remove
references to qemu-lite, added details on Firecracker.

We still need details on ACRN added here as well.

Fixes: #570

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-11-12 20:03:43 -08:00
Penny Zheng
daae1db893 log: extract error info from firecracker built-in log and metrics scheme
Firecracker have its own logging scheme, providing two fifo files with log
and metrics info.
We should extract error info for better debugging.

Fixes: #2072

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Haibo Xu <haibo.xu@arm.com>
2019-11-13 09:22:26 +08:00
Julio Montes
af73bb364e Merge pull request #2184 from devimc/topic/virtcontainers/fixFC019
support firecracker 0.19.0
2019-11-12 10:25:42 -06:00
Julio Montes
615421081a versions: bump firecracker version
update to firecracker 0.19.0

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-11 22:28:01 +00:00
Julio Montes
78ca966e8d virtcontainers: bump firecracker minimum supported version
firecracker 0.19.0 API is not backward compatible, hence we need
to bump the firecracker minimum supported version to 0.19.0

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-11 22:22:03 +00:00
Julio Montes
77b0dfb05f virtcontainers: use new firecracker API
Support new firecracker API 0.19.0:
* remove vsock ID from http request

fixes #2183

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-11 22:19:57 +00:00
Julio Montes
0def9b01de virtcontainers/firecracker: update API
update firecracker API to 0.19.0

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-11 22:18:05 +00:00
shinebayar-g
a0e37e1e64 docs: Update docker installation guides for /etc/docker
Added explanation that the `/etc/docker/` directory needs to be created.

Fixes: #569.

Signed-off-by: shinebayar-g <shinebayar.gansukh@gmail.com>
2019-11-12 01:19:53 +08:00
Archana Shinde
744ccd4ed2 network: Set the default config to tcfilter
If the configuration for networking is missing, tcfilter
will be chosen.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-11 09:15:29 -08:00
Archana Shinde
27433d9178 config: Get rid of bridged model docs in the configuration
Since we have dropped support for bridged model, remove it from
the configuration as well.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-11 09:15:28 -08:00
Manohar Castelino
dffc988d92 virtcontainers: Eliminate legacy networking models
Prior to the addition of tcMirroring support kata-runtime had
compatibility issues with some CNI plugins some of which were addressed
by the bridged model. With the addition of tc mode there are no gaps in
networking that can be filled by the bridged mode or enlightened mode
(which was never implemented).

Eliminate both of these options to simplify the setup.

Fixes: #1213

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-11-11 09:14:38 -08:00
Eric Ernst
8c7a83b936 Merge pull request #2178 from amshinde/fix-rootless-cgroups
rootless: Fix cgroup creation logic for rootless
2019-11-11 08:43:25 -08:00
James O. D. Hunt
14558de630 scripts: Fix static build docker config script
Fix bug in the `kata-configure-docker.sh` script which assumed
`/etc/docker/` existed by default.

Fixes: #800

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-11-11 13:41:53 +00:00
James O. D. Hunt
4ec9dd3593 Merge pull request #380 from devimc/topic/initrd/fixAlpineCVEs
rootfs-builder/alpine: use latest stable
2019-11-11 11:11:03 +00:00
James O. D. Hunt
80ca386f26 Merge pull request #794 from amshinde/fix-version-evaluation
release: Fix bug in evaluation kata_version.
2019-11-11 10:40:07 +00:00
Peng Tao
31b5f96f64 Merge pull request #2171 from amshinde/support-fips-mode
FIPS: Add support for starting VM in FIPS mode.
2019-11-11 10:58:12 +08:00
Archana Shinde
f6ffb791e7 rootless: Fix cgroup creation logic for rootless
We do not want to create cgroups in case of rootless.
Fix the logic to implement this.

Fixes #2177

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-08 18:30:11 -08:00
Jose Carlos Venegas Munoz
d0615f8220 Merge pull request #2140 from YvesChan/qmp_race
vc/qemu: add mutex to qmp monitor channel in qmpSetup()
2019-11-08 15:01:34 -06:00
Jose Carlos Venegas Munoz
94b3cf2968 Merge pull request #2100 from amshinde/update-containerd-version
version: Update containerd version to 1.3.0
2019-11-08 15:00:41 -06:00
Jose Carlos Venegas Munoz
bcb38548f9 Merge pull request #2174 from darfux/fix-rootless-ids
rootless: Fix rangeUID parsing
2019-11-08 14:59:25 -06:00
Jose Carlos Venegas Munoz
fbee390e32 Merge pull request #799 from GabyCT/topic/addubuntu
obs: Add ubuntu 19.04
2019-11-08 12:43:49 -06:00
Jose Carlos Venegas Munoz
07efba6082 Merge pull request #796 from jcvenegas/fix-bump-check
CI: Fix bump test
2019-11-08 12:43:14 -06:00
Archana Shinde
0bd41b9dbe FIPS: Add support for starting VM in FIPS mode.
FIPS are a set of security standards for encryption algorithms
in user and kernel space among others.
Have Kata support this by starting the VM for a container
in FIPS mode on detecting that the host is running in FIPS mode.

Depends-on: github.com/kata-containers/packaging#788

Fixes #2170

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-08 08:45:53 -08:00
Jose Carlos Venegas Munoz
f944111542 Merge pull request #797 from egernst/fixup-kata-deploy-containerd
kata-deploy: don't remove pre-existing containerd
2019-11-08 09:59:28 -06:00
Julio Montes
50c9378659 rootfs-builder/alpine: use latest stable
use latest stable to fix CVEs

fixes #379

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-11-08 14:27:50 +00:00
Gabriela Cervantes
627445ef09 obs: Add ubuntu 19.04
Build packages for ubuntu 19.04.

Fixes #776

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-11-08 08:25:47 -06:00
Jose Carlos Venegas Munoz
8b26173078 Merge pull request #788 from amshinde/add-conf-fips-mode
kernel: Enable configuration for fips mode.
2019-11-08 08:15:42 -06:00
Li Yuxuan
3f1a39c442 rootless: Fix rangeUID parsing
`rangeUID` should be parsed as ids[2] rather than ids[1]

Fixes: #2173
Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2019-11-08 20:33:42 +08:00
Ralf Haferkamp
4abfa70f56 obs: Disable repo-publishing for CI builds
The repos of the CI builds are not used anywhere so let's be friendly to
the OBS infrastructure and do not publish them.

Signed-off-by: Ralf Haferkamp <rhafer@suse.com>
2019-11-08 11:32:03 +01:00
Eric Ernst
c12c533d14 kata-deploy: don't remove pre-existing containerd
Append to file if container/config.toml already exists.

Fixes: #307

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-11-07 20:29:11 -08:00
GabyCT
3e3e923aa2 Merge pull request #2167 from chavafg/topic/k8s-1.16
versions: Update kubernetes and cri-o to 1.16
2019-11-07 14:48:21 -06:00
Salvador Fuentes
69ab09273d versions: Add cri-tools and conmon to the versions.yaml
cri-tools version was managed in the tests repository, but as
we define here cri-o, containerd and kubernetes versions, it
make sense to have the cri-tools version defined in this repo.

conmon has now to be installed/built separately. So add it
to the list.

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

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-11-07 10:38:58 -06:00
Jose Carlos Venegas Munoz
05a8d4ba95 CI: Fix bump test
Bump test fails because Kata  version at this moment is alfa and
only bumps from alpha to rc0 are allowed. Just use rc0 as use-case
for all, there is not any other constrain at the moment.

Fixes: #795

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-11-07 15:19:52 +00:00
Archana Shinde
853a99cfd2 release: Fix bug in evaluation kata_version.
With the previous syntax, literal value was being assigned to
kata_version.

Fixes: #793

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-06 09:31:49 -08:00
Yves Chan
5b31282558 vc/qemu: add mutex to qmp monitor channel in qmpSetup()
Solve possible race condition in qmpSetup() and qmpShutdown()

Fixes: #2139

Signed-off-by: Yves Chan <shanks.cyp@gmail.com>
2019-11-06 11:38:51 +08:00
Salvador Fuentes
0e70b38d06 versions: Update kubernetes and cri-o to 1.16
Update k8s supported version from 1.15.3 to 1.16.2
and cri-o from 1.15.0 to 1.16.0

Fixes: #2166.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-11-05 13:57:02 -06:00
James O. D. Hunt
b499732f75 Merge pull request #791 from egernst/master-dont-use-fork
kata-deploy: action: reference kata-containers instead of fork
2019-11-05 08:24:09 +00:00
Eric Ernst
4d129fd9be kata-deploy: action: reference kata-containers instead of fork
Should have been fixed before merge. Reference upstream instead of fork
of Kata.

Fixes #789

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-11-04 09:15:09 -08:00
Archana Shinde
ec95961620 kernel: Enable configuration for fips mode.
This will allow us to run a VM in fips mode.
The intention is to check if the host is running in fips mode
and then start a container in fips mode as well.

Fixes #787

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-01 15:19:36 -07:00
Julio Montes
4c9321088e Merge pull request #774 from devimc/topic/snap/fixLaunchpad
snap: make launchpad happy again
2019-11-01 10:07:32 -06:00
Salvador Fuentes
2082a9f2a2 Merge pull request #2163 from yyyeerbo/wip
versions: move cmake and musl version into versions.yaml
2019-11-01 07:25:36 -06:00
Salvador Fuentes
764c26063e Merge pull request #2159 from egernst/1.10.0-alpha0-branch-bump
# Kata Containers 1.10.0-alpha0
2019-11-01 07:21:57 -06:00
James O. D. Hunt
0de5c42276 Merge pull request #2149 from vijaydhanraj/acrn_remove_num_cpu_option
HV: Remove number of guest CPU configuration in ACRN
2019-11-01 09:29:58 +00:00
Yang Bo
a1e359d331 versions: move cmake and musl version into versions.yaml
Fixes: #2162

Signed-off-by: Yang Bo <bo@hyper.sh>
2019-11-01 17:27:48 +08:00
James O. D. Hunt
2f43fefe74 Merge pull request #779 from egernst/1.10.0-alpha0-branch-bump
# Kata Containers 1.10.0-alpha0
2019-11-01 09:18:56 +00:00
Peng Tao
254b85aec1 Merge pull request #2092 from lifupan/fixmissingwatchconsole
virtcontainers: fix the issue of missing watchConsole
2019-11-01 09:47:11 +08:00
Eric Ernst
5f6e642bb7 Merge pull request #377 from egernst/1.10.0-alpha0-branch-bump
# Kata Containers 1.10.0-alpha0
2019-10-31 15:41:13 -07:00
Julio Montes
27c7773693 snap: reimplement image part
in order to make launchpad happy again, next changes are required:
* Install podman and cni plugings
* Use podman to build the rootfs or initrd image
* Depending on the architecture, build rootfs or initrd image

fixes #678

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-31 20:55:28 +00:00
Eric Ernst
0a35f504ab release: Kata Containers 1.10.0-alpha0
- sandbox/cgroups: don't constrain if using SandboxCgroupsOnly
- cli: add kata-overhead subcommand
- versions: support specify version in versions.yaml for rust agent.
- virtcontainers/sandbox: calculate container's CPU from sandbox.contai…
- ci: Fix versions_checker.sh
- ci: Fix versions_checker.sh
- virtcontainers: unmount host mounts if container can't be created
- virtcontainers/store: make VCStoreUUIDPath rootless
- virtcontainers/annotations: use right domain name for kata annotations
- v2: Change the event and error behavior of pause/resume
- Update cni plugin version
- Load state early so that hypervisor can store the correct state

e4c816b versions: support specify version in versions.yaml for rust agent.
691a6a7 sandbox/cgroups: don't constrain if using SandboxCgroupsOnly
7fe0100 cli: add kata-overhead command
1bbc1d5 virtcontainers: add StatsSandbox to vc API
569bd78 virtcontainers: change pass by value to pass by reference
5b226d0 ci: Fix versions_checker.sh
f8b84d7 ci: Fix versions_checker.sh
24d7aff virtcontainers: change pass by value to pass by reference
abec17f virtcontainers/store: make VCStoreUUIDPath rootless
eca7bd2 virtcontainers: unmount host mounts if container can't be created
91bd095 virtcontainers/annotations: use right domain name for kata annotations
c1060a3 v2: Change the event and error behavior of pause/resume
f6a10bc state: Refactor code to move all the state load code
fa4acad state: Load the state from storage early on
929c4e7 network: Change NewNS() call
c0995c6 vendor: Vendor the latest CNI plugins
86d8346 version: Update the version for cni plugins

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-31 12:58:45 -07:00
Eric Ernst
cf16562429 release: Kata Containers 1.10.0-alpha0
- release: Fix typos and organization issues
- kata-deploy: fix qemu-virtiofs entry on crio configuration
- Add actions release automation
- tags: Tag all repos with the same kata VERSION
- kata-deploy: Add qemu-virtiofs to containerd configuration
- release: Fixing message information
- kata-deploy: Add qemu-virtiofs wrapper
- doc: Fixes for release.md
- deploy: Skip installing nemu

84e004e kata-deploy: fix qemu-virtiofs entry on crio configuration
d56dec0 release: Fix typos and organization issues
9a7d692 kata-deploy: Add a simple GitHub Action
4eb376b artifact-list: provide script to get items to build
4f89e97 kata-deploy: look for kata artifacts locally
dc8fe05 release: Allow functions to take release versions
6c8df7f release: Call kata-deploy-binaries.sh main only if it not sourced
5307b03 release: Define a default value for destdir
7a932cf release: Create tarballs after every stage
420eb6e qemu-virtiofs: Fix tar naming for qemu with virtiofs support
f2ef841 release: don't checkout packaging from packaging
643ddf9 release: Add option to generate versions based on tag
b8dcb1c tags: Tag all repos with the same kata VERSION
eea8cea kata-deploy: Fix indentation issues.
8234f9a kata-deploy: Add qemu-virtiofs to containerd configuration
aafd329 release: Fixing message information
dab8087 kata-deploy: Add qemu-virtiofs wrapper
7c26509 doc: Fixes for release.md
8eb5cf3 deploy: Skip installing nemu

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-31 12:58:30 -07:00
Eric Ernst
f2e4edc068 release: Kata Containers 1.10.0-alpha0
Version bump no changes

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-31 12:58:23 -07:00
Eric Ernst
764ba9f83d Merge pull request #2153 from egernst/cgroup-fixups
sandbox/cgroups: don't constrain if using SandboxCgroupsOnly
2019-10-31 12:11:33 -07:00
Julio Montes
43a5d147f1 snap: use adopt-info to set grade and version
adopt-info is a snapcraft feature that allows us to specify the snap grade and
version at runtime. Depending on the environment the master or the latest
stable branch can be used to build the Kata Containers snap, for the kata
CI and launchpad snap-master branch, the master branch are used, otherwise
the latest stable branch.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-31 14:48:49 +00:00
Eric Ernst
1b05482680 Merge pull request #2097 from jcvenegas/overhead
cli: add kata-overhead subcommand
2019-10-31 07:39:36 -07:00
Salvador Fuentes
ad70bc3499 Merge pull request #2155 from yyyeerbo/wip
versions: support specify version in versions.yaml for rust agent.
2019-10-31 07:52:49 -06:00
Yang Bo
e4c816bebd versions: support specify version in versions.yaml for rust agent.
Fixes: #2154

Signed-off-by: Yang Bo <bo@hyper.sh>
2019-10-31 14:51:50 +08:00
Eric Ernst
691a6a7ac4 sandbox/cgroups: don't constrain if using SandboxCgroupsOnly
When SandboxCgroupsOnly is set, we are expected to just inherit our parent's
cgroup settings and to move all Kata threads within that sandbox cgroup. The
initial implementation still adjusted the size of this cgroup. This commit
fixes this.

This commit makes a couple of functional changes, small refactors, and
adds clarifying comments for some functions.

Fixes: #2090

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-30 19:16:30 -07:00
Jose Carlos Venegas Munoz
7fe0100444 cli: add kata-overhead command
Introduce kata-overhead command to kata-runtime CLI, to help
with calculating sandbox overhead.

Fixes: #2096

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-30 19:08:58 -07:00
Jose Carlos Venegas Munoz
1bbc1d58bd virtcontainers: add StatsSandbox to vc API
StatsSandbox is used to gather metrics for the sandbox (host cgroup) as
well as from the individual containers (from the guest cgroups). This is
intended to be used for easily calculating Kata sandbox overheads.

Fixes: #2096

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-30 19:07:23 -07:00
Wang Liang
569bd780f1 virtcontainers: change pass by value to pass by reference
container.config does not point to sandbox.config.Containers.ContainerConfig
which caused the ContainerConfig not sync.

Fixes: #2129

Signed-off-by: Wang Liang <wangliangzz@inspur.com>
2019-10-30 19:01:57 -07:00
Archana Shinde
62f64bb009 version: Update containerd version to 1.3.0
These include features like privileged containers without host devices
and support for per runtime annotations.

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

Fixes #2099

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-30 17:02:21 -07:00
James O. D. Hunt
6f95e3e1f3 Merge pull request #770 from chavafg/topic/release-notes
release: Fix typos and organization issues
2019-10-30 11:10:31 +00:00
Vijay Dhanraj
9d50cc1ff9 HV: Remove number of guest CPU configuration in ACRN
ACRN doesn't support configuring number of guest vcpu  option ('-c') anymore.
Number of guest vcpus will be defined in the hypervisor scenario
configuration file instead.

Removed the -c option from the acrn-dm parameters when launching VMs and
also trimmed configuration.toml file accordingly.

fixes #2136
Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-10-29 23:27:15 -07:00
GabyCT
79173ce76b Merge pull request #772 from chavafg/topic/fix-crio-qemu-cfg
kata-deploy: fix qemu-virtiofs entry on crio configuration
2019-10-29 16:40:47 -06:00
Salvador Fuentes
84e004e426 kata-deploy: fix qemu-virtiofs entry on crio configuration
Use correct key for the kata-qemu-virtiofs runtime class definition
in the crio configuration file.

Fixes: #771.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-29 10:44:23 -06:00
Salvador Fuentes
d56dec0475 release: Fix typos and organization issues
For better reading, re-orginize the `release/README.md`
and fix a typo in `runtime-release-notes.sh`.

Fixes: #769.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-24 14:59:56 -05:00
Jose Carlos Venegas Munoz
030dfd92ff Merge pull request #764 from egernst/add-actions-release-automation
Add actions release automation
2019-10-23 22:02:42 -05:00
Eric Ernst
da98191940 Merge pull request #2130 from fuxiao511/update_cpu
virtcontainers/sandbox: calculate container's CPU from sandbox.contai…
2019-10-22 21:38:36 -07:00
Eric Ernst
9a7d6922b4 kata-deploy: Add a simple GitHub Action
Create a container based action which will test a Kata artifact tarball
in the kata-deploy daemonset on AKS. This AZ credentials are available
from the callers environment.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-22 16:22:30 -07:00
Eric Ernst
4eb376b40e artifact-list: provide script to get items to build
artifact-list.sh is created so a builder can quickly determine which
artifacts may be built within this repository.

I user may get this list, which indicates exactly which functions are
available within ./release/kata-deploy-binaries.sh for building.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-22 16:22:30 -07:00
Eric Ernst
4f89e97e5e kata-deploy: look for kata artifacts locally
When building the kata-deploy images before, we would look to pull the
latest artifacts from the release URL.

It would be better to allow the user to pull from this URL, or to create
the artifacts locally, and pass the location of this tar.xz to the build
process.

Instead of providing KATA_VER, builders should provide KATA_ARTIFACTS,
which is the filename that is assumed to be located within the docker
build path.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-22 14:47:42 -07:00
Archana Shinde
dc8fe05654 release: Allow functions to take release versions
Allow functions to take release tags

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-22 14:47:42 -07:00
Archana Shinde
6c8df7fc3d release: Call kata-deploy-binaries.sh main only if it not sourced
Allow script to be sourced.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-22 14:47:42 -07:00
Archana Shinde
5307b03adb release: Define a default value for destdir
We want to isupport calling individual functions from the script,
independendent of the actual script being called.
Define a default value for $destdir.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-22 14:47:42 -07:00
Archana Shinde
7a932cf3a9 release: Create tarballs after every stage
Make every build function output a tarball.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-22 14:47:42 -07:00
Eric Ernst
420eb6e984 qemu-virtiofs: Fix tar naming for qemu with virtiofs support
Fixes the naming of tarball for qemu-virtiofs so that it is different
from the qemu one.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-22 14:47:42 -07:00
Eric Ernst
f2ef8411fa release: don't checkout packaging from packaging
We ran into issues in the past since we didn't create stable branches
for the packaging repository. We will maintain this appropriately going
forward, so let's go ahead and remove the notion of local versus remote.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-22 14:47:42 -07:00
Eric Ernst
643ddf9907 release: Add option to generate versions based on tag
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-22 14:47:42 -07:00
Salvador Fuentes
a1a2da6fcf Merge pull request #2142 from jcvenegas/fix-version-checker-1.9
ci: Fix versions_checker.sh
2019-10-22 11:52:38 -05:00
Jose Carlos Venegas Munoz
559327c021 Merge pull request #2141 from jcvenegas/merge-check-for-release
ci: Fix versions_checker.sh
2019-10-21 13:19:06 -05:00
Jose Carlos Venegas Munoz
6bd5fd900c Merge pull request #749 from jcvenegas/tag-all
tags: Tag all repos with the same kata VERSION
2019-10-21 13:18:11 -05:00
lifupan
c51d49277e virtcontainers: fix the issue of missing watchConsole
When do the reloading sandbox in shimv2, it's needed to
rewatch the hypervisor's console when debug enabled.

Fixes:#2091

Signed-off-by: lifupan <lifupan@gmail.com>
2019-10-19 00:37:15 +08:00
Jose Carlos Venegas Munoz
b8dcb1c35a tags: Tag all repos with the same kata VERSION
Now that all files have a VERSION we
can check if there is a bump for the file.

We can now tag all repos with the same kata version.
As all of them are branched and have a VERSION file.

Fixes: #748

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-10-18 15:47:28 +00:00
Jose Carlos Venegas Munoz
5b226d0d39 ci: Fix versions_checker.sh
Version checker does to work today

- Allow to detect stabe branches

Fixes #1581

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-10-17 20:54:43 -05:00
Jose Carlos Venegas Munoz
f8b84d7eba ci: Fix versions_checker.sh
Version checker does to work today

- Allow to detect stabe branches

Fixes #1581

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-10-17 20:48:10 -05:00
GabyCT
826e279db3 Merge pull request #761 from chavafg/topic/cri-containerd-virtiofs-config
kata-deploy: Add qemu-virtiofs to containerd configuration
2019-10-16 09:47:41 -05:00
GabyCT
a97b09d5cd Merge pull request #759 from GabyCT/topic/fixspell
release: Fixing message information
2019-10-15 15:58:26 -05:00
Salvador Fuentes
eea8cea804 kata-deploy: Fix indentation issues.
Fix indentation issues on `kata-deploy.sh` file.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-15 15:31:49 -05:00
Salvador Fuentes
8234f9a832 kata-deploy: Add qemu-virtiofs to containerd configuration
We need an entry of `kata-qemu-virtiofs` on the
containerd configuration file.
In addition we need to add `kata-qemu-virtiofs` to the
shim list, so that the wrapper is created for shimv2.

Fixes: #760.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-15 15:31:49 -05:00
Gabriela Cervantes
aafd329f18 release: Fixing message information
This replaces the alph to alpha on the message information.

Fixes #758

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-10-15 10:53:43 -05:00
GabyCT
5d49a78131 Merge pull request #757 from jcvenegas/qemu-virtiofs-wrapper
kata-deploy: Add qemu-virtiofs wrapper
2019-10-14 19:08:42 -05:00
Jose Carlos Venegas Munoz
dab80870e2 kata-deploy: Add qemu-virtiofs wrapper
Tarball is missing to provide a wrapper for qemu-virtiofs

Fixes: #756

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-10-14 21:59:46 +00:00
GabyCT
aeaf04db46 Merge pull request #755 from amshinde/Fix-release-md
doc: Fixes for release.md
2019-10-14 13:49:08 -05:00
GabyCT
b553d1a4ad Merge pull request #751 from amshinde/skip-installing-static-nemu
deploy: Skip installing nemu
2019-10-14 08:27:24 -05:00
Peng Tao
7d484dfe4c Merge pull request #2127 from devimc/topic/virtcontainers/rollbackUnmountHostMounts
virtcontainers: unmount host mounts if container can't be created
2019-10-14 10:32:14 +08:00
Peng Tao
a1cd0f8f76 Merge pull request #2134 from devimc/topic/virtcontainers/rootlessVCStoreUUIDPath
virtcontainers/store: make VCStoreUUIDPath rootless
2019-10-14 10:27:06 +08:00
Wang Liang
24d7aff60c virtcontainers: change pass by value to pass by reference
container.config does not point to sandbox.config.Containers.ContainerConfig
which caused the ContainerConfig not sync.

Fixes: #2129

Signed-off-by: Wang Liang <wangliangzz@inspur.com>
2019-10-12 04:24:50 -04:00
Archana Shinde
7c26509a72 doc: Fixes for release.md
Add requirement for the user to be added to the docker group.
Observed firecracker failing due to this.
Add fixes for typos and missing spaces.

Fixes #754

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-11 10:26:53 -07:00
Julio Montes
abec17f8f2 virtcontainers/store: make VCStoreUUIDPath rootless
The uuid file shouldn't be created at `/var` if running rootless.
Modify `VMUUIDStoragePath` to get a path accessible for non-root users
if running rootless.

fixes #2133

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-11 15:30:23 +00:00
Julio Montes
eca7bd2705 virtcontainers: unmount host mounts if container can't be created
Mount points, like `resolv.conf` and `hostname` are left in the
host when the cgroup creation fails.
Use `unmountHostMounts()` and `bindUnmountContainerRootfs()` in the rollback
function that is called when container's creation fails.

fixes #2108

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-11 13:46:56 +00:00
GabyCT
4a65bad291 Merge pull request #564 from devimc/topic/how-to/loadKernelModules
how-to: add how-to for loading kernel modules
2019-10-10 15:34:20 -05:00
Julio Montes
24dd673365 how-to: add how-to for loading kernel modules
Add documentation describing how to load kernel modules with kata containers

fixes #563

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-10 19:17:58 +00:00
Peng Tao
c7b4c5eab9 Merge pull request #2124 from devimc/topic/virtcontainers/fixAnnotationsPrefix
virtcontainers/annotations: use right domain name for kata annotations
2019-10-10 17:02:27 +08:00
Peng Tao
729b5faf52 Merge pull request #2122 from darfux/v2_pause_resume_behavior
v2: Change the event and error behavior of pause/resume
2019-10-10 16:52:09 +08:00
Eric Ernst
4f8cc73e82 Merge pull request #2112 from amshinde/update-cni-plugin-version
Update cni plugin version
2019-10-09 15:51:08 -07:00
Archana Shinde
04489fec2d Merge pull request #2118 from amshinde/load-state-early
Load state early so that hypervisor can store the correct state
2019-10-09 15:46:15 -07:00
Archana Shinde
8eb5cf318e deploy: Skip installing nemu
We dont need to install nemu in the static tarball.

Fixes #750

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-09 14:26:44 -07:00
GabyCT
d785f8a8b2 Merge pull request #558 from YchauWang/master
docs: Updated the network namespace default structure picture to tcfi…
2019-10-09 16:19:58 -05:00
Julio Montes
91bd095ee4 virtcontainers/annotations: use right domain name for kata annotations
The domain name should be used as prefix for the annotations, for
kata containers the domain name is katacontainers.io, not kata-containers.io

fixes #2123

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-09 15:21:28 +00:00
Jose Carlos Venegas Munoz
a4b5a565ff Merge pull request #2117 from katabuilder/1.9.0-rc0-branch-bump
# Kata Containers 1.9.0-rc0
2019-10-09 08:25:56 -05:00
Li Yuxuan
c1060a3b9e v2: Change the event and error behavior of pause/resume
1. Send the event when the container is paused/resumed successfully
2. Return the error of the pause/resume function rather than
`getContainerStatus`.

Fixes #2121

Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2019-10-09 19:00:04 +08:00
Archana Shinde
bf8793adad Merge pull request #373 from katabuilder/1.9.0-rc0-branch-bump
# Kata Containers 1.9.0-rc0
2019-10-08 18:48:30 -07:00
Archana Shinde
f6a10bcae7 state: Refactor code to move all the state load code
Refactor so that all code to load state, devices, network
takes place at one place. This is in line with the experimental api
for new storage that also loads all the necessary items here all at once.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-08 18:42:20 -07:00
Jose Carlos Venegas Munoz
a70830dd62 Merge pull request #747 from katabuilder/1.9.0-rc0-branch-bump
# Kata Containers 1.9.0-rc0
2019-10-08 18:39:26 -05:00
Archana Shinde
fa4acad4aa state: Load the state from storage early on
The hypervisor.createSandbox may need to access the state.
For eg, ACRN today needs to access the block index to assign
it to the root image of the VM. Hence load this early on.

Fixes #2026

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-08 16:29:07 -07:00
Archana Shinde
929c4e7e3d network: Change NewNS() call
NewNS() api has been moved to testutils package in the cni
plugin repo.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-08 16:16:35 -07:00
Archana Shinde
c0995c6201 vendor: Vendor the latest CNI plugins
Vendor cni plugin repo to use the latest code for
setting up network namespaces.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-08 16:16:26 -07:00
Archana Shinde
86d8346d0c version: Update the version for cni plugins
Update the version used for testing the cni plugins to the latest
0.8.2 release. This way we make sure CI tests with latest CNI plugins.

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

Fixes #2111

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-08 16:16:20 -07:00
katacontainersbot
b84cb5e0f1 release: Kata Containers 1.9.0-rc0
- Fix cache factory UT
- Virtio-fs v0.3 support
- virtcontainers: set agent's logs vsock port
- config: Fix `virtio-fs` typo in Makefile
- Hypervisor: UUID fix for acrn hypevisor
- virtcontainers: change firecracker socket permissions
- Add annotations to provide custom configs
- Fix CRIO + Firecracker
- rootless: add rootless to kata
- QEMU: do not require nvdimm machine option with initrd
- s390x: Fix runtime build for s390x
- versions: Update kernel to 4.19.75
- config: honor DEFSHAREDFS_QEMU_VIRTIOFS and CONFIG_QEMU_VIRTIOFS_IN
- Support Firecracker 0.18
- virtcontainers: fix the issue of missing qemu error logs
- config: Fix the qemu-virtiofs.toml
- s390x: Share image between qemu instances
- The unit of newMemory is MB
- config: use 9p as default shared filesystem for nemu
- Remove annotation config json key

dd21046 vc/store: fix TestStoreVCNewVCSandboxStore/TestStoreVCNewVCContainerStore
6ab89e4 vc/store: fix cache factory ut
4863aa9 vc/store: reuse store
ad15631 virtiofsd: Do not use posix lock.
2b40b6b vendor: update kata agent
aa43e2a virtcontainers: set agent's logs vsock port
23a5dc7 virtiofsd: use virtiofsd --syslog
d5a3d0a virtiofs: use virtiofsd --fd=FDNUM
6ce6a26 kata_agent: use virtio-fs 0.3+ mount options
80855a8 ci: travis: allow ppc64le failures
c3abd51 config: Fix `virtio-fs` typo in Makefile
8f6b0a6 virtcontainers: change firecracker socket permissions
8f70643 tests: Remove hardcoded annotation value.
e7b9c36 tests: Add tests for annotations.
09129c1 config: Define minimum memory requirement
8405b56 annotations: add Annotations for the agent.
5b78a8a annotations: Add annotations for runtime config
afb91c2 annotations: Add annotations to support additional configurations
845bf73 annotations: Support annotations to customise kata config
30d0b7a annotations: Add missing firmware and hashes to asset annotations
46b6815 annotations: Change existing annotations to fit a new format
312f3e7 virtcontainers/fc: implement remove device
7e9cc56 virtcontainers/fc: improve create disk pool process
07932d5 virtcontainers/fc: add logs and improve others to make debugging easier
ed7240b virtcontainers: move device operations to a more generic place
e93bf96 network: Add tuntap device
c8dd92d dep: update vendor packages for netlink commit
41407cf vc: make cgroup usage configurable if rootless
5f0799f vc: add rootless dir to path variables
cdd6f7e katautils: update paths to be configurable for rootless execution
2d8b278 rootless: add rootless logic
8b843c5 QEMU: do not require nvdimm machine option with initrd
c152ebf s390x: Fix runtime build for s390x
bc3c07b versions: Update kernel to 4.19.75
aa6a16c Hypervisor: UUID fix for acrn hypevisor
b1909e8 config: fix virtiofsd name
84ead98 config: add configuration-qemu-virtio-fs.toml to gitignore
443e657 config: honor DEFSHAREDFS_QEMU_VIRTIOFS and CONFIG_QEMU_VIRTIOFS_IN
3d0949d virtcontainers: check minimum supported version of firecracker
1f93cff virtcontainers: fix the issue of missing qemu error logs
8680db6 versions: update firecracker to the version 0.18.0
123ba13 vendor: update kata agent
5ac6e9a virtcontainers: make socket generation hypervisor specific
f2f0923 virtcontainers: rename kataVSOCK type and move it into the types package
f42dd7d virtcontainers/fc: Add support for hybrid vsocks
2c4cf39 virtcontainers/fc: bump firecracker experimental version
bb87b44 virtcontainers/fc: Add logger to the http transport
880bb2b virtcontainers: introducing HybridVSock type
2a8af23 virtcontainers: Make fc.go fit the new API
67ce728 virtcontainers: Update firecracker swagger API
cdb1b5c cli: Fix the qemu-virtiofs.toml
4134571 config: do not use nemu variable for qemu-virtiofs configuration
97fe749 config: use 9p as default shared filesystem for nemu
c81db9c sandbox: The unit of newMemory is MB
7fa0a72 s390x: Share image between qemu instances
7965baa vendor: update govmm
2ed94cb Config: Remove ConfigJSONKey from annotations

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-10-08 21:38:41 +00:00
katacontainersbot
7d14e84e41 release: Kata Containers 1.9.0-rc0
Starting to version this repository

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-10-08 21:38:28 +00:00
katacontainersbot
6fa3063e68 release: Kata Containers 1.9.0-rc0
- osbuilder: Add USE_PODMAN as an alternate for USE_DOCKER
- README: Update how to use DEBUG variable
- Fix yq
- initrd_builder: Create empty resolv.conf in rootfs
- rootfs: update fedora to 29 for arm64.

1599601 osbuilder: Update README about `USE_PODMAN` variable
d1751a3 osbuilder: Add USE_PODMAN as an alternate for USE_DOCKER
d2d029c README: Update how to use DEBUG variable
9e10b34 rootfs_builder: Create /etc/resolv.conf in rootfs
5982e48 lib.sh: Fix curl error when using curl+yq
05428a6 rootfs: Install yq if not found instead of error
1eec032 rootfs: update fedora to 29 for arm64.

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-10-08 21:38:20 +00:00
Jose Carlos Venegas Munoz
c26788c329 Merge pull request #2115 from bergwolf/store
Fix cache factory UT
2019-10-08 15:40:52 -05:00
Salvador Fuentes
d4997e67fe Merge pull request #745 from jcvenegas/release-1.9-improvments
Release 1.9 improvements
2019-10-08 15:22:43 -05:00
GabyCT
f195f7f091 Merge pull request #693 from jongwu/ptp
kernel: enable kvm_ptp for arm64
2019-10-08 15:17:43 -05:00
Jose Carlos Venegas Munoz
7b4b1d723b bump: check rc0 version after alpha
If we do a bump from an alpha release, the next
should be a rc0.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-10-08 18:47:57 +00:00
Jose Carlos Venegas Munoz
2bab82abb9 bump: version all repos
Instead of have special cases, just
bump all, bumps are check and more if are automated.

CI probbly not, but we can skip if necesary.

Fixes: #744

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-10-08 18:47:49 +00:00
Peng Tao
dd21046072 vc/store: fix TestStoreVCNewVCSandboxStore/TestStoreVCNewVCContainerStore
They both need to set a temporary test dir in order to run as non-root.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-10-08 09:32:45 -07:00
Peng Tao
6ab89e4549 vc/store: fix cache factory ut
In order to run the ut as non-root, we need to add a path prefix
for all store paths.

Fixes: #2113

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-10-08 09:29:37 -07:00
Peng Tao
4863aa998e vc/store: reuse store
As store.New() claims, we should reuse an existing store instead of
failing on duplicating stores.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-10-08 09:29:28 -07:00
Eric Ernst
f62bceba99 Merge pull request #1994 from stefanha/virtio-fs-v0.3
Virtio-fs v0.3 support
2019-10-08 08:27:32 -07:00
Jianyong Wu
5c43c968d2 kernel: enable ptp_kvm for arm64
This is a experimental feature for arm64 as linux kernel has
not enable kvm ptp for arm64.
ptp_kvm need co-work from host and guest, so you need add this
patch both to your guest and host. Host kernel version is better
lower than 5.0 and higher than 4.19.
another version of this patch base on kernel v5.3 is under review in kernel upstream, refer to [1]
to see the full info.

[1] https://lkml.org/lkml/2019/8/29/80

Fixes: #692
Signed-off-by: Jianyong Wu jianyong.wu@arm.com
2019-10-08 15:41:00 +08:00
Salvador Fuentes
ad1563196e virtiofsd: Do not use posix lock.
We have some issues trying to run `apt upgrade` on
a container that uses virtiofsd with `-o posix_lock`.

Add virtiofsd `-o no_posix_lock` argument to not use the
posix lock.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-07 16:21:33 -05:00
GabyCT
238f3cec56 Merge pull request #2104 from devimc/topic/virtcontainers/fcAgentLogs
virtcontainers: set agent's logs vsock port
2019-10-07 13:23:37 -05:00
Julio Montes
2b40b6b094 vendor: update kata agent
bring support for logging through a hybrid vsock

shortlog:
95be1c3 agent: add support for logging to a vsock port
a03e23b protocols/client: improve hybrid vsock parser
6a96997 protocols/client: make schemes and hybrid vsock dialer public
e01f23c network: Add a testcase for setupDNS
d733185 network: Setup DNS for sandbox

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-07 16:39:18 +00:00
Julio Montes
aa43e2a9ac virtcontainers: set agent's logs vsock port
In firecracker, there is no socket connected to /dev/console, so let's
use a vsock port to get agent's logs

Depends-on: github.com/kata-containers/shim#210

fixes #2103

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-07 16:39:18 +00:00
Stefan Hajnoczi
23a5dc7ff8 virtiofsd: use virtiofsd --syslog
Log to syslog instead of stderr.  This way all Kata and virtiofsd logs
are captured in syslog (or the systemd journal).  This makes debugging
much easier.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-10-07 14:21:30 +01:00
Stefan Hajnoczi
d5a3d0a61c virtiofs: use virtiofsd --fd=FDNUM
The new --fd=FDNUM file descriptor passing option eliminates the need to
wait for virtiofsd to create the vhost-user UNIX domain socket.  This is
a nice simplification because we can remove the timeouts and stderr
parsing.  There is no longer a race between launching virtiofsd and
launching QEMU, so we don't need to wait anymore.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-10-07 14:21:30 +01:00
Stefan Hajnoczi
6ce6a262a8 kata_agent: use virtio-fs 0.3+ mount options
virtio-fs changed the mount command-line.  Previously "mount none -o
tag=kataShared ..." was used.  Now "mount kataShared ..." is used
instead.

Since the "kataShared" tag is used for both 9P and virtio-fs, rename the
variable so that it is not 9P-specific.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Fixes: #1993
2019-10-07 14:21:28 +01:00
GabyCT
93197ddcc3 Merge pull request #2106 from chavafg/topic/makefile-virtiofs-typo
config: Fix `virtio-fs` typo in Makefile
2019-10-04 15:10:41 -05:00
Salvador Fuentes
80855a8ed4 ci: travis: allow ppc64le failures
ppc64le job on travis is being very unstable.
Allow failures on this job

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-04 12:33:31 -05:00
Salvador Fuentes
c3abd51a5b config: Fix virtio-fs typo in Makefile
typo `virtios-fs` should be `virtio-fs`.

Fixes: #2105.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-04 12:32:32 -05:00
Jose Carlos Venegas Munoz
b3aa770d95 Merge pull request #2075 from vijaydhanraj/acrn_vm_uuid_support
Hypervisor: UUID fix for acrn hypevisor
2019-10-04 09:39:46 -05:00
Jose Carlos Venegas Munoz
2591a1fb65 Merge pull request #2102 from devimc/topic/virtcontainers/fcFixSocketPerm
virtcontainers: change firecracker socket permissions
2019-10-04 09:26:50 -05:00
Eric Ernst
ba3d4f77fe Merge pull request #2081 from amshinde/custom_annotations
Add annotations to provide custom configs
2019-10-03 18:24:59 -07:00
Eric Ernst
94906c40c3 Merge pull request #2095 from devimc/topic/virtcontainers/fixCRIOwFC
Fix CRIO + Firecracker
2019-10-03 18:24:50 -07:00
Eric Ernst
949d7631d8 Merge pull request #743 from chavafg/topic/virtiofsd-time-patch
static-build: Add patch that adds time to virtiofsd seccomp
2019-10-03 16:59:39 -07:00
Julio Montes
8f6b0a6a41 virtcontainers: change firecracker socket permissions
For security reasons, let's make sure 'others' don't have access to the
firecracker hybrid vsock

fixes #2101

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-03 21:23:19 +00:00
Salvador Fuentes
f3ff9c76a8 static-build: patch virtiofsd
Apply qemu/patches/virtiofsd/0001-add-time-to-seccomp.patch
to be able to build virtiofsd statically.

Fixes: #742.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-03 15:59:51 -05:00
Archana Shinde
8f70643d57 tests: Remove hardcoded annotation value.
Fix test by removing hardcoded annotation key. Use the
annotation package instead.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-03 11:53:18 -07:00
Archana Shinde
e7b9c36b90 tests: Add tests for annotations.
Tests verify hypervisor, runtime and agent annotations.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-03 10:44:44 -07:00
Archana Shinde
09129c1c13 config: Define minimum memory requirement
Introduce a constant for minimum memory requirement
in virtcontainers package, that can be used in config.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-03 10:44:43 -07:00
Archana Shinde
8405b56e6f annotations: add Annotations for the agent.
The annotations handle the tracing config for the agent.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-03 10:42:52 -07:00
Archana Shinde
5b78a8a0f8 annotations: Add annotations for runtime config
Additional annotations added to customise runtime configuration.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-03 10:42:52 -07:00
Archana Shinde
afb91c2e02 annotations: Add annotations to support additional configurations
Add annotation to support all hypervisor configurations.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-03 10:42:52 -07:00
Archana Shinde
845bf73726 annotations: Support annotations to customise kata config
Add support for annotations that allow us to custimise a subset
of the configurations provided in kata conf toml file.
This initial commit adds support for customising vcpus, default max
vcpus, memory and the kernel command line passed as Hypervisor
config.

Replaces #1695
Fixes #1655

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-03 10:42:52 -07:00
Archana Shinde
30d0b7add7 annotations: Add missing firmware and hashes to asset annotations
These annotations were missing from the list of what are
considered as assets. Add these to existing list.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-03 10:42:52 -07:00
Archana Shinde
46b68157d1 annotations: Change existing annotations to fit a new format
Change the naming schema for existing annotations from
"com.github.containers.virtcontainers" to "io.kata-containers"
The hypervisor related annotations are changed to reflect this.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-03 10:42:52 -07:00
Salvador Fuentes
494272b0ac Merge pull request #371 from nitkon/master
osbuilder: Add USE_PODMAN as an alternate for USE_DOCKER
2019-10-02 13:51:57 -05:00
Julio Montes
312f3e7234 virtcontainers/fc: implement remove device
Unmount and unassign block device when it's required, that way the disk
can be unmounted and destroyed in the host.

fixes #1966

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-02 17:01:11 +00:00
Julio Montes
7e9cc5690d virtcontainers/fc: improve create disk pool process
Create a raw file and bind mount it to use it as disk is not needed,
instead a the raw file can be created at the jail path and use it directly
as disk, if a new container is added the real disk/device can be bind mounted
in the raw file.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-02 17:01:11 +00:00
Julio Montes
07932d59ab virtcontainers/fc: add logs and improve others to make debugging easier
add more logs and improve others to make firecracker debugging less painful

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-02 16:56:28 +00:00
Julio Montes
ed7240b40f virtcontainers: move device operations to a more generic place
move device operations to a more generic place where they can be used
in any hypervisor implementation.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-10-02 16:56:28 +00:00
Nitesh Konkar
15996014db osbuilder: Update README about USE_PODMAN variable
`USE_PODMAN` variable needs to be set for the osbuilder
scripts to use podman as a containerization engine to
build initrd/rootfs images. If both are set, `USE_DOCKER`
would take precedence over `USE_PODMAN`

Fixes: #370

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-10-02 21:58:41 +05:30
Nitesh Konkar
d1751a35e1 osbuilder: Add USE_PODMAN as an alternate for USE_DOCKER
In case a user wants to use podman instead of
docker to build initrd/rootfs images, facilitate
it by setting the variable `USE_PODMAN=true`.

Fixes: #370

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-10-02 21:58:02 +05:30
Jose Carlos Venegas Munoz
29d0ea9e81 Merge pull request #740 from chavafg/topic/fix-fc-install
static-build: Fix build for Firecracker v0.18
2019-10-01 18:06:22 -05:00
Salvador Fuentes
f10d48ced1 virtiofs: Add virtiofsd patch that adds time to seccomp
time syscall on seccomp is needed to be able to build
virtiofsd successfully.
This patch is currently not availabe upstream, so lets
add it until it becomes available.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-01 16:18:05 -05:00
Eric Ernst
46d1957e0f Merge pull request #1875 from gabibeyer/rootlessLogic
rootless: add rootless to kata
2019-10-01 11:17:38 -07:00
Salvador Fuentes
c350abb3d9 Merge pull request #737 from Pennyzct/FC_SERIAL_PORT_CONFIG
Kernel: Support Firecracker on aarch64
2019-10-01 12:56:43 -05:00
Salvador Fuentes
4b8ba67607 static-build: Fix build for Firecracker v0.18
Removes `--vsock` flag when building Firecracker since
the flag was removed as vsock is enabled by default.

Also update the path where the binaries are placed.

Fixes: #739.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-10-01 11:50:08 -05:00
Julio Montes
d1fdf4083e Merge pull request #369 from nitkon/patch-2
README: Update how to use DEBUG variable
2019-10-01 09:11:38 -05:00
GabyCT
9a9a8978f5 Merge pull request #364 from nitkon/fix_yq
Fix yq
2019-09-30 12:32:34 -05:00
nitkon
d2d029ce47 README: Update how to use DEBUG variable
Update osbuilder README to use DEBUG
environment variable for executing scripts in
debug mode.

Fixes:  #368

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-28 23:12:20 +05:30
Salvador Fuentes
3f57e8d64b Merge pull request #730 from Kvasscn/dev
kernel: avoid to download sha256sums.asc file repeatedly
2019-09-26 16:20:59 -05:00
Salvador Fuentes
3e4b381248 Merge pull request #366 from nitkon/dns_initrd
initrd_builder: Create empty resolv.conf in rootfs
2019-09-26 12:04:39 -05:00
Nitesh Konkar
9e10b341d6 rootfs_builder: Create /etc/resolv.conf in rootfs
Create an empty /etc/resolv.conf in rootfs if
it does not already exists else preserve it if
not a symlink. This would allow the agent to bind
mount it for DNS in kata VM.

Fixes: #365

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-26 20:17:41 +05:30
Gabi Beyer
e93bf967d2 network: Add tuntap device
The tuntap network device is for tuntap interfaces to connect
to the container. A specific use case is the slirp4netns tap
interface for rootless kata-runtime.

Fixes: #1878

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
2019-09-26 16:17:16 +02:00
Gabi Beyer
c8dd92d5aa dep: update vendor packages for netlink commit
The netlink dep needs to be updated to get logic for the tuntap
link. It is fixing a bug that uses a generic link instead.
This also requires the golang/x/sys package to be updated
for the IFLA_* constraints.

Commits for github.com/vishvananda/netlink
    c8c507c fix: fix ip rule goto bug
    db99c04 tuntap: Return TunTapLink instead of GenericLink
    e993616 Fix unit test failure: TestNeighAddDelLLIPAddr
    fb5fbae Mirred and connmark clobber their ActionAttrs
    1187dc9 Fix tests
    00009fb Add support for TC_ACT_CONNMARK
    fafc1e7 support vlan protocol
    fd97bf4 Add command to set devlink device switchdev mode
    bcb80b2 Add devlink command by to get specific device name
    f504738 Fix function comments based on best practices from Effective Go
    e281812 Fix typos
    adb577d Add support for IFLA_GSO_*
    aa950f2 travis: run tests with Go 1.12.x
    b64d7bc travis: specify go_import_path
    b9cafe4 remove redundant type assertions in type switch
    1e2e7ab Add Support for Virtual XFRM Interfaces
    48a75e0 Fix Race Condition in TestXfrmMonitorExpire
    e37f4b4 Avoid 64K allocation on the heap with each Receive
    332a698 Add devlink commands for devlink device information
    cb78b18 neigh_linux: Fix failure on deleted link neighs updates
    2bc5004 Replace redundant copied u32 types with type aliases
    093e80f Pass Ndmsg to NeighListExecute
    78a3099 Make test suite more deterministic
    2529893 genetlink: Add missing error check
    91b013f code simplification
    023a6da Make go vet happier
    aa5b058 Simplify code
    e137ed6 Replace nl.NewRtAttrChild with method on struct
    3b1c596 Run TravisCI with Go 1.10 and 1.11
    d741264 Reduce allocations
    b48eed5 Add an API to rename rdma device name
    02a3831 Adjust conntrack filters
    d3a23fd Make AddChild more generic
    1404979 Add support for hoplimit metric in routes
    6d53654 Add support for neighbor subscription
    531df7a Avoid serializing empty TCA_OPTIONS in qdisc messages
    56b1bd2 fix: BRIDGE_FLAGS_* constants off-by-one
    8aa85bf Add support for action and ifindex in XFRM policy
    9eab419 Netlink: Fix Darwin build
    2cbcf73 Add a test for Vlan filtering support for bridges.
    0bbc55b Initial support for vlan aware bridges.
    3ac69fd Add network namespace ID management.
    d68dce4 Ingress qdisc add/del Test case
    1006cf4 Implementation of HFSC
    d85e18e Allow Tuntap non-persist, allow empty tuntap name
    d77c86a protinfo: Check if object is nil
    a06dabf Increase size of receive buffer
    3e48e44 Revert "RTEXT_FILTER_VF doesn't always work with dump request, fixes #354"
    028453c RTEXT_FILTER_VF doesn't always work with dump request, fixes #354
    ee06b1d add vti6 support
    b1cc70d fix prefixlen/local IP, incl. PtP addresses
    7c0b594 Implemented String() for netem, fq and fq_codel in qdisc
    769bb84 Adjust flags values
    5f662e0 Add info about VFs on link
    985ab95 Add support for link flag allmulticast
    16769db Support LWTUNNEL_ENCAP_SEG6_LOCAL (including tests)
    b7f0669 Add test to Add/Del IPv6 route.
    55d3a80 Added tests for Gretap/Gretun devices
    f07d9d5 Run both Inline/Encap mode in TestSEG6RouteAddDel
    1970aef Add RDMA netlink socket for RDMA device information
    dc00cf9 Add Hash to U32
    23a36f2 Add Divisor to U32
    85aa3b7 Add statistics to class attributes
    aa0edbe Add support for setting InfininBand Node and Port GUID of a VF
    41009d5 Read conntrack flow statistics
    a2ad57a Add changelog file, initial release tagging
    5236321 Use IFLA_* constants from x/sys/unix
    25d2c79 Use IFF_MULTI_QUEUE from x/sys/unix to define TUNTAP_MULTI_QUEUE
    d35d6b5 Clarify ESN bitmap length construction logic
    a2af46a Add FQ Codel
    465b5fe Add Fq Qdisc support
    c27b7f7 Run gofmt -s -w on the project
    5f5d5cd Add a 'ListExisting' option to get the existing entries in the route/addr/link tables as part of RouteSubscribeWithOptions, AddrSubscribeWithOptions, and LinkSubscribeWithOptions.
    5a988e8 Support IPv6 GRE Tun and Tap
    7291c36 addr_linux: Implement CacheInfo installation
    422ffe6 addr_linux: Skip BROADCAST and LABEL for non-ipv4
    1882fa9 Add Matchall filter
    7b4c063 Update bpf_linux.go
    ad19ca1 netlink: allow non linux builds to pass.
    3ff4c21 Don't overwrite the XDP file descriptor with flags
    d4235bf Eliminate cgo from netlink.
    54ad9e3 Two new functions: LinkSetBondSlave and VethPeerIndex
    f67b75e Properly tear down netns at the end of test
    016ba6f Add support for managing source MACVLANs
    6e7bb56 Run TestSocketGet in dedicated netns
    a5d066d Fix LinkAdd for sit tunnel on 3.10 kernel
    8bead6f Add requirements to conntrack tests
    9ce265f Retrieve VLAN and VNI when listing neighbour
    fad79cb Fix go build issue for fou code

Commits for golang/x/sys
    88d2dcc unix: add IFLA_* constants for Linux 4.15
    c1138c8 unix: update to Linux 4.15, glibc 2.27 and Go 1.10
    37707fd unix: move gccgo redeclared *SyscallNoError functions to a separate file
    8f27ce8 unix: fix cpuset size argument in sched_affinity syscall
    3dbebcf unix: use SyscallNoError and RawSyscallNoError on Linux only
    ff2a66f unix: fix godoc comment for clen
    0346725 unix: add godoc for Sockaddr* types
    90f0fdc plan9: add arm support
    ef80224 unix: add sockaddr_l2 definitions
    af9a212 unix: don't export padding fields on all platforms
    af50095 unix: use ParseDirent from syscall
    2c42eef unix: adjust replacement regex for removed struct fields for linux/s390x
    fff93fa unix: add Statx on Linux
    52ba35d unix: check error return of os.Symlink in tests on Linux
    810d700 unix: match seek argument size to signature on linux/arm
    b9cf5f9 unix: add cgroupstats type and constants
    d38bf78 unix: restore gccgo support
    2493af8 plan9: move Unsetenv into env_plan9.go
    3ca7571 windows: move Unsetenv into env_windows.go
    1792d66 unix: move Unsetenv into env_unix.go
    dd9ec17 unix: fix build on Go 1.8
    12d9d5b unix: add SchedGetaffinity and SchedSetaffinity on Linux
    a3f2cbd unix: fix typo in unix/asm_linux_arm64.s made in 28a7276
    28a7276 unix: add SyscallNoError and RawSyscallNoError on Linux
    8380141 unix: simplify error handling in *listxattr on FreeBSD
    df29b91 unix: add TestSelect for *BSD
    801364e unix: add Select on Solaris
    d818ba1 unix: remove syscall constants on Solaris
    236baca unix: add timeout tests for Select and Pselect on Linux
    571f7bb unix: simplify TestGetwd
    d5840ad unix: add GetsockoptString for Darwin, *BSD and Solaris

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
2019-09-26 16:17:16 +02:00
Gabi Beyer
41407cfbed vc: make cgroup usage configurable if rootless
rootless execution does not yet support cgroups, so if running
rootlessly skip the cgroup creation and deletion.

Fixes: 1877

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
2019-09-26 16:17:16 +02:00
Gabi Beyer
5f0799f1b7 vc: add rootless dir to path variables
Modify some path variables to be functions that return the path
with the rootless directory prefix if running rootlessly.

Fixes: #1827

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
2019-09-26 16:17:16 +02:00
Gabi Beyer
cdd6f7e4d5 katautils: update paths to be configurable for rootless execution
Before using the default ctrsMapTrePath, check whether the runtime
is being ran rootlessly, and if so set the ctrsMapTreePath to the
rootlessRuntimeDir configured by the libpod rootless library.

Fixes: #1827

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
2019-09-26 16:17:16 +02:00
Gabi Beyer
2d8b278c09 rootless: add rootless logic
Add the ability to check whether kata is running rootlessly or
not. Add the setup of the rootless directory located in the dir
/run/user/<UID> directory.

Fixes: #1874

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
Co-developed-by: Marco Vedovati <mvedovati@suse.com>
Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-09-26 16:17:16 +02:00
Marco Vedovati
801a9a8fd0 Merge pull request #2089 from marcov/arm-initrd
QEMU: do not require nvdimm machine option with initrd
2019-09-26 08:57:29 +02:00
Archana Shinde
36626c13c8 Merge pull request #2087 from jschintag/fix_s390x_vsock
s390x: Fix runtime build for s390x
2019-09-25 10:35:04 -07:00
GabyCT
b4bc00951a Merge pull request #2083 from chavafg/topic/update-kernel
versions: Update kernel to 4.19.75
2019-09-25 09:36:21 -05:00
Marco Vedovati
8b843c5229 QEMU: do not require nvdimm machine option with initrd
Do not add the "nvdimm" machine option to QEMU when the config specifies
a initrd file.
For arm64, this allows using a vanilla QEMU, where "virt" machine does
not support the "nvdimm" option.

Fixes: #2088

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-09-25 13:26:09 +02:00
zhanghj.lc
86e75b7ef2 kernel: avoid to download sha256sums.asc file repeatedly
If sha256sums.asc already downloaded, avoid to download again.

Fixes: #729

Signed-off-by: zhanghj.lc <zhanghj.lc@inspur.com>
2019-09-25 07:15:12 -04:00
Frank Cao
bfc8836f62 Merge pull request #557 from Kvasscn/doc-fixs-rootfsbuild
Developer-Guide.md: update rootfs build description
2019-09-25 17:23:07 +08:00
Jan Schintag
c152ebf356 s390x: Fix runtime build for s390x
Add the missing migration from kataVSOCK to types.VSock (see #2050) for s390x.

Fixes: #2086
Signed-off-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-25 11:12:06 +02:00
Penny Zheng
d74a600083 FC: Support serial device on aarch64
Serial device was finally fully supported with firecracker on aarch64,
see details here(https://github.com/firecracker-microvm/firecracker/pull/1233).
A set of kernel configs related with 8250 compatible serial ports
should be turn on.

Fixes: #736

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Haibo Xu <haibo.xu@arm.com>
2019-09-25 13:36:36 +08:00
Penny Zheng
da1b291d64 config: update kernel config on aarch64
Since kernel version updated to v4.19.73, kernel config file should
also been updated accorindly.

Fixes: #736

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Haibo Xu <haibo.xu@arm.com>
2019-09-25 13:36:13 +08:00
Salvador Fuentes
bc3c07b7d5 versions: Update kernel to 4.19.75
Include patches that fixes overlay2 issues.

Fixes: #2082

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-09-24 15:42:25 -05:00
Nitesh Konkar
5982e48774 lib.sh: Fix curl error when using curl+yq
When you curl versions.yaml file and pipe into
yq, sometimes the piped program
closes the read pipe before the previous program
is finished leading to "curl: (23) Failed writing
body (1337 != 1371)". As a workaround we pipe the
stream through double "tac", an intermediary program
that always reads the whole page before feeding it
to the next program.

Fixes: #363

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-24 23:32:21 +05:30
Nitesh Konkar
05428a6424 rootfs: Install yq if not found instead of error
When building rootfs, yq is needed to parse
the version from versions.yaml file. If yq
is not found, it fails. In this PR, we install
yq if not found.

Fixes: #363

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-24 23:31:45 +05:30
Vijay Dhanraj
aa6a16c597 Hypervisor: UUID fix for acrn hypevisor
This patch adds support for getting the kata UUID from
acrn hypervisor and using these UUID to create a VM.

Fixes: #1785
Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-09-24 10:45:28 -07:00
Salvador Fuentes
f357db50be Merge pull request #732 from GabyCT/topic/installhub
kata-deploy: Check that hub is installed
2019-09-24 12:23:48 -05:00
GabyCT
d3f480dc4c Merge pull request #2080 from chavafg/master
config: honor DEFSHAREDFS_QEMU_VIRTIOFS and CONFIG_QEMU_VIRTIOFS_IN
2019-09-23 09:25:30 -05:00
Eric Ernst
22a3ca1c36 Merge pull request #2050 from devimc/topic/virtcontainers/fixFC018
Support Firecracker 0.18
2019-09-23 06:52:29 -07:00
Salvador Fuentes
b1909e8ea2 config: fix virtiofsd name
virtiofsd binary built using our packaging scripts
is named `virtiofsd` and not `virtiofsd-x86_64`

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-09-20 15:33:50 -05:00
Salvador Fuentes
84ead984d2 config: add configuration-qemu-virtio-fs.toml to gitignore
add generated configuration file to gitignore.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-09-20 15:30:00 -05:00
Salvador Fuentes
443e657750 config: honor DEFSHAREDFS_QEMU_VIRTIOFS and CONFIG_QEMU_VIRTIOFS_IN
replace `DEFSHAREDFS_QEMU_VIRTIOFS` and `CONFIG_QEMU_VIRTIOFS_IN`
with their values on the generated `configuration-qemu-virtiofs.toml`

Fixes: #2079

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-09-20 15:17:42 -05:00
Julio Montes
3d0949d60d virtcontainers: check minimum supported version of firecracker
Check minimum supported version of firecracker to make sure it's compatible
with kata containers

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-09-20 13:55:19 +00:00
Julio Montes
9ecb5eb58c Merge pull request #731 from GabyCT/topic/fixkernel
kata-deploy: Fix to test locally changes and rename vmlinuz or vmlinux for virtiofs
2019-09-20 08:50:09 -05:00
Julio Montes
c33068de10 Merge pull request #350 from jongwu/29
rootfs: update fedora to 29 for arm64.
2019-09-20 08:46:40 -05:00
Salvador Fuentes
8eddd1c750 Merge pull request #705 from nitkon/master
Create 1.8.0 package release for ppc64le
2019-09-20 07:54:59 -05:00
Julio Montes
948dd3303a Merge pull request #2055 from lifupan/fix_missingqemulog
virtcontainers: fix the issue of missing qemu error logs
2019-09-20 07:41:47 -05:00
Julio Montes
95c9880bca Merge pull request #2078 from GabyCT/topic/fixclic
config: Fix the qemu-virtiofs.toml
2019-09-20 07:40:54 -05:00
Gabriela Cervantes
372679e802 kata-deploy: Check that hub is installed
Running for the first time the kata-deploy script can fail if hub
is not installed it, this will avoid this issue.

Fixes #728

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-09-20 01:22:26 -05:00
Jianyong Wu
1eec032c63 rootfs: update fedora to 29 for arm64.
there is issue in fedora:28 when start systemd service.
update fedora to 29 will bypass this issue.

Fixes: #349
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2019-09-19 21:11:43 -04:00
lifupan
1f93cffd5a virtcontainers: fix the issue of missing qemu error logs
When 'debug' is enabled, qemu's debug info is output
into qemu's log file. When lauching qemu failed, it's
better to log these debug info and return it directly
for debugging.

Fixes:#2042

Signed-off-by: lifupan <lifupan@gmail.com>
2019-09-20 09:10:53 +08:00
Julio Montes
8680db6071 versions: update firecracker to the version 0.18.0
update firecracker to the version 0.18.0

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

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-09-19 21:30:00 +00:00
Julio Montes
f776e8f217 Merge pull request #2057 from jschintag/qemu-img-sharing
s390x: Share image between qemu instances
2019-09-19 15:11:07 -05:00
Julio Montes
123ba13928 vendor: update kata agent
bring support for hybrid vsocks

shortlog:
4a34395 docs:  Fix incorrect script reference in TRACING.md
8d682c4 release: Kata Containers 1.9.0-alpha2
b900a3f CI: Make Travis call common setup
bd0f562 protocols/client: support hybrid vsocks
a63ad12 release: Kata Containers 1.9.0-alpha1
545a411 mount: ensure local directory storage types have the correct permissions
006fdfe device: fix the issue of failed waiting on device appeared in /dev
b1a4284 travis: Fix golang version
f454d98 s390s: fix rootBusPath
b86f0de test: Add test to check for route-setup for interfaces from same subnet
2537235 network: While updating routes, do not delete routes with proto "kernel"

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-09-19 19:39:07 +00:00
Julio Montes
5ac6e9a897 virtcontainers: make socket generation hypervisor specific
Kata support several hypervisor and not all hypervisor support the
same type of sockets, for example QEMU support vsock and unix sockets, while
firecracker only support hybrid vsocks, hence sockets generations should be
hypervisor specific

fixes #2027

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-09-19 19:39:07 +00:00
Archana Shinde
74d54b0deb Merge pull request #2069 from fuxiao511/fix-bug
The unit of newMemory is MB
2019-09-19 11:24:09 -07:00
Gabriela Cervantes
feb28593f7 kernel: Fix to test locally changes and rename vmlinuz or vmlinux for virtiofs
This will allow to test local changes to the kernel as well it will allow
us to have vmlinuz or vmlinux with virtiofs.

Depends-on: github.com/kata-containers/runtime#2078

Fixes #717

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-09-19 11:33:46 -05:00
Julio Montes
f2f09230ee virtcontainers: rename kataVSOCK type and move it into the types package
Rename kataVSOCK to VSock and move it into the types package, this way it can
be accessible by other subpackages. This change is required because in next
commits the socket address and type (socket, vsock, hybrid vsock) will be
hypervisor specific.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-09-19 11:25:11 -05:00
Julio Montes
f42dd7d115 virtcontainers/fc: Add support for hybrid vsocks
Currently only firecracker supports hybrid vsocks, change the implementation
to use hybrid vsocks in firecracker.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-09-19 11:25:11 -05:00
Julio Montes
2c4cf392f7 virtcontainers/fc: bump firecracker experimental version
bump to version 0.18.0

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-09-19 11:25:11 -05:00
Julio Montes
bb87b44b30 virtcontainers/fc: Add logger to the http transport
Add logger to the http transport to log the requests that the runtime writes
in the firecracker's socket. Enable debug it's enabled.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-09-19 11:25:11 -05:00
Julio Montes
880bb2b7b8 virtcontainers: introducing HybridVSock type
This new socket type is currently supported only by the firecracker hypervisor.
For more details about its internal implementation see:
https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-09-19 11:25:11 -05:00
Sebastien Boeuf
2a8af23de6 virtcontainers: Make fc.go fit the new API
Make fc.go fit the new API

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2019-09-19 11:25:11 -05:00
Sebastien Boeuf
67ce7283bc virtcontainers: Update firecracker swagger API
Update firecracker swagger API

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2019-09-19 11:25:11 -05:00
Gabriela Cervantes
cdb1b5c31c cli: Fix the qemu-virtiofs.toml
This will fix the qemu-virtiofs.toml to use the kernel with virtiofs.
Also removes the initrd image from the toml.

Depends-on: github.com/kata-containers/packaging#731

Fixes #2077

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-09-19 11:10:18 -05:00
GabyCT
46e1880c8d Merge pull request #2066 from chavafg/topic/nemu-9p
config: use 9p as default shared filesystem for nemu
2019-09-18 15:12:35 -05:00
Salvador Fuentes
4134571e86 config: do not use nemu variable for qemu-virtiofs configuration
instead of using `DEFSHAREDFS_NEMU` in `configuration-qemu-virtiofs.toml`,
use `DEFSHAREDFS_QEMU_VIRTIOFS`.
nemu will be deprecated soon so using `DEFSHAREDFS_NEMU` may
brake the configuration for qemu-virtiofs.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-09-18 11:31:13 -05:00
Salvador Fuentes
97fe749624 config: use 9p as default shared filesystem for nemu
currently virtiofs support is being reworked to use qemu
and kernel from virtio-fs gitlab repo. The current support
that we have for virtio-fs has been disabled as required
patches for the 4.19 kernel were removed in [1].

[1] https://github.com/kata-containers/packaging/pull/703

Fixes: #2048.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-09-18 10:29:19 -05:00
Jose Carlos Venegas Munoz
827e85d259 Merge pull request #710 from GabyCT/topic/qemuvirt
kata-deploy: Add support for qemu and kernel with virtio-fs 3.0
2019-09-18 09:45:17 -05:00
Wang Liang
c81db9c3da sandbox: The unit of newMemory is MB
change Bytes to MB in log

Fixes: #2068

Signed-off-by: Wang Liang <wangliangzz@inspur.com>
2019-09-18 05:10:34 -04:00
Jan Schintag
7fa0a72f2e s390x: Share image between qemu instances
This commit enables the `share-rw` flag for the image file in s390x.
This enables multiple instances of qemu to share the same image.

Fixes: #2049

Signed-off-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-18 08:11:01 +02:00
Jan Schintag
7965baab62 vendor: update govmm
s390x doesn't support memory backend file and needs to share the image instead

Fixes: #2049

details vendor changes:

cb9f640 virtio-blk: Add support for share-rw flag

Signed-off-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-18 08:11:00 +02:00
Peng Tao
74e7d3dba7 Merge pull request #2028 from WeiZhang555/remove-annotation-ConfigJSONKey
Remove annotation config json key
2019-09-18 12:25:36 +08:00
Yongchao Wang
b96bed021d docs: Updated the network namespace default structure picture to tcfilter
Updated network picture from "MACVTAP" to "tcfilter".
The latest kata network has been changed to tcfilter instead of macvtap,
and this section
https://github.com/kata-containers/documentation/blob/master/design/architecture.md#networking

Fixes: #513

Signed-off-by: Yongchao Wang <wangyongchao.bj@inspur.com>
2019-09-18 09:54:06 +08:00
Eric Ernst
b86ab21ce7 Merge pull request #2054 from GabyCT/topic/addcli
configuration: Add QEMU with virtiofs 3.0 support
2019-09-17 16:27:14 -07:00
GabyCT
030211e22a Merge pull request #2063 from egernst/bump-kernel
kernel: update to v4.19.73
2019-09-17 15:08:30 -05:00
Eric Ernst
82c277384b kernel: update to v4.19.73
This includes fix for CVE-2019-14835

Fixes: #2062

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-17 08:28:38 -07:00
Nitesh Konkar
5571361955 create-repo-branch: Alpha is the branch for ppc64le
x86 has "releases" as the release branch. For
ppc64le, we have "alpha" branch. Update the scripts
for the same.

Fixes: #704

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-17 20:53:11 +05:30
Nitesh Konkar
e13efacc0f obs: docker: update opensuse base image
Leap 42.3 is now depreceated. Update it to
15.1

Fixes: #704

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-17 20:52:03 +05:30
Eric Ernst
46785d86cc Merge pull request #358 from egernst/1.9.0-alpha2-branch-bump
# Kata Containers 1.9.0-alpha2
2019-09-17 07:48:20 -07:00
GabyCT
1fc5fa9f3c Merge pull request #2060 from egernst/1.9.0-alpha2-branch-bump
# Kata Containers 1.9.0-alpha2
2019-09-17 09:38:39 -05:00
Gabriela Cervantes
324952ce98 configuration: Add QEMU with virtiofs 3.0 support
Enable a new configuration file for QEMU with virtiofs 3.0

Depends-on: github.com/kata-containers/packaging#710

Fixes #2053

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-09-17 06:38:46 -05:00
James O. D. Hunt
1012c6204f Merge pull request #554 from eadamsintel/qat-with-kata
Updated QAT instructions
2019-09-17 10:18:14 +01:00
Wei Zhang
2ed94cbd9d Config: Remove ConfigJSONKey from annotations
Fixes: #2023

We can get OCI spec config from bundle instead of annotations, so this
field isn't necessary.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-09-17 11:47:06 +08:00
zhanghj.lc
b9d5acd985 Developer-Guide.md: update rootfs build description
Add rootfs distro choices for debian,ubuntu, and suse.

Fixes: #556.

Signed-off-by: zhanghj.lc <zhanghj.lc@inspur.com>
2019-09-16 23:13:16 -04:00
Eric Adams
b4704fec3e subsystem: docs
Updated QAT instructions

This fixes #516

Signed-off-by: Eric Adams <eric.adams@intel.com>
2019-09-16 14:11:32 -07:00
Eric Ernst
7a3e7efcf2 release: Kata Containers 1.9.0-alpha2
- version: Add QEMU and kernel with virtiofs 3.0
- upgrade vendor ttrpc
- virtcontainers: Set sandbox dns in sandbox request
- s390x: Add appendImage function to qemu_s390x.go
- virtcontainer: add error return code

bca37c3 version: Add QEMU and kernel with virtiofs 3.0
da4d89b vendor: upgrade vendor ttrpc
2faece3 s390x: Add appendImage function to qemu_s390x.go
e3f92fe virtcontainer: add error return code
07630b5 virtcontainers: Set sandbox dns in sandbox request

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-16 11:31:59 -07:00
Eric Ernst
4287ba639b release: Kata Containers 1.9.0-alpha2
- dracut: increase base.conf priority from 00 to 05
- make: use bash to fetch dracut conf 'drivers' list

dec8013 make: use bash to fetch dracut conf 'drivers' list
6daec98 make: Move comment about dracut --no-kernel
2950b37 dracut: increase base.conf priority from 00 to 05

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-16 11:31:43 -07:00
GabyCT
fef938f81a Merge pull request #2052 from GabyCT/topic/addqemu
version: Add QEMU and kernel with virtiofs 3.0
2019-09-13 15:50:15 -05:00
Jose Carlos Venegas Munoz
2be1ac306a Merge pull request #662 from jcvenegas/sle-sp4
obs: distros: enable SLE12-SP4
2019-09-13 15:26:55 -05:00
Eric Ernst
e164e19ed7 Merge pull request #716 from egernst/readd-overlay
config: re-add support for overlay
2019-09-13 13:25:32 -07:00
GabyCT
a988b7b2d3 Merge pull request #721 from nitkon/typo
kernel: Fix a typo in README
2019-09-13 13:23:36 -05:00
Eric Ernst
8ab7c3dc77 config: blk-dev-throttling
- blk-dev-throttling is recommended for Docker (in docker use case).
Enabling.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-13 11:08:10 -07:00
Eric Ernst
797dd5c16d config: re-add support for docker-in-docker
Overlay and veth support wasn't included when migrating to fragment
based configs. Re-add to fix DinD use case.

Fixes: #715

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-13 10:18:00 -07:00
Jose Carlos Venegas Munoz
cbb955c9fd obs: distros: Update SLE
To allow test packages in azure.

Fixes: #661

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-09-13 12:09:50 -05:00
Jose Carlos Venegas Munoz
31ee3c52e3 Merge pull request #698 from mythi/stackprotector
kernel: enable STACKPROTECTOR configs in security.conf
2019-09-13 11:49:43 -05:00
Nitesh Konkar
99ae7c16e8 kernel: Fix a typo in README
Fix a typo in README.

Fixes: #720

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-13 21:03:12 +05:30
Mikko Ylinen
0bf4caf482 kernel: enable STACKPROTECTOR configs in security.conf
As per the comments in security.conf, the intention was to
enable STACKPROTECTOR and STACKPROTECTOR_STRONG.

The current config leaves them unset in the final .config
and also prevents other fragments from overriding the setting.

Set both to =y as indicated in the comments.

Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2019-09-13 15:34:33 +03:00
Gabriela Cervantes
88d2048cba kata-deploy: Add support for qemu and kernel with virtio-fs 3.0
This adds the kata deploy for QEMU and kernel with virtio-fs 3.0

Depends-on: github.com/kata-containers/runtime#2052

Fixes #709

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-09-13 05:04:39 -05:00
Gabriela Cervantes
bca37c3686 version: Add QEMU and kernel with virtiofs 3.0
This adds QEMU and the kernel with virtiofs 3.0 at the versions.yaml
file.

Depends-on: github.com/kata-containers/packaging#710

Fixes #2051

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-09-13 02:18:45 -05:00
GabyCT
4d74fa1416 Merge pull request #2045 from lifupan/fix_ttrpc_fd_leak
upgrade vendor ttrpc
2019-09-12 14:28:20 -05:00
GabyCT
e1f4355da3 Merge pull request #714 from teawater/fix
Revert "ci: don't run vm-factory tets in snap CI"
2019-09-12 14:23:06 -05:00
GabyCT
f2b8bf5f0e Merge pull request #713 from GabyCT/topic/fixversion
pkglib: Fix the detection of the versions.txt
2019-09-12 14:22:37 -05:00
lifupan
da4d89bd9a vendor: upgrade vendor ttrpc
Upgrade vendor ttrpc to fix the issue of fd leak.

Fixes: #2000

    0e0f228 Handle ok status
    8c74fe8 Update to go 1.12x on travis
    17f4d32 Client.Call(): do not return error if no Status is set(gRPC v1.23 and up)
    271238a Fix method full name generation
    694de9d metadata as KeyValue type
    3afb82b Fix error handling with server shutdown
    f3eb35b Refactor close handling for ttrpc clients
    de8faac Add godocs for interceptors
    e409d7d Add example binary for testing the example service
    819653f Add client and server unary interceptors
    04523b9 Rename headers to metadata
    5926a92 Support headers
    911c9cd Improve connection error handling
    96dcf73 Handle EOF to prevent file descriptor leak
    ba15956 Make onclose an option.

Signed-off-by: lifupan <lifupan@gmail.com>
2019-09-12 14:26:08 +08:00
Gabriela Cervantes
ee0a5563b1 pkglib: Fix the detection of the versions.txt
When we try to run the kata-deploy-binaries.sh script, we have a failure on
the pkglib.sh script that we can not source the versions.txt. In order to
avoid these kind of failures, we introduce to detect if this file exists and
in case that it does not, we fail the script.

Fixes #712

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-09-12 01:20:01 -05:00
Hui Zhu
566afe0421 Revert "ci: don't run vm-factory tets in snap CI"
This reverts commit cfead00a9d.

The snap version in https://snapcraft.io/kata-containers is 1.8.0
that had included 76a5076e56.
So ci and run vm-factory tests with snap.

Fixes: #1495

Signed-off-by: Hui Zhu <teawater@antfin.com>
2019-09-12 11:58:50 +08:00
Archana Shinde
39864c37ff Merge pull request #1939 from nitkon/DNSFromCreateSandboxReq
virtcontainers: Set sandbox dns in sandbox request
2019-09-11 15:52:50 -07:00
GabyCT
83b89d8773 Merge pull request #355 from crobinso/dracut-conf-priority
dracut: increase base.conf priority from 00 to 05
2019-09-11 09:59:16 -05:00
GabyCT
f558073ccb Merge pull request #2044 from jschintag/appendImage
s390x: Add appendImage function to qemu_s390x.go
2019-09-11 09:58:17 -05:00
GabyCT
b9053f2e74 Merge pull request #708 from jcvenegas/fix706
kata-deploy: use proper kernel install script
2019-09-11 09:56:24 -05:00
Jan Schintag
2faece3583 s390x: Add appendImage function to qemu_s390x.go
Add appendImage function to struct qemuS390x, so that a call of
appendImage results in a call to the appendBlockDevice function of
qemuS390x instead of qemuArchBase.

Fixes: #2043

Signed-off-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-11 14:21:55 +02:00
Archana Shinde
50d8e0c79d Merge pull request #703 from egernst/experimental-kernel
Experimental kernel support for enabling virtio-fs 0.3
2019-09-10 15:22:50 -07:00
Eric Ernst
571ede536b Merge pull request #2036 from alicefr/error-ret
virtcontainer: add error return code
2019-09-10 10:19:10 -07:00
Jose Carlos Venegas Munoz
452799e038 kata-deploy: use proper kernel install script
kata deploy script setup a new GOPATH to pull
a fresh environment to install kata. This script
was using the local kernel install script and not the
one in the new environment

Fixes: #706

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-09-10 11:59:10 -05:00
Eric Ernst
9956de822c Merge pull request #702 from GabyCT/topic/addvirtiofs
qemu: Enable qemu with virtio-fs 3.0
2019-09-10 09:33:09 -07:00
GabyCT
c8e6054843 Merge pull request #357 from crobinso/dracut-drivers-parse
make: use bash to fetch dracut conf 'drivers' list
2019-09-10 09:10:30 -05:00
GabyCT
9bb7ef5069 Merge pull request #695 from nitkon/patch-8
release.md: Fix a typo
2019-09-09 13:39:57 -05:00
GabyCT
90184f19f7 Merge pull request #2034 from alicefr/vsock-func
s390x: add appendVSock with devno
2019-09-09 13:02:40 -05:00
Cole Robinson
dec8013748 make: use bash to fetch dracut conf 'drivers' list
dracut will process conf files with bash, and in fact it's common to
use idioms like += in conf files for string concatenation. The current
grep usage in the Makefile won't catch all possible valid 'drivers'
variable cases.

Instead, use bash to parse and echo the 'drivers' content

Fixes: #356

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-09-09 13:17:58 -04:00
Cole Robinson
6daec98aaf make: Move comment about dracut --no-kernel
The current placement is confusing IMO, let's move it close to the
code it's describing

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-09-09 13:17:58 -04:00
Cole Robinson
2950b37028 dracut: increase base.conf priority from 00 to 05
The Makefile invokes dracut with a custom confdir. However dracut will
still pull site configuration from /usr/lib/dracut/dracut.conf.d/, which
on Fedora contains a 01-dist.conf that sets among other things
early_microcode="yes".

Because 01-dist.conf is processed after 00-base.conf, kata's
early_microcode="no" is overridden, which isn't intended.

Rename 00-base.conf to 05-base.conf to sidestep this

Fixes: #354

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-09-09 12:44:29 -04:00
GabyCT
0cc1a6f6ed Merge pull request #1975 from darfux/remove_bind_dest_when_umount
vc: Remove bind destination when unmounting
2019-09-09 09:34:12 -05:00
GabyCT
5ff0ef9377 Merge pull request #1971 from renzhengeek/renzhen/virtio-fs-dev
virtio-fs: add virtio_fs_extra_args for virtiofsd
2019-09-09 09:33:28 -05:00
Eric Ernst
282d85899e Merge pull request #1880 from jcvenegas/pod-cgroup-only
cgroups: Use only pod cgroup
2019-09-09 07:00:54 -07:00
Salvador Fuentes
85846f5acb Merge pull request #552 from jodh-intel/show-docker-config-default
docs: Emphasise default docker config
2019-09-09 08:19:11 -05:00
James O. D. Hunt
89120e8d8a Merge pull request #543 from jcvenegas/SandboxCgroupOnly-docs
docs: Add documentation about host cgroup management
2019-09-09 09:25:11 +01:00
Fupan Li
d989667c1e Merge pull request #2038 from egernst/kernel-bump
kernel: update to 4.19.71
2019-09-09 09:39:30 +08:00
Eric Ernst
f71a1eff62 kernel: update to 4.19.71
Bump to latest stable

Fixes: #1816

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-06 16:29:44 -07:00
Jose Carlos Venegas Munoz
2255b36a82 docs: Add documentation about host cgroup management
Document how cgroups are done today and what is expected
for the upcoming SandboxCgroupOnly option.

Prior cgroup documentation are no longer accurate. Removing the cgroup
discussion from the cpu sizing discussion. Updating the
cpu-constraints.md file name to reflect this.

Fixes: #542

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-09-06 16:11:37 -07:00
Eric Ernst
8e43d9cac1 config: remove unneeded options, annotate what changes in future
common/DAX:
 - ARCH_ENABLE_MEMORY_HOTPLUG: not needed (auto-selected)
 - ARCH_HAS_ZONE_DEVICE: already automatically selected. This is
also removed in future kernels, so let's go ahead and drop.
 - RADIX_TREE_MULTIORDER: already autoselected, and dropped in future
kernels

common/net:
 - NF_NAT_NEEDED, NF_NAT_PROTO_*: these don't exist in newer kernels, as
they are refactored and unecessary in the upstream kernel. Keep them for
now, but consider dropping if we move to newer LTS. These are part of
whitelist of options we expect to be dropped with newer kernels in our
fragment building.
 - NF_NAT_MASQUERADE_IPV4: this is a select, not a tristate. Also, in
the future much of the ipv4/ipv6 nat code is combined, so this config
will not exist in newer kernels. Dropped.
 - INET6_XFRM_MODE_* are not needed on newer kernels. While I'm not
confident they are needed today for Kata, we will just note them and add
to whitelist for options we expect to be dropped with newer kernels in
our fragment building.
 - MAY_USE_DEVLINK: removed in future kernels, and should not be needed
anyway. Dropped.

x86_64/DAX:
 - ARCH_HAS_HMM: should not be needed, and is dropped in future kernels.
Dropped

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-06 15:43:49 -07:00
Eric Ernst
aaeadbd526 kernel: drop virtio-fs patches from standard kernel
These will be handled directly from virtio-fs gitlab, which is utilized
when experimental support is requested in kernel build.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-06 15:43:49 -07:00
Eric Ernst
e828fa953c kernel: add whitelist for config options we expect to fail
Experimental kernel is much newer, and many configuration options have
dropped since 4.19. Let's use a whitelist to itemize what we expect to
be dropped in the final config if experimental kernel us utilized.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-06 15:43:49 -07:00
Eric Ernst
b00b0d9e7d kernel: if experimental, pull experimental configs
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-06 15:43:49 -07:00
Eric Ernst
74adb72b22 config: virtio-fs: add as an experimental kernel config
This isn't available in the baseline kernel, necessarily. Only
add these config options if an experimental kernel is being used.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-06 15:43:49 -07:00
Eric Ernst
baa2ef1bbf kernel: add support for building virtio-fs kernel
Adding option `-e` to support experimental flag. When selected, the
kernel for virtio-fs is utilized instead of standard kernel.org.

This is a bit more hack-ish than I'd prefer, sorry.

Fixes: #700

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-06 15:43:49 -07:00
Eric Ernst
2b617ed8c7 kernel: auto-indent build-kernel.sh
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-06 15:43:49 -07:00
Julio Montes
42ef119992 Merge pull request #2030 from vijaydhanraj/fix-acrn-macvtap
hypervisor: Fix MacVTap internetworking support in ACRN
2019-09-06 13:50:54 -05:00
Eric Ernst
48540146b6 Merge pull request #351 from katabuilder/1.9.0-alpha1-branch-bump
# Kata Containers 1.9.0-alpha1
2019-09-06 10:55:46 -07:00
Salvador Fuentes
2b785044a2 ci: travis: allow failures on ppc64le
travis ppc64le has been very unstable when running
apt-get commands and are not allowing us to run the
job successfully.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-09-06 09:19:12 -05:00
Gabriela Cervantes
f6be9a822a qemu: Enable qemu with virtiofs
This adds support for virtio-fs on QEMU.

Fixes #699

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-09-06 04:29:37 -05:00
Fupan Li
e21dc8babe Merge pull request #2022 from WeiZhang555/limit-usage-of-compatOCISpec
CompatOCISpec: limit usage of CompatOCISpec
2019-09-06 09:23:16 +08:00
Eric Ernst
b62814a6f0 sandbox: combine sandbox cgroup functions
Simplify the tests and the code by combining the create and join
functions into a single function.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-09-05 13:49:13 -07:00
Alice Frosi
e3f92fe59b virtcontainer: add error return code
Add error return code to append functions.

Fixes: #2035

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-09-05 15:28:46 +02:00
Alice Frosi
a0e09df1df s390x: add appendVSock with devno
Reimplementation of appendVSock in order to assign the devno to the
vsock device.

Fixes: #2033

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-09-05 12:53:18 +02:00
Alice Frosi
6b2a90a9e5 virtcontainer: rename appendVSockPCI
Rename function appendVSockPCI to appendVSock to be general. The
function could use PCI or CCW devices.
Added return error to appendVSock.

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-09-05 12:53:18 +02:00
James O. D. Hunt
44f67f7efc Merge pull request #539 from vijaydhanraj/kata-acrn-doc
doc: how-to on Kata Containers with ACRN hypervisor
2019-09-05 09:53:37 +01:00
James O. D. Hunt
94c47dcecd Merge pull request #1965 from jschintag/virtio-blk-ccw
s390x: add virtio-blk-ccw support
2019-09-05 08:46:08 +01:00
Wei Zhang
9507f45a0f CompatOCISpec: limit usage of CompatOCISpec
Fixes: #2023

CompatOCISpec is used to gurantee backward compatbility for old runtime
specs, after we convert CompatOCISpec to standard specs.Spec, we should
use specs.Spec instead of CompatOCISpec, and CompatOCISpec should be
useless from then.

Spread usage of CompatOCISpec can make code structure confusing and making
the runtime spec usage non-standard. Besides, this can be the very first
step of removing CompatOCISpec from config's Annotations field.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-09-05 11:05:55 +08:00
Vijay Dhanraj
d51215878d hypervisor: Fix MacVTap internetworking support in ACRN
With MacVTap internetworking, Kata fails to launch containers
with ACRN hypervisor. This was due to missing MAC address as
part of virtio-net device when launching VM. This patch fixes
this issue by adding the MAC address.

Fixes: #2029

Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-09-04 14:28:11 -07:00
Vijay Dhanraj
4f0259424e doc: how-to on Kata Containers with ACRN hypervisor
Start-up guide on setting up kata containers
with ACRN hypervisor.

Fixes: #535

Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-09-04 09:27:43 -07:00
Nitesh Konkar
07630b570a virtcontainers: Set sandbox dns in sandbox request
If ociMounts has DNS file /etc/resolv.conf present,
then pass the dns as part of CreateSandboxRequest to
the agent.

Depends-on: github.com/kata-containers/agent#625

Fixes: #1603

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-04 16:43:27 +05:30
James O. D. Hunt
52690de805 docs: Emphasise default docker config
Improved the Docker installation instructions by making it clear *which*
of the multiple ways of configuration Docker for Kata is the default,
and that it is not necessary to do anything further if users select the
automatic installation method.

Fixes: #551.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-09-04 10:49:17 +01:00
Eric Ernst
87eca1fff1 Merge pull request #2025 from katabuilder/1.9.0-alpha1-branch-bump
# Kata Containers 1.9.0-alpha1
2019-09-03 15:57:12 -07:00
katacontainersbot
f128195249 release: Kata Containers 1.9.0-alpha1
- kubernetes: update kubernetes to v1.15.3 for AArch64
- vsock: set VHOST_VSOCK_SET_GUEST_CID for ppc64le
- tests: allow running unit tests using podman
- vc: Delete store when new/create container is failed
- virtcontainers: fix kernel modules annotations
- vendor: update govmm
- kata-check: require kvm modules for amd64
- kata-check: reduce default output verbosity
- v2: Prevent killing all container processes when exec is failed
- api: add a CleanupContainer api for VC
- shim v2: add network stat in metric
- qemu: fix error message miss
- Fix the issue of update resources wrong
- monitor: enlarge watch buffer
- add virtiofsd to sandbox cgroup
- virtcontainers: Fix the issue of watching console for firecracker
- versions: update version of qemu to 4.1.0
- qemu interaction improvements
- add watchconsole for no_proxy type
- qemu: do not try to stop qemu multiple times
- do not hotplug network device when stopping sandbox
- agent: add default timeout for grpc requests
- container: do not pause a StateReady container
- sandbox: remove network before stopping vm
- virtcontainers: fix hotplug block/net devices execeed pciBridgeMaxCap…
- vsock: Propogate error for vsock ioctl
- versions: kernel: update to 4.19.65
- network: Ignore routes with proto as "kernel"
- network: Deprecate bridged networking mode.
- network: fix failed to remove network
- virtcontainers: add support for loading kernel modules
- shim-v2: fix shim leak when hypervisor exit unexpectly
- virtiofs: wait for virtiofsd process to release its resources
- pkg/katautils: Do not set `init` in the kernel command line
- virtiofs: fix virtiofs crash when cache=none
- acrn: Add toml to gitignore
- versions: Upgrade to k8s 1.15
- virtcontainers: support SMP die
- qemu: support vfio pass x-pci-vendor-id and x-pci-device-id pass
- Remove nested vendor dir
- Fix UT failures with non-root
- persist: manage "hypervisor.json" with new store
- improve robustness w.r.t. dead hypervisor
- virtcontainers: convert virtcontainers tests to testify/assert
- ci: Allow travis to use go install script

611a860 kubernetes: update kubernetes for AArch64
ba3d3da vendor: update govmm
c8e5659 virtcontainers: fix kernel modules annotations
a5f1744 vc: Delete store when new/create container is failed
8cf0f06 vsock: set VHOST_VSOCK_SET_GUEST_CID based based on arch
ff8d23d tests: allow running unit tests using podman
c91556a api: add a CleanupContainer api for VC
4cf0703 v2: Prevent killing all container processes when exec is failed
5bfca6e test: add arch required kernel modules
c54f00a kata-check: reduce default output verbosity
24fcd1b test: add a generic function for CLI kata-check command
52e68f5 virtcontainers: cleanup the container config once failed
5b749a5 virtcontainers: remove the redundant sandbox config store
50d4188 qemu: fix error message miss
0926c8d virtcontainers: Fix the issue of watching console for firecracker
0075bf8 hypervisor: allow to return a slice of pids
88e281c monitor: enlarge watch buffer
db50978 kata-check: require kvm/vhost modules for amd64
4deeb05 versions: update version of qemu to 4.1.0
4a28b52 test: add test for network metric
dc38ba7 test: fix cgroup mock test
6534357 shim-v2: add network stat in metric
21698aa vendor: update cgroup
e7457e6 qemu: add logfile when debug is on
aebc496 qemu: fix memory prealloc option handling
6c77d76 qemu: check guest status with qmp query-status
5b50b34 shimv2: cancel monitor before stopping sandbox
49184ee vendor: update govmm
d90eba8 network: always cold unplug network devices
d26ff71 Revert: "sandbox: remove network before stopping vm"
debc7d9 agent: add default timeout for grpc requests
9d4050e container: do not pause a StateReady container
b58ab66 qemu: do not try to stop qemu multiple times
794e08e sandbox: remove network before stopping vm
31ddb4d virtcontainers: add watchconsole for no_proxy type
3fc17e9 vsock: Propogate error for vsock ioctl
565f14f acrn: Change the default network model for ACRN to macvtap
2c99b95 network: Deprecate bridged networking mode.
e467293 virtcontainers: fix hotplug pci devices execeed max capacity bug
604e1ab versions: kernel: update to 4.19.65
df7cf77 network: Ignore routes with proto as "kernel"
355b9c0 virtcontainers: add support for loading kernel modules
979f064 vendor: update kata agent
0832294 pkg/katautils: Do not set `init` in the kernel command line
2058751 shim-v2: fix shim leak when hypervisor exit unexpectly
a9168a3 virtiofs: wait for virtiofsd process to release its resources
263fb64 acrn: Add toml to gitignore
6e1e6a2 virtiofs: fix virtiofs crash when cache=none
50c3e56 network: fix failed to remove network
0d0a84e versions: Upgrade to k8s 1.15
7668aeb virtcontainers: support SMP die
104c04d vendor: update govmm
e41a6b9 vendor: Update vendor directories
95e8a7a dep: Remove nested vendor directories
f3d0978 persist: improve readability
3bfbbd6 persist: merge "network.json"
99cf3f8 persist: merge "agent.json"
7d5e48f persist: manage "hypervisor.json" with new store
d5d7d82 vc: move container mount cleanup to container.go
e02f6dc shimv2: monitor sandbox liveness
262484d monitor: watch hypervisor
67c401c agent: use hypervisor pid as backup proxy pid for non-kata proxy cases
835b6e9 sandbox: do not fail SIGKILL
bc4460e sandbox: support force stop
4130913 agent: mark agent dead when failing to connect
c472a01 container: allow to stop a paused container
f886c0b vc: drop container SetPid API
f2e6a31 ci: Allow travis to use go install script
3063391 ut: skip TestBindUnmountContainerRootfsENOENTNotError for non-root
c4583f4 ut: skip TestStartNetworkMonitor for non-root
f2423e7 virtcontainers: convert virtcontainers tests to testify/assert
50e263d qemu: support vfio pass x-pci-vendor-id and x-pci-device-id pass
2cf4189 vendor: update github.com/intel/govmm

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-09-03 17:34:25 +00:00
katacontainersbot
f9cfa172ab release: Kata Containers 1.9.0-alpha1
- image_builder: create /etc/resolv.conf
- Add kmod package
- dracut: improve host distro support
- Allow to override build date with SOURCE_DATE_EPOCH
- image-builder: check /sbin/init when AGENT_INIT=yes
- chrony-service: re-patch PR#265
- image-builder: get mount directory size with Mb format
- osbuilder: add dracut build method
- fedora-rootfs: using fedora 28 on aarch64

862b077 image_builder: create /etc/resolv.conf
ce20d72 dracut: improve host distro support
495a92d rootfs-builder: add kmod package
87af599 rootfs-builder/clearlinux: reduce image size when AGENT_INIT=yes
dacd2d3 scripts/lib: Allow to override build date
9afe931 chrony-service: re-patch PR#265
b1b8ce4 image-builder: check /sbin/init when AGENT_INIT=yes
934422f tests: fix background job failure detection
317bfba travis: use Ubuntu bionic distro version
a5a3343 ci: use .ci/setup.sh from tests repo
1e5746a tests: add dracut initrd and image tests
6d5aef5 osbuilder: Get mount directory size with Mb format
2f55017 osbuilder: add dracut build method
9bfc083 fedora-rootfs: using fedora 28 on aarch64
8ebaac0 rootfs: move code from rootfs.sh to lib.sh
39370c2 rootfs-builder: support provisioning existing rootfs

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-09-03 17:34:10 +00:00
GabyCT
d0cf1cd73f Merge pull request #549 from kata-containers/nitkon-patch-1
architecture.md: Update initrd placeholder
2019-09-03 10:20:09 -05:00
GabyCT
c017e2519d Merge pull request #541 from marcov/howto-move
how-to: move k8s guide into a dedicate how-to md
2019-09-03 10:19:00 -05:00
Julio Montes
9e16400897 Merge pull request #2021 from Pennyzct/kubernetes_on_aarch64
kubernetes: update kubernetes to v1.15.3 for AArch64
2019-09-03 08:54:30 -05:00
Penny Zheng
611a86035b kubernetes: update kubernetes for AArch64
The latest stable kubernetes v1.15.3 has finally included the significant
commit 820a717(https://github.com/kubernetes/kubernetes/commit/
820a717bce3ef92f9280a4870d449c1e903255f2), which fixed the crash of `kubeadm
init` on AArch64 since kubernetes v1.14.0, find detailed info here
(https://github.com/kata-containers/tests/issues/1726).

Fixes: #2020

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-09-03 16:04:27 +08:00
Salvador Fuentes
4176a7c947 Merge pull request #1989 from nitkon/vsock
vsock: set VHOST_VSOCK_SET_GUEST_CID for ppc64le
2019-09-02 12:40:18 -05:00
nitkon
8e48f66b37 release.md: Fix a typo
Fix a minor typo

Fixes:  #694

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-02 22:53:36 +05:30
Julio Montes
284927d334 Merge pull request #2011 from marcov/podman-test
tests: allow running unit tests using podman
2019-09-02 12:13:58 -05:00
Julio Montes
d44b9f3356 Merge pull request #2014 from darfux/delete_store_when_new_or_create_cntr_fail
vc: Delete store when new/create container is failed
2019-09-02 12:13:43 -05:00
Julio Montes
52cff50e1c Merge pull request #2017 from devimc/topic/virtcontainers/loadKernelModules
virtcontainers: fix kernel modules annotations
2019-09-02 12:12:50 -05:00
nitkon
6ce8b159c5 architecture.md: Update initrd placeholder
Update initrd placeholder. 

Fixes: #548

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-09-02 22:03:51 +05:30
Julio Montes
fe8506740b Merge pull request #2019 from alicefr/update-govmm-skip-numa
vendor: update govmm
2019-09-02 09:24:48 -05:00
Jan Schintag
b075b5c24e s390x: add virtio-blk-ccw
Add virtio-blk-ccw support

Fixes: #1153

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Reviewed-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-02 14:32:03 +02:00
Alice Frosi
d627585dc1 virtcontainers: add devno
The devno number is use to identify the device on IBM Z arch.

Fixes: #1153

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Reviewed-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-02 14:32:03 +02:00
Alice Frosi
7eec67044f virtcontainers: create generic function
Create generic function to be reused to the reimplemented methods by
various architectures

Fixes: #1153

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Reviewed-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-02 14:32:03 +02:00
Alice Frosi
e99739f9bd ccw: add ccw type as bridge
On IBM Z, CCW bus type can be additionally used.

Fixes: #1153

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Reviewed-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-02 14:32:03 +02:00
Alice Frosi
23e607314e virtcontainers: Move bridge var in qemu type
In this way it is possible to set bridge variable for each arch when
instantiating the hypervisor.

Fixes: #1153

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Co-authored-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-02 14:32:03 +02:00
Alice Frosi
9188774c93 bridges: abstraction of bridge type
The abstraction of the bridge type to add additional types.

Fixes: #1153

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
Co-authored-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-09-02 14:32:02 +02:00
James O. D. Hunt
95072b7d64 Merge pull request #538 from awprice/privileged-documentation
docs: add documentation for privileged and host devices
2019-09-02 11:42:04 +01:00
Alice Frosi
ba3d3dad7e vendor: update govmm
s389x doesn't support dimm and we need to skip it.

Fixes: #2003

detail commit change:

9463486 s390x: dimm not supported

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-09-02 12:36:17 +02:00
Julio Montes
c8e5659c07 virtcontainers: fix kernel modules annotations
Casting in golang doesn't return a pointer to the structure, instead a new
structure is instantiated. This patch is to update the old structure with
the new one in order to apply the changes.

fixes #2016

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-30 17:21:15 +00:00
Li Yuxuan
a5f1744132 vc: Delete store when new/create container is failed
The container store should be deleted when new/create is failed if the
store is newly created.

Fixes: #2013
Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2019-08-30 18:05:59 +08:00
Nitesh Konkar
8cf0f0602f vsock: set VHOST_VSOCK_SET_GUEST_CID based based on arch
set VHOST_VSOCK_SET_GUEST_CID depending on
the host architecture.

Fixes: #1988

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-08-30 14:36:15 +05:30
Jose Carlos Venegas Munoz
94c36df640 Merge pull request #684 from jcvenegas/depends-on
ci: azure: honor depends-on
2019-08-29 16:24:38 -05:00
Jose Carlos Venegas Munoz
9fc7246e8a sandbox: delete cgroup for SandboxOnly option
Use all subsystems for SandboxOnly option to make sure
all cgroups are deleted.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:08:04 -05:00
Jose Carlos Venegas Munoz
3fc6f4bc55 sandbox: add containers, do not get cgroup path
Add containers does not need to check the cgroup path
this is done in a different function

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:08:04 -05:00
Jose Carlos Venegas Munoz
074418f56b sandbox: Join cgroup sandbox on create.
When a new sandbox is created, join to its cgroup path
this will create all proxy, shim, etc in the sandbox cgroup.

Fixes: #1879

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:08:04 -05:00
Jose Carlos Venegas Munoz
2fcb8bb4d8 container: SandboxCgroupOnly: no host cgroups.
No call cgroup operations for containers in host
if SandboxCgroupOnly is enabled.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:08:04 -05:00
Jose Carlos Venegas Munoz
b65063248f config: add option SandboxCgroupOnly
add option to eneable only pod cgroup (SandboxCgroupOnly)

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

Fixes: #1879
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:08:04 -05:00
Jose Carlos Venegas Munoz
5a17d671a4 cgroups: container: check cgroup path before use it
The container CgroupsPath is optional acording to OCI.

If for some reason the runtime decide to not define one.
just skip cgroup operations.

This is going to be useful for upcoming, sandbox cgroup only
cgroup managment feature.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:08:04 -05:00
Jose Carlos Venegas Munoz
f45b2d9cc6 cgroups: quote some paths on errors.
Some errors propagate with printing showing a cgroup path.
If for some reason this is empty is difficult to know looking
at the logs.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:01:35 -05:00
Jose Carlos Venegas Munoz
6fdbef4ff5 sandbox: Rename constrainHypervisor
constrainHypervisor -> constrainHypervisorVCPUs

Document and rename function.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:01:35 -05:00
Jose Carlos Venegas Munoz
caac68c09f sandbox: cgroup: prefix cgroup related methods
rename to allow group in auto-generated docs.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:01:35 -05:00
Jose Carlos Venegas Munoz
529ec25fb7 sandbox: cgroups: move methods to sandbox file
Move sandbox related methods to its own file.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:01:35 -05:00
Jose Carlos Venegas Munoz
d804c3979c cgroups: container: rename functions
prefix cgroup related methods with cgroups,
make easy to group together in auto-generated docs.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-29 14:01:35 -05:00
James O. D. Hunt
a1e0a4c3f5 Merge pull request #1986 from marcov/kvm-required
kata-check: require kvm modules for amd64
2019-08-29 16:31:27 +01:00
Marco Vedovati
ff8d23d75f tests: allow running unit tests using podman
Refactor unit test so that podman can be used to run tests when docker
is not available.

Fixes: #2006

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-29 17:06:50 +02:00
Julio Montes
03248f904f Merge pull request #691 from devimc/topic/obs/fixQEMU4.1
qemu: use upstream patch to fix OBS
2019-08-28 16:32:02 -05:00
Julio Montes
93658b550c qemu: use upstream patch to fix OBS
Apply the upstream patch that fixes OBS

fixes #690

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-28 14:57:45 +00:00
James O. D. Hunt
d89db17407 Merge pull request #545 from stefanha/virtio-fs-no-hugepages
virtiofs: hugepages is no longer required since Kata 1.8
2019-08-28 15:27:46 +01:00
Stefan Hajnoczi
6e9cc36cd3 virtiofs: hugepages is no longer required since Kata 1.8
The documentation says hugepages are required for virtio-fs.  This
limitation was removed in Kata 1.8 in kata-runtime commit
a41894da18 ("runtime: Enable file based
backend").

Fixes: #544
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
2019-08-28 14:48:40 +01:00
Jose Carlos Venegas Munoz
af574851be Merge pull request #1987 from marcov/kata-check-quiet
kata-check: reduce default output verbosity
2019-08-27 17:03:51 -05:00
Marco Vedovati
ceb8600814 how-to: k8s: rewrite intro, add cri-o RuntimeClass
Update the k8s Kata guide introduction, and specify RuntimeClass option
for CRI-O 1.12+.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-27 16:06:12 +02:00
Marco Vedovati
4d66559738 how-to: improve landing README.md
Improve landing README.md by categorizing howto guides.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-27 13:42:00 +02:00
Marco Vedovati
f91f0cc83b how-to: move k8s guide into a dedicate how-to md
Create a dedicate how-to guide for running Kata with k8s, and link to it
from the original guide location inside the Developer Guide.

Fixes: #333

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-27 13:42:00 +02:00
Alex Price
841ac8318a docs: add documentation for privileged and host devices
This commit adds documentation for privileged containers and the mounting of host devices
when privileged is used. It has instructions for disabling this functionality when using
Containerd and CRI.

Fixes #529

Signed-off-by: Alex Price <aprice@atlassian.com>
2019-08-27 08:45:39 +10:00
Salvador Fuentes
65cda02891 Merge pull request #686 from nitkon/vsock
kernel: enable vsock on ppc64le
2019-08-26 10:47:33 -05:00
Eric Ernst
e7c785ed19 Merge pull request #2002 from darfux/prevent_killing_cntr_with_failed_exec
v2: Prevent killing all container processes when exec is failed
2019-08-25 13:59:54 +08:00
Peng Tao
3fb872911e Merge pull request #1833 from lifupan/fix_cleanuprace
api: add a CleanupContainer api for VC
2019-08-24 14:34:10 +08:00
Eric Ernst
031e036397 Merge pull request #688 from devimc/topic/obs/fixQEMU4.1
obs-packaging: fix qemu 4.1
2019-08-24 13:21:06 +08:00
Eric Ren
712e06ae84 virtio-fs: add virtio_fs_extra_args for virtiofsd
Since virtio-fs is under active development, more
options will be added increasingly. To avaoid frequent
change on runtime side to handle option changes, use
one mingled arg to ease testing new option/feature of
virtiofsd.

See `virtiofsd -h` for more option details.

Fixes: #1999
Signed-off-by: Eric Ren <renzhen@linux.alibaba.com>
2019-08-24 09:16:38 +08:00
lifupan
c91556aa41 api: add a CleanupContainer api for VC
When shimv2 was killed by accident, containerd would try to
launch a new shimv2 binarry to cleanup the container. In order
to avoid race condition, the cleanup should be done serialized
in a sandbox. Thus adding a new api to do this by locking the
sandbox.

Fixes:#1832

Signed-off-by: lifupan <lifupan@gmail.com>
2019-08-24 08:16:02 +08:00
Li Yuxuan
7c4e479956 vc: Remove bind destination when unmounting
`virtcontainers.ensureDestinationExists` will create the bind
destination directory/file, which should be removed properly when
unmounting.

Fixes: #1974

Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2019-08-24 00:46:30 +08:00
Julio Montes
da532e3a3a obs-packaging/qemu-vanilla: include patches
Create symlink to patches directory, the list of patches will be
included in the spec and rules files.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-23 16:41:22 +00:00
Julio Montes
4bfa767367 qemu/patches: fix OBS
add qemu patch to get the right version of python in OBS

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-23 16:41:22 +00:00
Julio Montes
e09d41d8e6 obs-packaging/qemu-vanilla: install bc to compare qemu version
bc is required to compare the qemu version and enable/disable features

fixes #687

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-23 16:41:22 +00:00
Li Yuxuan
4cf0703c58 v2: Prevent killing all container processes when exec is failed
If an exec is failed(such as executable file not found in $PATH), the
`execs.id` will be empty. This leads to all the container processes
being killed when calling `Kill` on such exec id.

Fixes: #2001
Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2019-08-24 00:25:55 +08:00
Peng Tao
eb0a3d23d9 Merge pull request #1977 from Ace-Tang/network-metric
shim v2: add network stat in metric
2019-08-23 19:57:28 +08:00
Peng Tao
1b2ec4e39e Merge pull request #1992 from Ace-Tang/fix-error
qemu: fix error message miss
2019-08-23 19:53:19 +08:00
Marco Vedovati
5bfca6e38e test: add arch required kernel modules
Add a test for the checkKernelModules returned error count value.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-23 11:48:18 +02:00
Peng Tao
346d96ce4e Merge pull request #1998 from lifupan/fix_wrongresources
Fix the issue of update resources wrong
2019-08-23 10:11:49 +08:00
Marco Vedovati
c54f00a7ca kata-check: reduce default output verbosity
Update kata-check to print by default only relevant information about
the ability to run / create Kata Containers, and omit the list of checks
performed. Checks can still be printed using the --verbose flag.

Fixes: #1944

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-22 20:18:26 +02:00
Marco Vedovati
24fcd1b37d test: add a generic function for CLI kata-check command
Add a generic function to run CLI kata-check tests, shared by all the
args.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-22 20:18:26 +02:00
lifupan
52e68f5fce virtcontainers: cleanup the container config once failed
When create container failed, it should delete the container
config from sandbox, otherwise, the following new creating container
would get a wrong resources caculating which would contain the previous
failed container resources such as memory and cpu.

Fixes: #1997

Signed-off-by: lifupan <lifupan@gmail.com>
2019-08-22 17:43:04 +08:00
Peng Tao
64caa3f4d3 Merge pull request #346 from nitkon/master
image_builder: create /etc/resolv.conf
2019-08-22 14:39:34 +08:00
Fupan Li
9a6e299827 Merge pull request #1984 from Ace-Tang/fix-monitor-hang
monitor: enlarge watch buffer
2019-08-22 14:20:06 +08:00
lifupan
5b749a56d8 virtcontainers: remove the redundant sandbox config store
The following storeSandbox() will store the sandbox config
data, thus there is no need to store it specifically before
run storeSandbox().

Signed-off-by: lifupan <lifupan@gmail.com>
2019-08-22 12:48:14 +08:00
Hui Zhu
0db6974ace Merge pull request #1973 from bergwolf/hypervisor-pid
add virtiofsd to sandbox cgroup
2019-08-22 10:58:50 +08:00
Salvador Fuentes
a5b127b1c4 Merge pull request #1990 from lifupan/fix_consolewatching
virtcontainers: Fix the issue of watching console for firecracker
2019-08-21 14:11:07 -05:00
Jose Carlos Venegas Munoz
2d162a5f4c ci: azure: honor depends-on
- Run depends-on for packaging CI.
- Change were yq is installed

Depends-on: github.com/kata-containers/runtime#1996

Fixes: #683

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-21 14:03:53 -05:00
Julio Montes
483596b1d0 snap: Apply QEMU configs
Apply QEMU configs (Kconfigs) to trim the list of QEMU devices

fixes #682

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-21 15:19:22 +00:00
Julio Montes
b4ba93d910 qemu/configs: add config file to trim the list of qemu devices
In order to trim the list of devices, default-configs/i386-softmmu.mak must
be copied after having configured QEMU. This change helps to reduce the
attack surface and the QEMU binary size.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-21 15:19:22 +00:00
Ace-Tang
50d4188524 qemu: fix error message miss
strErr is qemu log message, should add err in error message, or if fail
before launch qemu, can not get corrent message.

Fixes: #1991

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-08-21 21:11:08 +08:00
lifupan
0926c8d9b4 virtcontainers: Fix the issue of watching console for firecracker
Since firecracker hasn't support console watching by now, so skip
watching console if the consoleURL is empty.

Fixes: #1970

Signed-off-by: lifupan <lifupan@gmail.com>
2019-08-21 20:19:42 +08:00
Nitesh Konkar
515bdc3c3f kernel: enable vsock on ppc64le
Here we bump our kernel version from 4.19.10
to 4.19.67 and enable vsock.

Fixes: #685

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-08-21 14:50:37 +05:30
Graham Whaley
3ed59ee50e Merge pull request #537 from amshinde/add-instruction-pull-image
shimv2: Add instruction to pull image first
2019-08-21 09:13:02 +01:00
Peng Tao
0075bf85ba hypervisor: allow to return a slice of pids
so that for qemu, we can save and export virtiofsd pid,
and put it to the same cgroup as the qemu process.

Fixes: #1972
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-21 11:37:01 +08:00
Ace-Tang
88e281cb14 monitor: enlarge watch buffer
enlarge watch buffer, or no one consume monitor watcher if shim.Wait and shim.watchSandbox
simultaneously receive signal

goroutine 60 [semacquire, 641 minutes]:
sync.runtime_SemacquireMutex(0xc00037a144, 0x42cd00)
/usr/local/go/src/runtime/sema.go:71 +0x3d
sync.(*Mutex).Lock(0xc00037a140)
/usr/local/go/src/sync/mutex.go:134 +0x109
github.com/kata-containers/runtime/virtcontainers.(*monitor).stop(0xc00037a140)
/go/src/github.com/kata-containers/runtime/virtcontainers/monitor.go:95 +0x5f
github.com/kata-containers/runtime/virtcontainers.(*Sandbox).Delete(0xc0003c8160, 0x78effdc01, 0x0)
/go/src/github.com/kata-containers/runtime/virtcontainers/sandbox.go:773 +0x4fb
github.com/kata-containers/runtime/containerd-shim-v2.wait(0xc000478b80, 0xc000338240, 0x0, 0x0, 0x107d540, 0xc0000100f0, 0x107d520)
/go/src/github.com/kata-containers/runtime/containerd-shim-v2/wait.go:60 +0x3e5
created by github.com/kata-containers/runtime/containerd-shim-v2.startContainer
/go/src/github.com/kata-containers/runtime/containerd-shim-v2/start.go:74 +0x3e5

goroutine 53 [chan send, 641 minutes]:
github.com/kata-containers/runtime/virtcontainers.(*monitor).notify(0xc00037a140, 0x107cfe0, 0xc0001ec160)
/go/src/github.com/kata-containers/runtime/virtcontainers/monitor.go:87 +0xed
github.com/kata-containers/runtime/virtcontainers.(*monitor).watchAgent(0xc00037a140)
/go/src/github.com/kata-containers/runtime/virtcontainers/monitor.go:125 +0xab
github.com/kata-containers/runtime/virtcontainers.(*monitor).newWatcher.func1(0xc00037a140)
/go/src/github.com/kata-containers/runtime/virtcontainers/monitor.go:59 +0x72
created by github.com/kata-containers/runtime/virtcontainers.(*monitor).newWatcher
/go/src/github.com/kata-containers/runtime/virtcontainers/monitor.go:49 +0x125

Fixes: #1981

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-08-21 11:35:48 +08:00
Archana Shinde
0ad8270772 shimv2: Add instruction to pull image first
Running the container with `ctr` when the image is not present
on the system gives an error.

Fixes #536

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-08-20 16:02:33 -07:00
Marco Vedovati
db5097835a kata-check: require kvm/vhost modules for amd64
KVM/vhost modules are required when using QEMU or firecracker.

Fixes: #1985

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-20 17:58:11 +02:00
Salvador Fuentes
1935bf193c Merge pull request #1979 from devimc/topic/versions/bumpQemu
versions: update version of qemu to 4.1.0
2019-08-20 09:25:54 -05:00
Salvador Fuentes
0ec23be295 Merge pull request #680 from devimc/topic/patches/qemu4.1
patches: add patches for qemu 4.1.x
2019-08-20 09:24:58 -05:00
James O. D. Hunt
83faa9787b Merge pull request #677 from devimc/topic/fixCVEs
Use and install the latest version of packages
2019-08-20 08:37:19 +01:00
Salvador Fuentes
c80a4afded Merge pull request #670 from devimc/topic/snap/runAllTests
snap/ci: run all tests in the CI
2019-08-19 14:36:49 -05:00
Julio Montes
2c478f58bb patches: add patches for qemu 4.1.x
Add patches for qemu 4.1.x

Depends-on: github.com/kata-containers/runtime#1979

fixes #679

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-19 19:22:53 +00:00
Marco Vedovati
66b3590533 Merge pull request #534 from marcov/revamp-install-readme
install: refresh installation guide README
2019-08-19 18:34:54 +02:00
Marco Vedovati
c3fca8b35f Merge pull request #675 from marcov/leap-update
OBS: upgrade openSUSE Leap version
2019-08-19 18:04:08 +02:00
Julio Montes
4deeb058db versions: update version of qemu to 4.1.0
Update qemu version to bring the latest fixes and improvements:
* migration: allow private destination ram with x-ignore-shared
* hw/i386: Fix linker error when ISAPC is disabled
* hw/i386: turn off vmport if CONFIG_VMPORT is disabled

Depends-on: github.com/kata-containers/packaging#680

fixes #1978

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-19 15:39:47 +00:00
Marco Vedovati
c704edbff6 install: refresh installation guide README
Refresh installation guide README with a clearer structure, and provide
a list of distribution with official Kata packages. This also updates
the openSUSE Leap versions supported to 15 and 15.1.

Fixes: #533

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-19 17:32:30 +02:00
Ace-Tang
4a28b52553 test: add test for network metric
add test for metric interface

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-08-19 19:42:54 +08:00
Ace-Tang
dc38ba77bd test: fix cgroup mock test
fix cgroup mock test because of containerd/cgroup vendor update

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-08-19 18:15:06 +08:00
Ace-Tang
6534357925 shim-v2: add network stat in metric
improve metric message, add network stat, base on agent PR: #538 and
containerd/cgroup PR #81

Fixes: #1976

Signed-off-by: ZeroMagic <anthonyliu@zju.edu.cn>
Signed-off-by: Ace-Tang <aceapril@126.com>
2019-08-19 18:15:06 +08:00
Ace-Tang
21698aadc1 vendor: update cgroup
detail commit change

$ git log --no-merges --abbrev-commit --pretty=oneline "5017d4e9a9cf2d4381db99eacd9baf84b95bfb14..c4b9ac5c7601384c965b9646fc515884e091ebb9" | sed 's/^/    /g'
    f627015 avoid adding io_serviced and io_service_bytes duplicately
    13a3ac4  fixed an issue with invalid soft memory limits
    215221e Add makefile for go and protos
    0ecd2b6 cgroups: fix MoveTo function fail problem
    38dc3ac Correct forked Travis builds
    a9a304a Add Go 1.12 to Travis
    51dcf5f Fix cgroup hugetlb size prefix for kB
    1741ae0 add network stats
    453efe3 Return ErrCgroupDeleted when no subsystems
    4a9f0f7 Add SkipOpts for handling how subsystems are registered
    4dacf2b Check for non-active/supported cgroups
    2fd912c Add tests for pids
    afd5981 Gofmt cgroup_test
    f48bd85 Fixs return error message
    64bade4 Take value instead of pointer value
    b49c471 Correct ineffassign warning
    6b552a8 Fix net_prio typo
    a31a0ff Add functionality for retrieving all tasks of a cgroup
    7d825b2 Add test for cgroups load when missing hierarchy in one subsystem
    f6cbfb4 Change Load function in order to be more lenient on subsystems' checking
    ab9ec0e Add go-systemd dep for CI testing
    9a09e58 Fix gofmt of systemd.go
    e13f6cc Add GoReportCard badge to README
    d124595 Add Go 1.11 to Travis
    d961ab9 Correct typo
    e4cf832 Add project references and use common project travis
    9de57ff Add godoc badge to README.md

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-08-19 16:31:15 +08:00
Hui Zhu
7019ce5c9b Merge pull request #1964 from bergwolf/qemu-improvements
qemu interaction improvements
2019-08-19 11:08:36 +08:00
Julio Montes
c79a01b3f9 static-build: upgrade the container before building qemu and nemu
Upgrade the container before building qemu and nemu in order to install
the latest fixes for the CVEs.

fixes #676

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-16 20:42:00 +00:00
Julio Montes
decb9de7df static-build: do not use cache to build docker images
Do not use cache to build the docker images that build static  qemu and nemu.
The latest version of the packages must be installed, since they may include
the fixes for theirs CVEs.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-16 20:42:00 +00:00
Julio Montes
7892608589 static-build/qemu: use the latest ubuntu long term to build qemu
In theory the latest ubuntu long term may have less CVE than previous versions,
so let's use it to build the static QEMU.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-16 20:42:00 +00:00
Julio Montes
33368859d9 qemu/nemu: remove blacklisted binaries
Remove blacklisted binaries, since they are not needed in kata and may have
CVEs.

fixes #311

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-16 20:42:00 +00:00
Julio Montes
54102ca98a snap/ci: run all tests
All test should pass in the snap CI

fixes #669

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-16 15:44:15 +00:00
Julio Montes
ed7d57349a Merge pull request #668 from devimc/topic/snap/supportRoofsImg
snap: support rootfs image
2019-08-16 10:43:29 -05:00
Salvador Fuentes
3dadaf64c5 Merge pull request #532 from gabibeyer/updateDocs
Update fedora version support
2019-08-16 07:59:51 -05:00
Peng Tao
e7457e6248 qemu: add logfile when debug is on
So that we can check qemu log to see if something goes wrong.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-16 12:58:25 +00:00
Peng Tao
aebc49692b qemu: fix memory prealloc option handling
Memory preallocation is just a property that hugepage, file backed
memory and memory-backend-ram can each choose to configure.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-16 12:58:25 +00:00
Peng Tao
6c77d76f24 qemu: check guest status with qmp query-status
When guest panics or stops with unexpected internal
error, qemu process might still be running but we can
find out such situation with qmp. Then monitor can still
report such failures to watchers.

Fixes: #1963
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-16 12:58:25 +00:00
Peng Tao
5b50b34df4 shimv2: cancel monitor before stopping sandbox
So that we don't trigger sandbox watcher on our own.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-16 12:58:25 +00:00
Peng Tao
49184ee562 vendor: update govmm
164bd8c test/fmt: drop extra newlines
73555a4 qmp: add query-status API
234e0ed qemu: fix memory prealloc handling
30bfcaa qemu: add debug logfile

dep now checks for dependency recersively.
runtime-spec and gogo protobuf are also updated as being required by kata agent.

Solving failure: No versions of github.com/kata-containers/agent met constraints:
        94e2a254a94a77c02280f4f84d7f82269be163ce: Could not introduce github.com/kata-containers/agent@94e2a254a94a77c02280f4f84d7f82269be163ce, as it has a dependency on github.com/opencontainers/runtime-spec with constraint a1b50f621a48ad13f8f696a162f684a241307db0, which has no overlap with existing constraint 5806c35637336642129d03657419829569abc5aa from (root)

Solving failure: No versions of github.com/kata-containers/agent met constraints:
        94e2a254a94a77c02280f4f84d7f82269be163ce: Could not introduce github.com/kata-containers/agent@94e2a254a94a77c02280f4f84d7f82269be163ce, as it has a dependency on github.com/gogo/protobuf with constraint 4cbf7e384e768b4e01799441fdf2a706a5635ae7, which has no overlap with existing constraint 342cbe0a04158f6dcb03ca0079991a51a4248c02 from (root)

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-16 12:55:10 +00:00
Peng Tao
b3987e4786 Merge pull request #1933 from lifupan/noproxywatchconsole
add watchconsole for no_proxy type
2019-08-16 11:06:02 +08:00
gabi beyer
6870294a12 install: update fedora version support
Remove support/installation information for fedora 27, and
add fedora 30.

Fixes: #528

Signed-off-by: gabi beyer <gabrielle.n.beyer@intel.com>
2019-08-16 02:01:52 +00:00
Julio Montes
810abd67c4 snap: support rootfs image
Use the rootfs image by defult since performance is better,
smaller memory footprint and boot time.

fixes #667

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-15 15:22:59 +00:00
Julio Montes
de4582eda3 Merge pull request #1959 from bergwolf/stopvm
qemu: do not try to stop qemu multiple times
2019-08-15 08:50:17 -05:00
Julio Montes
0bf48dca65 Merge pull request #1969 from bergwolf/detach
do not hotplug network device when stopping sandbox
2019-08-15 08:46:06 -05:00
James O. D. Hunt
60d0850e07 Merge pull request #531 from grahamwhaley/20190813_docker_compose
Limitations: docker compose: note it has issues
2019-08-15 11:04:15 +01:00
Peng Tao
d90eba8593 network: always cold unplug network devices
We don't really need to unplug it from guest because we have
already stopped it. Just detach it and clean it up.

Fixes: #1968
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-15 00:02:52 -07:00
Peng Tao
d26ff71201 Revert: "sandbox: remove network before stopping vm"
This reverts commit 794e08e243.

It breaks vfio device passthru as we need to bind the device
back to host when removing the endpoint. And that is not possible
when qemu is still running (thus holding reference to the device).

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-15 00:02:44 -07:00
Eric Ernst
a5c7e6b934 Merge pull request #1962 from bergwolf/grpc-timeout
agent: add default timeout for grpc requests
2019-08-14 21:04:20 -07:00
Marco Vedovati
94bf5e5c86 OBS: upgrade openSUSE Leap version
Upgrade openSUSE Leap version from 42.3 to the latest 15.1, since 42.3
version is now discontinued.

Fixes: #637

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-14 17:13:18 +02:00
Fupan Li
99e04ac8cd Merge pull request #1961 from bergwolf/pause-ready
container: do not pause a StateReady container
2019-08-14 08:54:59 +08:00
Graham Whaley
f1b9c23040 Limitations: docker compose: note it has issues
Note that docker compose has similar issues to docker swarm
when under Kata.

Fixes: #530

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-08-13 17:51:11 +01:00
Eric Ernst
263f64829d Merge pull request #1957 from bergwolf/network-removal
sandbox: remove network before stopping vm
2019-08-13 09:32:21 -07:00
Julio Montes
5e631391bf Merge pull request #1942 from woshijpf/fix-hotplug-exceed-problem
virtcontainers: fix hotplug block/net devices execeed pciBridgeMaxCap…
2019-08-13 08:45:24 -05:00
Julio Montes
9de19ddbeb Merge pull request #674 from nitkon/patch-7
kernel: Update README with right instructions
2019-08-13 08:14:18 -05:00
Peng Tao
debc7d93ad agent: add default timeout for grpc requests
If guest is malfunctioning, we need a way to bail out. Add
a default timeout for most of the grpc requests so that the
runtime does not wait indefinitely.

Fixes: #1952
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-13 01:22:05 -07:00
Peng Tao
9d4050e0b1 container: do not pause a StateReady container
We can only pause a running container.

Fixes: #1960
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-13 01:19:36 -07:00
Peng Tao
b58ab66f05 qemu: do not try to stop qemu multiple times
We've cleaned it up the first time. Future stop will
only fail.

Fixes: #1958
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-13 01:13:06 -07:00
Peng Tao
794e08e243 sandbox: remove network before stopping vm
We might need to call hypervisor hotunplug to really remove
a network device. We cannot do it after stopping the VM.

Fixes: #1956
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-08-13 01:04:07 -07:00
lifupan
31ddb4d452 virtcontainers: add watchconsole for no_proxy type
For no proxy type, we also need the feature
of watch hypervisor's console to help debug.

Fixes:#1932

Signed-off-by: lifupan <lifupan@gmail.com>
2019-08-13 09:09:23 +08:00
Archana Shinde
9ea469bcfa Merge pull request #1954 from amshinde/propagate-vsock-error
vsock: Propogate error for vsock ioctl
2019-08-12 17:22:25 -07:00
Archana Shinde
3fc17e96fc vsock: Propogate error for vsock ioctl
Make error handling better by propogating error.

Fixes #1953

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-08-12 12:13:52 -07:00
Jose Carlos Venegas Munoz
4cf1fa687d Merge pull request #1948 from egernst/kernel-4.19-65
versions: kernel: update to 4.19.65
2019-08-12 11:39:56 -05:00
Eric Ernst
cfedb06a19 Merge pull request #1936 from amshinde/ignore-routes-with-kernel-proto
network: Ignore routes with proto as "kernel"
2019-08-12 07:08:34 -07:00
Eric Ernst
d9a7780514 Merge pull request #1951 from amshinde/deprecate-bridged-mode
network: Deprecate bridged networking mode.
2019-08-12 07:06:45 -07:00
Nitesh Konkar
862b077598 image_builder: create /etc/resolv.conf
Since the image rootfs is readonly, we
create an empty /etc/resolv.conf which
the agent would later bind-remount as
read-write.

Fixes: #345

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-08-12 19:15:32 +05:30
Archana Shinde
565f14f685 acrn: Change the default network model for ACRN to macvtap
Drop the bits for bridged networking in ACRN and change the default
to macvtap. We should eventually change this to tcfilter with additional
testing.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-08-09 13:01:54 -07:00
Archana Shinde
2c99b95c53 network: Deprecate bridged networking mode.
We plan to get rid of this feature in the future.

Fixes: #1950

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-08-09 13:01:47 -07:00
GabyCT
88f8216978 Merge pull request #342 from devimc/topic/rootfs/kmod
Add kmod package
2019-08-09 14:05:45 -05:00
nitkon
311bd47795 kernel: Update README with right instructions
Fix the instructions in the README guide
when setting up kernel source code. 

Fixes:  #673

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-08-09 22:22:38 +05:30
Julio Montes
987fe3067e Merge pull request #344 from marcov/dracut-improvements
dracut: improve host distro support
2019-08-09 11:39:23 -05:00
jiangpengfei
e467293a3e virtcontainers: fix hotplug pci devices execeed max capacity bug
add rollback operations when hotplug block/net devices execeed pciBridgeMaxCapacity

Fixes: #1941

Signed-off-by: jiangpengfei <jiangpengfei9@huawei.com>
2019-08-09 12:31:46 -04:00
Julio Montes
7412b98774 Merge pull request #340 from bmwiedemann/date
Allow to override build date with SOURCE_DATE_EPOCH
2019-08-09 08:39:27 -05:00
Marco Vedovati
ce20d72593 dracut: improve host distro support
Detecting the host distro allows the rootfs setup to be correctly
carried out.

Fixes: #343

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-08-09 15:35:08 +02:00
GabyCT
f4c26c1ac3 Merge pull request #672 from devimc/topic/static-build/fix
static-build: fix nemu static-build
2019-08-08 17:08:07 -05:00
Julio Montes
495a92d2c3 rootfs-builder: add kmod package
Support for loading kernel modules got merged. kmod package is needed for
loading kernel modules in the guest.

fixes #341

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-08 20:28:59 +00:00
Eric Ernst
604e1ab24f versions: kernel: update to 4.19.65
52 is long in the tooth.  On to x.y.65!

Fixes: #1947

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-08-08 13:24:04 -07:00
Julio Montes
87af599dd0 rootfs-builder/clearlinux: reduce image size when AGENT_INIT=yes
Don't install chrony, iptables-bin and util-linux-bin when AGENT_INIT=yes,
these packages are only needed when the init process is systemd.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-08 20:12:03 +00:00
Julio Montes
dba3ffa3ae static-build: fix nemu static-build
Fix `arch` assignment and define `Dockerfile` variable to avoid
usage of unbound variables.

fixes #671

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-08 19:41:36 +00:00
Bernhard M. Wiedemann
dacd2d34b9 scripts/lib: Allow to override build date
Allow to override build date with SOURCE_DATE_EPOCH
in order to make builds reproducible.
See https://reproducible-builds.org/ for why this is good
and https://reproducible-builds.org/specs/source-date-epoch/
for the definition of this variable.

Also use UTC to be independent of timezone.

This date call only works with GNU date.

Without this patch, kata-containers-initrd.img contained
varying var/lib/osbuilder/osbuilder.yaml with
   version: "1.9.0-alpha0"
   -rootfs-creation-time: "2019-08-06T18:40:27.402493939+0000Z"
   +rootfs-creation-time: "2034-09-08T07:57:34.386990704+0000Z"

Fixes #340

Signed-off-by: Bernhard M. Wiedemann <bwiedemann@suse.de>
2019-08-08 16:37:22 +02:00
Julio Montes
ee952ee479 Merge pull request #578 from jongwu/build_nemu
nemu: enable compile nemu for arm64 on x86 host
2019-08-08 09:34:32 -05:00
Julio Montes
14474a49a2 Merge pull request #1921 from Ace-Tang/fix-remove-network
network: fix failed to remove network
2019-08-07 14:06:52 -05:00
GabyCT
a3eb19ca9b Merge pull request #1926 from devimc/topic/virtcontainers/loadKernelModules
virtcontainers: add support for loading kernel modules
2019-08-07 11:01:43 -05:00
Julio Montes
b9cde5bbaa Merge pull request #1930 from Ace-Tang/fix-shim-leak
shim-v2: fix shim leak when hypervisor exit unexpectly
2019-08-07 09:27:17 -05:00
Archana Shinde
df7cf77a08 network: Ignore routes with proto as "kernel"
Routes with proto "kernel" are routes that are automatically added
by the kernel.
It is a route added automatically when you assign an address to an
interface which is not /32.
With this commit, these routes are ignored. The guest kernel
would add these routes on the guest side. A corresponding commit on the
agent side would no longer delete these routes while updating them.

Without this commit, netlink gives an error complaining that a route
already exists when you try to add a route with the same dest subnet.

Something like:
dest: 192.168.1.0/24 device:net1 source:192.168.1.217 scope:253
dest: 192.168.1.0/24 device:net2 source:192.168.1.218 scope:253

Depends-on: github.com/kata-containers/agent#624

Fixes: #1811

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-08-06 21:39:11 +00:00
GabyCT
48e004367c Merge pull request #1935 from eryugey/dev
virtiofs: wait for virtiofsd process to release its resources
2019-08-06 16:03:23 -05:00
GabyCT
e052e57b3e Merge pull request #1938 from devimc/topic/pkg/dontSetInit
pkg/katautils: Do not set `init` in the kernel command line
2019-08-06 16:01:40 -05:00
Julio Montes
355b9c003d virtcontainers: add support for loading kernel modules
The list of kernel modules can be passed to the runtime through the
configuration file or using OCI annotations. In both cases, a list paramentes
can be specified for each module.

fixes #1925

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-06 20:55:49 +00:00
Julio Montes
979f064df3 vendor: update kata agent
Bring support for loading kernel modules

shortlog:
72a50ef revert: agent: sandbox_pause should get arguments from proc
ad72fe8 agent: add support for loading kernel modules
4ab32a9 vendor: dep check fixes
b8b8dac s390x: add virtio-blk-ccw support
cf20c9b ci: Allow travis to use go install script
5ffb2a6 agent: make NoPivotRoot config depend on `/` fs type
a1c9d50 make: install depends on $(TARGET)
7c97a0a agent: delete element of sandbox.deviceWatchers with right key
d0117bf release: Kata Containers 1.9.0-alpha0
4354b24 tests: Add lots of new unit tests
d4a22d1 device: Allow uevent handler to be stopped
8eb2134 config: Add parseCmdlineOption test
d4f205d device: Add extra checks
faa6cb0 mount: Fix incorrect error return
2d95c36 mount: Add test for parseMountFlagsAndOptions
5163bab console: Add debug console test
d167490 sandbox: Remove redundant check
72fc0ad mount: Improve error message
c92715f tests: Add test for getMemory
cd2f994 memory: Add extra check for memory file
458b4aa vendor: Move to a previous version for runtime-spec vendor
3cce728 vendor: Update the vendoring for github.com/opencontainers/runtime-spec
7ae6030 release: Kata Containers 1.8.0-rc0
32428bc vendor: update dependency opencontainers/runc
cfbd8c9 agent: sandbox_pause should get arguments from proc
47476d4 agent: lock subreaper agent thread
3548e65 release: Kata Containers 1.8.0-alpha2
0ead592 docs: Fix capitalization
9b59925 mount: Virtio-blk container rootfs mount for ACRN hypervisor
cf50209 release: Kata Containers 1.8.0-alpha1
0666ef0 release: Kata Containers 1.8.0-alpha0
ca2f724 grpc: add unit test for onlineResources function
06a0743 tmp: Add tmp.mount to kata-containers.target
353263d docs: Fix typos and formatting
5064045 docs: Add missing document link
c66349b mount: Add a proper rollback path to addStorages()
5583acd release: Kata Containers 1.7.0
5f9df74 updateInterface: enable hot-add nic on arm64
86ca8e0 vendor: update gogo/protobuf to v1.2.1
c9343fb release: Kata Containers 1.7.0-rc1
560dc87 vendor: update vsock package version
0af7173 agent: support debug console
d9aa453 proto: add network stats
3169c9b docs: Fix markdown in TRACING.md
8aa2880 release: Kata Containers 1.7.0-alpha1
2ada1d1 agent: Display trace details
cb32d28 test: Fix mockContainer
3e12793 agent: Fix container creation
6e558f7 vendor: Update libcontainer vendoring
7fbd860 agent: send SIGKILL instead of SIGTERM to container init process
8847998 agent: Add support for local storage
8b34aaf make: Add build option STATIC=1 to statically link
01b1cb2 travis: Use xenial
d815c97 lint: Update code to handle lint issues
828b417 ci: Update travis go version from 1.10 to 1.11
f61ca8a release: Kata Containers 1.7.0-alpha0
bdf2290 ci: travis: checkout test repo to correct branch
209aa2f agent: Fix "agent grpc server quits" show wrong error
2af3599 channel: Check for channel type in kernel cmdline options
8187461 vendor: use latest github.com/mdlayher/vsock
39696c0 vendor: Revert "vendor: Update libcontainer vendoring"
7866668 agent: Revert "agent: Fix container creation"
8f893b9 test: Revert "test: Fix mockContainer"
49e5847 systemd-target: Add chronyd.service to kata-containers.target
0bf9d1e make: Install systemd targets in systemd unit dir
85e0942 docs: Explain shutdown behaviour with tracing
99d6118 docs: Define "VM" in tracing doc
353ec2d service: Fix user initiated shutdown with static tracing

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-06 20:55:49 +00:00
Jose Carlos Venegas Munoz
973be7b706 Merge pull request #666 from jcvenegas/obs-detect-build
obs: wait: Fix error to detect building job
2019-08-06 12:59:37 -05:00
Julio Montes
0832294ba1 pkg/katautils: Do not set init in the kernel command line
Currently kata sets the init process to systemd even when it isn't installed,
the criteria to determinate whether systemd is used as init or not
is very odd, since kata only checks whether the `image` option is set in the
configuration file, unfortunately not all images have systemd installed.
Instead kata should rely on the guest kernel and `osbuilder` to use the right
init process. `osbuilder` creates a symbolic link to `systemd` or `kata-agent`
depending on the `AGENT_INIT` environment variable.

fixes #1937

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-06 15:45:19 +00:00
Jose Carlos Venegas Munoz
3ba0d65272 obs: wait: Fix error to detect building job
The job to wait for packages are built is failing randomly.

Seems that sometimes the command is not returning and expected
out out and may be mask by the

`while osc pr | grep; done`

This probably can fail at osc pr but because it failed at
osc and not grep we consider is working.

- We check for more states that we consider not ready,
like excluded or blocked.

First query the result, if fail the script will stop,
if not then try to find the string `state=building`.

Additionally, check for failed jobs in the same query to
stop the job earlier.

Fixes: #665

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-08-06 09:14:53 -05:00
Ace-Tang
20587519cd shim-v2: fix shim leak when hypervisor exit unexpectly
Fixes: #1929

in containerd-kata-v2, container can only be deleted in Delete
interface, or other shim operates(like kill/delete) all fails
since can not get container info.

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-08-06 15:48:26 +08:00
Eryu Guan
a9168a3fc9 virtiofs: wait for virtiofsd process to release its resources
We start virtiofsd in foreground (-f option), so we should wait for it
to reclaim its resources to avoid zombie process when qemu or virtiofsd
got killed unexpectedly.

Fixes: #1934
Signed-off-by: Eryu Guan <eguan@linux.alibaba.com>
2019-08-06 14:55:22 +08:00
Ganesh Maharaj Mahalingam
fbd3baae76 Merge pull request #664 from devimc/topic/snap/useMaster
snap: use master branch to test the snap
2019-08-05 16:49:27 -07:00
Julio Montes
5e4a9dbc95 obs-packaging: scape next line to check if .config file exist
OBS fails because of a syntax error in debian.rules

```
/bin/sh: 1: Syntax error: end of file unexpected (expecting "fi")
```

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-05 21:18:07 +00:00
GabyCT
f8873a088f Merge pull request #527 from grahamwhaley/20190801_minikube_fc
minikube: note kata-fc does not function under minikube
2019-08-05 10:32:09 -05:00
Jose Carlos Venegas Munoz
00e0aaa6e4 Merge pull request #1924 from ganeshmaharaj/vhost-fs-hotplug-cache-error
virtiofs: fix virtiofs crash when cache=none
2019-08-02 15:47:35 -05:00
Julio Montes
0c6911b91d snap: use master branch to test the snap
Use master branch to test the snap in order to detect errors earlier
before releasing the next snap

fixes #663

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-08-02 15:45:15 +00:00
Salvador Fuentes
269d31a9ac Merge pull request #337 from devimc/topic/image-builder/fixMissingAgent
image-builder: check /sbin/init when AGENT_INIT=yes
2019-08-02 09:46:29 -05:00
Graham Whaley
675f221bbd minikube: note kata-fc does not function under minikube
`kata-fc` does not presently function under `minikube` due to
lack of block based storage. Make that clear in the installation
documents, to help prevent users going through the whole install
process, only to be disappointed when they find ti does not work.

Fixes: #526

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-08-02 10:49:41 +01:00
James O. D. Hunt
4de74b4d67 Merge pull request #1928 from ganeshmaharaj/ignore-arcn-toml
acrn: Add toml to gitignore
2019-08-02 09:18:51 +01:00
Ganesh Maharaj Mahalingam
263fb64ec6 acrn: Add toml to gitignore
Add acrn's generated configuration toml file to the gitignore list.

Fixes: #1927
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-08-01 13:38:57 -07:00
Ganesh Maharaj Mahalingam
6e1e6a2297 virtiofs: fix virtiofs crash when cache=none
When virtio_fs_cache is set to none, the mount options for the folder
inside the guest should not contain the dax option else it leads to
invalid address errors and a crash of the daemon on the host.

Fixes: #1907
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-08-01 13:26:34 -07:00
Archana Shinde
dd40af2557 Merge pull request #339 from Pennyzct/chrony_only_on_x86-64
chrony-service: re-patch PR#265
2019-08-01 12:24:54 -07:00
James O. D. Hunt
1aec41a28d Merge pull request #512 from GabyCT/topic/fixdebiandoc
docs: Fix debian installation guide
2019-08-01 09:34:38 +01:00
Penny Zheng
9afe9310b1 chrony-service: re-patch PR#265
commit 39370c2(https://github.com/kata-containers/osbuilder/commit/
39370c2aea) has accidentally deleted the
content in PR#265(https://github.com/kata-containers/osbuilder/pull/265).
Here, I just re-patch PR#265 on the latest master code.

Fixes: #338

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-08-01 15:48:46 +08:00
Eric Ernst
74157c8b2b Merge pull request #1861 from jcvenegas/k8s-1.15
versions: Upgrade to k8s 1.15
2019-07-31 21:30:41 -07:00
Ganesh Maharaj Mahalingam
72321d298f Merge pull request #658 from jcvenegas/debian-10-obs
obs: add debian 10
2019-07-30 10:55:26 -07:00
Julio Montes
7a523c3782 Merge pull request #324 from clarklee92/master
image-builder: get mount directory size with Mb format
2019-07-30 08:24:15 -05:00
Julio Montes
b1b8ce427a image-builder: check /sbin/init when AGENT_INIT=yes
kata-agent is moved to /sbin/init when AGENT_INIT is yes. Check
/sbin/init exists and it's not systemd

fixes #322

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-30 13:23:11 +00:00
Ace-Tang
50c3e56aeb network: fix failed to remove network
in create sandbox, if process error, should remove network without judge
NetNsCreated is true, since network is created by kata and should be
removed by kata, and network.Remove has judged if need to delete netns
depend on NetNsCreated

Fixes: #1920

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-07-30 20:17:09 +08:00
Eric Ernst
1e66d93d21 Merge pull request #514 from cgxu519/doc-fix-1
docs: Fix workaround solution for ConfigPath
2019-07-29 19:41:00 -07:00
Jose Carlos Venegas Munoz
0d0a84e903 versions: Upgrade to k8s 1.15
Bump CI to kubernetes 1.15.

Fixes: #1860

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-29 15:11:21 -05:00
Jose Carlos Venegas Munoz
73cee17420 Merge pull request #312 from marcov/dracut
osbuilder: add dracut build method
2019-07-29 12:35:59 -05:00
Jose Carlos Venegas Munoz
ed85a11098 obs: add debian 10
Build packages for debian 10.

Fixes: #647

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-29 11:43:04 -05:00
Marco Vedovati
934422fc15 tests: fix background job failure detection
Distros with systemd / agent as init are not correctly enumerated.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-07-29 17:10:42 +02:00
Marco Vedovati
317bfba4b1 travis: use Ubuntu bionic distro version
Ubuntu bionic is a more recent LTS than trusty.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-07-29 17:10:42 +02:00
Marco Vedovati
a5a33436a6 ci: use .ci/setup.sh from tests repo
Use .ci/setup.sh from tests repo, to make sure spell check packages are
correctly installed for the OS under test.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-07-29 17:10:42 +02:00
Marco Vedovati
1e5746a4f2 tests: add dracut initrd and image tests
Build dracut initrd and images inside a reference container.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-07-29 17:10:42 +02:00
ClarkLee
6d5aef531a osbuilder: Get mount directory size with Mb format
While calculating directory size in imagebuild script, we shoul use
`df -BM` instead of `df -h` to keep Mb format.

Fixes #336

image-builder: get mount directory size with Mb format

Signed-off-by: ClarkLee <clarklee1992@hotmail.com>
2019-07-29 23:03:17 +08:00
GabyCT
d9c3546c45 Merge pull request #632 from devimc/topic/obs-packaging/imgsRO
obs-packaging: install images as read-only files
2019-07-29 09:35:51 -05:00
Marco Vedovati
2f55017fea osbuilder: add dracut build method
Add the option to build image and initrd using dracut.

Fixes: #311

Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-07-29 12:58:24 +02:00
Julio Montes
3255640d54 Merge pull request #1914 from devimc/topic/virtcontainers/supportSMPDie
virtcontainers: support SMP die
2019-07-26 18:03:56 -05:00
Julio Montes
497f734716 Merge pull request #657 from devimc/topic/kernel/fragmentsFixCI
Fix FC and NEMU
2019-07-26 18:03:40 -05:00
Julio Montes
7668aeb526 virtcontainers: support SMP die
CPU topology has changed in QEMU 4.1: socket > die > core > thread.
die option must be specified in order to hotplug CPUs on x86_64

Depends-on: github.com/kata-containers/packaging#657

fixes #1913

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-26 21:18:24 +00:00
Julio Montes
620a0ac117 kernel: bump kernel config version
bump kernel config version

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-26 21:17:23 +00:00
Julio Montes
364f4251a6 kernel: support firecracker
enable CONFIG_VIRTIO_MMIO and CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES
to support firecracker

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-26 21:10:55 +00:00
Julio Montes
d06343bcd8 kernel: support virtiofs
enable VIRTIO_FS and CONFIG_FUSE_FS to support virtiofs

fixes #656

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-26 21:10:04 +00:00
Julio Montes
104c04d28f vendor: update govmm
Shortlog:
68cdf64 test: add cpu topology tests
e0cf9d5 qmp: add checks for the CPU toplogy
a5c1190 qemu: support x86 SMP die

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-26 16:53:28 +00:00
Jose Carlos Venegas Munoz
4bd3ea848d Merge pull request #1895 from Ace-Tang/pass-vendor-to-qmp
qemu: support vfio pass x-pci-vendor-id and x-pci-device-id pass
2019-07-26 11:39:39 -05:00
GabyCT
aa74068d93 Merge pull request #654 from jodh-intel/configure-docker-script-for-static-kata
release: Add a Docker config script for static Kata
2019-07-26 09:13:58 -05:00
Julio Montes
54f37864f6 obs-packaging: install images as read-only files
In order to improve the security of Kata, nothing should be able to modify
the images. It would be really bad if a malicious container or process
modified them.

fixes #631

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-26 12:27:05 +00:00
Jose Carlos Venegas Munoz
3df25f25b7 Merge pull request #646 from devimc/topic/kernel/fragmentsSupport
Kernel:  add config fragment support
2019-07-25 16:36:08 -05:00
GabyCT
c79b9de88f Merge pull request #653 from devimc/topic/scripts/qemu41Libssh
scripts: fix detection of qemu 4.1
2019-07-25 15:41:34 -05:00
Julio Montes
9e8cd7d6df obs-packaging: support kernel fragments
use `merge_config.sh` script to generate the final `.config` file if the
`${arch}_kata_kvm_*` file doesn't exist.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-25 19:12:19 +00:00
Julio Montes
229411a5ae kernel: bump kernel version
bump kernel version to 46

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-25 18:13:03 +00:00
Julio Montes
7d1610e8fa kernel: drop x86_64 4.19 config file
Now we are using the fragments, drop the x86_64 4.19 config file
so we default to fragment mode.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-25 18:13:03 +00:00
Graham Whaley
addc10be48 kernel: config: frags: add common and x86 fragments
Add the base common fragments and x86_64 specific fragments
for the 4.19.x kernel.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-25 18:13:03 +00:00
Graham Whaley
d205a07d65 kernel: configs: update README
Embellish the README a bit, and add some details about the
new fragment method.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-25 18:13:03 +00:00
Graham Whaley
0e604bde96 kernel: configs: add kernel fragment support
Add the framework to build kernel config files from trees
of kernel fragments.

If no fragment directory is found for the requested kernel
version and architecture then revert to looking for a whole
prebuilt kernel config file instead.

Fixes: #234

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-25 18:13:03 +00:00
James O. D. Hunt
304ed95794 release: Add a Docker config script for static Kata
Create a script that will be added to the
`kata-static-${version}-${arch}.tar.xz` file and which can be either run
directly by the user to configure Docker, or can be run indirectly by
the `kata-manager` script.

Fixes: #648.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-07-25 15:34:00 +01:00
James O. D. Hunt
792504eee2 Merge pull request #1910 from amshinde/remove-nested-vendor-dir
Remove nested vendor dir
2019-07-25 09:16:23 +01:00
Fupan Li
943136e18b Merge pull request #1899 from bergwolf/ut
Fix UT failures with non-root
2019-07-25 11:46:08 +08:00
Archana Shinde
e41a6b94f9 vendor: Update vendor directories
Update top-level vendor with
"dep ensure add github.com/blang/semver@3.6.1"
dep check should not succeed.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-07-24 14:33:44 -07:00
Archana Shinde
95e8a7a15c dep: Remove nested vendor directories
It is not really recommended to have nested vendor directories.
dep does not work well with nested directories:
https://github.com/golang/dep/issues/985
Recommendation is to use flatten the vendor directories.

Hence remove any nested vendor directories.

Fixes #1909

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-07-24 14:33:22 -07:00
GabyCT
b529bb0887 Merge pull request #651 from jcvenegas/add-back-ubuntu
distros: add ubuntu 16.04 back
2019-07-24 16:05:42 -05:00
Julio Montes
93e9997850 scripts: fix detection of qemu 4.1
quote `>= 4.1` to avoid bash redirects `echo`'s output to a
new file named `=`

fixes #652

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-24 20:31:40 +00:00
GabyCT
e5a137639f Merge pull request #650 from devimc/topic/snap/1.9.0-alpha0
snap: release 1.9.0-alpha0
2019-07-24 13:31:07 -05:00
GabyCT
e9cb861fca Merge pull request #519 from nitkon/patch-4
architecture.md: Fix networking info
2019-07-24 12:36:05 -05:00
GabyCT
ea8e48d079 Merge pull request #522 from nitkon/patch-5
architecture.md: Fix broken CRI link
2019-07-24 12:30:03 -05:00
nitkon
73aa0977ac architecture.md: Fix broken CRI link
Fix broken CRI Link. 

Fixes:  #521

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-07-24 22:24:13 +05:30
Jose Carlos Venegas Munoz
546dc141a9 distros: add ubuntu 16.04 back
Seems that OBS now fixed issues with ubuntu,
add it back.

Fixes: #607

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-24 11:39:29 -05:00
Julio Montes
57e4f9ccb6 snap: use the same version of tests to test the snap
Test the snap with the same verions of tests

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-24 15:39:17 +00:00
nitkon
3c250509d1 architecture.md: Fix networking info
The networking part of the doc talks about the 
two ends of the veth pair. One end is in the container
networking namespace and the other one should
be in the host networking namespace. Fix this info.

Fixes: #518

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-07-24 20:21:46 +05:30
Graham Whaley
4e67de847b Merge pull request #584 from nitkon/patch-6
README: Fix a typo in Kernel Readme
2019-07-24 10:15:25 +01:00
Julio Montes
72ed49e0a3 snap: release 1.9.0-alpha0
bump snap version

fixes #649

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-23 19:34:52 +00:00
Salvador Fuentes
28b0ed9209 Merge pull request #335 from Pennyzct/fedora_28_on_aarch64
fedora-rootfs: using fedora 28 on aarch64
2019-07-23 10:40:23 -05:00
Eric Ernst
6ce5f30d6c Merge pull request #1889 from WeiZhang555/persist-data
persist: manage "hypervisor.json" with new store
2019-07-23 08:19:11 -07:00
Penny Zheng
9bfc083ef5 fedora-rootfs: using fedora 28 on aarch64
For some reason, busybox image crashed on fedora 30 rootfs on aarch64.
For now, we will switch back to use fedora 28.

Fixes: #334

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-07-23 17:43:38 +08:00
Wei Zhang
f3d0978c3f persist: improve readability
Address some comments for code readability, also add some unit tests.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-07-23 17:10:00 +08:00
Wei Zhang
3bfbbd666d persist: merge "network.json"
Merge "network.json" into "persist.json" so that new store can manage
network part.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-07-23 17:10:00 +08:00
Wei Zhang
99cf3f80d7 persist: merge "agent.json"
Manage "agent.json" with new store.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-07-23 17:10:00 +08:00
Wei Zhang
7d5e48f1b5 persist: manage "hypervisor.json" with new store
Fixes #803

Merge "hypervisor.json" into "persist.json", so the new store can take
care of hypervisor data now.

Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
2019-07-23 17:09:11 +08:00
Hui Zhu
688732adee Merge pull request #1897 from bergwolf/monitor
improve robustness w.r.t. dead hypervisor
2019-07-23 16:56:06 +08:00
Peng Tao
d5d7d82eeb vc: move container mount cleanup to container.go
For one thing, it is container specific resource so it should not
be cleaned up by the agent. For another thing, we can make container
stop to force cleanup these host mountpoints regardless of hypervisor
and agent liveness.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-22 19:29:32 -07:00
Peng Tao
e02f6dc067 shimv2: monitor sandbox liveness
When sandbox quits unexpected, clean things up as much as we can.

Fixes: #1896
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-22 19:29:32 -07:00
Peng Tao
262484de68 monitor: watch hypervisor
When hypervisor process is dead, notify watchers and mark agent dead.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-22 19:29:32 -07:00
Peng Tao
67c401c059 agent: use hypervisor pid as backup proxy pid for non-kata proxy cases
Then we can check hypervisor liveness in those cases to avoid long
timeout when connecting to the agent when hypervisor is dead.

For kata-agent, we still use the kata-proxy pid for the same purpose.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-22 19:29:32 -07:00
Peng Tao
835b6e9e1b sandbox: do not fail SIGKILL
Once we have found the container, we should never fail SIGKILL.
It is possible to fail to send SIGKILL because hypervisor might
be gone already. If we fail SIGKILL, upper layer cannot really
proceed to clean things up.

Also there is no need to save sandbox here as we did not change
any state.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-22 19:29:32 -07:00
Peng Tao
bc4460e12f sandbox: support force stop
When force is true, ignore any guest related errors. This can
be used to stop a sandbox when hypervisor process is dead.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-22 19:29:32 -07:00
Peng Tao
4130913ed7 agent: mark agent dead when failing to connect
Whenever we fail to connect, do not make any more attempts.
More attempts are possible during cleanup phase but we should
not try to connect any more there.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-22 19:27:52 -07:00
Peng Tao
c472a01006 container: allow to stop a paused container
When a container is paused and something goes terribly
wrong, we still need to be able to clean thing up. A paused
container should be able to transit to stopped state as well
so that we can delete it properly.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-22 19:27:52 -07:00
Peng Tao
f886c0bf35 vc: drop container SetPid API
It is not used by anyone.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-22 19:27:52 -07:00
Salvador Fuentes
ff5f1b4273 Merge pull request #1890 from devimc/topic/virtcontainers/useTestity
virtcontainers: convert virtcontainers tests to testify/assert
2019-07-22 16:17:24 -05:00
Archana Shinde
c7af16d363 Merge pull request #1904 from GabyCT/topic/checkgo
ci: Allow travis to use go install script
2019-07-22 11:36:59 -07:00
Jianyong Wu
17512dc3cb nemu: enable compile nemu for arm64 on x86 host
This patch enable compile nemu for arm64 in container
on x86 host.

fixed: #577
Signed-off-by: Jianyong Wu  <jianyong.wu@arm.com>
2019-07-22 17:46:41 +08:00
Gabriela Cervantes
f2e6a31dfc ci: Allow travis to use go install script
This allows travis to use the go install script instead of having a
hard coded golang version at travis.yml

Fixes #1903

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-07-22 02:07:56 -05:00
Marco Vedovati
8ebaac02d1 rootfs: move code from rootfs.sh to lib.sh
Move some of the functions in rootfs.sh (generate_dockerfile,
detect_go_version) in scripts/lib.sh, to make those functions reusable
outside of rootfs.sh.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-07-20 09:01:03 +02:00
Eric Ernst
3655b4c197 Merge pull request #445 from grahamwhaley/20190424_minikube_docs
install: Add minikube instructions
2019-07-19 17:11:16 -05:00
Eric Ernst
37c2872f29 Merge pull request #1892 from egernst/1.9.0-alpha0-branch-bump
# Kata Containers 1.9.0-alpha0
2019-07-19 11:56:16 -05:00
Peng Tao
3063391334 ut: skip TestBindUnmountContainerRootfsENOENTNotError for non-root
mount syscall requires root.

Fixes: #1898
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-19 08:44:51 -07:00
Peng Tao
c4583f4486 ut: skip TestStartNetworkMonitor for non-root
It requires root to manipulate netns and otherwise fails
like below:

=== RUN   TestStartNetworkMonitor
--- FAIL: TestStartNetworkMonitor (0.00s)
        Error Trace:    sandbox_test.go:1481
        Error:          Expected nil, but got: &errors.errorString{s:"Error switching to ns /proc/6648/task/6651/ns/net: operation not permitted"}

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-19 08:36:43 -07:00
Julio Montes
f2423e7d7c virtcontainers: convert virtcontainers tests to testify/assert
Convert virtcontainers tests to testify/assert to make the virtcontainers
tests more readable.

fixes #156

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-19 15:28:45 +00:00
Ace-Tang
50e263d943 qemu: support vfio pass x-pci-vendor-id and x-pci-device-id pass
since some vendor id like 1ded can not be identified by virtio-pci
driver, so need to pass a specified vendor id to qemu.

Fixes: #1894

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-07-19 21:04:22 +08:00
Ace-Tang
2cf4189244 vendor: update github.com/intel/govmm
update to commit 52b2309a55

Fixes: #1894

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-07-19 20:57:21 +08:00
Jose Carlos Venegas Munoz
cd9ab72636 Merge pull request #333 from egernst/1.9.0-alpha0-branch-bump
# Kata Containers 1.9.0-alpha0
2019-07-18 16:23:19 -05:00
Eric Ernst
f28de59210 release: Kata Containers 1.9.0-alpha0
- qemu: use x-ignore-shared to implement vm template
- virtiofs: Allow memory hotplug with virtiofs
- Firecracker Add jailer support for firecracker
- runtime: update govmm and move to virtio 1.0 for hotplugs
- HV: kata-runtime support for ACRN hypervisor
- versions: add crictl version which is compatible with OpenShift
- versions: update CRI-O to v1.14.6
- Fix fork exec test errors
- ci: Verify and block merge if other projects are not updated
- shimv2: Add missing page size to Hugetlb Stat

d14968b qemu: use x-ignore-shared to implement vm template
d392b22 virtiofs: Allow memory hotplug with virtiofs
050f8e9 runtime: Disable disable-modern for virtio QMP add
3e4989d vendor: update govmm and match code
4fed346 Firecracker: Enable jailer by default
78ea50c virtcontainers: Jailer: Add jailer support for firecracker
98a6973 virtcontainers: Add ACRN unit test cases
f246a79 virtcontainers: Add support for updating virtio-blk based container rootfs
d9a4157 virtcontainers: Add support for launching/managing ACRN based VMs
828e0a2 pkg/katautils: Add support for ACRN hypervisor config
adcac93 kata-check: Check and validate type-1 hypervisor for kata
4d26cee Make: Add ACRN hypervisor and generate configuration file
bdd8947 versions: add crictl version which is compatible with OpenShift
098501a versions: update CRI-O to v1.14.6
4968438 tests: Fix fork/exec test error
fcf9f9f test: Fix fd leak causing test error
5182a25 ci: Verify and block merge if other projects are not updated
da7f5f3 shimv2: Add missing page size to Hugetlb Stat

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-07-18 12:49:54 -07:00
Eric Ernst
bdbc806770 release: Kata Containers 1.9.0-alpha0
- rootfs: upgrade docker images for fedora
- rootfs: Make sure etc exists.

edb770e rootfs: upgrade docker images for fedora
27dddf0 rootfs: Make sure etc exists.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-07-18 12:49:36 -07:00
Graham Whaley
8e29464b46 install: README: add Minikube entry
Add Minikube to the list of 'cloud' providers installation instructions.
Whilst there, order the list alphabetically.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-18 13:28:55 +00:00
Graham Whaley
f97fe323a1 install: add Minikube installation instructions
Add instructions of how to setup and install Kata under
Minikue.

Fixes: #444

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-18 13:28:55 +00:00
Chengguang Xu
097156d837 docs: Fix workaround solution for ConfigPath
In the workaround solution of ConfigPath, there is a '$@'
missing in the script, so add it.

Fixes: #515

Signed-off-by: Chengguang Xu <cgxu519@zoho.com.cn>
2019-07-18 20:20:12 +08:00
James O. D. Hunt
dfda61c681 Merge pull request #510 from eadamsintel/qat-with-kata
QAT: Add initial Intel QAT Kata instructions
2019-07-18 09:14:44 +01:00
James O. D. Hunt
fb454f87f7 Merge pull request #332 from jcvenegas/fedora-update
rootfs: upgrade docker images for fedora
2019-07-18 08:40:22 +01:00
Peng Tao
d987a30367 Merge pull request #1799 from bergwolf/template
qemu: use x-ignore-shared to implement vm template
2019-07-18 10:38:59 +08:00
Eric Adams
0402d41ca3 QAT: Add initial Intel QAT Kata instructions
These instructions cover how to install the out of tree
QAT drivers to the host, build a custom kata kernel and
rootfs, and build a QAT accelerated OpenSSL container
image.

Fixes: #509

Signed-off-by: <eric.adams@intel.com>
2019-07-17 15:25:32 -07:00
Jose Carlos Venegas Munoz
b25f6caf85 Merge pull request #644 from jcvenegas/release-pipeline
release: add pipeline
2019-07-17 17:16:36 -05:00
Jose Carlos Venegas Munoz
920965eb79 release: add pipeline
add pipeline to integrate all  release jobs.

Signed-off-by: Jose Carlos Venegas Munoz <jcvenega@jcvenega-nuc.zpn.intel.com>
2019-07-17 17:01:21 -05:00
Jose Carlos Venegas Munoz
edb770ee63 rootfs: upgrade docker images for fedora
Use fedora 30 in docker images.

Fixes: #331

Signed-off-by: Jose Carlos Venegas Munoz <jcvenega@jcvenega-nuc.zpn.intel.com>
2019-07-17 13:54:53 -05:00
Marco Vedovati
39370c2aea rootfs-builder: support provisioning existing rootfs
Add the use case of provisioning an existing rootfs directory with the
components / configurations needed to generate a Kata compatible images.
This supports use cases such as using a rootfs built outside of
osbuilder, and providing a overlay for dracut built initrds.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-07-17 19:47:14 +02:00
Salvador Fuentes
e89195e70e Merge pull request #1810 from ganeshmaharaj/virtiofs-hotplug
virtiofs: Allow memory hotplug with virtiofs
2019-07-17 09:21:26 -05:00
Eric Ernst
16d2142f93 Merge pull request #641 from bergwolf/qemu-migration
qemu: replace private migration patch with the upstream one
2019-07-17 09:12:46 -05:00
Peng Tao
d14968b66a qemu: use x-ignore-shared to implement vm template
qemu upstream has x-ignore-shared that works similar
to our private bypass-shared-memory. We can use it to
implement the vm template feature.

Fixes: #1798
Depends-on: github.com/kata-containers/packaging#641
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-17 05:37:22 -07:00
Peng Tao
04407ac2ce qemu: replace private migration patch with the upstream one
Then we can use x-ignore-shared to do migration and drop the
extra patch once we move to qemu 4.1.0 or later.

Fixes: #640
Depends-on: github.com/kata-containers/runtime#1799
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-17 00:47:57 -07:00
GabyCT
7d38b84203 Merge pull request #329 from amshinde/make-sure-etc-exists-for-chrony
rootfs: Make sure etc exists.
2019-07-16 16:38:56 -05:00
GabyCT
bc15e44245 Merge pull request #1649 from mcastelino/topic/jail
Firecracker Add jailer support for firecracker
2019-07-12 12:05:16 -05:00
Ganesh Maharaj Mahalingam
d392b22ee4 virtiofs: Allow memory hotplug with virtiofs
Kata with virtio-fs fails to do memory hotplugging. This is caused by
the fact that hot plugged memory is always backed by
'memory-backend-ram' while virtio-fs expects it to be backed by file and
shared for it to be able to use the system the way it is intended. This
chnage allows using file based memory backend for virtio-fs, hugepages
or when the user prefers to use a file backed memory

Fixes: #1745
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-07-12 09:25:30 -07:00
Manohar Castelino
3bd4bb66fb Merge pull request #1868 from ganeshmaharaj/revert-virtio-disable-modern
runtime: update govmm and move to virtio 1.0 for hotplugs
2019-07-12 09:07:37 -07:00
Ganesh Maharaj Mahalingam
050f8e9715 runtime: Disable disable-modern for virtio QMP add
History: the previous version of kvm (unknown) and qemu-lite had an
issue using virtio 1.0 version when it came to device hotplug, which led
to the team to disable 1.0 version of virtio for hotplug (set
disable-modern=on). Please check
e99f6b2931
for further info.

We have since moved to QEMU4.0 and probably a later version of kvm as
default across all distros. This change is to move to virtio 1.0 for
hotplugging devices.

Fixes: #1870
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-07-11 20:16:15 -07:00
Ganesh Maharaj Mahalingam
3e4989db42 vendor: update govmm and match code
update govmm to support virtiofs memory hotplug
Commits:
    0c900f5 Allow sharing of memory backend file
    f695ddf qemu: add migration incoming defer support
    f0f18dd qmp: add virtio-blk multiqueue
    7d3deea qemu: Add a virtio-blk-pci device driver support

Fixes: #1745
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-07-11 20:16:15 -07:00
Manohar Castelino
4fed346d53 Firecracker: Enable jailer by default
Add jailer support to configuration files.
Also enable jailer by default in Kata containers.

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-07-11 21:32:45 +00:00
Manohar Castelino
78ea50c36c virtcontainers: Jailer: Add jailer support for firecracker
Firecracker provides a jailer to constrain the VMM. Use this
jailer to launch the firecracker VMM instead of launching it
directly from the kata-runtime.

The jailer will ensure that the firecracker VMM will run
in its own network and mount namespace. All assets required
by the VMM have to be present within these namespaces.
The assets need to be copied or bind mounted into the chroot
location setup by jailer in order for firecracker to access
these resouces. This includes files, device nodes and all
other assets.

Jailer automatically sets up the jail to have access to
kvm and vhost-vsock.

If a jailer is not available (i.e. not setup in the toml)
for a given hypervisor the runtime will act as the jailer.

Also enhance the hypervisor interface and unit tests to
include the network namespace. This allows the hypervisor
to choose how and where to lauch the VMM process, vs
virtcontainers directly launching the VMM process.

Fixes: #1129

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-07-11 21:32:36 +00:00
GabyCT
d3fd4efad0 Merge pull request #636 from devimc/topic/snap/fixSnap
snap: add bc to build-packages
2019-07-11 11:48:38 -05:00
Archana Shinde
5e67e04666 Merge pull request #1779 from vijaydhanraj/ACRN-Runtime
HV: kata-runtime support for ACRN hypervisor
2019-07-11 09:42:19 -07:00
Julio Montes
e393422ad4 snap: add bc to build-packages
bc is required to build the snap in launchpad

fixes #635

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-11 15:03:42 +00:00
Salvador Fuentes
0089d300e4 Merge pull request #626 from devimc/topic/snap/fixSnap
snap: fix and release new snap
2019-07-10 13:46:14 -05:00
Vijay Dhanraj
98a69736c5 virtcontainers: Add ACRN unit test cases
This patch adds unit test cases for acrn specific changes.

Fixes: #1778
Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-07-10 10:49:24 -07:00
Vijay Dhanraj
f246a799aa virtcontainers: Add support for updating virtio-blk based container rootfs
Thist patch adds the following,
1. ACRN only supports virtio-blk and so the rootfs for the VM
   sits at /dev/vda. So to get the container rootfs increment the
   globalIndex by 1.
2. ACRN doesn't hot-plug container rootfs (but uses blkrescan) to
   update the container rootfs. So the agent can be provided the virtpath
   rather than the PCIaddr avoiding unneccessary rescaning to find the
   virthpath.

v1->v2:
Removed the workaround of incrementing index for
virtio-blk device and addressed it acrn.

Fixes: #1778

Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-07-10 10:49:24 -07:00
Vijay Dhanraj
d9a4157841 virtcontainers: Add support for launching/managing ACRN based VMs
This patch adds the following,
1. Implement Sandbox management APIs for ACRN.
2. Implement Sandbox operation APIs for ACRN.
3. Add support for hot-plugging virtio-blk based
(using blk rescan feature) container rootfs to ACRN.
4. Prime devices, image and kernel parameters for
launching VM using ACRN.

v2->v3:
Incrementing index to keep track of virtio-blk devices
created. This change removes the workaround introduced
in block.go.

v1->v2:
1. Created issue #1785 to address the UUID TODO item.
2. Removed dead code.
3. Fixed formatting of log messages.
4. Fixed year in copyright message.
5. Removed acrn_amd64.go file as there are no amd64 specific
   changes. Moved the code to acrn_arch_base.go.

Fixes: #1778

Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-07-10 10:49:24 -07:00
Vijay Dhanraj
828e0a2205 pkg/katautils: Add support for ACRN hypervisor config
This patch adds support for,
1. Extracting and configuring ACRN hypervisor from toml.
2. Add ACRN hypervisor ctl for controlling ACRN hypervisor.
This will be used for updating virtio-blk based
container rootfs using blk rescan feature.

v2->v3:
Fixed acrnctl path.

v1->v2:
Trimmed hypervisor config options as needed by ACRN.

Fixes: #1778

Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-07-10 10:49:24 -07:00
Vijay Dhanraj
adcac9368f kata-check: Check and validate type-1 hypervisor for kata
ACRN hypervisor is a type-1 hypervisor and this patch
adds support to check and validate if the system is
capable of running kata containers with ACRN hypervisor.

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

v3->v4:
Implemented a generic way to identify hypervisor and
test VM creation.

v2->v3:
1. Removed cgo structs and defined go structs.
2. Suppressed lint warnings due to unused createVM struct.

v1->v2:
1. Created an issue #1784 to address TODO item.
2. Fixed formatting of the log message.
3. Currently ACRN is only supported on amd64. So
   moved ACRN specific code to kata-check_amd64.go.

Fixes: #1778

Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-07-10 10:47:31 -07:00
Vijay Dhanraj
4d26ceee79 Make: Add ACRN hypervisor and generate configuration file
This patch covers the following aspects,
1. Add ACRN as a supported hypervisor for amd64 architecture.
2. Build and install configuration file for ACRN hypervisor.

v1->v2:
1. Deleted autogenerated configuration-acrn.toml.
2. Trimmed configuration options not used by ACRN.

Fixes: #1778

Signed-off-by: Vijay Dhanraj <vijay.dhanraj@intel.com>
2019-07-10 10:46:47 -07:00
Julio Montes
4e5e018e59 snap/ci: Do not run shimv2 tests
shimv2 with vm templating are failing, disable them and fix later
see https://github.com/kata-containers/packaging/issues/633

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-10 15:48:04 +00:00
Salvador Fuentes
a4e6af0316 Merge pull request #1873 from openSUSE/crictl-openshift
versions: add crictl version which is compatible with OpenShift
2019-07-10 10:10:26 -05:00
Sascha Grunert
bdd89473fd versions: add crictl version which is compatible with OpenShift
Fixes #1872

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-07-10 11:02:34 +02:00
Julio Montes
10959e6faf Merge pull request #624 from devimc/topic/kernel/fixConfig
kernel/x86_64: fix make oldconfig
2019-07-09 15:54:07 -05:00
Julio Montes
e647b50bd8 Merge pull request #628 from devimc/topic/scripts/qemu41Libssh
scripts: update configure-hypervisor script to support QEMU 4.1
2019-07-09 15:53:36 -05:00
Julio Montes
588bcedd02 snap: release 1.8.0-rc0
Update snap version to 1.8.0-rc0

fixes #625

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-09 20:31:05 +00:00
Julio Montes
cc4e59f19d snap: update QEMU to 4.0.0
Update QEMU to 4.0.0 since it's now officially supported in Kata Containers

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-09 20:31:05 +00:00
Julio Montes
0bbce8e652 snap: use tagged version of osbuilder to generate the images
To avoid conflics between kata companents and their versions, all
components should be built using their tagged version.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-09 20:31:05 +00:00
Julio Montes
a0d0a20c98 snap: setup kernel using build-kernel.sh
Setup the kernel by hand is prone to errors.
Use `build-kernel.sh setup` to pull and setup the kata kernel.

fixes #438

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-09 20:31:05 +00:00
Julio Montes
335b8846ed snap: pull and install yq from github
osbuilder shares the yq binary with the container that generates the image,
unfortunately the snap version of yq is not a static binary hence it's not
compatible with the alpine container.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-09 18:01:59 +00:00
GabyCT
e9bbe0b343 Merge pull request #1867 from openSUSE/crio-version
versions: update CRI-O to v1.14.6
2019-07-09 10:11:34 -05:00
Sascha Grunert
098501ac14 versions: update CRI-O to v1.14.6
- Changes:
  - version: v1.14.6
  - Add username and homedir to generated password
  - Close temporary image in PullImage
  - Version 1.14.6-dev
  - Version 1.14.5
  - version: if git commit is empty, silently ignore
  - enable inline exec and attach test
  - Bump up minMemoryLimit to 12Mb
  - Backport CircleCI config
  - Fix up machine os content version and cri-o version in spec
  - Add state of infracontainer to disk when stopped
  - Use GlobalAuthFile when pulling the pause image if
    PauseImageAuthFile is not set
  - Don't discard copy.Options.SourceCtx when credentials are provided
  - Don't set non-default copy.Options in imageService.PullImage if it is nil
  - Add global_auth_file option to crio.image config
  - Create network and plugins directory if they do not exist
  - Disable file locking by default
  - Update containers/image to v2.0.0, buildah to 1.8.4, libpod to 1.4.1, ...
  - Bump github.com/containers/libpod from 1.2.0 to 1.3.1
  - Vendor containers/storage v1.12.4
  - update github.com/containers/* dependencies
  - Changes to rpm build and Dockerfile for ci
  - When plugin_dir is set, only use that value
  - Update Makefile to be usable without git
  - bump to version 1.14.5-dev
  - bump to version 1.14.4
  - Default to runc is default_runtime is not set
  - Fix missing images names on list
  - Add crio-wipe
  - Add logic for running OpenShift CI on cri-o PRs
  - Update device cgroup permissions for configured devices.
  - version: v1.14.4-dev
  - version: v1.14.3
  - Fix runtime panic when having concurrent writes to runtime impl map
  - server: do not add default /sys if bind mounted
  - Change plugin_dir to plugin_dirs
  - Added unit tests
  - Add version file functionality
  - fix build issues on 32-bit arches
  - conmon: use sd_journal_sendv
  - make vendor generated
  - Move to v1.14.3-dev
  - Tag v1.14.2
  - Vendor in c/storage release-1.13
  - Revert "update github.com/containers/* dependencies"
  - Update test suites
  - Fix logic of server.restore()
  - version: v1.14.2-dev

Fixes #1866

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-07-09 10:57:25 +02:00
Julio Montes
d0c267191c kernel/x86_64: fix make oldconfig
Add missing kernel configs to avoid `make oldconfig` asks or
takes the default value for the missing configs.

fixes #623

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-08 19:26:26 +00:00
Julio Montes
c0f8cf66e2 scripts: update configure-hypervisor script to support QEMU 4.1
QEMU >= 4.1 uses libssh not libssh2

fixes #627

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-07-08 17:14:29 +00:00
Nitesh Konkar
edbd23728c README: Fix a typo in Kernel Readme
Fix a typo

Fixes:  #583

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-07-08 13:57:19 +05:30
GabyCT
220ae83820 Merge pull request #1859 from jodh-intel/fix-fork-exec-test-error
Fix fork exec test errors
2019-07-05 15:40:50 -05:00
GabyCT
8b89a868e9 Merge pull request #1858 from GabyCT/topic/checkversion
ci: Verify and block merge if other projects are not updated
2019-07-05 14:05:53 -05:00
GabyCT
89f2c80451 Merge pull request #618 from jcvenegas/fix-container-image
Packaging fixes for release
2019-07-05 12:43:56 -05:00
Jose Carlos Venegas Munoz
3240ad0fd5 Merge pull request #614 from GabyCT/topic/updatecheckversion
ci: Enable check VERSION among the components without the runtime
2019-07-05 11:52:26 -05:00
Jose Carlos Venegas Munoz
bfc9220663 package: fix path to qemu-vanilla in debs
Deb files has not a correct qemu vanilla path.

Fixes: #620

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-05 09:58:39 -05:00
Jose Carlos Venegas Munoz
f9fe9440a7 ci: cd: Use the same obs script for CD.
We want to use the same script for both
PRs and new package CD. Depending if CI
is set a release push will be done or
a ci.

Fixes: #617

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-05 09:58:39 -05:00
James O. D. Hunt
4968438992 tests: Fix fork/exec test error
Fixed `TestSandboxCreationFromConfigRollbackFromCreateSandbox` which
requires that the hypervisor does not exist. Unfortunately, it does
exist (as a fake test binary), but isn't executable meaning although the
test failed (since an error is expected), rather than the expected
`ENOENT` error, the test was logging a message similar to the following
since the fake hypervisor exists with non-executable permissions:

```
Unable to launch /tmp/vc-tmp-526112270/hypervisor: fork/exec /tmp/vc-tmp-526112270/hypervisor: permission denied
```

Fixes: #1835.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-07-05 11:11:56 +01:00
James O. D. Hunt
fcf9f9f6dd test: Fix fd leak causing test error
Update the `TestQemuAddDeviceKataVSOCK` test so that it:

- Doesn't hard-code the file descriptor number.
- Cleans up after itself.

The latter issue was causing an odd error similar to the following in
the test output:

```
Unable to launch /tmp/vc-tmp-526112270/hypervisor: fork/exec /tmp/vc-tmp-526112270/hypervisor: permission denied
```

Partially fixes: #1835.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-07-05 11:11:52 +01:00
Gabriela Cervantes
5182a2551d ci: Verify and block merge if other projects are not updated
This will take the VERSION of all the components in order to
verify that they match among them before merging the runtime.

Fixes #1581

Depends-on: github.com/kata-containers/packaging#614

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-07-05 01:06:37 -05:00
Jose Carlos Venegas Munoz
d29427d353 qemu: static: Apply qemu patches depending on the verison.
qemu static is using all the patches that we have for qemu,
we only want to apply depending the version.

Fixes: #619

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-04 15:33:33 -05:00
Jose Carlos Venegas Munoz
38b93464d8 Merge pull request #616 from jcvenegas/fix-container-image
obs: dokcer: update leap image base.
2019-07-04 11:06:57 -05:00
Jose Carlos Venegas Munoz
3aba4d330d obs: docker: update leap image base.
The image tag opensuse:leap not longer exist
use the the new image format.

Fixes: #615

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-04 09:06:02 -05:00
Gabriela Cervantes
98ad9e2ae2 ci: Enable check VERSION among the components without the runtime
The main purpose is that this script will be used to verify
that VERSION among the components are equal before merging the runtime.

Fixes #613

Depends-on: github.com/kata-containers/runtime#1858

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-07-04 05:16:01 -05:00
Fupan Li
cd4cc02568 Merge pull request #1857 from odinuge/fix-hugetlb-pagesize
shimv2: Add missing page size to Hugetlb Stat
2019-07-04 15:57:45 +08:00
Jose Carlos Venegas Munoz
a5ff98ff49 Merge pull request #612 from jcvenegas/stable-branch-creation
tag: Automatically create stable branch
2019-07-03 16:20:40 -05:00
Jose Carlos Venegas Munoz
633e5cc1d6 tag: Automatically create stable branch
After a rc0 is created the path to have an stable release starts, after that
any rc0 is to improve stabability and not more features are added. When it is
the projects is considered stable no more rc* are done.

Fixes: #611

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-03 14:39:38 -05:00
Odin Ugedal
da7f5f3796 shimv2: Add missing page size to Hugetlb Stat
Fixes: #1856

Signed-off-by: Odin Ugedal <odin@ugedal.com>
2019-07-03 21:07:04 +02:00
Jose Carlos Venegas Munoz
0ec5e60342 Merge pull request #610 from jcvenegas/bump-on-log-fail
bump: Do not fail is not possible to get logs
2019-07-03 12:58:28 -05:00
Jose Carlos Venegas Munoz
896ed41c7f bump: Do not fail is not possible to get logs
Sometimes get logs could fail, for example
when a tag does not exit, instead of fail
just log the error in the PR.

Fixes: #609

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-03 10:07:14 -05:00
Jose Carlos Venegas Munoz
33434894ba Merge pull request #325 from katabuilder/1.8.0-rc0-branch-bump
# Kata Containers 1.8.0-rc0
2019-07-03 08:46:10 -05:00
James O. D. Hunt
c74f9a2bfb Merge pull request #327 from jcvenegas/fix-go-version-detect
rootfs: fix golang version detection
2019-07-03 08:41:01 +01:00
GabyCT
43f2680e4c Merge pull request #1841 from katabuilder/1.8.0-rc0-branch-bump
# Kata Containers 1.8.0-rc0
2019-07-02 18:15:16 -05:00
Jose Carlos Venegas Munoz
4ade7e5853 rootfs: fix golang version detection
When the rootfs creation is used for PRs there is
not a match with a kata runtime version, in this
case lets clone the runtime repository and checkout
to the kata branch target. If is already cloned
this mean this was set by depens-on script or the user.

Fixes: #326

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-07-02 18:05:10 -05:00
Archana Shinde
27dddf0a25 rootfs: Make sure etc exists.
We are seeing sporadic failures in the rootfs creation as listed here:
https://github.com/kata-containers/tests/issues/1744

While this cannot be reproduced locally, there is no reason
for the failure to write to $ROOTFS_DIR/etc/chrony.conf unless the upper
directories are missing as this file should be created if it did not
exist earier.
So just create the etc directory to test out if we see these sporadic
failures in the CI.

Fixes #328

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-07-02 12:02:54 -07:00
GabyCT
212b219e9e Merge pull request #597 from chavafg/topic/static-qemu-patches
static-qemu: Apply qemu patches from this repo.
2019-07-02 10:00:13 -05:00
Jose Carlos Venegas Munoz
b94dafa980 Merge pull request #1849 from jodh-intel/fix-borken-url
docs: Fix broken URL
2019-07-02 08:04:26 -05:00
James O. D. Hunt
f1a43ac4c6 docs: Fix broken URL
Update broken Clear Linux stateless URL.

Fixes: #1846.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-07-02 08:41:33 +01:00
James O. D. Hunt
09e316a376 Merge pull request #1848 from bergwolf/url
vc/readme: fix cri url
2019-07-02 08:37:51 +01:00
Peng Tao
db3363fbdf vc/readme: fix cri url
The old one was invalidated since 2019-07-01.

Fixes: #1847
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-07-01 20:14:13 -07:00
Jose Carlos Venegas Munoz
c3ae620512 Merge pull request #580 from egernst/qemu-vanilla-default
packages: update default VMM to qemu-vanilla
2019-07-01 18:30:04 -05:00
Jose Carlos Venegas Munoz
c92d77bf99 Merge pull request #1838 from egernst/fix-1837
vc: update CRI link
2019-07-01 18:06:32 -05:00
Eric Ernst
8f33d736e8 vc: update CRI link
Kubernetes moved CRI document within the sig-node directory. Updating
README.md accordingly.

Fixes: #1837

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-07-01 15:54:59 -07:00
Jose Carlos Venegas Munoz
024a87419e Merge pull request #1845 from chavafg/topic/travis_run_setup
CI: Run .ci/setup.sh from tests repo
2019-07-01 17:46:55 -05:00
Salvador Fuentes
963db61cb3 CI: Run .ci/setup.sh from tests repo
This will install correct dependencies for running
static checks.

Fixes: #1844.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-07-01 16:24:51 -05:00
Eric Ernst
3a454814e3 Merge pull request #1826 from amshinde/empty-dir-fix-overlay
empty-dir: Fix bug in the way empty-dirs are handled for overlay
2019-07-01 14:09:01 -07:00
Salvador Fuentes
99e4f4cb33 static-qemu: Apply qemu patches from this repo.
Apply the required patches when builing Qemu statically.

Fixes: #596.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-07-01 14:54:26 -05:00
katacontainersbot
71ce7577fb release: Kata Containers 1.8.0-rc0
- shimv2: Make shimv2 in case any source files change
- Firecracker: Upgrade to 0.17.0
- kata-check: add kvm extension check on aarch64
- versions update kernel to 4.19.52
- trace: Add missing log message
- docs: Fix doc link

749dd04 versions: update kernel to 4.19.52
4d526db firecracker: Update virtcontainer to use latest swagger definition
1e9e00a firecracker: generated code
48fef40 kata-check: add kvm extension check on aarch64
b3ab9ca trace: Add missing log message
289df4d firecracker: Fix yaml definition
62a715a Firecracker: Add upstream swagger file
da2a52a Unvendor: Unvendor firecracker-go-sdk
dca1f52 Firecracker: Upgrade to 0.17.0
b489bbd shimv2: Make shimv2 in case any source files change
af6bba1 docs: Fix doc link

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-07-01 19:38:14 +00:00
katacontainersbot
b199ae01b4 release: Kata Containers 1.8.0-rc0
- rootfs: configure chronyc service with makestep
- agent: detect required Go version from versions.yaml
- rootfs-builder: exclude unsupported archs from euleros and clearlinux
- tests: reduce the amount of log displayed
- chrony: Configure chrony to start only when /dev/ptp0 exists.
- rootfs: install systemd tmp.mount if needed

5a5ffa4 rootfs-builder: exclude unsupported archs from euleros
7dc15c2 rootfs-builder: exclude unsupported archs from clearlinux
d2e80f5 chrony: Configure chrony to start only when /dev/ptp0 exists.
6969c7f rootfs: install systemd tmp.mount if needed
add0d44 rootfs: configure chronyc service with makestep
cc5df05 travis: do not set -x when running test
25d75e5 tests: reduce the amount of log displayed
acc9c7f tests: identify the distros with build failures
68f2090 make: add ability to silent recipe commands with chronic
cbb8c01 make: add print-% target printing variable value
e770e2a rootfs: enforce minimum Go version when building locally
92b42c7 agent: detect required Go version from versions.yaml

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-07-01 19:37:39 +00:00
Jose Carlos Venegas Munoz
dada7c69d2 Merge pull request #606 from kata-containers/azure-obs-ci-implementation
ci: add packaging OBS files generation
2019-06-29 14:31:18 -05:00
Jose Carlos Venegas Munoz
6ce2f0adc4 kernel: bump config
Directory modified ...

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-06-28 23:47:32 -05:00
Jose Carlos Venegas Munoz
66ea747fe7 obs: distros: disable ubuntu 16.04
Disable until we know it works again, else
CI/CD pipelines will fail.

See:
https://github.com/kata-containers/packaging/issues/607

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-06-28 23:47:32 -05:00
Jose Carlos Venegas Munoz
49dab14c81 kernel: update patches
Update pataches to allow package to build without fuzz issues.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-06-28 23:47:32 -05:00
Jose Carlos Venegas Munoz
40278b9906 kernel: build force fuzz 0
Packeges uses fuzz 0, lets have the same behavior
in scripts and packages.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-06-28 23:47:32 -05:00
Jose Carlos Venegas Munoz
7f94b70905 ci: Add steps to build obs packages.
- OBS packages are build based on kata head
- The OBS kata branch is created on demand
- TODO: Delete branch when is not needed anymore

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-06-28 23:47:32 -05:00
Salvador Fuentes
7235ded213 Merge pull request #600 from mcastelino/topic/fc_0_17_0
kata-deploy:  Update scripts to support firecracker 0.17.0
2019-06-27 15:08:20 -05:00
Archana Shinde
57136faa38 empty-dir: Fix bug in the way empty-dirs are handled for overlay
With #1485, we moved the default medium empty-dir creation to the
sandbox rootfs. This worked for devicemapper, but in case of overlay
the "local" directory was being created outside the sandbox rootfs.
As a result we were seeing the behaviour seen in #1818.

Fixes #1818

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-06-27 09:39:53 -07:00
Gabriela Cervantes
ed31473019 docs: Fix debian installation guide
Once that https://github.com/kata-containers/tests/pull/1767 lands,
we can remove from the installation guide the steps of adding the
librbd1 repository.

Fixes #511

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-06-25 04:21:37 -05:00
James O. D. Hunt
0c48630395 Merge pull request #318 from xs3c/chronyc-with-makestep
rootfs: configure chronyc service with makestep
2019-06-25 07:49:37 +01:00
Jose Carlos Venegas Munoz
639c432a88 Merge pull request #603 from kata-containers/azure-obs-ci
ci: Add intial pipeline to test OBS package generation
2019-06-24 16:06:17 -05:00
Jose Carlos Venegas Munoz
f1bcada3f6 ci: Add intial pipeline to test OBS package generation
Add simple yaml definition to run job in azure pipelines.

- The pipeline should be triggerd with comments when is a PR

Fixes: #480

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-06-24 13:33:44 -05:00
James O. D. Hunt
a84fcf296d Merge pull request #292 from marcov/versions.yaml
agent: detect required Go version from versions.yaml
2019-06-24 17:12:24 +01:00
Eric Ernst
4f0eb5308f packages: update default VMM to qemu-vanilla
We are looking to deprecate qemu-lite. As a first step,
let's go ahead and make qemu-vanilla (4.0) the default VMM.

We should probably rename qemu-vanilla to just qemu in a follow on
PR.

Fixes: #601

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-06-24 08:05:28 -07:00
Marco Vedovati
5318edb8f2 Merge pull request #321 from Pennyzct/exclude_aarch64_from_clearlinux_and_euleros
rootfs-builder: exclude unsupported archs from euleros and clearlinux
2019-06-24 14:58:19 +02:00
James O. D. Hunt
829ac720cd Merge pull request #1806 from amshinde/make-shimv2
shimv2: Make shimv2 in case any source files change
2019-06-24 11:16:53 +01:00
Penny Zheng
5a5ffa4493 rootfs-builder: exclude unsupported archs from euleros
For euleros, it has supported aarch64 starting from v2.3,
but here is the sad part, there existed bugs in their 2.3.x image,
this bug existed in both x86_64 and aarch64 image.
related issue euleros/euleros-docker-images/#13
(https://github.com/euleros/euleros-docker-images/issues/13) has been raised.

Fixes: #320

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-06-24 17:01:18 +08:00
Penny Zheng
7dc15c28f8 rootfs-builder: exclude unsupported archs from clearlinux
For clearlinux, for now, it is only designed for amd64.

Fixes: #320

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-06-24 17:01:07 +08:00
James O. D. Hunt
a118a60efc Merge pull request #314 from marcov/silent-logs
tests: reduce the amount of log displayed
2019-06-24 08:27:39 +01:00
Eric Ernst
ed693fe3df Merge pull request #1813 from mcastelino/topic/fc_0_17_0
Firecracker: Upgrade to 0.17.0
2019-06-21 16:03:03 -07:00
Manohar Castelino
7f36038fa9 kata-deploy: Update scripts to support firecracker 0.17.0
Latest firecracker has moved the generated binaries to a new
location. Update the scripts to use the new location.

Fixes: #599

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-06-21 11:26:38 -07:00
Jose Carlos Venegas Munoz
0e0e74b8bb Merge pull request #265 from amshinde/configure-chrony-systemd
chrony: Configure chrony to start only when /dev/ptp0 exists.
2019-06-21 11:20:31 -05:00
Xu Wang
21c8cf4f9f Merge pull request #1797 from Pennyzct/IPA
kata-check: add kvm extension check on aarch64
2019-06-21 19:10:35 +08:00
Xu Wang
4d071fd406 Merge pull request #1817 from egernst/kernel-bump
versions update kernel to 4.19.52
2019-06-21 19:03:11 +08:00
Xu Wang
fdacac9e81 Merge pull request #592 from Pennyzct/v4.19.52
v4.19.52: patch and config update for v4.19.52 on AArch64
2019-06-21 19:00:43 +08:00
Penny Zheng
77ef7e336a v4.19.52: patch and config update for v4.19.52 on AArch64
we need to do patch and config update for v4.19.52 on AArch64.
The config file adds a few configs involved with memory hot-plug
support.

Fixes: #591
Depends-on: github.com/kata-containers/runtime#1817

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-06-21 16:48:41 +08:00
James O. D. Hunt
d052d6d4fd Merge pull request #506 from jodh-intel/update-doc-reqs-doc-for-spell-checker
docs: Update doc requirements doc for spell checker
2019-06-21 08:38:06 +01:00
Jose Carlos Venegas Munoz
0af1d4353e Merge pull request #582 from nitkon/entropy
ppc64le: enable kernel config options to enhance entropy
2019-06-20 19:30:14 -05:00
Jose Carlos Venegas Munoz
06b5ffe982 Merge pull request #594 from mcastelino/topic/jailer
kata-deploy: Add jailer binary
2019-06-20 19:27:55 -05:00
Jose Carlos Venegas Munoz
9b25e03e2a Merge pull request #590 from chavafg/topic/static-qemu-prefix
static-build: qemu: be able to change prefix variable
2019-06-20 19:27:11 -05:00
Eric Ernst
749dd0491f versions: update kernel to 4.19.52
Update to newer stable kernel

Fixes: #1816
Depends-on: github.com/kata-containers/packaging#592

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-06-20 17:26:52 -07:00
Archana Shinde
d2e80f54b1 chrony: Configure chrony to start only when /dev/ptp0 exists.
Hypercall to implement virtual PTP was introduced in kernel 4.10
Have chrony run only if the device created by kvm-ptp exists.
Add this as a ConditionExists in the systemd service file.

This service if named as chrony.service in deb based distributions
rather than chronyd.service, although a systemd alias exists.
However it is not possible to come up with a generic `PATH` systemd
unit relying on the alias.

Fixes #308

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-06-20 15:29:07 -07:00
Manohar Castelino
dfa9bd7427 kata-deploy: Add jailer binary
Add jailer binary to kata-deploy. It allows us to enable jailer
with firecracker.

Fixes: #593

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-06-20 13:12:03 -07:00
Jose Carlos Venegas Munoz
434418c27b Merge pull request #319 from marcov/debian-tmp.mount
rootfs: install systemd tmp.mount if needed
2019-06-20 14:57:57 -05:00
Jose Carlos Venegas Munoz
bb00e55771 Merge pull request #588 from chavafg/topic/qemu-static-fix
static-build: qemu: use tag if version doesn't exist
2019-06-20 14:55:32 -05:00
GabyCT
0ddf25e11e Merge pull request #508 from nitkon/patch-3
docs: Use kernel build script for building kernel in developer guide
2019-06-20 14:47:41 -05:00
Manohar Castelino
4d526dbb6e firecracker: Update virtcontainer to use latest swagger definition
Update virtcontainer to use latest swagger definition.
Most changes are around mandatory parameters which need to be
passed in via pointers so that the absence of the same can be
detected (vs using default values).

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-06-20 09:36:44 -07:00
Manohar Castelino
1e9e00a529 firecracker: generated code
```
swagger generate model -f ./firecracker-experimental.yaml --model-package=client/models --client-package=client
swagger generate client -f ./firecracker-experimental.yaml --model-package=client/models --client-package=client
```

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-06-20 09:36:21 -07:00
Jose Carlos Venegas Munoz
a5b8ff42f7 Merge pull request #1815 from jodh-intel/log-trace-msg
trace: Add missing log message
2019-06-20 11:35:43 -05:00
Marco Vedovati
6969c7fc18 rootfs: install systemd tmp.mount if needed
On some distros (Debian, Ubuntu, openSUSE), tmp.mount is not
installed by default in /[etc|usr/lib]/systemd/system, but
just in /usr/shared/systemd, so it needs to be manually copied
there to have /tmp mounted as tmpfs.

Fixes: #317

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-20 17:30:50 +02:00
Salvador Fuentes
10dd307fe1 static-build: qemu: use tag if version doesn't exist
Use the tag of qemu from `versions.yaml` instead of the
version number if the version does not exist in references
of the repository.

Fixes: #587.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-06-20 07:42:53 -05:00
James O. D. Hunt
12a8fdd921 docs: Update doc requirements doc for spell checker
Add further advice to the documentation requirements document to make it
easier for the spell checker to accept a document.

Fixes: #501.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-20 12:59:12 +01:00
James O. D. Hunt
8f2561a52d docs: All docs should be in English
Explain that all documentation must be written in English.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-20 12:59:12 +01:00
James O. D. Hunt
d6fbc929a1 CI: Fix Travis and CI setup
Make the CI setup script call the "master" `setup.sh` script (in the
`tests` repo) and update the Travis config accordingly to ensure that
both setup and static checks are run.

Also updated Travis to use Ubuntu 16.04 LTS (Xenial).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-20 12:59:09 +01:00
James O. D. Hunt
b2295dbf94 Merge pull request #1804 from jodh-intel/fix-doc-link
docs: Fix doc link
2019-06-20 12:04:21 +01:00
Yang, Wei
add0d445e8 rootfs: configure chronyc service with makestep
The current chrony service does not step the system clock,
so add the modification to do this if the adjustment is
larger than one second

Fixes: #316

Signed-off-by: Yang, Wei <wei.yang1@linux.alibaba.com>
2019-06-20 18:26:37 +08:00
Penny Zheng
48fef40fd9 kata-check: add kvm extension check on aarch64
Auger Eric's latest patches about "ARM virt: Initial RAM expansion
and extended memory map"(https://patchwork.kernel.org/cover/10835377/)
paves the way to device memory, which is the foundation for NVDIMM and
memory hotplug.
This new feature on qemu kinds of depends on host kernel's new feature
on dynamic IPA range(https://lwn.net/Articles/750176/).
The availability of this feature is advertised by a new kvm cap
KVM_CAP_ARM_VM_IPA_SIZE. When supported, this capability returns the
maximum IPA shift supported by the host. The supported IPA size on
a host could be different from the system's PARange indicated
by the CPUs (e.g, kernel limit on the PA size).

Fixes: #1796

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-06-20 10:23:13 +08:00
Salvador Fuentes
0d1810feb7 static-build: qemu: be able to change prefix variable
Instead of always having `prefix` hardcoded to `/opt/kata`,
change the script to be able to take the value from an
enviroment variable.

Fixes: #589.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-06-19 16:22:51 -05:00
Graham Whaley
de3627814b Merge pull request #503 from nitkon/patch-2
Dev Guide: Update with debug console for initrd
2019-06-19 16:00:16 +01:00
nitkon
6c2209addd docs: Update with debug console for initrd
Update the developer guide with instructions to
attach to the debug console of a initrd rootfs based
VM.

Fixes:  #502

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-06-19 20:00:22 +05:30
Nitesh Konkar
50895a5497 ppc64le: enable kernel config options to enhance entropy
In order to create enough entropy, the kernel needs some
configs to be enabled

Fixes: #581

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-06-19 18:53:19 +05:30
James O. D. Hunt
b3ab9cafc1 trace: Add missing log message
Add a log message for every trace span created, required by the tracing
tests to validate tracing is working.

Fixes: #1814.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-19 11:46:13 +01:00
Nitesh Konkar
21eaa73c62 docs: Use kernel build script for building kernel
Use kernel build script for building kernel

Fixes: #507

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-06-19 15:35:28 +05:30
Xu Wang
d9782606bb Merge pull request #313 from bergwolf/1.8.0-alpha2-branch-bump
# Kata Containers 1.8.0-alpha2
2019-06-19 15:09:50 +08:00
Manohar Castelino
289df4da13 firecracker: Fix yaml definition
The upstream yaml definition has a formatting issue. Fix the
indentation to ensure that swagger can generate the code.

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-06-18 16:55:53 -07:00
Manohar Castelino
62a715a330 Firecracker: Add upstream swagger file
Add upstream swagger file corresponding to release 0.17.0.

https://github.com/firecracker-microvm/firecracker/blob/v0.17.0/api_server/swagger/firecracker-experimental.yaml

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-06-18 16:41:22 -07:00
Manohar Castelino
da2a52a3f2 Unvendor: Unvendor firecracker-go-sdk
We only use the swagger generated code from the firecracker-go-sdk.
Now that vsock support is directly available in the upstream
firecracker swagger definition unvendor and generate the
firecracker API directly from the upstream yaml definition.

Previosly vsock was not available in the upstream definition.
It is now provided as an experimental feature.

https://github.com/firecracker-microvm/firecracker/blob/master/api_server/swagger/firecracker-experimental.yaml

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-06-18 16:38:53 -07:00
Manohar Castelino
dca1f529a2 Firecracker: Upgrade to 0.17.0
Upgrade Firecracker to 0.17.0. This is required to pick up
bug fixes needed in jailer, to allow kata to run firecracker
constrained by a jailer in Kata.

Fixes: #1746

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-06-18 14:07:57 -07:00
Archana Shinde
b489bbd919 shimv2: Make shimv2 in case any source files change
shimv2 binary was not being built in case of any source changes.
Add dependency of source files to the shimv2 make target to fix this.

Fixes #1805

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-06-18 10:06:20 -07:00
Marco Vedovati
cc5df055bc travis: do not set -x when running test
Do not `set -x` when running tests with Travis: tests are alreadyu doing
it, and with chronic logs are shown only if the commands executed fails.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-18 18:23:13 +02:00
Marco Vedovati
25d75e5b1c tests: reduce the amount of log displayed
Reduce the amount of logs displayed when running test. This is achieved
calling commands using chronic, and printing extra information about
the Kata / Docker configuration only if a test fails to start a
container.

Fixes: #145

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-18 18:23:13 +02:00
Marco Vedovati
acc9c7fe0d tests: identify the distros with build failures
Make more obvious what distros failed to build printing out for each
distro the success / failure build state.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-18 16:24:09 +02:00
Marco Vedovati
68f2090bab make: add ability to silent recipe commands with chronic
Add the ability to silent recipe commands with chronic.
When OSBUILDER_USE_CHRONIC is set, the target recipe command is run
using chronic, and the output is muted unless the command fails.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-18 13:36:03 +02:00
Marco Vedovati
cbb8c01412 make: add print-% target printing variable value
Add a print-% make target, to be able to retrieve the value of make
variables.
E.g. "make print-MY_MAKE_VAR MY_MAKE_VAR=1" will print "1"

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-18 13:25:27 +02:00
Eric Ernst
1858c4da2c Merge pull request #1802 from bergwolf/1.8.0-alpha2-branch-bump
# Kata Containers 1.8.0-alpha2
2019-06-17 10:48:22 -07:00
James O. D. Hunt
af6bba1095 docs: Fix doc link
Fix an internal markdown document link.

Fixes: #1803.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-17 13:29:26 +01:00
Graham Whaley
2b5b52d28c Merge pull request #505 from jodh-intel/fix-formatting
docs: Fix formatting
2019-06-17 10:05:27 +01:00
Peng Tao
a1fa8d0de8 release: Kata Containers 1.8.0-alpha2
- docs: Fix typos and formatting
- vc: Fix TestQemuPPC64leMemoryTopology after qemu version bump
- vc: error handling for bindUnmount functionalities
- katautils: fix shim v2 fail to work with libnetwork
- kernelRootParams: define agnostic commonkernelRootParams
- Use O_NONBLOCK for tty stdin.

1b2b6b8 docs: Fix typos and formatting
0fb4396 vc: Fix TestQemuPPC64leMemoryTopology after qemu version bump
9c48536 katautils: fix shim v2 fail to work with libnetwork
e08f13e vc: error handling for bindUnmount functionalities
61fff89 vc: Add vendor package go-multierror
efc754f containerd-shim-kata-v2: Use O_NONBLOCK for tty stdin.
7e6fcdd kernelRootParams: define agnostic commonkernelRootParams

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-06-17 16:32:05 +08:00
Peng Tao
840778788c release: Kata Containers 1.8.0-alpha2
- docs: Fix typo

7437ce8 docs: Fix typo

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-06-17 16:31:20 +08:00
James O. D. Hunt
28da40a4e7 docs: Fix formatting
Ensure all non-dictionary words are in backticks.

Fixes: #504.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-14 17:39:11 +01:00
James O. D. Hunt
a515547c27 Merge pull request #572 from jodh-intel/fix-typos-and-formatting
docs: Fix typos and formatting
2019-06-14 08:35:34 +01:00
Eric Ernst
851c9d5994 Merge pull request #500 from jodh-intel/fix-typos-and-formatting
docs: Fix typos and formatting
2019-06-13 11:50:17 -07:00
Eric Ernst
b2ead99ecc Merge pull request #1793 from jodh-intel/fix-typos-and-formatting
docs: Fix typos and formatting
2019-06-13 11:45:16 -07:00
Eric Ernst
d4c88b2d78 Merge pull request #1791 from nitkon/fixtest
vc: Fix TestQemuPPC64leMemoryTopology after qemu version bump
2019-06-13 11:40:36 -07:00
Graham Whaley
3718af5f9f Merge pull request #310 from jodh-intel/fix-typo
docs: Fix typo
2019-06-13 10:52:24 +01:00
James O. D. Hunt
7437ce8442 docs: Fix typo
Correct a spelling mistake.

Fixes: #309.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-13 10:04:28 +01:00
James O. D. Hunt
c9df137573 docs: Fix typos and formatting
Correct spelling mistakes and formatting issues.

Fixes: #571.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-13 09:37:13 +01:00
James O. D. Hunt
65ee6bec86 docs: Fix typos and formatting
Correct spelling mistakes and formatting issues.

Fixes: #499.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-13 09:29:36 +01:00
James O. D. Hunt
1b2b6b8e02 docs: Fix typos and formatting
Correct spelling mistakes and formatting issues.

Fixes: #1792.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-12 17:31:37 +01:00
Eric Ernst
99f6625e1a Merge pull request #1757 from gabibeyer/bindUnmountErrHandle
vc: error handling for bindUnmount functionalities
2019-06-12 09:14:45 -07:00
Julio Montes
4cf8c1e9e4 Merge pull request #567 from devimc/topic/obs-packaging/gen_versions
obs-packaging/gen_versions: add --head option
2019-06-12 11:06:43 -05:00
Nitesh Konkar
0fb4396f91 vc: Fix TestQemuPPC64leMemoryTopology after qemu version bump
TestQemuPPC64leMemoryTopology fails on ppc64le
as the corect qemu version is not detected.

Fixes: #1790

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-06-12 21:32:07 +05:30
Eric Ernst
c191abb770 Merge pull request #1789 from Ace-Tang/fix-v2-cnm
katautils: fix shim v2 fail to work with libnetwork
2019-06-12 08:49:31 -07:00
Eric Ernst
847914ceff Merge pull request #1660 from Pennyzct/rootfs_ro
kernelRootParams: define agnostic commonkernelRootParams
2019-06-12 08:10:25 -07:00
Eric Ernst
450402beb5 Merge pull request #1658 from xs3c/use-nonblock-for-stdin
Use O_NONBLOCK for tty stdin.
2019-06-12 08:07:56 -07:00
Eric Ernst
da47d1b0d6 Merge pull request #498 from jodh-intel/add-link-to-website-source
docs: Add link to website source repo
2019-06-12 06:36:50 -07:00
James O. D. Hunt
5d79133ec7 docs: Add link to website source repo
Add a link to the newly-discovered source repository [1] for the Kata
website [2] to allow users to raise issues and PRs on the website
itself.

---
[1] - https://github.com/OpenStackweb/kata-netlify-refresh
[2] - https://katacontainers.io

Fixes: #497.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-12 11:39:03 +01:00
Ace-Tang
9c48536174 katautils: fix shim v2 fail to work with libnetwork
detail how kata work with libnetwork
1. kata create a new netns
2. with EnterNS, kata change netns to the created one.
3. in pre-start hook, kata will re-exec libnetwork process
libnetwork-setkey, and send self pid to it. libnetwork use
/proc/pid/ns/net to find the netns kata use, and set veth into the netns.

v1/v2 shim use the same way to create network, v1 can successful
because EnterNS changed both current thread and main thread's netns.
But use v2 shim, only changed current thread netns, main thread still
use host netns, so it fails. Looks like v1 just lucky to be successful.
In kata, `state.Pid` should be tid.

Fixes: #1788

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-06-12 17:38:10 +08:00
Jose Carlos Venegas Munoz
3b9b70259a Merge pull request #570 from marcov/rpm-dep-fix
runtime: omit the release number in RPM Requires:
2019-06-11 23:48:19 -05:00
Ganesh Maharaj Mahalingam
07146a0934 Merge pull request #307 from katabuilder/1.8.0-alpha1-branch-bump
# Kata Containers 1.8.0-alpha1
2019-06-11 14:32:34 -07:00
gabrielle beyer
e08f13ea31 vc: error handling for bindUnmount functionalities
Add error handling surrounding the syscall of unmounting the
container rootfs. Include a unit test to check that missing
files are not considered errors when attempting to unmount.

Fixes: #164

Signed-off-by: gabrielle beyer <gabrielle.n.beyer@intel.com>
2019-06-11 19:35:59 +00:00
gabrielle beyer
61fff8959c vc: Add vendor package go-multierror
The go-multierror package provides clean handling of multiple
errors without returning after the first error is found. This
can be used in a loop that wants to complete before returning
all, if any, errors found.

Fixes: #164

Signed-off-by: gabrielle beyer <gabrielle.n.beyer@intel.com>
2019-06-11 19:35:52 +00:00
Julio Montes
d832e65c26 obs-packaging/gen_versions: add --head option
Add `--head` option to use the head of the branch instead of the kata
version to generated the hashes for the packages. With this new option
kata packages can be generated using the latest commit on master.

fixes #566

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-06-11 14:28:15 -05:00
Julio Montes
785fc6ced9 obs-packaging/gen_versions: fix qemu assets path
runtime's `versions.yaml` was updated to support QEMU 4. Update
`gen_versions_txt.sh` to support the latest `versions.yaml`.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-06-11 14:28:15 -05:00
Julio Montes
28df7a4ca5 Merge pull request #495 from jcvenegas/vcpu-calculation-fix
docs: cpu: resources: fix vcpu calculation formula
2019-06-11 13:36:11 -05:00
Jose Carlos Venegas Munoz
3fe8660a9a docs: cpu: resources: fix vcpu calculation formula
The formula is not updated according on
how is done in kata-runtime.

Fixes: #489

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-06-11 13:12:23 -05:00
GabyCT
7aaf61d44d Merge pull request #1783 from katabuilder/1.8.0-alpha1-branch-bump
# Kata Containers 1.8.0-alpha1
2019-06-11 10:13:32 -05:00
Marco Vedovati
e7a643a064 runtime: omit the release number in RPM Requires:
For RPM packages (but not for DEBs), OBS does not use the release number
provided in the spec file, hence, when specifying a
`Requires: package = version-release` dependency, it's not possible to know
in advance the correct release number until that reuired package
is built.
Note that omitting the release number works for RPM packages but not for DEB.

This fixes/complements e6dac82
Fixes: #563

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-11 17:00:10 +02:00
GabyCT
a17702c640 Merge pull request #569 from devimc/topic/snap/1.8.0-alpha0
snap: release 1.8.0-alpha0
2019-06-10 17:25:08 -05:00
katacontainersbot
9b8fca51eb release: Kata Containers 1.8.0-alpha1
- Revert shimv2, vendor commits
- Disable default hugepages enabling for virtio-fs
- versions: update qemu version to 4.0.0
- factory: make vm templating work with vsock

7acdaa2 shimv2: Revert shimv2, vendor commits
a75db86 NEMU: Disable default hugepages enabling for virtio-fs
6c03e2a factory: make vm templating work with vosck
94c2c12 versions: update qemu version to 4.0.0

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-06-10 20:56:45 +00:00
katacontainersbot
3f45d5e17e release: Kata Containers 1.8.0-alpha1
Version bump no changes

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-06-10 20:56:15 +00:00
Ganesh Maharaj Mahalingam
e4e51673d5 Merge pull request #1782 from egernst/debug-1781
Revert shimv2, vendor commits
2019-06-10 13:44:59 -07:00
GabyCT
16efde2004 Merge pull request #491 from amshinde/add-coreutils-debug-console
debug: Add coreutils to the list of packages for debug console.
2019-06-10 14:08:23 -05:00
Archana Shinde
80a7c66e9c debug: Add coreutils to the list of packages for debug console.
This package is not installed with systemd in Clear. Add this
as an additional package requirement for debug console to make it
possible to debug.
This package contains utilties like `cat`, `ls`, `echo` etc required
for a useful debug.

Fixes #492

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-06-10 10:12:29 -07:00
Eric Ernst
7acdaa2d53 shimv2: Revert shimv2, vendor commits
This reverts:
 - 590ed09 vendor: update gogo/protobuf, containerd and agent vendors
 - eabfd99 shimv2: Improve shim shutdown logic

These introduce a regression for starting pods with k8s 1.14 + contaienr
1.2.6

Fixes: #1781

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-06-10 09:45:23 -07:00
Julio Montes
8c8cd1cf25 snap: release 1.8.0-alpha0
update snap version

fixes #568

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-06-10 11:10:24 -05:00
Eric Ernst
8d5f2f0783 Merge pull request #488 from jodh-intel/doc-fixes
docs: Fix typos and formatting
2019-06-07 08:33:44 -07:00
James O. D. Hunt
87cc770855 docs: Fix typos and formatting
Tidy up docs by resolving spelling mistakes and fixing
bad formatting.

Fixes: #487.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-07 14:22:50 +01:00
Julio Montes
64e5e2129b Merge pull request #1776 from ganeshmaharaj/remove-hugepages-nemu
Disable default hugepages enabling for virtio-fs
2019-06-07 07:33:31 -05:00
Graham Whaley
1d170e8ffb Merge pull request #565 from nitkon/patch-5
release.md: Fix a typo
2019-06-07 09:13:20 +01:00
Julio Montes
ded9e71a4d Merge pull request #1744 from devimc/topic/versions/bumpQemu
versions: update qemu version to 4.0.0
2019-06-06 18:51:35 -05:00
nitkon
a89daa6f94 release.md: Fix a typo
Fix a typo in release doc.

Fixes: #564

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-06-06 22:37:26 +05:30
Ganesh Maharaj Mahalingam
a75db86027 NEMU: Disable default hugepages enabling for virtio-fs
hugepages were enbled by default on NEMU to allow use of virtio-fs. kata
now has a change where virtio-fs will default to use /dev/shm as the
shared memory file backing location. With that, we should be able to
disable default hugepages for NEMU

Fixes: #1775
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-06-06 09:17:52 -07:00
Eric Ernst
b57d74c31f Merge pull request #1774 from bergwolf/template-vsock
factory: make vm templating work with vsock
2019-06-06 09:14:29 -07:00
Julio Montes
7885e753a7 Merge pull request #1772 from nitkon/qemu4.0
vc: Add some defaultQemuMachineOptions for qemu 4.0
2019-06-06 10:47:52 -05:00
Peng Tao
6c03e2a265 factory: make vm templating work with vosck
As virtio v1.1 spec states:
The guest_cid configuration field MUST be fetched to determine the current CID when a VIRTIO_VSOCK_EVENT_TRANSPORT_RESET event is received.
Existing connections MUST be shut down when a VIRTIO_VSOCK_EVENT_TRANSPORT_RESET event is received.
Listen connections MUST remain operational with the current CID when a VIRTIO_VSOCK_EVENT_TRANSPORT_RESET event is received.

We should be able to use vm templating together with vsock easily, as
qemu already sends VIRTIO_VSOCK_EVENT_TRANSPORT_RESET event to guest.

Fixes: #1773
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-06-06 02:19:42 -07:00
James O. D. Hunt
e08f1e77fd Merge pull request #538 from ganeshmaharaj/fix-ci-ci
release: initialize CI variable in lib.sh
2019-06-06 09:14:01 +01:00
James O. D. Hunt
8cdd5ed3c0 Merge pull request #1760 from jodh-intel/improve-readme
docs: Explain Kata Containers are Linux-based
2019-06-06 08:56:50 +01:00
James O. D. Hunt
5717e6cbe7 Merge pull request #561 from egernst/fix-k8s-1.13
kata-deploy: fix k8s 1.13 example files
2019-06-06 08:52:13 +01:00
Nitesh Konkar
726720dde1 vc: Add some defaultQemuMachineOptions for qemu 4.0
We need to add a few extra defaultQemuMachineOptions
for ppc64le for kata to work with  qemu 4.0 version.

Fixes: #1771

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-06-06 10:39:14 +05:30
Ganesh Maharaj Mahalingam
a1581e3c67 Merge pull request #306 from katabuilder/1.8.0-alpha0-branch-bump
# Kata Containers 1.8.0-alpha0
2019-06-05 18:50:35 -07:00
Ganesh Maharaj Mahalingam
5d9c1a8c13 Merge pull request #1770 from katabuilder/1.8.0-alpha0-branch-bump
# Kata Containers 1.8.0-alpha0
2019-06-05 18:48:58 -07:00
Ganesh Maharaj Mahalingam
d72d5daa32 release: initialize CI variable in lib.sh
Recent change to always build tools from the local repository if the
script is run in a CI environment fails during a release build as the
variable ${CI} is not initialized. This fix addresses that issue.

Fixes: #537
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-06-05 13:54:11 -07:00
katacontainersbot
648825cd60 release: Kata Containers 1.8.0-alpha0
- fc-toml: remove proxy section in config
- virtcontainers: support vm factory in QEMU 4
- docs: Fix spelling and formatting
- runtime: Enable file based backend
- runtime : delete redundant code in CreateContainer
- data/kata-collect-data: support kata containers snap
- shimv2: Improve shim shutdown logic
- Fix the issue that ctrl-c stop vmcache server will stop all     containers that its VM is created by it
- virtcontainers: kill hypervisor if startSandbox fails
- data: Revert pull request #1405
- nemu: update nemu version
- versions: Update cri-containerd  yaml
- shimv2: remove use containerd ns as netns
- fix the issue of hypervisor process is killed by kubelet
- ci: Build kata-runtime before running static checks
- virtcontainers: Set test qemu version for unit test
- shim v2: Close vhostfd after vm get vhostfd
- Add missing docs
- agent: fix agent debug console
- virtcontainers: Set correct Shmsize for ppc64le
- nemu-config: Add machine_type to config file
- katautils: don't mask systemd units
- Add virtiofsd log and fix qemu hang due to virtiofsd vq setup failure
- versions: Update golang to 1.11.10
- kata_proxy: Open a special goroutine do cmd.Wait
- versions: Update CRI-O version to 1.14.1
- network: delete IP addrs on bridge model to prevent ARP conflict

bbe5584 fc-toml: remove proxy section in config
b780c16 virtcontainers: support vm factory in QEMU 4
bdae295 runtime : delete redundant code in CreateContainer
1af68aa docs: Fix spelling and formatting
eabfd99 shimv2: Improve shim shutdown logic
a41894d runtime: Enable file based backend
722ac5a nemu-config: fix nemu for ci
590ed09 vendor: update gogo/protobuf, containerd and agent vendors
7bf6c67 cache: Call vm.Disconnect() when close vm
19115ef kata_proxy: Set Setsid to true when exec kata-proxy
82e51d4 data: Revert pull request #1405
f301c95 shimv2: shutdown the sandbox when sandbox container exited
d6b3bff shimv2: remove use containerd ns as netns
0d535f5 shimv2: kill a container return directly once the container termianted
19288aa data/kata-collect-data: support kata containers snap
0d98e24 ci: Build kata-runtime before running static checks
5e1f5ca shimv2: fix the issue of passing the wrong container id
f7cc028 vc:Execute TestQemuPPC64leMemoryTopology depending on qemu version
7381cd5 agent: fix agent debug console
b203fdb versions: Update cri-containerd  yaml
6be5e5f nemu-config: Add machine_type to config file
1789b65 virtcontainers: Set correct Shmsize for ppc64le
d66d855 katautils: don't mask systemd units
89e0dfa qemu: stop qemu process when virtiofsd quits
d0aae80 qemu: print virtiofsd logs when debug is on
c22b15d versions: Update golang to 1.11.10
f89834a virtcontainers: avoid unnecessary error checking in startVM
a27a3e7 virtcontainers: kill hypervisor if startSandbox fails
5d527d7 versions: Update CRI-O version to 1.14.1
071030b shimv2: Close vhostfd after vm get vhostfd
da2749c docs: Add missing docs
1563263 docs: Simplify link
bdb1047 network: delete IP addrs on bridge model to prevent ARP conflict
00d03c1 kata_proxy: Open a special goroutine do cmd.Wait

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-06-05 19:16:14 +00:00
katacontainersbot
8c51e4d916 release: Kata Containers 1.8.0-alpha0
- clear: Add util-linux-bin package to Clearlinux rootfs
- tmp: Do not remove tmp.mount unit file from the rootfs
- docs: Fix spelling and formatting
- image-builder: create /etc/machine-id
- rootfs-builder: fix chrony service
- rootfs: Don't hardcode alpine version for golang images
- image-builder/boot time: remove unneeded systemd units and files

adee8b0 clear: Add util-linux-bin package to Clearlinux rootfs
6f294f4 tmp: Do not remove tmp.mount unit file from the rootfs
1453471 docs: Fix spelling and formatting
a438d08 image-builder: create /etc/machine-id
456be67 rootfs-builder: fix chrony service
d8c5706 rootfs: Don't hardcode alpine version for golang images
02b3b3b image-builder: remove unneeded systemd units and files

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-06-05 19:15:58 +00:00
Julio Montes
94c2c12d55 versions: update qemu version to 4.0.0
Update qemu version to 4.0.0.

fixes #1743

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-06-05 10:20:00 -05:00
Eric Ernst
305ffdaef9 kata-deploy: fix k8s 1.13 example files
update yaml, and update README to describe creation of the CRD in
Kubernetes versions < 1.14.

Fixes: #560

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-06-05 07:10:23 -07:00
Marco Vedovati
e770e2ad1b rootfs: enforce minimum Go version when building locally
When building locally (without Docker), the Go version installed on the
system, needed to build the agent, must satisfy the minimum Go version
requirement specified in runtime/versions.yaml.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-05 11:02:57 +02:00
Marco Vedovati
92b42c7f6d agent: detect required Go version from versions.yaml
Detect the Go version required to build the agent from the versions.yaml
file in the runtime repository.

Fixes: #291

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-05 11:02:57 +02:00
Ganesh Maharaj Mahalingam
c433580160 Merge pull request #1762 from egernst/fix-1761
fc-toml: remove proxy section in config
2019-06-04 15:56:56 -07:00
Eric Ernst
bbe5584deb fc-toml: remove proxy section in config
proxy will never be use with the Firecracker VMM. Keeping this header
will result in runtime failures, since the configuration will be parsed
on the path searched for.

Since vsock will always be used, remove the proxy section.

Fixes: #1761

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-06-04 09:33:24 -07:00
GabyCT
48a1caeac8 Merge pull request #1752 from devimc/topic/virtcontainers/vmfactoryQemu4
virtcontainers: support vm factory in QEMU 4
2019-06-04 10:16:01 -05:00
James O. D. Hunt
a7daa2b935 docs: Explain Kata Containers are Linux-based
Update the README explaining that Kata Containers are Linux-based and
run on Linux hosts.

Fixes: #1759.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-06-04 15:58:03 +01:00
GabyCT
2f22a5681d Merge pull request #303 from amshinde/add-util-linux-bin
clear: Add util-linux-bin package to Clearlinux rootfs
2019-06-03 09:45:31 -05:00
Julio Montes
b780c160da virtcontainers: support vm factory in QEMU 4
Turn off VMX if vm-factory is enabled since it's not migratable yet.
see https://bugzilla.redhat.com/show_bug.cgi?id=1689216

fixes #1747

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-06-03 08:46:09 -05:00
Yang, Wei
efc754f6b1 containerd-shim-kata-v2: Use O_NONBLOCK for tty stdin.
Fixes: #1659

our testing found that the client does not open
stdin with O_WRONLY, so the shim v2 was blocked forever
in open stdin with O_RDONLY. It's better to make it
opened with O_NONBLOCK, and do not block starting process
of container. and the containerd runc shim has done this
by bc1ff514 as well.

Signed-off-by: Yang, Wei <w90p710@gmail.com>
Signed-off-by: Yang, Wei <wei.yang1@linux.alibaba.com>
2019-06-03 14:26:43 +08:00
Archana Shinde
adee8b0e35 clear: Add util-linux-bin package to Clearlinux rootfs
This package contains mount command among several other commands.
Unlike other distros, this package is not auto-pulled with systemd.
Add this package explicitly.

Fixes #302

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-05-31 14:35:20 -07:00
GabyCT
47eb1c27d1 Merge pull request #557 from jodh-intel/rm-stalebot-config
github: Remove stalebot config
2019-05-31 13:14:36 -05:00
GabyCT
19505c863b Merge pull request #559 from marcov/qemu-avx2
QEMU: only enable AVX2 for x86_64
2019-05-31 13:14:14 -05:00
Julio Montes
030cd4d41f Merge pull request #301 from amshinde/retain-tmp-mount-unit
tmp: Do not remove tmp.mount unit file from the rootfs
2019-05-31 11:40:52 -05:00
Marco Vedovati
2162b9a472 QEMU: only enable AVX2 for x86_64
AVX2 are x86 specific extensions that should only be enabled for x86_64
targets.

Fixes: #558

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-31 17:48:15 +02:00
GabyCT
e28309385f Merge pull request #555 from jcvenegas/skip-red-hat
obs: distros: disble redhat build for x86_64
2019-05-31 09:54:51 -05:00
James O. D. Hunt
abe99abe22 github: Remove stalebot config
Remove the stalebot config file as we now have a centralised version of
it that can apply to all repos:

- https://github.com/kata-containers/.github/blob/master/.github/stale.yml

Fixes #556.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-31 14:39:53 +01:00
Jose Carlos Venegas Munoz
ca4c798e8a obs: distros: disble redhat build for x86_64
The runtime package is faling to build due to
compatiblity issues  with gcc + golang because
the redhat version provided in OBS old.

Disable temporarily to allow release CI  work.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-30 17:38:16 -05:00
Jose Carlos Venegas Munoz
bcc17c354f Merge pull request #553 from jcvenegas/fix-release-pipeline
download_image: source pkglib to get commit length.
2019-05-30 17:35:13 -05:00
Archana Shinde
6f294f43d4 tmp: Do not remove tmp.mount unit file from the rootfs
We should start this unit so that systemd can mount /tmp as
tmpfs.

Fixes #300

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-05-30 15:12:05 -07:00
Jose Carlos Venegas Munoz
8369eb6f23 download_image: source pkglib to get commit length.
commit length is needed to download the image.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-30 14:21:26 -05:00
Julio Montes
ab4e7ee3ed Merge pull request #551 from marcov/qemu4-suse
QEMU: disable PAM authentication (used for VNC access)
2019-05-30 10:05:29 -05:00
Marco Vedovati
08a68a333c QEMU: disable PAM authentication (used for VNC access)
Disable PAM authentication for QEMU 4+: it's a feature used together with VNC
access that's not used in Kata.

See QEMU commit 8953caf for more details on PAM auth.

Fixes: #550

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-30 14:39:08 +02:00
Marco Vedovati
c245034dc5 Merge pull request #547 from marcov/pkgcloud-fedora30
kata-pkgsync: vendor: update pkgcloud to add Fedora 30
2019-05-30 10:51:30 +02:00
GabyCT
abd6279da3 Merge pull request #549 from marcov/fix-obs-runtime-update
runtime: fix regression in package generation
2019-05-29 09:25:58 -05:00
James O. D. Hunt
3d8803bb86 Merge pull request #1735 from jodh-intel/doc-fixes
docs: Fix spelling and formatting
2019-05-29 09:31:41 +01:00
Penny Zheng
7e6fcddefa kernelRootParams: define agnostic commonkernelRootParams
Let's define agnostic commonkernelRootParams for all hypervisors,
including qemu, firecracker, etc. for now, it has two scenarios,
one for NVDIMM, one for virtio-blk.

Fixes: #1642

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-05-29 15:12:56 +08:00
Julio Montes
919615fef7 Merge pull request #1657 from ganeshmaharaj/filebackend
runtime: Enable file based backend
2019-05-28 12:43:09 -05:00
Marco Vedovati
91cdeb1446 runtime: fix regression in package generation
Fix regression introduced with e6dac82 related to kata-runtime package
generation.

Fixes: #548

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-28 18:59:58 +02:00
Marco Vedovati
2fc2565117 kata-pkgsync: vendor: update pkgcloud to add Fedora 30
Update pkgcloud pacakge to add Fedora 30 to the list of distros
supported by to Packagecloud.

Shortlog since last vendoring of github.com/mlafeldt/pkgcloud:
    926cf4b Update list of distros (Add Fedora 30)

Fixes: #546
Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-28 18:12:59 +02:00
Archana Shinde
b85935b33d Merge pull request #484 from marcov/opensuse-install
install: better support for all openSUSE distros
2019-05-28 08:47:45 -07:00
Julio Montes
bf0b23187d Merge pull request #532 from marcov/fix-deb-versions
runtime: fix strict "= VERSION" dependencies for deb pkg
2019-05-28 09:54:31 -05:00
Julio Montes
3b9a48a702 Merge pull request #545 from chavafg/topic/sudo-docker
static-builds: run docker commands using sudo
2019-05-28 09:54:08 -05:00
James O. D. Hunt
4a97337a67 Merge pull request #542 from jodh-intel/doc-fixes
docs: Fix spelling and formatting
2019-05-28 12:36:12 +01:00
Marco Vedovati
e6dac824fc runtime: fix strict "= VERSION" dependencies for deb pkg
When specifying a "Depends: (= VERSION" match in deb packages, the full
"VERSION" needs to be specified, including the trailing release number.

This fixes a regression introduced in: 63413814
Fixes: #531

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-28 10:33:13 +02:00
James O. D. Hunt
4004d3e5cf docs: Fix spelling and formatting
Correct typos and resolve formatting issues including incorrect heading
levels and missing TOC entries.

Fixes: #541.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-28 09:08:29 +01:00
Marco Vedovati
72b296d319 install: improve Docker installation for openSUSE
Editing systemd unit files to customize Docker for Kata may generate conflicts
with what's specified in /etc/sysconfig/docker, so use that file directly.

Also, libcgroup1 dependency is wrong for newer distros, and should be
pulled automatically for older ones.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-28 10:04:21 +02:00
Salvador Fuentes
8e1e4d8b35 static-builds: run docker commands using sudo
normal users might not have the correct permissions to run
docker without sudo.

In addition, as docker will run with sudo, fix permissions
on the qemu and nemu files.

Fixes: #544.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-05-27 14:54:03 -05:00
GabyCT
148b6d7485 Merge pull request #299 from jodh-intel/doc-fixes
docs: Fix spelling and formatting
2019-05-27 10:59:02 -05:00
Frank Cao
43c2796cc5 Merge pull request #1741 from jshachm/delete-code
runtime : delete redundant code in CreateContainer
2019-05-27 16:20:16 +08:00
c00416947
bdae2954c0 runtime : delete redundant code in CreateContainer
Here we have done with logger and container ID map
Just delete these code.
fixes #1740

Signed-off-by: Haomin Tsai <caihaomin@huawei.com>
2019-05-26 16:05:58 +08:00
Jose Carlos Venegas Munoz
e9ed1f5c55 Merge pull request #540 from nitkon/patch-4
lib.sh: Pass right parameters to build image
2019-05-24 23:50:49 -05:00
Salvador Fuentes
3fea550a4d Merge pull request #297 from devimc/topic/image/fix-machine-id
image-builder: create /etc/machine-id
2019-05-24 16:03:07 -05:00
Salvador Fuentes
cb202e1bdd Merge pull request #522 from ganeshmaharaj/nemu-ci
nemu: build nemu for CI
2019-05-24 13:57:21 -05:00
James O. D. Hunt
1af68aae10 docs: Fix spelling and formatting
Correct typos and formatting issues.

Fixes: #1734.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-24 17:17:47 +01:00
James O. D. Hunt
14534717c7 docs: Fix spelling and formatting
Correct spelling mistakes and resolve formatting issues.

Fixes: #298.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-24 17:09:13 +01:00
Marco Vedovati
b2c002415c install: better support for all openSUSE distros
Support installing kata packages on all openSUSE distros.

Fixes: #483

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-24 17:45:53 +02:00
James O. D. Hunt
360ffdca37 Merge pull request #1721 from devimc/topic/data/kataCollectSupportSnap
data/kata-collect-data: support kata containers snap
2019-05-24 15:38:42 +01:00
Julio Montes
bec009df8d Merge pull request #1732 from lifupan/shimshutdown
shimv2: Improve shim shutdown logic
2019-05-24 07:48:00 -05:00
Julio Montes
7fdda280cb Merge pull request #1727 from teawater/vmcache_ctrlc
Fix the issue that ctrl-c stop vmcache server will stop all     containers that its VM is created by it
2019-05-24 07:47:42 -05:00
nitkon
3d0b60fefd lib.sh: Pass right parameters to build image
Creating Kata packages fails
due to "Makefile:58: *** target pattern
contains no '%'.  Stop" error. Fix it.

Fixes: #539 

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-05-24 17:02:23 +05:30
James O. D. Hunt
829fd44aaa Merge pull request #536 from nitkon/ppc64le_repo
obs-packaging: Make distros file arch specific
2019-05-24 10:36:50 +01:00
James O. D. Hunt
0ebab2ec05 Merge pull request #534 from nitkon/master
obs-packaging: Set debian Power arch as ppc64el
2019-05-24 09:39:17 +01:00
lifupan
eabfd99734 shimv2: Improve shim shutdown logic
Latest shimv2 publishes an event to containerd used ttrpc instead
of using containerd binary, thus shimv2 shouldn't call `os.Exit` to
terminate the shim's life,  but close the context on shutdown so that
events and other resources have hit the `defer`s.

Fixes:#1731

Signed-off-by: lifupan <lifupan@gmail.com>
2019-05-24 12:18:04 +08:00
Ganesh Maharaj Mahalingam
a41894da18 runtime: Enable file based backend
A file based memory backend mapped to the host, fot eg: '/dev/shm' will
be used by virtio-fs for performance reasons. This change is a generic
implementation of that for kata. This will be enabled default for
virtio-fs negating the need to enable hugepages in that scenario. This
option can be used without virtio-fs by setting 'file_mem_backend' to
the location in the configuration file. Default value is an empty
string.

Fixes: #1656
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-05-23 20:47:42 -07:00
Julio Montes
890a3d5960 Merge pull request #1637 from marcov/kill-hyp
virtcontainers: kill hypervisor if startSandbox fails
2019-05-23 15:11:54 -05:00
GabyCT
9a65c18eca Merge pull request #1724 from devimc/topic/data/revert1405
data: Revert pull request #1405
2019-05-23 15:08:47 -05:00
Salvador Fuentes
b22d0a7161 Merge pull request #1710 from ganeshmaharaj/nemu-ci
nemu: update nemu version
2019-05-23 12:05:11 -05:00
Nitesh Konkar
3f3823df12 obs-packaging: Make distros file arch specific
Make distros file arch specific

Fixes: #535

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-05-23 20:51:11 +05:30
Ganesh Maharaj Mahalingam
722ac5aa97 nemu-config: fix nemu for ci
virtio-fs is now available in 1.7 release and needs hugepages enabled.
Updating version of NEMU that ships with kata by default which contains
the fixes for hugepages, machine_type=virt and network access.

Fixes: #1709
Depends-on: github.com/kata-containers/tests#1595
Depends-on: github.com/kata-containers/packaging#522
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-05-23 07:15:30 -07:00
Ganesh Maharaj Mahalingam
54c25dfaca nemu: build nemu for CI
NEMU releases are build dynamically on a xenial platform and there
aren't any plans on providing packaging for various versions and distros
today. NEMU needs to be built statically as the current default release
to be consumable by Kata.  Given we are doing that, it would be nice to
test it in our CI also the same way. This change is to aid with that.

Fixes: #521
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-05-23 07:11:42 -07:00
Nitesh Konkar
0c756edd46 obs-packaging: Set debian Power arch as ppc64el
Set debian Power arch as ppc64el not
ppc64le in debian.rules and .dsc files

Fixes: #533

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-05-23 19:13:32 +05:30
Julio Montes
a438d086b2 image-builder: create /etc/machine-id
systemd complains if `/etc/machine-id` does not exist. Create the `machine-id`
file to make systemd happy, it'll bind-mount that file to write the machine id.

fixes #296
fixes github.com/kata-containers/runtime#1537

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-05-23 07:38:12 -05:00
lifupan
590ed09bfa vendor: update gogo/protobuf, containerd and agent vendors
Shimv2 needs the latest containerd, gogo/protobuf and agent vendors.

Fixes:#1731

Shortlog since last vendoring of github.com/gogo/protobuf:

746e99c merged in golang/protobuf commit aa810b61a9c79d51363740d207bb46cf8e620ed5 - proto: fix handling of required fields after multiple violations
    4f863fb merged in golang/protobuf commit 89a0c16f4dc2a70c0ed864d8ef64878f24fdaa51 - README.md: remove usage of group in example
    2f3f4c2 merged in golang/protobuf commit 7d1b268556d691919f2262240737157830eab632 - jsonpb: avoid unexported fields in hand-crafted message (#526)
    f2db49f merged in golang/protobuf commit f5983d50c82d70eaa88c17080245cc871558081f - proto: make invalid UTF-8 errors non-fatal (#525)
    7aa71d7 merged in golang/protobuf commit 560bdb64431cc123098c2db67f16053a923a0688 - jsonpb: strictly document JSONPBMarshaler and JSONPBUnmarshaler behavior (#524)
    eee5829 merged in golang/protobuf commit 93b26e6a70e37abb14f2f88194949312b0592a84 - protoc-gen-go: refactor generator by splitting up generateMessage
    ad62c6c part of golang's 427e165 commit. Missed removing this file with their test refactor
    efb8d72 merged in golang/protobuf commit 427e165155e0a4ff5993a36657c1f733f5b0f782 - proto: fix and cleanup test for deterministic marshal with custom marshalers
    7143b48 merged in golang/protobuf commit 14aad3d5ea4c323bcd7a2137e735da24a76e814c - jsonpb: avoid copying string-valued map-keys
    48e2601 merged in golang/protobuf commit 1325a051a2753cd67556b182843b1b693d0854cd -  proto: fix quadratic behavior in nested map marshaling (no size caching for stdduration/stdtime)
    bc71a26 merged in golang/protobuf commit f05648d464991ab1aa8cf6a499122c56f0f50f2f - jsonpb: handle map key and value properties properly
    be27d1b merged in golang/protobuf commit 9eb2c01ac278a5d89ce4b2be68fe4500955d8179 - jsonpb: decode int32/uint32/float32/float64 strings
    b43a52d merged in golang/protobuf commit 05f48f4eaf0e05663b562bab533cdd472238ce29 - proto: revert UTF-8 validation for proto2
    808c1f7 merged in golang/protobuf commit 64db29d85ff91ba669cfaf009d5f400a4da8a55f - jsonpb: error on scalar enum provided for repeated enums instead of panic
    07eab6a use only one write in the varint writer when possible (#504)
    dd51cd8 fix typo independant to independent (#512)
    211a54c Add godocs link to Readme.md (#506)
    e87afe3 Fix text unmarshal for (u)int(8/16) fields (#498)
    e5d5b02 Codegen for well-known types (#489)
    6f222ca reorder some of the protoc paths in order to prefer our protobuf/google/protobuf/*.proto files. This is just to avoid using the wrong protos if you have the same protos in you gopath/src dir. (#502)
    fd322a3 fix error: bad Go source code was generated, illegal hexadecimal number (#488)
    61dbc13 Jsonpb custom type - #411 (#491)
    e14cafb Customtype  Warnings and issues  update (#479)
    7c690ae Exact slice allocation for repeated packed varints (#480)
    4aa4cc2 Adding missing func to CustomType documentation (#483)
    5669497 bumped the go version (#475)
    64d6d2f added nil check in Proto/Size methods fix #444 (#451)
    3e657e5 fix for letmegrpc (#474)
    3cefc55 options to not generate xxx fields (#467)
    4c0a09c updated to go1.11 and removed go1.9 (#473)
    2b9e95f merged in golang/protobuf commit 70c277a8a150a8e069492e6600926300405c2884 - Fix unmarshaling JSON object with escaped string into Struct type. (#464)
    2033462 merge in golang/protobuf commit 3a3da3a4e26776cc22a79ef46d5d58477532dede - proto: mention field name in error message (#616) (#465)
    98f6aa8 added license details to Readme.md (#469)
    e66941c Update Readme.md (#468)
    476a2e9 Set defaults on nonnullable fields (#435) (#459)
    5e81640 removed the GOPATH env dep in the makefile protopath (#461)
    7af9d32 Fix nullable extension issues for non generated code (#453)
    888d305 merge in golang/protobuf commit d7d60bc05d9f92d4692aa196ac022618c2d86655 - grpc: fix and improve interface comments for client/server types (#604)
    a4350c5 merge in golang/protobuf commit 668a607657a5d387d6333648a2d9c749761fdc69 - LICENSE: Move title to README.md
    8599525 merged golang/protobuf commit 927b65914520a8b7d44f5c9057611cfec6b2e2d0 - proto: adjust documentation on RequiredNotSetError (#603)
    8e3eb24 Fix wrong build tags (#445)
    797fbbb merged commit 32a84b27e28ab9f681f0df16160c4ef1f6587094 from golang/pr… (#446)
    baf2ea5  Added ProtoSize wrapper functions for the well known types  #438 (#443)
    5440baf exact slice allocation for fixed size packed fields (#437)
    6eaa97b Added gRPC Course on Udemy (#434)
    a4c2ffc Update Readme.md
    646de4d Fix typo (#441)
    636bf03 fix #427 consistent import naming between the import declaration and the vars in grpc
    7d68e88 fix build by regenerating everything
    fae8c2d fix git diff for travis
    2c42fe8 merged 7c4add53b497798e7fd7b204f28e41ab409bdbb7 from golang/protobuf. protoc-gen-go: remove deprecated function in grpc (#426)
    ebc0565 merged 3fac2a27c94f99f4379551928df388fcb0ad37ce from golang/protobuf. ptypes: optimize Is to avoid prefix scan (#425)
    37f19cd Handle deterministic marshaling for generated marshalers in XXX_Marshal
    67fcf76 Swap type assert and fix it (#418)
    30cf7ac gofmt
    6b99319 travis: opt into apt get
    110e410 text: allow customtype to have a Bytes() method (#227)
    99cb001 dev: amortize cost of growing a Buffer - merge fae8ec697c5d103f717d7fec21103cb5ec020bc8 from golang/protobuf
    1a0e3bd dev: proto: remove unused writeRaw function - merge d167f5cf056d2db6c0f53f44a3309ac60b99ab5b from golang/protobuf
    99bb9bf dev: Revert "protoc-gen-go: use standard library context (requires Go1.9) - merge bf2da8229df5077275b46b301818c6219ebe1003 from golang/protobuf
    9c8b44c dev: Implement "import public" using type aliases. - merge 6fb5325cf9e4b38b58cef6cd1f60c773cc2d5ad2 from golang/protobuf
    6487871 Expose vanity TurnOnGoRegistration (#402)
    b8814cc dev: protoc-gen-go: fix generation of proxy getters for distant types - merge 9bb87600c289706cc58f76b46a91b05ddd2a44d8 from golang/protobuf
    9ddc509 dev: protoc-gen-go: fix up generation of package names - merge 3b4abe1a0672c5916c1937b8817dde8aeb579fe5 from golang/protobuf
    cbb7298 dev: protoc-gen-go: revert some API changes - merge 06c268a946d24fdcb0b59370c36ab876ece17556 from golang/protobuf
    8a67e47 dev: proto: do not allow unknown fields to satisfy required field bit - merge 91cccdb44a5fc8dfdf368e8b4d517a21de94dce9 from golang/protobuf
    265a302 dev: protoc-gen-go: Dont rely on local package name for mset name hack - merge 9c8fb7a95075eb047ab75e702de52f68ff360f17 from golang/protobuf
    00f8f1f dev: proto: ignore unknown fields in map entries - merge b028a76c61b7288aefe6746ab7b561d7eb15ab71 from golang/protobuf
    90d0c2a dev: conformance: remove useless variable declaration - merge conformance: remove useless variable declaration from golang/protobuf
    60491a7 dev: conformance: clean up, fix conformance tests - merge ab964bf603354327027b1974c2d1a199ce839899 from golang/protobuf
    9f8212a dev: protoc-gen-go: fix generation of public imports -merge 80c8f764516eebbf17174ea9fd61601d6a52f0f6 from golang/protobuf
    3860157 dev: Reduce a bunch of generated code in oneof sizers. - merge d0dc0def2e8a155b703a9b4966ca8f803ce06308 from golang/protobuf
    e41f35d protoc-gen-go: dont generate blank // import comment - merge b244a785444d0c500df2e0c6b968c05531365a00 from golang/protobuf
    6764c01 dev: golden_test: normalize path separators for Windows - merge 12a586e0adaf626e5d2f8da7881f321f076dbe2c from golang/protobuf
    e844e5c dev: protoc-gen-go: use standard library context (requires Go1.9) - merge 3dc8a89f965ba7bf716fd0d92b83c5da1792ab9c from golang/protobuf
    dfaf7a7 dev: protobuf: Delete makefiles, regenerate protos consistently - didnt merge everything, left Makefiles, but made the other small changes - merge 251359bf9d6712b0aefe759977c168b79d1f3a27 from golang/protobuf
    828b125 dev: protoc-gen-go: fix test - merge 2b3479d8d7175442fbfd46f4ba5c14d971aeb521 from golang/protobuf
    f5a1220 dev: protoc-gen-go: add paths=source_relative option - merge 6fb8a6f1c1f011b7fde2b40f72f46587180d8d25 from golang/protobuf
    214eb97 dev: fix golden tests for older protoc versions
    aa7e6f4 dev: protoc-gen-go: handle package import names per-file - merge 9d4962b4dc40a899c435fe1aaec48e683b4300ef from golang/protobuf
    08f8895 dev: protoc-gen-go: add test for various generation params - merge a1987161d42e479a8a593d7f66ff1be81574b1e0 from golang/protobuf
    d178c98 dev: protoc-gen-go: dont depend on input file ordering - merge f4733c73b342d1d1a07fda684e831f77f840a688 from golang/protobuf
    253b333 dev: protoc-gen-go: add more golden tests for imports - merge 15c34729da28f0a8c71325b8ee35ef19362290e6 from golang/protobuf
    100bcd0 dev: Rename generated Marshal and Unmarshal protobuf method - merge 60f8421f4063f411270d0527ca77697eb9f29f1e from golang/protobuf
    26c4e69 dev: protoc-gen-go: remove relative import in main_test.go - merge protoc-gen-go: remove relative import in main_test.go from golang/protobuf
    5f4a927 dev: protoc-gen-go: include canonical import comment - merge 1021ee9d478ac35478bd39859883102741f9c4c1 from golang/protobuf
    9c3ad97 dev: proto: avoid pointer arithmetic with invalidField - merge 649500c21ecd283d00f78859ac2f386df8ed2c96 from golang/protobuf
    e23e1bc dev: no more generated package doc - merge efae459c9350a60c1f8f503f34e3cb67f803a617 from golang/protobuf
    8b846a8 dev: Merge pull request #520 from neild/dev.alias + Fix top-level Makefile to descend into protoc-gen-go. - merge 04869ad56b1a4eb4179ceadb8a1b787a9ce4b0a3, 8cbe6f4e7d1aa3a63d2ae35cf9e9eaa1aa4c6876, 025a21d09bcd80bade5d4d6c1fb7026dcf1056dd, f7e61e16d550efe3e664c64e8ef42b624b408643, 055d7b0dba6f8ba91c7e12e4f9cc891ba607f4e7, b322e49f0e384b8e162e1f55cdeedfbba461269c + 2c2f6de12273f767388d4f3aebf6306ae3a9c7cb from golang/protobuf
    2c90c88 upstream: add back proto.Sizer
    754b8fa dev: proto: treat bad wire types as unknown fields - merge e6af52bec88380a7a18ecc0977fa4312370a970b from golang/protobuf
    0091a58 dev: jsonpb: skip unexported or non-protobuf fields - merge 42d4f477264bec37ad9b729039d071eaedd32d9b from golang/protobuf
    504621d dev: protoc-gen-go: indicate deprecated fields in documentation - merge da3e23721ffb60cccccdef6dfaef948bce1ad9d7 from golang/protobuf
    5db6fbe dev: proto: support purego build tag - merge 9a84eb8532beb2edb9dfbd6a2d823e696b57b450 from golang/protobuf
    e1d2528 dev: proto: robustify tests that compare error messages - merge 57af8637f022e8bf7f313f6156d9873b7f5ebaba from golang/protobuf
    6026053 dev: proto: remove Proto3UnknownFields flag - merge b409cc5837a65fa96edf2a5e4f1ec2ccf0cc31a8 from golang/protobuf
    81f6217 dev: proto: reject invalid UTF-8 in strings - merge 35253352f94915c119f607b2cac4ef87bd3b085b from golang/protobuf
    4192d1c dev: proto: add logic to handle legacy message - merge 10c2d9d3cccc103717e4e5dc6c503fefc8a33dea from golang/protobuf
    9806df0 dev: jsonpb: change Marshal to trim timestamp/duration to 0 fractional digits if possible - merge f9bf3fbed3136fa83399f35204bf39644e205a30 from golang/protobuf
    a30fc23 dev: jsonpb: fix handling of illegal and negative nanoseconds - merge ac606b176499a528828d10c85583a7c3107939f6 from golang/protobuf
    b34bdd4 dev: proto: expose accessors for raw value of extensions - merge 5f34c20e59ed64239722b4215413f1ffd1efa9de from golang/protobuf
    54b14bf dev: Remove raw interface - merge 7d76aa1a8129e37aae7c421a64e04a4ced5ef1ac from golang/protobuf
    5f21c7a dev: Use fmt.Errorf instead of errors.New - merge 572071ce41835e834277d132bd34f72baa4754cc from golang/protobuf
    5028789 dev: jsonpb: change Marshal/Unmarshal to return error if any required field is not set - merge 2bc5431dca4a5134e05a24d7b874cd189e934a38 from golang/protobuf
    b56d376 dev: Cleanup comments and whitespace - merge 575152efd80e5accf3969091e05f9ec30b35a2f2 from golang/protobuf
    761ef94 dev: jsonpb: check for nil in Marshal and return error to avoid panic. - merge 49f2ba7d08e875af9b5f3bd5d2f29d5fb1ca86b1 from golang/protobuf
    88bd217 dev: Simplify code - merge 5c7dd3329b568cef186709cadf093cad82f8fdfc from golang/protobuf
    d2459a7 dev: Fix uint64->int overflow in table unmarshal - merge 1ec9e17d4d187ddb55cc9858887b2202b3f75707 from golang/protobuf
    b559abf dev: Correct some mistakes - merge 013f295b1c740bd8ca5ce84ea810940b1945fcb0 from golang/protobuf
    5ec47c3 dev: Remove unused code - merge 3ffccb49d84ed0b9eb1e518dd391a6d015adfeb4 from golang/protobuf
    44af720 Upstream (#399): Merging upstream from golang/protobuf into dev branch 8cc9e46429
    1ef32a8 messagename
    49944b4 grpc error usage article
    58efb20 add mentions from Johan Brandhorst
    1d2310f merge bbd03ef6da3a115852eaf24c8a1c46aeb39aa175 from golang/protobuf
    ac06767 upgrade to go1.10
    9b87cea fix build for gopherjs that now requires go 1.10
    a74c03e fix build
    1ae71f0 fix for issue 389: importing of customtypes that are messages should not cause another import for the original message
    d5bc08a Update Readme.md
    f8f204f add new user : go-spacemesh
    b75782e protoc-min-version don't suppress protoc stdout and stderr out on success. (#381)
    73bcffa Update Readme.md
    43a6153 More well known types (#378)
    ff3a3b6 Added link to new blog post in README (#375)
    1adfc12 merge 925541529c1fa6821df4e44ce2723319eb2be768 from golang/protobuf
    26de2f9 Added instructions for using proto files from google/protobuf (#371)
    160de10 another user: zero stor
    d4d8b59 Update to protobuf 3.5.1 and minor cleanups for Golang 1.10 (#363)
    35b81a0 Test with latest Go and protobuf patch versions. (#352)
    aee20e7 plugin/equal: "return this == nil" to satisfy gosimple linter
    620da83 plugin/populate: avoid loops on non top-level packages
    cc007c0 example
    cd5e432 Incorporate review comments
    c4bc39e Mentioning the bit about proto_path up front
    ff2773e Ensure v3 to compile importduplicate.proto
    e683811 Minor update to the comment.
    bf3b9f4 Fix issue when provided f!=nil
    563235a Fix duplicate import names when same name used in different contexts
    3813b83 fix for testdata/my_test
    685a9b3 Test duplicate import names from proto package and generated code.
    b0a8a05 Removed unsafe stuff that got readded; regenerated .pb.go files
    8ddeac9 Update generated test files.
    c9c3a74 Update gogoproto/Makefile.
    f646b88 Review feedback
    b1c3a66 Add go_package
    7eaf46c min version 3 for my_test/test.proto
    3db9d03 Grammar Issues
    0c5dcd7 Update extensions.md
    acc574d merged 130e6b02ab059e7b717a096f397c5b60111cae74 from golang/protobuf
    2e9fe32 updated descriptor
    7cc42a6 merged 11b8df160996e00fd4b55cbaafb3d84ec6d50fa8 from golang/protobuf
    04380c3 merged 17ce1425424ab154092bbb43af630bd647f3bb0d from golang/protobuf
    92733a0 merged 5afd06f9d81a86d6e3bb7dc702d6bd148ea3ff23 from golang/protobuf
    79e6522 Revised comment regarding the uniqueness of package names.
    44008aa Regenerated pb.go files.
    48a47cb Fixed double import prefix issue.
    874a222 Fixed misleading comment.
    c59a8c7 Readded alias name to import statements.
    3ae4cfd Fix to avoid printing import alias when same as import path suffix.
    ca6d352 Fix to avoid long import alias names when not needed.

Shortlog since last vendoring of github.com/containerd/containerd:

    5e2d7ef Use a single custom annotation for export
    41b7b0e Ensure namespaced writer commit has correct namespace
    7f79fbb Move ttrpc client to pkg/ttrpcutil
    5b7a327 Improve atomic delete
    fe6a2b0 Add shim cgroup support for v2 runtimes
    62609d6 Fix typo in description comment
    90c6c1a Pass options on shim create for v2
    6907062 ctr: make ctr shim command easy to use
    7b06c9a Add TTRPC client
    5e962dd Remove unused Resize method from initState
    66036d9 v1: Respect the `shim_debug` flag when load tasks
    a6a888c Bump ttrpc
    fbb80b9 containerd-shim: redirect output into stdout fifo
    543d1e8 Add travis_wait to prevent vndr timing out
    00bc2f5 Update to Golang 1.12, and prepare for ppc64le
    67b45ae Add WithoutRefreshed metadata
    ad25c1a Improve ARM platform matching
    bd27bef Move checkpoint and restore commands to new files
    cf6e008 Fix fd leak of shim log
    6f463d3 test/snapshots: umount before committing snapshot
    3887053 snapshots/devmapper: deactivate thin device after committed
    bdd7dce Add OpenLab CI configuration
    660554d Fix error handling for task deletion.
    2ed8e60 bump google.golang.org/grpc v1.20.1
    d1c5951 bump google.golang.org/grpc v1.12.2
    2f22d8e Fix broken link to containerd logo
    cb7c780 ctr images import: add --no-unpack option
    ee902af Compute manifest metadata when not provided.
    5c9811d Cleanup dead v2 shim.
    cfc3638 Remove redundant error checks
    38e3696 Use cancel on errors
    eded188 Fix misspells
    969035b Stop logging error on v2 multi shim log failure
    c7f067f Update vendor/ with new required vndr go.mod files
    8c5779c bump containerd/ttrpc 699c4e40d1e7416e08bf7019c7ce2e9beced4636
    dff7456 Return NotFound error for kill and delete in deleted state.
    5d17ed2 Update cri to 2fc62db8146ce66f27b37306ad5fda34207835f3.
    e5aab17 bump opencontainers/selinux v1.2.2
    dd85aea bump runc v1.0.0-rc8
    5b9bd99 differ: fix deadlock on commit error
    48f4651 Support disabling default setup of shim logger.
    c79c792 bump docker/go-units v0.4.0
    dfa51c9 runtime-v1: kill shim in cleanupAfterDeadShim
    0376dd4 Don't write dumped stacks to file for ETW capture state
    e6fc0ed Convert Windows CI to use Microsoft MCR image urls
    06a3a48 bump containerd/console 0650fd9eeb50bab4fc99dceb9f2e14cf58f36e7f
    a333dbc Update x/crypto to 88737f569e3a9c7ab309cdc09a07fe7fc87233c3
    0fd0256 bump gocapability
    7718d06 Write stack dump to `os.TempDir()` as well
    a4942ca Fix error on pull hang in CI
    6bcf463 Move to sha-specified test image for nanoserver
    cfb8b55 .mailmap: update Akihiro Suda's email address
    be2cbd0 Access to client's GRPC connection object
    78f3dc4 Allow dumping stacks via ETW capture state
    05dd66b Update go-winio in vendor.conf
    c9059c7 bump mistifyio/go-zfs f784269be439d704d3dfa1906f45dd848fed2beb
    63c7a87 Requeue events in the shim publisher
    fc167f9 Correct PusherFunc helper to match Pusher intf
    a7af3c1 Correct import path in services/server package
    9cc5878 Check task list to avoid unnecessary cleanup.
    97d247c Rename `hrpc` to `tcpServer`
    047348e Add dialer for events service
    ae87730 Improve shim shutdown logic
    a12f836 Use $TEST_RUNTIME for cri test.
    4b3b99e Add support for required plugins.
    4ba756e Fix API forward events for shims
    1a1f8f1 Set nofile to 1048576
    b911ae3 Add tcp service for grpc listeners
    a6f587e Use ttrpc to publish runtime v2 events
    a8a805c Add ttrpc server to containerd
    c93d645 Add GetOOMScore function
    ae5ca81 Refactor mount path check and add comments
    7045801 delete the ingest when any errors happen during resuming status
    dcf6023 Extend release timeline
    d5b770a Introduce 'clean-test' target in Makefile
    2583d9e update gogo/googleapis v1.2.0
    a98df70 update containerd/btrfs af5082808c833de0e79c1e72eea9fea239364877
    aa8dccd update containerd/aufs f894a800659b6e11c1a13084abd1712f346e349c
    ed61d7f bump containerd/zfs and dependencies
    d667628 bump github.com/pkg/errors v0.8.1
    68ef178 bump github.com/BurntSushi/toml v0.3.1
    1978c0b bump gotest.tools v2.3.0, google/go-cmp v0.2.0
    2741dbe contrib: Dockerfile: bump go 1.12
    a84f87d contrib: Dockerfile: add a base stage
    a07e12c contrib: Dockerfile: reformat, and use --no-install-recommends
    ba9e1ea contrib: Dockerfile: use build-arg for go-version
    4754d2a Update image export to support Docker format
    74eb0dc Return event publish errors.
    10cf21d Export ExitStatus init func
    a733587 Update cri to 6d353571e64417d80c9478ffaea793714dd539d0.
    de1da8b Update handling of registry errors
    c0f0b21 Apply PR feedback
    2a5e4c4 Skip rootfs unmount when no mounts are provided
    abfc89c Update CRI to master
    4730088 Update runc to resolve selinux issues
    2d11f5e Regenerate protobufs
    830b029 Update protobuf v1.2.0
    7c1365b bump sirupsen/logrus v1.4.1
    01310ea do not use unkeyed fields in compose literals
    90085a7 Add empty file to prevent build from failing
    8784eb6 Move snapshotters benchmark to a separate package
    adc4fa2 Use pkg/errors for all errors
    c22effb fix parseInfoFile does not handle spaces in filenames
    559dfa5 Add configurable plugin path
    d9526f5 Move CloudFormation template to contrib
    ae04c16 runtime: guard Close() until both streams are complete
    e96ac20 runtime: log IO error when copying output streams
    515be73 Add snapshotters benchmark
    8722966 fix shouldKillAllOnExit check for v2
    fa5f744 fix shouldKillAllOnExit check
    f7f6dd7 test: add custom cgroup test
    2b8df83 bump containerd/cgroups 4994991857f9b0ae8dc439551e8bebdbb4bf66c1
    bc6ac08 update opencontainers/runc v1.0.0-rc7
    808b223 Fix race and panic.
    87289a0 devmapper: implement Usage
    010b4da devmapper: implement dmsetup status
    8710940 Windows: Build shim binary from Microsoft/hcsshim
    e16e995 Vendor Microsoft/hcsshim@8abdbb82
    5d50b9c Extend adaptImage function with annotations case
    388c8a1 Fastpath opt and ExecProcess loading
    a849664 Windows:ProgramFiles to ProgramData
    6034c19 Windows:Create root/state with ACL
    7361b19 Update Windows lcow differ to set NT VIRTUAL MACHINE\Virtual Machines SID
    4c9b5ef Update vendor github.com/Microsoft/go-winio
    d15832a Address review comments
    8f8fd3c seccomp: whitelist statx syscall
    908b771 Add code to return message field of returned registry errors
    9a8727c Allow to import an image for the default platform only.
    4506eb4 seccomp: whitelist io_pgetevents
    f3ff95a decouple api.ContentServer implementation package from bbolt dependency
    14a0506 ctr: fix image cmd ArgsUsage
    bdd84ab Add additional capability handling opts
    a631796 horten the unix socket path for shim
    b858cfb Makefile: allow overriding package name
    7ca2c3d contrib/nvidia: export helper binary path and list of Nvidia capabilities
    a7aeffc Update mailmap for cgroup authors
    e6ae9cc Shim pluggable logging
    506b815 remotes: add distribution labels to blob data
    b8d40b3 update runc to 2b18fe1d885ee5083ef9f0838fee39b62d653e30
    09cf2a6 Extend metadata images test with fieldpaths for Annotations
    5124f9e Write the Annotations map into the bolt db
    02cc148 Prepare boltutil for reading and writing another map
    1e893b1 devmapper: add no_devmapper build tag
    79248fe Add test for ocispec.Descriptor Annotations
    34f3772 Allow WithNewSnapshot and WithNewSnapshotView to take in snapshotter options.
    aaae811 Update checkpoint opts with runtime handling
    160737d Fix no pivot and keyring opts
    0b711d6 Copy annotations around where necessary
    4d2a26d BUILDING.md: update testing section
    6424a36 ctr/commands/images/push: don't show progress if it is debug mode
    7cfb99a Add content gc ref labels from containers, images, and snapshots
    f0d5dd3 Use unix.SignalNum in ParseSignal on unix platform
    1745951 Vendor golang.org/x/sys d455e41777fca6e8a5a79e34a14b8368bc11d9ba
    e13a4b6 Update the snapshotter docs to refer to the snapshots package for WithLabels.
    2771471 Fix issue with NewFIFOSetInDir with Terminal true
    828f6eb Fix a bug in shim log on Windows that can cause 100% CPU utilization
    c6703d4 Add missing annotations map to Descriptor for gRPC transfer
    d2bec54 Bump cgroups to dbea6f2bd41658b84b00417ceefa416b97
    208957b devmapper: proper cleanup in pool device test
    734989c Update README
    fb80483 docs: Add NAME section in all manpages
    95f0a49 devmapper: rollback thin devices on error
    adf5c64 devmapper: don't create or reload thin-pool from snapshotter
    7efda48 devmapper: more precise way of checking if device is activated
    37cdedc devmapper: add linux tags, fix build
    0c6d194 devmapper: add README and minor fixes
    2218275 devmapper: register plugin
    cec72ef devmapper: add snapshotter
    3a75882 devmapper: add pool device manager
    6e0ae68 devmapper: add snapshotter config
    fcd9dc2 devmapper: add pool metadata
    809e5fd devmapper: add dmsetup
    fe05e4d devmapper: add losetup
    d83e4e9 Vendor Microsoft/go-winio@v0.4.12
    e0d7ed1 Windows: Enable ETW logging
    cbc032e Update go.etcd.io/bbolt to v1.3.2
    5e84069 Update travis to xenial worker
    84a2471 Add runc.v2 multi-shim
    6bcbf88 Move runc shim code into common package
    fd6ac5d Vendor sirupsen/logrus@1.3.0
    b553a12 runtime: allow specifying supported platforms with config
    f6ac73d fixing typo and added a missing comment.
    4b3e0a8 metadata: merge snapshot labels with metadata's labels
    88f19a9 Windows: Update stackdump event name
    14f7e52 Unpack should set 0755 when the parent directory doesn't exist.
    a6f43b5 Add website update to release process
    17b2c84 Update supported versions
    b87e9ee Add ExecID for StateResponse
    bfb266a Fix some misspells in helpers_test.go
    dc09ed1 Add image handler wrapper
    a4f7b37 Add support for TaskDelete event on exec in RuntimeV2
    0089567 Stop sending stderr with TTY on Windows
    6a21728 Use defaults package for listing namespace labels
    14eaad0 Update runc to 6635b4f0c6af3810594d2770f662f34ddc15b40d (CVE-2019-5736)
    98766e8 Vendor opencontainers/runtime-spec 29686dbc
    225d9b1 Fix LCOW layer ordering
    0190e5f Removes the oci.test.exe binary.
    525802f Use distribution's reference.ParseDockerRef
    3538174 Bump github.com/docker/distribution to 0d3efadf0154c2b8a4e7b6621fff9809655cc580
    2dacef0 Add shim skeleton code
    59ea134 OCI Modifiers for Windows
    d25007e Add structure documentation for metadata
    823b7a8 Cleanup releases directory
    7bd8dcd Fix potential containerd panic.
    41f5406 Add release documentation
    f014adf readme: fix example for checkpoint
    dfcc594 Fix deadlock in Windows runhcs shim exec
    da2ab86 Add documentation for using namespace labels for configuring defaults.
    952d582 Add a separate lock for pid.
    9777d76 Revert "use state machine management for exec.Pid()"
    3432398 Use labels only when default namespace is provided and prefer given options.
    59432aa Take default runtime and snapshotter from namespace labels
    6629f85 BUILDING: update BUILDING.md
    d7ed403 Add image pull concurrency limit.
    7f5d7ff Update snapshots docs with garbage collector label
    34672d4 metadata/gc: remove the noop-loop for snapshot reference
    6ed293b Fix bug in shim path lookup
    d63099c Allow matching shim path side by side with containerd
    764afa0 Include extension for shim binary format on Windows
    dfebb40 remove excessive []byte(s) conversion
    85aa8ad Move task events to runc v2 shim
    28f8a90 Update cri plugin to 4dd6735020f5596dd41738f8c4f5cb07fa804c5e.
    bb32c0f Revendor github.com/Microsoft/hcsshim v0.8.4
    f444696 Return out of windows signal handler
    26ab393 Use context.Background for `O_NONBLOCK` `OpenFifo`.
    7db5697 unix.UtimesNanoAt now supported on Darwin
    132ee9b fix: linter issue
    6468619 Implement the Runtime v2 Shim async task model for runhcs
    b444d7d Handle additional cleanups from prior PR
    4ef9bf5 Windows: Publish exit status correctly in TaskExit
    90caf6f Windows:NewDirectIOFromFIFOSet
    3aec9e7 bump up runc
    0befa45 Update ttrpc to support context timeout.
    946e402 Update releases files
    c5a8c9f Fix issue in runhcs shim CloseIO
    31616e7 Fix runhcs shim bug in Create with "len(Rootfs) == 0"
    bcd4cc5 Fixes a bug in runhcs shim Exec.Pid
    bc76e01 Update runhcs options to include CRI Sandbox support
    a79879e Add security audit report to README
    dee0945 Fix spurious ttrpc client shutdown error log on success
    64a0046 Update cri-tools to v1.13.0.
    b55c9c6 Update cri to 4b4b2abb2eb19ad6913a6c5d2a6869a0a43a3fc1.
    17b77ae Fix annotation typo errors
    5137fc6 bugfix: support application/octet-stream during pull
    568b5be runtime: add Add/Delete method in PlatformRuntime interface
    7faaa64 fix: miss remove temp file in createSnapshot
    4247f26 metadata: define content sharing policy
    1be86af add test for WithImageConfigArgs
    36e4dc6 Ensure bundle removal is atomic
    723797d docs: remove website leftovers
    d4ecb00 checkpoint: return empty image if checkpointPath exist
    f2344db do not mutate defaults in replaceOrAppendEnvValues
    da9471f fix oci.WithImageConfigArgs for windows
    897afea Revert "Fix CI due to Golang 1.10.6 / 1.11.3 regressions (workaround)"
    0ec6526 Update the delete docs for Runtime V2 on Windows
    e20ba5f test: add test for c/r without image
    4026738 fix ctr image export not found error
    8be05eb Fix freebsd build
    7b1e6f3 fix: use func args instead of build new one
    9baecf6 fix: fix defer in loop
    903abf3 Fix annotation typo error
    52de371 Fix CI due to Golang 1.10.6 / 1.11.3 regressions (workaround)
    2d96aad bugfix: unpack should always set the snapshot gc label
    a2a4241 Add timeout and cancel to shim fifo open
    6f944e4 fix: SCHILY.xattrs should be SCHILY.xattr
    6ccb0d0 fix: remove dead code
    2db0c6c Explicitly stating utf-8 when fetching oauth token
    603e97a ctr/content: make editor flag is required
    7ac221e Adding ctr memory and cpu flags
    822ae18 Update cgroups to 1152b960fcee041f50df15cdc67c29db
    6593399 cr: support checkpoint/restore without image
    fd16bf6 runtimev2: add image-path and work-path for c/r
    83ebcf9 runtimev1: add image-path and work-path for c/r
    c5a0c7f Add build option "GODEBUG=1"

Shortlog since last vendoring of github.com/kata-containers/agent:

    5064045 docs: Add missing document link
    5583acd release: Kata Containers 1.7.0
    5f9df74 updateInterface: enable hot-add nic on arm64
    86ca8e0 vendor: update gogo/protobuf to v1.2.1
    c9343fb release: Kata Containers 1.7.0-rc1
    560dc87 vendor: update vsock package version
    0af7173 agent: support debug console
    d9aa453 proto: add network stats
    3169c9b docs: Fix markdown in TRACING.md
    8aa2880 release: Kata Containers 1.7.0-alpha1
    2ada1d1 agent: Display trace details
    cb32d28 test: Fix mockContainer
    3e12793 agent: Fix container creation
    6e558f7 vendor: Update libcontainer vendoring
    7fbd860 agent: send SIGKILL instead of SIGTERM to container init process
    8847998 agent: Add support for local storage
    8b34aaf make: Add build option STATIC=1 to statically link
    01b1cb2 travis: Use xenial
    d815c97 lint: Update code to handle lint issues
    828b417 ci: Update travis go version from 1.10 to 1.11
    f61ca8a release: Kata Containers 1.7.0-alpha0
    bdf2290 ci: travis: checkout test repo to correct branch
    209aa2f agent: Fix "agent grpc server quits" show wrong error
    2af3599 channel: Check for channel type in kernel cmdline options
    8187461 vendor: use latest github.com/mdlayher/vsock
    39696c0 vendor: Revert "vendor: Update libcontainer vendoring"
    7866668 agent: Revert "agent: Fix container creation"
    8f893b9 test: Revert "test: Fix mockContainer"
    49e5847 systemd-target: Add chronyd.service to kata-containers.target
    0bf9d1e make: Install systemd targets in systemd unit dir
    85e0942 docs: Explain shutdown behaviour with tracing
    99d6118 docs: Define "VM" in tracing doc
    353ec2d service: Fix user initiated shutdown with static tracing

Signed-off-by: lifupan <lifupan@gmail.com>
2019-05-23 11:21:51 +00:00
James O. D. Hunt
f4d485373a Merge pull request #528 from ganeshmaharaj/local-version-check
ci: always use the versions from the local repository for CI
2019-05-23 08:49:41 +01:00
James O. D. Hunt
5db4f9f01e Merge pull request #530 from nitkon/master
runtime: qemu-lite required only for x86_64 arch
2019-05-23 08:38:04 +01:00
Hui Zhu
7bf6c6754d cache: Call vm.Disconnect() when close vm
After previous commit, found that kata-proxy is not quit
when vmcache server is stopped by ctrl-c.
The cause is current kata-proxy is setsid when it exec.  It will
not get the signal ctrl-c.

Call vm.Disconnect() when close vm in cache factory to handle
this issue.

Fixes: #1726

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-05-23 12:29:55 +08:00
Hui Zhu
19115ef5f1 kata_proxy: Set Setsid to true when exec kata-proxy
There is an issue that ctrl-c stop vmcache server will stop all
containers that its VM is created by it.
The cause is kata-proxy and vmcache server use same tty, for example:
ps -e | grep kata
3617 pts/5    00:00:00 kata-runtime
3636 pts/5    00:00:00 kata-proxy
Ctrl-c will send signal to both kata-proxy and vmcache server.
Then the containers that its VM is created by this vmcache server will
quit with it.

Set Setsid to true when exec kata-proxy to handle this issue.

Fixes: #1726

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-05-23 11:47:53 +08:00
Salvador Fuentes
587b59ebfc Merge pull request #1465 from jcvenegas/versions-containerd-1.2
versions: Update cri-containerd  yaml
2019-05-22 16:35:55 -05:00
Ganesh Maharaj Mahalingam
ceab0f0f1a ci: always use the versions from the local repository for CI
the versions.yaml file in runtime carries the information on all the
components we use and ship with kata. It would be nice to have the CI
test the newer versions when the file is changed and CI is triggered.
The current code always fetches from the master tree from github and
that does not help to validate version changes before it lands in the
tree.

Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-05-22 10:21:46 -07:00
GabyCT
67b66c4d95 Merge pull request #295 from devimc/topic/rootfs/fixChrony
rootfs-builder: fix chrony service
2019-05-22 11:33:23 -05:00
Julio Montes
618ae4d03b Merge pull request #1722 from Ace-Tang/rm-ns
shimv2: remove use containerd ns as netns
2019-05-22 09:49:40 -05:00
Julio Montes
7b9a9ffb79 Merge pull request #1723 from lifupan/fixcleanup
fix the issue of hypervisor process is killed by kubelet
2019-05-22 08:44:37 -05:00
Nitesh Konkar
d4b1a328d0 runtime: qemu-lite required only for x86_64 arch
Make qemu-lite as requirement only
for x86_64 arch

Fixes: #529

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-05-22 18:59:29 +05:30
Jose Carlos Venegas Munoz
81caf1ccd5 Merge pull request #507 from marcov/kata-pkgsync
kata-pkgsync: Add OBS to Packagecloud sync tool
2019-05-22 08:28:06 -05:00
Julio Montes
82e51d42ab data: Revert pull request #1405
The rootfs image was fixed, now the DAX metadata and 2 MBRs headers are part
of the same image. Mounting the rootfs partiton with an offset of 2M is no
more needed, since the first MBR is read by partx or losetup by default.

fixes #1443

Signed-off-by: Julio Montes julio.montes@intel.com
2019-05-22 08:18:05 -05:00
Julio Montes
da21af7be8 Merge pull request #525 from jcvenegas/obs-f30
obs: build: enable fedora 30
2019-05-22 08:07:42 -05:00
lifupan
f301c957f6 shimv2: shutdown the sandbox when sandbox container exited
Kubelet would cleanup the pod cgroup resources and kill the processes
in the pod cgroups when it detected all of the containers in a pod exited,
thus shimv2 should close the hypervisor process once the podsandbox container
exited, otherwise, the hypervisor process would be killed by kubelet and
made shimv2 failed to shutdown the sandbox.

Fixes:#1672

Signed-off-by: lifupan <lifupan@gmail.com>
2019-05-22 06:32:27 +00:00
Ace-Tang
d6b3bffad8 shimv2: remove use containerd ns as netns
```
//the network namespace created by cni plugin
netns, err = namespaces.NamespaceRequired(ctx)
if err != nil {
        return nil, errors.Wrap(err, "create namespace")
}
```

the netns is a containerd namespace concept, it not netns, event a cni
set netns for this, this is a tricky way, so remove the logic.

Fixes: #1692

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-05-22 12:20:57 +08:00
lifupan
0d535f56e5 shimv2: kill a container return directly once the container termianted
According to CRI specs, kubelet will call StopPodSandbox()
at least once before calling RemovePodSandbox, and this call
is idempotent, and must not return an error if all relevant
resources have already been reclaimed. And in that call it will
send a SIGKILL signal first to try to stop the container, thus
once the container has terminated, here should ignore this signal
and return directly.

Fixes:#1672

Signed-off-by: lifupan <lifupan@gmail.com>
2019-05-22 04:14:12 +00:00
Julio Montes
e2d894d52a Merge pull request #1717 from chavafg/topic/fix-static-checks
ci: Build kata-runtime before running static checks
2019-05-21 16:20:53 -05:00
Julio Montes
19288aab46 data/kata-collect-data: support kata containers snap
Use `kata-containers.runtime` that is the runtime binary, to
collect the data if the kata-runtime binary is not installed

fixes #1720

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-05-21 15:57:13 -05:00
Julio Montes
456be67094 rootfs-builder: fix chrony service
Chrony service is not started because it requires a private temporal directory,
these directories can't be created in read-only filesystems. Create a symlink
to /tmp in /var allowing systemd to create private temporal directories.

fixes #280

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-05-21 12:15:34 -05:00
Salvador Fuentes
0d98e248ff ci: Build kata-runtime before running static checks
We need to build kata-runtime to have the correct files
in place to be able to run the static checks script.

Fixes #1716.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-05-21 11:56:14 -05:00
Jose Carlos Venegas Munoz
5eded00f96 obs: build: enable fedora 30
Add fedora 30 to the list of packages to build.

Fixes: #523

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-21 11:46:16 -05:00
James O. D. Hunt
1afb7e5685 Merge pull request #294 from jodh-intel/golang-use-latest-alpine
rootfs: Don't hardcode alpine version for golang images
2019-05-21 13:58:29 +01:00
James O. D. Hunt
d8c5706cff rootfs: Don't hardcode alpine version for golang images
Remove the version of alpine used when pulling golang docker images.
This ensures the latest version of alpine is used and resolves the
maintenance issue when old versions of alpine are dropped.

Fixes: #293.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-21 10:51:05 +01:00
Graham Whaley
f4da3f585a Merge pull request #1309 from nitkon/unitTestFail
virtcontainers: Set test qemu version for unit test
2019-05-21 09:45:22 +01:00
lifupan
5e1f5ca735 shimv2: fix the issue of passing the wrong container id
It should pass the container id instead of sandbox id.

Fixes:#1672

Signed-off-by: lifupan <lifupan@gmail.com>
2019-05-21 16:40:52 +08:00
James O. D. Hunt
7d754d9e2b Merge pull request #520 from ganeshmaharaj/release-tag-retry
release: Allow re-tries of tagging and github releases
2019-05-21 07:57:27 +01:00
Fupan Li
100db8abdc Merge pull request #1670 from xs3c/fix-vfio-hang
shim v2: Close vhostfd after vm get vhostfd
2019-05-21 14:53:26 +08:00
Nitesh Konkar
f7cc028891 vc:Execute TestQemuPPC64leMemoryTopology depending on qemu version
Set qemu major/minor version when
running unit test TestQemuPPC64leMemoryTopology
on ppc64le & execute the unit test accordingly.

Fixes: #1308

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-05-20 22:37:30 +05:30
James O. D. Hunt
0fce78ccf6 Merge pull request #1682 from jodh-intel/add-missing-docs
Add missing docs
2019-05-20 17:50:48 +01:00
Julio Montes
8ac4f61172 Merge pull request #482 from jodh-intel/add-missing-doc-link
docs: Added missing doc link
2019-05-20 07:25:31 -05:00
James O. D. Hunt
5c5b5185c2 docs: Added missing doc link
Added a link to the existing `how-to-use-virtio-fs-with-kata.md`.

Fixes #481.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-20 11:51:54 +01:00
James O. D. Hunt
09715c13d2 docs: Add missing newline at EOF
Add a newline at the end of the document, presumably missed off by
Emacs.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-20 11:48:54 +01:00
Xu Wang
3d4729d6b2 Merge pull request #1701 from bergwolf/debug-console
agent: fix agent debug console
2019-05-20 18:21:28 +08:00
James O. D. Hunt
f1005d08f4 Merge pull request #516 from jodh-intel/improve-docs
Improve docs
2019-05-20 09:47:28 +01:00
James O. D. Hunt
4d8d841641 Merge pull request #498 from jongwu/nic
kernel: disable pci shpc hotplug for arm64
2019-05-20 09:46:46 +01:00
Peng Tao
7381cd5b3f agent: fix agent debug console
We should not let shim or proxy read guest console socket if
agent debug console is set. Otherwise when we connect to it with
socat, it reads nothing since all output is read by the shim.

Fixes: #1700
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-05-17 19:59:18 -07:00
Archana Shinde
2744c94eb3 Merge pull request #1703 from nitkon/fixunittest
virtcontainers: Set correct Shmsize for ppc64le
2019-05-17 17:32:20 -07:00
Jose Carlos Venegas Munoz
b203fdb4a0 versions: Update cri-containerd yaml
Use only one version to install cri-contaienrd

- version could be a containerd version or a commit of the cri
repository.

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

Fixes: #1464

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-17 14:54:20 -05:00
Eric Ernst
e0dda36b5f Merge pull request #1708 from chavafg/topic/machinetype-nemu
nemu-config: Add machine_type to config file
2019-05-17 12:12:55 -07:00
Ganesh Maharaj Mahalingam
6e8350f71b release: Allow re-tries of tagging and github releases
hub tool from github lets you show a particular tag that might exist in
the repostiory. Switching our tag checking logic to use that instead of
listing all tags and grepping for the one we want. For some reason the
existing grep logic always fails to return the right code and always
lands on the portion of the code to generate a new tag.

Fixes: #519
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-05-17 10:19:21 -07:00
Salvador Fuentes
56ff870558 Merge pull request #1705 from devimc/topic/katautils/removeSystemdMasks
katautils: don't mask systemd units
2019-05-17 12:14:34 -05:00
Salvador Fuentes
6be5e5f182 nemu-config: Add machine_type to config file
nemu needs to be configured with:
`machine_type = "virt"` by default.

In addition, this commit removes
`machine_accelerators="virt"` which was added instead
of `machine_type` in a previous commit.

Fixes: #1707.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-05-17 11:29:14 -05:00
James O. D. Hunt
e4a5849b55 docs: Add missing links
Add missing links to other documents under suitable headings.

Fixes: #501.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-17 16:29:09 +01:00
James O. D. Hunt
577fd9fcc0 docs: Add missing READMEs
Created a skeletal set of README for the packaging areas that didn't
have them:

- Jenkins
- OBS
- QEMU
- static build tooling

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-17 16:29:09 +01:00
James O. D. Hunt
5a598841af docs: Add missing link to release process
Add a reference to the release.md file to make it more discoverable.

Fixes: #501.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-17 16:29:09 +01:00
James O. D. Hunt
dececa6ad3 docs: Add missing link to kernel configs doc
Add a link in the kernel README to the kernel configs README.

Fixes: #501.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-17 16:29:06 +01:00
James O. D. Hunt
4213fcba53 docs: Improve release README
Added backticks to commands and added a TOC.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-17 16:29:06 +01:00
James O. D. Hunt
e8ba16eec9 docs: Correct heading level
Fix the heading level in the release README.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-17 16:29:06 +01:00
James O. D. Hunt
0c520582eb docs: Remove redundant markdown
GFM doesn't require corresponding heading hashes at the end of line -
start of lines hashes are adequate.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-17 16:29:06 +01:00
James O. D. Hunt
7499b13030 docs: Add headings and TOC
Add missing heading names and a table of contents.

Also, folded the long lines to make them easier to edit and diff.

Fixes #501.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-17 16:29:06 +01:00
James O. D. Hunt
47d255a350 Merge pull request #1691 from bergwolf/virtiofsd
Add virtiofsd log and fix qemu hang due to virtiofsd vq setup failure
2019-05-17 16:26:52 +01:00
James O. D. Hunt
eb3cbdc976 Merge pull request #478 from jodh-intel/make-docs-non-interactive
docs: Advise use of non-interactive commands
2019-05-17 14:59:49 +01:00
Nitesh Konkar
1789b65c93 virtcontainers: Set correct Shmsize for ppc64le
Fix the test case TestGetShmSizeBindMounted by
setting the right ShmSize for ppc64le.

Fixes: #1702

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-05-17 18:54:28 +05:30
Graham Whaley
8f1e4860db Merge pull request #518 from devimc/topic/snap/1.7.0
snap: release 1.7.0
2019-05-17 14:16:00 +01:00
Marco Vedovati
26174a1528 make: remove snap-xbuild from .PHONY target
This complements 7f7e258d

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-17 14:51:12 +02:00
Julio Montes
d66d855e08 katautils: don't mask systemd units
The systemd units and files that are not needed in Kata Containers,
are removed when the image is created, therefore we don't need to mask
them.

fixes #1704

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-05-17 07:38:11 -05:00
Peng Tao
10c14bcb38 Merge pull request #1694 from marcov/bump-go-version
versions: Update golang to 1.11.10
2019-05-17 19:34:08 +08:00
Marco Vedovati
1cd267af43 kata-pkgsync: Add OBS to Packagecloud sync tool
Add kata-pkgsync as the OBS to Packagecloud sync tool.

Fixes: #506

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-17 12:05:55 +02:00
Peng Tao
95d433c70b Merge pull request #1679 from teawater/vmcache_defunct_proxy
kata_proxy: Open a special goroutine do cmd.Wait
2019-05-17 17:55:08 +08:00
James O. D. Hunt
a800a5dee6 Merge pull request #290 from devimc/topic/image/removeSystemdUnits
image-builder/boot time: remove unneeded systemd units and files
2019-05-17 09:59:59 +01:00
Graham Whaley
ee0736b390 Merge pull request #480 from nitkon/master
documentation: Add travis CI for ppc64le
2019-05-17 09:56:27 +01:00
Graham Whaley
7e0a3cc401 Merge pull request #1697 from GabyCT/topic/updatecrioversion
versions: Update CRI-O version to 1.14.1
2019-05-17 09:31:08 +01:00
Nitesh Konkar
1b1ca703c1 documentation: Add travis CI for ppc64le
Enable travis on ppc64le

Fixes:  #479

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-05-17 10:44:24 +05:30
Peng Tao
89e0dfae11 qemu: stop qemu process when virtiofsd quits
If virtiofsd fails to initialize and stops unexpected,
qemu might hang forever. We just stop the qemu process.
Resource cleanup will be done by others.

Fixes: #1690
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-05-16 20:29:58 -07:00
Peng Tao
d0aae80f55 qemu: print virtiofsd logs when debug is on
To help trace virtiofsd issues.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-05-16 20:29:58 -07:00
Archana Shinde
90539ac31b Merge pull request #1676 from zhabinecho/fix-veth-arp-bug
network: delete IP addrs on bridge model to prevent ARP conflict
2019-05-16 15:14:24 -07:00
Julio Montes
9b2f4a159e snap: release 1.7.0
release kata containers 1.7.0

fixes #517

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-05-16 14:35:53 -05:00
Julio Montes
02b3b3b977 image-builder: remove unneeded systemd units and files
Remove systemd units and files that are not needed in Kata Containers.
Removing this files we can improve the boot time.

fixes #289

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-05-16 13:19:55 -05:00
Marco Vedovati
c22b15d122 versions: Update golang to 1.11.10
Set the minimum golang version to 1.11.10, the latest stable 1.11 version
at the time of writing. Go 1.11 is required to build the agent with working
vsock support.

Fixes: #1693

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-16 19:03:19 +02:00
James O. D. Hunt
b9bc029977 docs: Advise use of non-interactive commands
If a doc contains commands, they should be non-interactive where
possible to allow for the possibility of automating the testing of the
document in the CI.

Fixes #477.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 17:56:31 +01:00
James O. D. Hunt
24ec560794 docs: Add whitespace
Add a blank line for greater clarity when editing the document.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 17:55:55 +01:00
James O. D. Hunt
134471eb40 docs: Clarity the term "prompt"
Change "prompt" to "shell prompt" for greater clarity.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 17:55:22 +01:00
James O. D. Hunt
6a4c7307aa Merge pull request #476 from jodh-intel/new-docs-need-to-be-referenced
docs: Require all new docs to be referenced
2019-05-16 17:04:00 +01:00
Jose Carlos Venegas Munoz
724d8925c3 Merge pull request #515 from nitkon/patch-3
build_image: Install yq before get_from_kata_deps
2019-05-16 10:56:46 -05:00
Manohar Castelino
d4f4644312 Merge pull request #1688 from egernst/1.7.0-branch-bump
# Kata Containers 1.7.0
2019-05-16 08:19:39 -07:00
James O. D. Hunt
6141306594 Merge pull request #474 from jodh-intel/doc-fixes
Doc fixes
2019-05-16 15:20:22 +01:00
James O. D. Hunt
1d1782f051 docs: Require all new docs to be referenced
New documentation is great, but finding it should be easy. Require that
all new docs are referenced by an existing document in the repo.

Fixes #475.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 13:42:37 +01:00
nitkon
5b75030f9b build_image: Install yq before get_from_kata_deps
build_from_docker.sh fails to read from versions.yaml as 
yq is not installed.

Fixes: #514
Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-05-16 17:12:34 +05:30
Marco Vedovati
f89834a276 virtcontainers: avoid unnecessary error checking in startVM
Remove redundant error checking in startVM.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-16 12:31:51 +02:00
Marco Vedovati
a27a3e7049 virtcontainers: kill hypervisor if startSandbox fails
Make sure the hypervisor is stopped if startSandbox does not succeed, by
calling stopSandbox.

Fixes: #1636

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-16 12:31:51 +02:00
James O. D. Hunt
4f164da00f docs: Clean up how-to handling
- Created a how-to README.
- Moved howto links in top-level README to the how-to README.
- Moved svc-mesh how to into the how-to directory.

Fixes #473.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 11:27:58 +01:00
James O. D. Hunt
6d8094b716 docs: Added missing doc links
Added links to unreferenced documents to make them easier to find.

Partially fixes #473.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 11:27:47 +01:00
James O. D. Hunt
548f75927e docs: Removed stale list entries
Removed two list entries in the design README that don't have a
corresponding document to link to.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 11:25:54 +01:00
James O. D. Hunt
3dec84d198 docs: Fix partial sentence
Improve the wording in the design README to remove the partial sentence.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 11:25:54 +01:00
James O. D. Hunt
923c8157ce docs: Add TOC
Added a Table of Contents to the top-level README.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 11:25:54 +01:00
James O. D. Hunt
6ecdecd727 docs: Fix debian docker link
Fixed the Debian install guide which was pointing to the Ubuntu Docker
install guide by mistake.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-16 11:25:54 +01:00
Gabriela Cervantes
5d527d719e versions: Update CRI-O version to 1.14.1
Now that CRI-O released a new version we can update it.

Fixes #1696

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-05-16 05:17:08 -05:00
Peng Tao
17079532bf Merge pull request #1668 from WeiZhang555/use-newstore
persist: merge more files with `persist.json`
2019-05-16 17:38:30 +08:00
Graham Whaley
f382cec9e7 Merge pull request #1687 from devimc/topic/katautils/maskSystemdPackages
pkg/katautils: improve boot time disabling systemd units
2019-05-16 09:24:59 +01:00
Eric Ernst
6a53aeca27 Merge pull request #503 from egernst/kata-deploy-nemu
kata-deploy: add nemu support
2019-05-15 23:41:03 -07:00
Yang, Wei
071030b784 shimv2: Close vhostfd after vm get vhostfd
If kata containers is using vfio and vhost net,the unbinding
of vfio would be hang. In the scenario, vhost net kernel thread
takes a reference to the qemu's mm, and the reference also includes
the mmap regions on the vfio device file. so vhost kernel thread
would be not released when qemu is killed as the vhost file
descriptor still is opened by shim v2 process, and the vfio device
is not released because there's still a reference to the mmap.

Fixes: #1669

Signed-off-by: Yang, Wei <w90p710@gmail.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-16 13:31:11 +08:00
Eric Ernst
99acea93a9 release: Kata Containers 1.7.0
- Networking: Ensure that network namespace is propagated
- nemu-config: adjust defaults in configuration-nemu.toml
- support-vsock: load vhost_vsock module if it isn't built-in

bce0d60 unit-test: refine unit test
9b23d4f vsock_module: add 'vhost_vsock' kernel module in kata-check
f21d5a3 Support_vsock: only need to check whether device 'vhost_vsock' exists
09a7d15 nemu-config: adjust defaults in configuration-nemu.toml
66b93c7 Networking: Ensure that network namespace is propagated

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-15 17:44:36 -07:00
Eric Ernst
20dffa4feb Merge pull request #469 from ganeshmaharaj/virtiofs-doc
how-to: virtio-fs initial documentation
2019-05-15 17:19:42 -07:00
Eric Ernst
85ddb9addc virtiofs: simplify kata + virtio fs doc
- Add more motivation, background on filesystem sharing
- simplify configuration, installation by utilizing kata deploy

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-15 17:24:59 -07:00
Ganesh Maharaj Mahalingam
81b8044716 how-to: virtio-fs initial documentation
virtio-fs has landed as an experimental feature in kata. This patch
enable the basic how-to for this feature.

Fixes: #468
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-05-15 12:04:19 -07:00
Julio Montes
a5e3550d4c pkg/katautils: improve boot time disabling systemd units
There are still some systemd units that fail to start for different
reasons. Disable these systemd units to improve boot time.

fixes #1686

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-05-15 12:12:47 -05:00
James O. D. Hunt
da2749c44d docs: Add missing docs
Add a few minimal documents to allow all the documentation in this
repository to be navigated from the top-level README.

Fixes #1681.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-15 16:28:29 +01:00
James O. D. Hunt
1563263c0d docs: Simplify link
Use a markdown link rather than a URL for virtcontainers docs.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-15 16:20:54 +01:00
Zha Bin
bdb1047a67 network: delete IP addrs on bridge model to prevent ARP conflict
Fixes: #1673

Signed-off-by: Zha Bin <zhabin@linux.alibaba.com>
2019-05-15 22:48:23 +08:00
Hui Zhu
00d03c1022 kata_proxy: Open a special goroutine do cmd.Wait
Got a defunct kata-proxy after kata quit when VMCache is enabled.
The reason is vmcache server opens kata-proxy but doesn't wait it.

If VMCache is disabled, kata-runtime will quit before kata-proxy.
So it will not meet the issue.

Open a special goroutine do cmd.Wait in kataProxy.start to handle
the isssue.

Fixes: #1678

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-05-15 21:36:26 +08:00
James O. D. Hunt
86d51f59d4 Merge pull request #1665 from mcastelino/topic/bug_fix_1664
Networking: Ensure that network namespace is propagated
2019-05-15 09:25:44 +01:00
Jose Carlos Venegas Munoz
8c04600684 Merge pull request #1663 from egernst/nemu-config-adjustments
nemu-config: adjust defaults in configuration-nemu.toml
2019-05-14 10:51:01 -05:00
Julio Montes
7aae1ac93a Merge pull request #511 from marcov/debian-scrict-depend
runtime: specify strict dependencies Debian package
2019-05-14 07:28:43 -05:00
James O. D. Hunt
576b8a510c Merge pull request #1513 from Pennyzct/vsock
support-vsock: load vhost_vsock module if it isn't built-in
2019-05-14 11:08:48 +01:00
Marco Vedovati
f2100fd440 runtime: prettify Debian/Ubuntu package template
Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-14 11:09:29 +02:00
Marco Vedovati
634138145e runtime: specify strict dependencies Debian package
Strict dependencies guarantees that an older version of the runtime will
not be installed together with a more recent version of the other kata
packages.
This complements commit e73473f.

Fixes: #508

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-14 11:09:29 +02:00
James O. D. Hunt
33828b7dcb Merge pull request #509 from jcvenegas/kernel-patches-dir-fix
kernel: obs: fix kernel path
2019-05-14 08:59:47 +01:00
Penny Zheng
bce0d604e1 unit-test: refine unit test
We should refine unit test which involves func SupportsVsocks and newly
reconstructed struct kernelModule.

Fixes: #1512

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-05-14 13:31:25 +08:00
Penny Zheng
9b23d4f143 vsock_module: add 'vhost_vsock' kernel module in kata-check
Since we prefer vsock over virtio serial port, we add 'vhost_vsock'
in kernel mosules list.
But vhost_vsock.ko shouldn't be the definitely required kernel modules,
afterall, we could also use virtio serial port.
if kata-env shows SupportsVSocks as false, users could run kata-check
to manually load vhost_vsock.ko and get detailed info(errors)

Fixes: #1512

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-05-14 13:31:11 +08:00
Penny Zheng
f21d5a37fe Support_vsock: only need to check whether device 'vhost_vsock' exists
QEMU opens /dev/vhost-vsock and this causes vhost_vsock.ko to be
automatically loaded.
So, checking the existence of /dev/vhost-vsock is enough.

Fixes: #1512

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-05-14 13:30:56 +08:00
Eric Ernst
09a7d15176 nemu-config: adjust defaults in configuration-nemu.toml
- For initial offering of virtiofsd, hugepages are required
- use the qemu hypervisor type for configuration template
- decrease virtiofs cache size from 8192 to 1024, to better support
running with virtio-fs on smaller machines while hugepages are required.
- For initial experimental release, utilize virtio-serial instead of
vsock

Fixes: #1662

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-13 15:35:04 -07:00
Jose Carlos Venegas Munoz
89695fe7e0 kernel: obs: fix kernel path
Fix path to kernel patches.

Fixes: #505

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-13 14:32:22 -05:00
Jianyong Wu
72054cd2a3 kernel: disable pci shpc hotplug for arm64
As shpchp used for pci hotplug on arm64 initialized
its bottom half work as a delay work for 5 seconds, pci bus
rescan triggered between up half and bottom half of shpc interrupt
handling will fail. so disable shpc and let bus rescan
to do the device hotplug on arm64.

Fixes: #498
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2019-05-13 06:57:02 -04:00
Wei Zhang
a6b3368469 persist: merge more files with persist.json
Fixes #803

Merge more container storage files with `persist.json` including:
* devices.json
* mounts.json
* process.json

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-05-13 17:00:33 +08:00
Eric Ernst
ef00bb023a kata-deploy: configure multiple runtimes with containerd
Fixes: #504

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-10 22:16:34 -07:00
Eric Ernst
beea7d9f64 kata-deploy: add nemu support
Fixes: #416

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-10 22:16:34 -07:00
Manohar Castelino
66b93c7ca0 Networking: Ensure that network namespace is propagated
Network namespace needs to be propagated if available at
createSandbox()

Fixes: #1664

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-05-10 18:00:30 -07:00
James O. D. Hunt
f13416129c Merge pull request #497 from egernst/nemu-static
nemu: add support for static build of nemu
2019-05-10 16:21:57 +01:00
James O. D. Hunt
4a2fa6875d Merge pull request #287 from marcov/no-create-1
rootfs: use command vs which, avoid "1" file creation
2019-05-10 16:18:50 +01:00
Eric Ernst
c8e20e2a18 Merge pull request #288 from katabuilder/1.7.0-rc1-branch-bump
# Kata Containers 1.7.0-rc1
2019-05-10 07:58:27 -07:00
Eric Ernst
bce1167c33 Merge pull request #1646 from katabuilder/1.7.0-rc1-branch-bump
# Kata Containers 1.7.0-rc1
2019-05-10 07:58:15 -07:00
James O. D. Hunt
765e51ef0d Merge pull request #479 from grahamwhaley/20190501_golang_req
kernel: Note prereqs in document
2019-05-10 13:38:33 +01:00
James O. D. Hunt
fca62b1fca Merge pull request #477 from brtknr/patch-1
Allow kata-deploy containers to restart gracefully
2019-05-10 11:20:18 +01:00
Graham Whaley
3ca8aeb22f kernel: version bump
We modified the kernel subdir, even thought it was only a doc
change, so we need to bump the config ver to reflect that.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-05-10 10:25:16 +01:00
Graham Whaley
7ccc3b7fdd kernel: README: add a toc
Add Table Of Contents to the kernel README.md file.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-05-10 10:22:16 +01:00
Graham Whaley
8ec9507387 kernel: README: remove trailing '.' from a title
We don't append fullstops to section titles, and they mess the
ToC up (looks wise). Nuke the one we had in this file.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-05-10 10:22:16 +01:00
Graham Whaley
38aa271b9c kernel: Note prereqs in document
Note that to use the build script you need to have some prereqs,
including a new enough golang.

Fixes: #478

Reported-by: Rory Savage <rsavage@dispersivegroup.com>
Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-05-10 10:22:16 +01:00
Graham Whaley
b9f601c2d3 Merge pull request #458 from amshinde/change-doc-for-runtimeclass
kata-deploy: Change the kata-deploy doc to use yaml files
2019-05-10 08:49:59 +01:00
Hui Zhu
d745bcb034 Merge pull request #1630 from GabyCT/topic/skiptest
test: Skip namespace test on Centos
2019-05-10 15:38:03 +08:00
Hui Zhu
5ba09817d8 Merge pull request #1575 from WeiZhang555/simplify-persist-api
newstore:  removing deprecated files when use new store driver
2019-05-10 15:33:22 +08:00
Hui Zhu
fb93774d28 Merge pull request #1628 from lifupan/fixctx
shimv2: fix the issue ttrpc server canceled context
2019-05-10 15:28:32 +08:00
zhangwei_cs
59948faf32 Merge pull request #1648 from egernst/nemu-config-support
configuration: add nemu support
2019-05-10 14:59:23 +08:00
Eric Ernst
9d71d4e783 configuration: add nemu support
NEMU requires a unique runtime configuration.  Add support for utilizing
a configuration-nemu.toml

Fixes: #1647

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-09 22:01:09 -07:00
Eric Ernst
c769e0572c release: add nemu to kata deploy creation script
Add nemu to kata-deploy-binaries.sh

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-09 21:52:03 -07:00
Eric Ernst
255bae1515 nemu: add virtiofsd to nemu static binary
add virtiofsd as part of the nemu static build

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-09 21:52:03 -07:00
Eric Ernst
924bda0c61 nemu: add support for static build of nemu
Fixes: #401

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-09 21:52:03 -07:00
Hui Zhu
9ab09f9c2d Merge pull request #1651 from lifupan/fix_rootfs
shimv2: create the rootfs dir if it doesn't exist
2019-05-10 09:45:52 +08:00
Fupan Li
838661044f Merge pull request #1641 from Ace-Tang/leak-ns
vc: fix netns leak
2019-05-10 09:42:16 +08:00
GabyCT
44a5953e45 Merge pull request #1654 from jodh-intel/fix-test-constraint-version-numbers
Fix test constraint version numbers
2019-05-09 16:21:46 -05:00
Salvador Fuentes
b1d8e9f064 Merge pull request #1618 from GabyCT/topic/updatek8s
versions: Update K8s and CRI-O version
2019-05-09 15:13:28 -05:00
Archana Shinde
3444aa68f0 kata-deploy: Change the kata-deploy doc to use yaml files
Change the kata-deploy doc to get rid of code-snippets
and instead include instructions to apply the provided
RuntimeClass yaml according to the k8s version being used.

Fixes #457

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-05-09 12:40:40 -07:00
Ace-Tang
a5bc98c150 vc: fix netns leak
when kata container start fails, netns will leak, add a defer func
to fix it

Fixes: #1640

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-05-09 23:07:16 +08:00
James O. D. Hunt
0c207c16ef katatestutils: Add missing distro version constraints
Added the following distro version constraints for parity with the
kernel version constraints:

- `NeedDistroVersionGE()`
- `NeedDistroVersionLE()`
- `NeedDistroVersionNotEquals()`

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-09 15:37:57 +01:00
James O. D. Hunt
2bc03f23e0 katatestutils: Fix version check bug
Fix version comparison bug whereby the specified operator was being
applied to the wrong version number.

The version handling for distro and kernel versions was incorrect. This
was not clear as the internal logic was rather difficult to understand.
Renaming `constraintInvalid()` to `constraintValid()` and updating
`NotValid()` correspondingly makes the logic clearer and exposed the
bug, allowing it to be fixed.

Added two new tests to ensure correct behaviour:

- `TestConstraintNotValidKernelVersion()`
- `TestConstraintNotValidDistroVersion()`

Fixes #1653.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-09 15:35:29 +01:00
Salvador Fuentes
0162e41d78 Merge pull request #1645 from egernst/nemu-bump
Nemu bump
2019-05-09 09:26:16 -05:00
James O. D. Hunt
1bec735cb6 katatestutils: Fix NeedDistroVersionEquals comment
Previously, the comment on `NeedDistroVersionEquals()` erroneously
referred to `NeedDistroVersionLT()`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-09 15:00:21 +01:00
James O. D. Hunt
20b558656d katatestutils: Reset TestConstraints fields on NotValid() call
`TestConstraint.NotValid()` is really designed to be called once per
test. However, there is no reason it should not be possible to call
multiple times. But to allow for that secenario, any settings
from a previous `NotValid()` call need to be cleared.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-09 14:56:38 +01:00
Graham Whaley
82dc91481d Merge pull request #463 from devimc/topic/howto/fixContainerdWithCri
how-to: Fix `Install containerd with cri plugin` note
2019-05-09 14:29:40 +01:00
Julio Montes
3b29f8fbb3 how-to: Fix Install containerd with cri plugin note
It's a little complicated to understand the note of the section
Install containerd with cri plugin, that says Just check if the cri plugin has
been disabled in the containerd configuration file but if it's disabled
containerd + the runtime class won't work.

fixes #462

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-05-09 08:21:55 -05:00
Gabriela Cervantes
4b6370160a test: Skip namespace test on Centos
Skip TestHostNetworkingRequested test as nsfs is not supported on
older kernel versions. Currently, CentOS has issues with this test a
is using a kernel version of 3.10 and to run this test we need a
kernel version greater than 3.19.

Fixes #1629

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-05-09 08:05:21 -05:00
lifupan
8eb09dec67 shimv2: fix the issue ttrpc server canceled context
This latest ttrpc vendor supports the feature of request timeout propgation.
this feature will do context cancel after a service call return, and this cancel
will propagated into kata sandbox's agent/hypervisor and resulted in the following
calls canceled. To fix this issue, pass the service's context instead of the service's
call's context to CreateSandbox(), and this context will live until the shim exited.

Fixes:#1627

Signed-off-by: lifupan <lifupan@gmail.com>
2019-05-09 04:58:30 -04:00
James O. D. Hunt
bb44f65a68 Merge pull request #1623 from awprice/system-mount-skip
mounts: fix isSystemMount check for mountSharedDirMounts
2019-05-09 09:38:11 +01:00
lifupan
1b33fe4022 shimv2: create the rootfs dir if it doesn't exist
Latest containerd commit<c0f0b21314b93a1> had moved the
step of creating rootfs dir from creating bundle to container
creation; in order to support both of the old and latest
containerd, check the "rootfs" existed before creating it.

Fixes:#1652

Signed-off-by: lifupan <lifupan@gmail.com>
2019-05-09 04:20:48 -04:00
James O. D. Hunt
3c500df527 Merge pull request #494 from amshinde/fix-ownership-kata-binaries
kata-deploy: All binaries installed by kata should be writable by root
2019-05-09 08:45:54 +01:00
James O. D. Hunt
c90341de69 Merge pull request #461 from devimc/topic/howto/fixKubeadmCmd
how-to: fix kubadm command
2019-05-09 08:36:32 +01:00
Wei Zhang
297097779e persist: save/load GuestMemoryHotplugProbe
Support saving/loading `GuestMemoryHotplugProbe` from sandbox state.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-05-09 14:39:04 +08:00
Gabriela Cervantes
3eaec42c86 versions: Update K8s and CRI-O version
This will update the k8s version to 1.14.1 and CRI-O to
commit 3ddde3dee35a239712ee26fa542abe5609c4f44f.
We are using this commit as crio 1.14 has an issue: cri-o/cri-o#2221
and also does not include test fixes of cri-o/cri-o@7b8c298.

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

Fixes #1617

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-05-09 00:10:50 -05:00
Hui Zhu
67c64419d0 Merge pull request #459 from jodh-intel/improve-doc-requirements
Improve doc requirements
2019-05-09 10:21:07 +08:00
Eric Ernst
b75815117f Merge pull request #495 from jcvenegas/fix-release-install-docs
docs: release-notes: Fix markdown link
2019-05-08 18:18:33 -07:00
katacontainersbot
677c7083b5 release: Kata Containers 1.7.0-rc1
- firecracker: Setup rootfs to be RO
- firecracker: Upgrade firecracker to 0.16.0
- Add virtio-fs support (alternative to virtio-9p)
- virtcontainers: fix invalid CPU topology
- Firecracker: Fix kernel command line parameters
- Firecracker: update to version v0.15.2
- devices: Skip floppy drives while passing devices to guest
- Add test skip utils
- firecracker: Add support for v0.15.x
- firecracker: Add support for default VM configuration
- build: Fix virtcontainers static check make target
- virtcontainers: Use shim to print the agent logs if there is no proxy
- shim v2: fix set status when container exit
- cli: do not fail on list when some containers bust
- versions: Bump NEMU version to latest release
- Revert "vc: change container rootfs to be a mount"
- Add agent trace support
- network: pass network interface RawFlags to agent
- Fix markdown
- Fix parallel make
- Update golang to 1.12.3
- vc: change container rootfs to be a mount
- persist: baseline persist data format
- factory: Add new factory option template_path
- vc: remove BlockIndex from container state
- factory: Check if vm templateing is on before vm templateing initialize

5e9cb48 firecracker: Setup rootfs to be RO
93e6ad1 firecracker: Upgrade firecracker to 0.16.0
0a69eb8 kata-env: add SharedFS option to output
75f7586 virtiofs: Add cache option
6767c1a virtiofs: Add cache size option
82d1a9d kata_agent: use virtio-fs shared dir in CreateSandbox
9480978 qemu: add vhost-user-fs-pci device instead of 9p
c155775 Firecracker: Fix kernel command line parameters
b496f3f firecracker: Add support for default VM configuration
f75b7fe firecracker: Add support for v0.15.x
23f7cfa tests: Update test code to use test constraints
8e144e0 pkg: Add test constraints feature
d690dff config: add virtio_fs_daemon string
9e87fa2 config: add shared_fs option
0217077 vendor: update govmm
9f87e78 build: Fix virtcontainers static check make target
fa5de87 virtcontainers: fix invalid CPU topology
b7f51be cli: do not fail on list when some containers bust
854cc86 shimv2: fix set status when container exit
582f20f virtcontainers: Use shim to print the agent logs if there is no proxy
da0ae03 versions: Bump NEMU version to latest release
ed64240 agent: Support Kata agent tracing
b573d9b vendor: Update for agent tracing and fix issues
b309dc5 agent: Provide explicit config options for the agent
87d9171 utils: Remove code duplication
ed248ce shim: Removed unused type and correct error message
97beb2b errors: Create a new standard error for invalid config
e803a7f agent: Return an error, not just an interface
bc9b9e2 vc: Revert "vc: change container rootfs to be a mount"
dd0808a network: pass network interface RawFlags to agent
196661b vc: change container rootfs to be a mount
989b373 docs: fix lisence header to 2019
3262da0 bugfix: fix potential panic
9bd4e50 store: address comments
0f52c8b test: add unit test for new FS storage driver
02f2122 test: fix unit test
e40dcb9 storage: set new storage driver as "experimental"
504c706 storage: address comments
6e4149d persist: save and restore state from persist.json
039ed4e persist: persist device data
b42fde6 persist: demo code for persist api
e14ffb4 persist: baseline persist data format
0549a70 factory: Add new factory option template_path
f6b8387 devices: Skip floppy drives while passing devices to guest
82d105f doc: Fix markdown
1a0a4bc doc: Fix broken internal link
92edeb1 doc: Simplify note
2037286 vc: remove BlockIndex from container state
76a5076 template: Add check if vm template is on before vm template initialize
8097c54 Firecracker: update to version v0.15.2
53ebe51 build: fix race between 'clean' and generated files
7949cd6 build: turn COMMIT into a file dependency
0f7bb25 build: extract config-generated.go.in from Makefile
1eb5d6c build: use MAKEFILE_LIST for a more complete Makefile dependency
bbf9253 build: add VERSION dependency to netmon target
b20fd9d build: remove duplicated COLLECT_SCRIPT from clean
e26f342 build: Update golang to 1.12.3

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-05-09 00:24:31 +00:00
katacontainersbot
b9d9009cd9 release: Kata Containers 1.7.0-rc1
- docs: Fix markdown
- make: add nsdax source to install-scripts target
- rootfs-builder: remove /var/log

c5a17f7 docs: Fix markdown
7cfe5b4 image-builder: set default value of AGENT_INIT
0013352 make: add nsdax source to install-scripts target
c00849b rootfs-builder: remove /var/log

Signed-off-by: katacontainersbot <katacontainersbot@gmail.com>
2019-05-09 00:23:56 +00:00
Eric Ernst
00b3c8b384 version: update descriptions for accuracy
People, these are VMMs, *not* hypervisors.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-08 17:16:50 -07:00
Jose Carlos Venegas Munoz
691ad2c048 Merge pull request #496 from ganeshmaharaj/fix-bump
bump-repos: Make associated files adapt to newer bump script
2019-05-08 18:50:28 -05:00
Eric Ernst
731dcc0d29 version: bump nemu version
Update to latest version of NEMU

Fixes: #1644

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-08 16:40:20 -07:00
Jose Carlos Venegas Munoz
fab6527d59 Merge pull request #488 from jcvenegas/1.5.5-fixes
release:  fixes for 1.5.5
2019-05-08 17:07:09 -05:00
Ganesh Maharaj Mahalingam
ec87592415 bump-repos: Make associated files adapt to newer bump script
update-repository-version script no longer expects the repository name,
but just the version and the target branch. Modify associated Makefile
and jenkins pipeline files to adapt to that change.

Fixes: #443
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-05-08 14:57:45 -07:00
Julio Montes
61cfb9c9f1 how-to: fix kubadm command
remove --skip-preflight-checks option since it has been deprecated

fixes #460

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-05-08 14:44:29 -05:00
Salvador Fuentes
ad0213dd78 Merge pull request #491 from egernst/DINK
kernel: config: enable overlay_fs for DinK use case
2019-05-08 14:41:25 -05:00
Jose Carlos Venegas Munoz
3a1bb3fb7a lib.sh: dont do readonly on sourced files.
Files could be sourced more than one time lets not use readonly.

Fixes: #487

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-08 13:27:05 -05:00
Jose Carlos Venegas Munoz
92f6ee8a64 release: publish: image: fix commit length
The commit length now is defined in a variable.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-08 13:27:05 -05:00
Jose Carlos Venegas Munoz
c8bf90fbbe docs: release-notes: Fix markdown link
Fix markdown link to point to the rigth documentation.

Fixes: #1516

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-08 13:15:44 -05:00
Archana Shinde
c3c8da0d00 kata-deploy: All binaries installed by kata should be writable by root
Prior to this, some of the binaries installed by kata were not owned by
root. Any user can write/replace these binaries.
This was happening as tar perserves ownership while creating the
archive.
Change the ownership of all binaries to root.

Fixes #489

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-05-08 10:56:19 -07:00
Eric Ernst
d079604e5e kernel: config: enable overlay_fs for DinK use case
To run Docker within a Kata container, OVERLAY_FS needs to be enabled.

Fixes: #490

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-05-08 10:20:28 -07:00
Eric Ernst
a7935d419e Merge pull request #1633 from mcastelino/topic/fc-fixes
firecracker: Setup rootfs to be RO
2019-05-08 09:30:02 -07:00
James O. D. Hunt
ad87c6cc64 docs: Add linking advice section
Add a new "Linking advice" section to the documentation requirements
document.

Fixes: #458.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-08 10:30:49 +01:00
Graham Whaley
7327f8a77b Merge pull request #1631 from mcastelino/topic/fc_0_16_0
firecracker: Upgrade firecracker to 0.16.0
2019-05-08 09:54:03 +01:00
James O. D. Hunt
b5931eb0d6 docs: Add TOC requirement
State that all documents should contain a table of contents.

Partially fixes: #458.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-08 09:49:45 +01:00
James O. D. Hunt
dd69931a4c docs: Tighten up general requirements list
Simplify the bullet list of general requirements in the documentation
requirements document at the same time as making the wording
unambiguous.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-08 09:37:20 +01:00
Manohar Castelino
5e9cb48b8f firecracker: Setup rootfs to be RO
Setup rootfs to be RO both from the VMM point of view and the
VM point of view.

Fixes: #1632

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-05-07 15:03:28 -07:00
Manohar Castelino
93e6ad1f4f firecracker: Upgrade firecracker to 0.16.0
Upgrade firecracker to 0.16.0

Fixes: #1626

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-05-07 14:44:02 -07:00
Jose Carlos Venegas Munoz
96779ec9e2 pkglib: fix sourced path
Fix way to get path to sourced file.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-07 14:23:11 -05:00
Jose Carlos Venegas Munoz
003433c1a9 docs: release: add step to generate version file before image.
The image now is generated using versions file. It is not generated
it will fail.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-07 14:23:11 -05:00
Eric Ernst
9a27ac29bc Merge pull request #1016 from stefanha/virtio-fs-core
Add virtio-fs support (alternative to virtio-9p)
2019-05-07 11:19:58 -07:00
Salvador Fuentes
4c5527f8a8 Merge pull request #1606 from devimc/topic/virtcontainers/fixCpuTopology
virtcontainers: fix invalid CPU topology
2019-05-07 10:13:27 -05:00
Graham Whaley
4bb97ef14a Merge pull request #484 from ganeshmaharaj/virtio-fs-4-19-28
kernel: Enable virtio-fs in kata kernel
2019-05-07 15:52:07 +01:00
Salvador Fuentes
517cd3573d Merge pull request #457 from jodh-intel/fix-more-markdown
docs: Fix incorrect link in limitations TOC
2019-05-07 07:49:17 -05:00
James O. D. Hunt
b0bcb1b4f8 docs: Fix incorrect link in limitations TOC
Fixed typo in table of contents link name which broke the link.

Fixes #456.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-07 11:49:09 +01:00
Marco Vedovati
9a8f1688d5 rootfs: use command vs which, avoid "1" file creation
Replace "which" with "command", that's a bash built-in and should
not generate any stderr messages. This also fixex the spurious creating
of "1" file in the repo root because of a typo in stderr redirect.

Fixes: #286

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-05-07 12:29:51 +02:00
Bharat Kunwar
55d27b3176 deploy: Allow container to restart gracefully
If the container has had to restart, lack of overwrite here causes a benign error message to appear since the nodes already have `katacontainers.io/kata-runtime=true` label. Having a overwrite here means that we don't get the following error message:

    error: 'katacontainers.io/kata-runtime' already has a value (true), and --overwrite is false

Signed-off-by: Bharat Kunwar <b.kunwar@gmail.com>
2019-05-07 10:37:06 +01:00
James O. D. Hunt
82afd0a6dc Merge pull request #452 from leoluk/patch-1
docs: Clarify security boundaries in privileged mode
2019-05-07 08:55:09 +01:00
Ganesh Maharaj Mahalingam
88d93adf50 kernel: Enable virtio-fs in kata kernel
This patches adds virtio-fs capability to the kata kernel along with
config changes to enable the same on kata by default. The system will
only be exercised when `shared_fs` is set to `virtio-fs` in the kata
configuration file. the default still remains to be 9p

Fixes: #387
Depends-on: github.com/kata-containers/runtime#1016

Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-05-06 13:19:57 -07:00
Jose Carlos Venegas Munoz
3047fb7260 Merge pull request #452 from jcvenegas/azure-automation
azure-pipelines: Add fixes to allow automate release using azure pipelines.
2019-05-06 11:52:27 -05:00
Wei Zhang
4c192139cf newstore: remove file "devices.json"
When using experimental feature "newstore", we save and load devices
information from `persist.json` instead of `devices.json`, in such case,
file `devices.json` isn't needed anymore, so remove it.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-05-06 14:40:08 +08:00
Stefan Hajnoczi
0a69eb8fff kata-env: add SharedFS option to output
It's useful to know whether virtio-9p or virtio-fs is being used.  Add
the status to the kata-env output.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-05-05 11:32:34 -06:00
Dr. David Alan Gilbert
75f75862c2 virtiofs: Add cache option
Several cache modes are supported by virtio-fs.  They affect the
performance and consistency characteristics of the file system.

For the time being cache="none" is recommended, but the other modes can
be experimented with.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2019-05-05 11:32:34 -06:00
Dr. David Alan Gilbert
6767c1a358 virtiofs: Add cache size option
Add VirtioFSCacheSize aka virtio_fs_cache_size option
to set the size (in MiB) of the DAX cache.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2019-05-05 11:32:34 -06:00
Stefan Hajnoczi
82d1a9d6f4 kata_agent: use virtio-fs shared dir in CreateSandbox
Use virtio-fs instead of virtio-9p when virtio-fs is enabled.

Fixes: #1542
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-05-05 11:32:34 -06:00
Stefan Hajnoczi
9480978364 qemu: add vhost-user-fs-pci device instead of 9p
When enable_virtio_fs is true, add a vhost-user-fs-pci for the
kataShared volume instead of 9p.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-05-05 11:32:34 -06:00
Hui Zhu
a7e2bbd31c Merge pull request #1621 from mcastelino/topic/fc_bootparams
Firecracker: Fix kernel command line parameters
2019-05-05 11:05:13 +08:00
Hui Zhu
954d9cea80 Merge pull request #1560 from egernst/fc-bump
Firecracker: update to version v0.15.2
2019-05-04 11:07:09 +08:00
Manohar Castelino
c15577565e Firecracker: Fix kernel command line parameters
Firecracker does not support pci. It also uses kbd to implement reboot/reset.
Fix the kernel boot params to address this.

It also does not have good entropy at startup. Use the hardware random
number generator to support entropy.

Fixes: #1620

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-05-03 16:08:56 -07:00
Julio Montes
7aa695d3a9 Merge pull request #474 from nitkon/patch-2
snapcraft: Consider debian ppc64el convention
2019-05-03 14:01:53 -05:00
Salvador Fuentes
95af6edb1a Merge pull request #434 from jodh-intel/fix-markdown
docs: Fix markdown
2019-05-03 11:53:47 -05:00
Graham Whaley
ea71133d1a Merge pull request #1558 from amshinde/ignore-floppy-drives
devices: Skip floppy drives while passing devices to guest
2019-05-03 17:34:11 +01:00
Nitesh Konkar
45228a3fae snapcraft: Fix conditional check for ppc64le
Conditional check for arch was failing
silently and hence had no effect.

Fixes: #473

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-05-03 21:43:35 +05:30
Jose Carlos Venegas Munoz
7388b635e6 pkg: image: update regex image
Previous tarball uploaded to github has a different hash length
this commit make the regex more flexible in case the commit
length is bigger.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 10:48:12 -05:00
Jose Carlos Venegas Munoz
dcabeef0f5 obs: add wait-obs.sh
Add script to wait until obs finish the process to build.

- check if process failed

Useful for CI job.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 10:09:02 -05:00
Jose Carlos Venegas Munoz
847efbab78 pkgs: obs: SUSE: disable CONFIG_RETPOLINE
SUSE does not support CONFIG_RETPOLINE.

This has being failing for a while in order
to allow the pipeline pass all the builds
must be successful.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 10:09:02 -05:00
Jose Carlos Venegas Munoz
5b1ddd0b37 lib: versions: use branch variable
If branch is provided not use master.

When buiding packages the master repository is used
this is bad for stable releases. Use the BRANCH variable
exported in releases.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 10:09:02 -05:00
Jose Carlos Venegas Munoz
65e55a8b2c bump-repos: Bump all repos from script
Simplify the pipeline code by doing all the bumps.

- Instead of get the repo to bump, make the script bump them all
- Do not bump osbuilder and ksm on stable branches.
- Simplify usage for automation.

Fixes: #443

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 10:09:02 -05:00
Jose Carlos Venegas Munoz
2c624b12e1 obs: distros: Update ubuntu repositories
When CI (re)create repos, this does not provide ubuntu
updates.

- Ubuntu 16.04 requiere enable more repositories to
get latest gcc and allow build with golang.

- Add support to define multiple repositories

Repositories are comma separated in distros file.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 10:09:02 -05:00
Jose Carlos Venegas Munoz
faf9d846bf build-pkgs: Dont create image again
If image is already uploaded to github dont build it again.

This Reduce pipeline time.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 10:09:02 -05:00
Graham Whaley
b5b1c38bc4 Merge pull request #1587 from jodh-intel/add-test-skip-utils
Add test skip utils
2019-05-03 16:04:26 +01:00
Jose Carlos Venegas Munoz
8c56ee027a obs: docker: build without quiet mode
Some CI system timeout after some time of not output.

- Remove unused build variable
- remove quiet from  image build, to know what is doing.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 10:01:16 -05:00
Jose Carlos Venegas Munoz
c7225fe0c8 obs: Remove golang from osc dockerfile
Reduce pipeline time by not installing golang.

golang is not needed to use osc, it makes slower the image creation.

- remove go dependency from pacakge lib

Remove calls to golang, this will be not not installed in
the docker image.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 10:01:16 -05:00
Salvador Fuentes
01238997d0 Merge pull request #454 from jcvenegas/packages-no-git-hash
packages: Remove git hash from version
2019-05-03 08:46:19 -05:00
James O. D. Hunt
b1af8deaec docs: Rename conduit to linkerd
The conduit project seems to have renamed itself to linkerd so update
the service mesh document to reflect that.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-03 14:43:26 +01:00
James O. D. Hunt
9a99899861 docs: Fix markdown
Resolve issues in the markdown files in this repo.

Fixes #433.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-03 14:43:24 +01:00
Jose Carlos Venegas Munoz
4b43071aae pkglib: change short commit length
change short commit length to be the same to OBS.

Now that runtime has a strict depedency version from packages.

Like qemu-lite:

Now:
qemu-lite = 2.11.0+git.87517af

Before:
qemu-lite >= 2.11.0+git.87517af

The rpm fails because the real package version of qemu lite is

2.11.0+git.87517afd72

The commit length comes from the format of OBS '%h'

This change the shortcommit length to be the same to OBS
and runtime dependencies and packages that include git commit
as version use the same format.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-03 00:10:59 -05:00
Jose Carlos Venegas Munoz
ac7eb355e4 image: build: rename varaible
kata_osbuilder_vesion is already defined in versions.txt

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-02 23:45:24 -05:00
Jose Carlos Venegas Munoz
25496caf18 image: build: fix agent version.
If agent version is not defined use versions.txt

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-02 23:45:24 -05:00
Jose Carlos Venegas Munoz
b4732a9bf9 pkgs: factor out commit size for image version.
Image tarball size is the same as the one defined
in lib, factor out to avoid future errors if is modified.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-02 23:45:24 -05:00
Jose Carlos Venegas Munoz
f8189fa9be pkgs: remove git hash from version
When a repository holds more than one kata version
it is difficult to ask dnf or zypper for a kata version
because the version includes a git commit.

This commit removes the sha from the package version.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-02 23:40:02 -05:00
Jose Carlos Venegas Munoz
e73473fc75 pkgs: restrict dependencies for runtime.
The runtime requiere the componets that were
build in are release. If other versions is used
it may fail.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-02 23:40:02 -05:00
Jose Carlos Venegas Munoz
7322f034b4 runtime: obs: remove unused variable
remove unused variable from spec

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-02 23:40:02 -05:00
Alex Price
709feac057 mounts: fix isSystemMount check for mountSharedDirMounts
This change updates the isSystemMount check for mountSharedDirMounts
when setting up shared directory mounts for the container and uses
the source of the mount instead of the destination for the check.

We want to exclude system mounts from the host side as they
shouldn't be mounted into the container.

We do however want to allow system mounts within the
container as denying them can prevent some containers from
running properly.

Fixes #1591

Signed-off-by: Alex Price <aprice@atlassian.com>
2019-05-03 12:17:36 +10:00
Eric Ernst
fada1e94b0 Merge pull request #1614 from mcastelino/topic/firecracker_015
firecracker: Add support for v0.15.x
2019-05-02 17:37:53 -06:00
Eric Ernst
2051dac527 Merge pull request #1615 from mcastelino/topic/fc_cpu_mem
firecracker: Add support for default VM configuration
2019-05-02 15:22:03 -06:00
GabyCT
6f15e34835 Merge pull request #476 from jcvenegas/fix-qemu-vanilla
pkg: qemu-vanilla: organize patches per version.
2019-05-02 16:18:40 -05:00
James O. D. Hunt
31b9a23da0 Merge pull request #279 from jodh-intel/fix-markdown
docs: Fix markdown
2019-05-02 18:06:14 +01:00
Manohar Castelino
b496f3f71d firecracker: Add support for default VM configuration
Kata support specifing the default VM configuration via
configuration.toml. This allows the system or cluster admin
to choose the default (i.e minimum) size of the VM.

Add support in kata to respect the VM configuration for firecracker.

Also refactor some code to make error handling uniform.

Fixes: #1594

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-05-02 17:06:11 +00:00
Manohar Castelino
f75b7fed7e firecracker: Add support for v0.15.x
Add support for v0.15.x. Change the drive naming scheme to match
the requirement of v0.15.x

Fixes: #1598

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-05-02 16:47:15 +00:00
Jose Carlos Venegas Munoz
235a3bc147 snap: Avoid collition name for qemu dir.
Use a different repo dir for qemu to avoid conflicts
with qemu dir.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-02 10:08:33 -05:00
James O. D. Hunt
23f7cfa9f4 tests: Update test code to use test constraints
Updated the test code to use the new test constraints feature.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-02 15:42:35 +01:00
James O. D. Hunt
8e144e08e6 pkg: Add test constraints feature
Enhance the `katatestutils` package to provide the ability to skip
tests based on either user or distro the tests are running on.

Fixes #1586.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-02 15:42:33 +01:00
Graham Whaley
67e925390b Merge pull request #454 from wdavidw/patch-2
Typo in the installation user guides README
2019-05-02 14:21:18 +01:00
Worms David
072be82400 install: typo in the installation user guides README
This is a quick typo correction.
Fixes: #455
Signed-off-by: david@adaltas.com
2019-05-02 16:01:43 +03:00
Leopold Schabel
0721b6a2e9 docs: Clarify security boundaries in privileged mode
See https://github.com/kata-containers/runtime/issues/1568

Fixes #453

Signed-off-by: Leopold Schabel <mail@leoschabel.de>
2019-05-02 11:33:05 +00:00
Leopold Schabel
adc0462a88 docs: Fix typo in "Definition of a limitation" header
This commit fixes a typo in Limitations.md

Signed-off-by: Leopold Schabel <mail@leoschabel.de>
2019-05-02 11:32:46 +00:00
James O. D. Hunt
570eff653f Merge pull request #1610 from jodh-intel/fix-virtcontainers-makefile
build: Fix virtcontainers static check make target
2019-05-01 17:11:59 +01:00
Stefan Hajnoczi
d690dff164 config: add virtio_fs_daemon string
Add a config option for the virtio-fs vhost-user daemon path.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-05-01 10:55:31 -04:00
Stefan Hajnoczi
9e87fa21cf config: add shared_fs option
Add a config option to select between virtio-9p and virtiofs.  This
option currently has no effect and will be used in a later patch.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-05-01 10:55:31 -04:00
James O. D. Hunt
c5a17f7f4f docs: Fix markdown
Resolve issues with markdown in this repo.

Fixes #278.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-05-01 15:46:40 +01:00
James O. D. Hunt
ac6d19aba1 Merge pull request #284 from marcov/install-nsdax
make: add nsdax source to install-scripts target
2019-05-01 15:43:01 +01:00
Stefan Hajnoczi
0217077a36 vendor: update govmm
Shortlog:
b3e7a9e Merge pull request #91 from stefanha/virtio-fs-cache-size-mb
058cda0 qemu: use MiB instead of Gib for virtio-fs cache size

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-05-01 09:59:53 -04:00
James O. D. Hunt
2f020f5a52 Merge pull request #1597 from devimc/topic/virtcontainers/ShimPrintsAgentLogs
virtcontainers: Use shim to print the agent logs if there is no proxy
2019-05-01 14:47:48 +01:00
Jose Carlos Venegas Munoz
f059385409 pkg: qemu-vanilla: organize patches per version.
If we apply patches directly to qemu package
this will fail unless we use qemu 4.0 (not yet today).

This patch organize qemu patches per version. For following
PRs we should make scripts aware of this and apply the right
set of patches.

Fixes: #475

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-05-01 08:30:58 -05:00
Fupan Li
98d60532ec Merge pull request #1601 from Ace-Tang/exit_status
shim v2: fix set status when container exit
2019-05-01 19:51:29 +08:00
GabyCT
4f851abf3a Merge pull request #472 from devimc/topic/qemu-vanilla/addKataPatches
qemu-vanilla: add patches required in qemu 4.0 to run kata containers
2019-04-30 15:33:14 -05:00
Julio Montes
8ae5c07846 Merge pull request #468 from nitkon/fixsnap
snap: Container fails to start on ppc64le
2019-04-30 11:27:25 -05:00
Marco Vedovati
1710157296 Merge pull request #449 from GabyCT/topic/removeps
docs: Remove ps command from Limitations
2019-04-30 15:00:01 +02:00
James O. D. Hunt
9f87e7870c build: Fix virtcontainers static check make target
The virtcontainers `Makefile` was referencing an old script to handle
static checks. Although these are still run if `make` is invoked at the
top-level, correct the error.

Fixes #1609.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-30 09:18:22 +01:00
Hui Zhu
4cc8e1a2d0 Merge pull request #1599 from Ace-Tang/list
cli: do not fail on list when some containers bust
2019-04-30 16:01:16 +08:00
Wei Zhang
341a988e06 persist: simplify persist api
Fixes #803

Simplify new store API to make the code easier to understand and use.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-30 11:54:42 +08:00
Julio Montes
fa5de87d84 virtcontainers: fix invalid CPU topology
sockets * cores * threads should be equal to maxcpus otherwise a
warning is thrown: 'warning: Invalid CPU topology deprecated:
    sockets * cores * threads != maxcpus'

This warning in the future will be an error and won't be possible to run
kata containers.

fixes #1605

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-29 15:13:53 -05:00
Julio Montes
b8b0648ce6 Merge pull request #470 from nitkon/patch-1
README: Update with correct install snap command
2019-04-29 13:15:36 -05:00
Julio Montes
5c8d55c63f qemu-vanilla: add patches required in qemu 4.0 to run kata containers
Add kata specific patches for qemu 4.0:
* 9p optimization
* vm-templating patch

fixes #471

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-29 11:21:05 -05:00
Nitesh Konkar
725696df58 README: Update with correct install snap command
Improve README and update with
correct install snap command.

Fixes:  #469

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-04-29 20:21:07 +05:30
Nitesh Konkar
787ec663ff snap: Container fails to start on ppc64le
On ppc64le, qemu installed inside a snap image
is qemu-system-ppc64, but referred in config.toml
as qemu-system-ppc64le.

Fixes #467

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-04-29 19:02:01 +05:30
Ace-Tang
b7f51be8ce cli: do not fail on list when some containers bust
kata-runtime list command should list all valid container, not fail
when some containers information uncorrent, like rootfs not found.

Fixes: #1592

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-04-29 17:04:15 +08:00
James O. D. Hunt
24dbcbe88a Merge pull request #273 from devimc/topic/removeLogs
rootfs-builder: remove /var/log
2019-04-29 09:29:47 +01:00
James O. D. Hunt
539e5d0fc8 Merge pull request #465 from jcvenegas/qemu-4.0-pkgs
qemu-vanilla: pkg: Fix build for qemu 4.0
2019-04-29 09:27:49 +01:00
Gabriela Cervantes
48c0343c4f docs: Remove ps command from Limitations
Remove the link of ps command from Limitations document.

Fixes #324

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-04-29 03:22:32 -05:00
Ace-Tang
854cc86e8d shimv2: fix set status when container exit
in wait function, should send msg to exit channel after task status has
updated, since shim.Wait() is running in another goroutine, when it
receive msg from exit channel, it will stop waiting and return, then
someone who hold this Wait() get return, it can delete task, if exit msg
is send first, the container status may still be running.

Fixes: #1600

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-04-29 13:22:26 +08:00
Salvador Fuentes
5404d4e846 Merge pull request #439 from GabyCT/topic/updatedocrhel
docs: Update RHEL documentation
2019-04-26 14:09:36 -05:00
Jose Carlos Venegas Munoz
fbc4ea5049 qemu-vanilla: pkg: Fix build for qemu 4.0
Simplify qemu rpm list  files using wildcard
this will help to build different qemu versions
without change all the list of files.

- Exclude not needed binaries.

Kata does not use helper binaries, and
4.0 build has a missing qemu-ga by default,
excluding files does not fail if the file exist or not.

Fixes: #464

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-04-26 13:42:19 -05:00
Julio Montes
582f20f489 virtcontainers: Use shim to print the agent logs if there is no proxy
The proxy is in charge to print the agent logs, but when `use_vsocks` is true
the runtime doesn't start the proxy, because it's not needed, hence the agent
logs are ignored. To mitigate this limitation and to make the debugging
processes easier, the fist shim started (the one who monitors the sandbox)
will read the console.sock and print the agent logs.

Depends-on: github.com/kata-containers/shim#172

fixes #1596

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-26 13:15:44 -05:00
Salvador Fuentes
0aa90554e4 Merge pull request #434 from jcvenegas/bump-pipeline
ci: Add bump release pipeline
2019-04-26 11:34:46 -05:00
GabyCT
51d1000257 Merge pull request #463 from devimc/topic/scripts/configureQemu4
scripts: improve configure-hypervisor.sh
2019-04-26 11:09:31 -05:00
Jose Carlos Venegas Munoz
b3cb1fac48 ci: Add bump release pipeline
Add pipeline to bump repos in Kata

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-04-26 09:24:17 -05:00
GabyCT
1deb4d2d80 Merge pull request #447 from jodh-intel/fix-debian-docker-install
Fix debian docker install
2019-04-26 08:53:59 -05:00
Marco Vedovati
7cfe5b4dd2 image-builder: set default value of AGENT_INIT
Set as default AGENT_INIT=no when not explicitly set, to make it
consistent with the other scripts in osbuilder

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-04-26 15:22:50 +02:00
Marco Vedovati
0013352d9b make: add nsdax source to install-scripts target
nsdax.gpl.c is required by image_builder.sh

Fixes: #283

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-04-26 15:20:18 +02:00
Julio Montes
c0f0fc9f9b scripts: improve configure-hypervisor.sh
Change weird condition to check qemu >=3.1
Add comment explaining the malloc-trim option.

fixes #462

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-26 07:34:48 -05:00
Julio Montes
b5eaf1f847 Merge pull request #448 from alicefr/hw-options
s390x: enable rnd hw generator option
2019-04-26 07:06:46 -05:00
James O. D. Hunt
2f3a8f51f7 docs: Fix outdent in Debian install guide
Remove the outdent in the Debian install guide.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-26 11:07:19 +01:00
James O. D. Hunt
b3a74db28f docs: Fix whitespace in Ubuntu install guide
Fix missing newline.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-26 11:06:53 +01:00
James O. D. Hunt
a943be8da1 docs: Fix indent in docker install guides
Don't indent unnecessarily.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-26 11:02:56 +01:00
James O. D. Hunt
74bbd537d9 docs: Fix debian docker install
Fix installing docker on Debian by changing the docker install guide to
ensure that only the `kata-containers.conf` systemd service snippet is
created. Previously, both the snippet and the `daemon.json` Docker
config files were being updated because the latter also specified a bash
code block.

Note that the `daemon.json` section is now consistent with the other
install guides - it just displays the JSON code to add rather than
trying to set it.

Also, added missing shell prompts, changed code blocks into shell (but
not bash) code blocks and fixed a few minor grammar and whitespace
issues.

For further details, see:

- https://github.com/kata-containers/documentation/blob/master/Documentation-Requirements.md
- https://github.com/kata-containers/tests/tree/master/cmd/kata-manager

Fixes #442.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-26 11:02:56 +01:00
James O. D. Hunt
adb1ca046f docs: Make SLES docker guide consistent
Fix wording to make the SUSE SLES docker install guide consistent with
the others.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-26 11:02:56 +01:00
James O. D. Hunt
2d76821f42 docs: Make CentOS docker guide consistent
Fix wording in CentOS docker install guide to make it consistent with
the others.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-26 11:02:38 +01:00
Alice Frosi
3d28166c09 s390x: enable rnd hw generator option
In order to create enough entropy, the kernel needs to use the hw rnd
generator

Fixes: #447

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-04-26 11:07:25 +02:00
Eric Ernst
437b3cb2f7 Merge pull request #1585 from rbradford/nemu-release-with-virtiofs
versions: Bump NEMU version to latest release
2019-04-25 21:12:55 -07:00
GabyCT
c7ca17a2be Merge pull request #460 from devimc/topic/scripts/configureQemu4
scripts: support Qemu 4
2019-04-25 15:37:40 -05:00
Julio Montes
fd76d64f2e scripts: support Qemu 4
modify configure-hypervisor.sh to support Qemu 4 and enable `malloc-trim`
for memory optimization.

fixes #459

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-25 13:46:25 -05:00
Archana Shinde
b5aa8d4f67 Merge pull request #1577 from chavafg/topic/revert-mount-pr
Revert "vc: change container rootfs to be a mount"
2019-04-25 09:41:15 -07:00
GabyCT
4115942ee1 Merge pull request #405 from jcvenegas/releae-1.6.0-changes
Release improvements
2019-04-25 09:48:10 -05:00
GabyCT
8ae6755bc8 Merge pull request #451 from jcvenegas/kernel-patches-per-version
kernel: use patches per kernel version.
2019-04-25 09:47:12 -05:00
Graham Whaley
f4fe31e74d Merge pull request #1442 from jodh-intel/add-agent-trace-support
Add agent trace support
2019-04-25 14:12:54 +01:00
Rob Bradford
da0ae03222 versions: Bump NEMU version to latest release
This release is based off of QEMU 4.0 and also includes support for
virtio-fs.

Fixes: #1580

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2019-04-25 12:35:10 +01:00
James O. D. Hunt
ed64240df2 agent: Support Kata agent tracing
Add configuration options to support the various Kata agent tracing
modes and types. See the comments in the built configuration files for
details:

- `cli/config/configuration-fc.toml`
- `cli/config/configuration-qemu.toml`

Fixes #1369.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-25 09:41:13 +01:00
James O. D. Hunt
b573d9bcb9 vendor: Update for agent tracing and fix issues
Updated the agent vendoring for `StartTracing` and `StopTracing`. This
only changed a single file - the auto-generated gRPC protocol
buffer file.

This change resolves four vendoring issues:

- The github.com/kubernetes-incubator/cri-o project was renamed to
  github.com/cri-o/cri-o. Although github redirects, `dep` complains that
  it cannot find the old `github.com/kubernetes-incubator/cri-o` files
  under `vendor/` so remove the old config, relying on the existing (and
  in other respects identical) `dep` config.

- There was a stale dependency on `github.com/clearcontainers/proxy`
  which should have been removed when the Clear Containers code was
  excised.

- The latest version of the agent code vendored into the runtime prior
  to this commit was a merge commit (commit
  `48dd1c031530fce9bf16b0f6a7305979cedd8fc9`). This somehow confused `dep`
  which did *not* correctly pull in the latest version of the
  auto-generated gRPC code
  (`vendor/github.com/kata-containers/agent/protocols/grpc/agent.pb.go`).
  This is clear because commit `48dd1c031530fce9bf16b0f6a7305979cedd8fc9`
  is newer than the agent commit that introduced the `StartTracing` and
  `StopTracing` APIs (`00cf907afcb7c8e56f077cf45ae3615f612fdc9d`).

  Resolving the other two issues above seems to have resolved this issue
  as the correct version of this file has now been included in the
  vendoring, however note there is no change to the `dep` files as this
  version of `agent.pb.go` should already have been included (!)

- Updating `agent.pb.go` also removed the `AddInterface` and
  `RemoveInterface` API calls which should again also have been removed
  already.

  Updated tests to remove these redundant calls.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-25 09:40:02 +01:00
Jose Carlos Venegas Munoz
c932a6e8dd improvement: obs: remove versions file.
The file is autogenerated lets remove it.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-04-24 16:26:41 -05:00
Jose Carlos Venegas Munoz
0a5b917c92 improvement: docs: Update release documentation
- Add information about package testing pipelines

- Fix release notes command

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-04-24 16:26:41 -05:00
Jose Carlos Venegas Munoz
7ea630ea85 kernel: config: bump
bump config version

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-04-24 16:25:13 -05:00
Jose Carlos Venegas Munoz
dce0558ec6 kernel: use patches per kernel version.
Using only one directory to hold kernel patches lead to
difficult maintenance. Instead use a list of patches per
kernel version.

If patches for a kernel version does not exist, dont fail.

Fixes: #308

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-04-24 16:25:13 -05:00
Archana Shinde
891692b6a6 Merge pull request #445 from amshinde/add-runtimeclass-deploy
kata-deploy: Add runtimeclass yaml to kata-deploy
2019-04-24 13:37:55 -07:00
Archana Shinde
0abcb6a0c1 kata-deploy: Add runtimeclass yaml
Add the yaml for kata RuntimeClasses. It is useful to
include this explicitly, rather than just having it in the docs.
Also, this feature has transitioned from alpha to beta from k8s 1.13
to 1.14. Hence maintain separate yamls for these versions.

Fixes #444

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-04-24 11:24:45 -07:00
GabyCT
8e87566613 Merge pull request #449 from nitkon/master
Readme: Update readme with snap remove command
2019-04-24 12:05:55 -05:00
James O. D. Hunt
b309dc5480 agent: Provide explicit config options for the agent
Previously, the agent behaviour was controlled entirely using the
`kernel_params=` config option. This mechanism suffers from a subtle
problem - the runtime is not aware of how the agent will behave.

From now on, all significant agent options will be controlled from the
agent section in the configuration file. This allows the runtime to be
more aware of -- and in control of -- such agent settings. It would also
allow the underlying kernel CLI options to be modified in the future if
required.

This PR adds the only useful agent option as an explicit option by
adding an `enable_debug=true` option to the Kata agent section in
`configuration.toml`. This allows controlling agent debug to be handled
in the same manner as the other debug options.

This change is somewhat foundational: it permits the agent to be handled
consistently with other config file sections which is useful, but
arguably not essential (the old way worked). However, the new way of
handling agent options will be essential when introducing agent tracing
control as the runtime must be aware of the agent trace mode to allow
the runtime to modify its behaviour accordingly.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-24 17:14:01 +01:00
James O. D. Hunt
87d91710b9 utils: Remove code duplication
Replace the two versions of `makeRuntimeConfigFileData()` with a single
`MakeRuntimeConfigFileData()` in a new `katatestutils` package and a new
`katautils.GetDefaultHypervisorConfig()` to query the default hypervisor
details.

This isn't ideal but a new package had to be created to avoid circular
dependencies. It was also required since test code cannot be exported
from a package.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-24 17:14:01 +01:00
James O. D. Hunt
ed248cef3b shim: Removed unused type and correct error message
Removed the unused `KataShimConfig` type and updated an error message
that incorrectly mentioned it.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-24 17:14:01 +01:00
James O. D. Hunt
97beb2b2d4 errors: Create a new standard error for invalid config
Refactor a common error into a new standard error object.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-24 17:14:01 +01:00
James O. D. Hunt
e803a7f870 agent: Return an error, not just an interface
Make `newAgentConfig()` return an explicit error rather than handling
the error scenario by simply returning the `error` object in the
`interface{}` return type. The old behaviour was confusing and
inconsistent with the other functions creating a new config type (shim,
proxy, etc).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-24 17:14:01 +01:00
Nitesh Konkar
3305e3bd27 Readme: Update readme with snap remove command
Update Readme with command on
how to remove snap after installing it.

Fixes: #446

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-04-24 20:18:35 +05:30
Graham Whaley
df57d05865 Merge pull request #441 from Remy-xl/doc-link
Docs: Update link in containerd-kata.md
2019-04-24 10:33:05 +01:00
Graham Whaley
d8c7a9629f Merge pull request #438 from Remy-xl/master
Docs: update Build-a-custom-QEMU in Developer-Guide
2019-04-24 10:17:57 +01:00
xulei
32cbce67c9 Docs: Update link in containerd-kata.md
update the link of shimv2.svg

Fixes: #440

Signed-off-by: Lei Xu <xulei@cmss.chinamobile.com>
2019-04-24 13:54:56 +08:00
GabyCT
f93eb2315d Merge pull request #424 from neonsea/consistent-arch-cmd
packaging: replace `arch` with `uname -m`
2019-04-23 16:04:36 -05:00
GabyCT
5b27d85358 Merge pull request #436 from jodh-intel/fix-markdown
docs: Fix markdown
2019-04-23 15:52:11 -05:00
GabyCT
259a7b28ed Merge pull request #441 from devimc/topic/snap/1.7.0-alpha1
snap: release 1.7.0-alpha1
2019-04-23 13:29:56 -05:00
Salvador Fuentes
b162a1da3b Merge pull request #426 from GabyCT/topic/fixsles
doc: Update SLES installation documentation
2019-04-23 12:46:45 -05:00
Julio Montes
63e1c440a1 Merge pull request #1393 from zhabinecho/noarp-feature
network: pass network interface RawFlags to agent
2019-04-23 12:14:49 -05:00
Julio Montes
cfead00a9d ci: don't run vm-factory tets in snap CI
vm-factory tests are not working in the snap CI, skip them
to make the snap CI happy again.

see https://github.com/kata-containers/tests/issues/1495

fixes #442

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-23 11:42:53 -05:00
Salvador Fuentes
bc9b9e2af6 vc: Revert "vc: change container rootfs to be a mount"
This reverts commit 196661bc0d.

Reverting because cri-o with devicemapper started
to fail after this commit was merged.

Fixes: #1574.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-04-23 08:56:36 -05:00
Julio Montes
8a9cc94498 snap: release 1.7.0-alpha1
bump snap version to 1.7.0-alpha1

fixes #439

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-23 08:04:13 -05:00
Gabriela Cervantes
40b040b26e docs: Update RHEL documentation
RHEL now is being part of the CI.

Fixes #415

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-04-23 05:54:23 -05:00
Hui Zhu
0c5cfcd302 Merge pull request #1565 from jodh-intel/fix-markdown
Fix markdown
2019-04-23 12:52:09 +08:00
Zha Bin
dd0808ae54 network: pass network interface RawFlags to agent
In order to support NOARP in ipvlan interface, the runtime
will pass the rawflags to agent, which also apply to other
network interfaces, not just ipvlan.

Fixes: #1391

Signed-off-by: Zha Bin <zhabin@linux.alibaba.com>
2019-04-23 09:42:00 +08:00
Hui Zhu
74fb9ff570 Merge pull request #1541 from stefanha/fix-parallel-make
Fix parallel make
2019-04-23 09:09:02 +08:00
Julio Montes
77309f4982 Merge pull request #1519 from saschagrunert/patch-1
Update golang to 1.12.3
2019-04-22 09:13:42 -05:00
Rasmus Moorats
3f6b64d805 packaging: replace arch with uname -m
All instances of the deprecated `arch` command are now replaced with `uname -m`.

Bumps kernel/kata_config_version to 34.

Fixes: #423

Signed-off-by: Rasmus Moorats <me@neonsea.uk>
2019-04-21 06:34:44 +01:00
Xu Wang
b850ab85e2 Merge pull request #1567 from bergwolf/mount
vc: change container rootfs to be a mount
2019-04-21 12:29:16 +08:00
Peng Tao
196661bc0d vc: change container rootfs to be a mount
We can use the same data structure to describe both of them.
So that we can handle them similarly.

Fixes: #1566

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-20 00:42:25 -07:00
Xu Wang
b218229589 Merge pull request #883 from WeiZhang555/rfc-persist-data-standard-wip
persist: baseline persist data format
2019-04-20 11:54:48 +08:00
Wei Zhang
989b3737c7 docs: fix lisence header to 2019
Modify lisense header from 2018 to 2019.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-20 10:04:30 +08:00
Remy-xl
5095be72fa Docs: update Build-a-custom-QEMU in Developer-Guide
Add how to get kata-containers/qemu and checkout to a proper version in developer-guide

Fixes: #437

Signed-off-by: Lei Xu <xulei@cmss.chinamobile.com>
2019-04-19 23:47:32 +08:00
Fupan Li
fe6ff5c042 Merge pull request #1550 from teawater/template_path
factory: Add new factory option template_path
2019-04-19 17:20:47 +08:00
Wei Zhang
3262da0207 bugfix: fix potential panic
* Fix potential panic by nil pointer.
* Address comments.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 16:03:50 +08:00
Wei Zhang
9bd4e5008c store: address comments
Address review comments

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 15:38:10 +08:00
Wei Zhang
0f52c8b56d test: add unit test for new FS storage driver
add more unit tests.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 15:37:33 +08:00
Wei Zhang
02f21228dd test: fix unit test
For experimental features, state.json won't be updated, so modify some
unit test to skip.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 15:37:33 +08:00
Wei Zhang
e40dcb9376 storage: set new storage driver as "experimental"
Set new persist storage driver "virtcontainers/persist/" as "experimental"
feature.
One day when this can fully work and we're ready to move to 2.0, we'll move
it from "experimental" feature to formal feature.
At that time, the "virtcontainers/filesystem_resource_storage.go" can be removed
completely.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 15:35:33 +08:00
Wei Zhang
504c706bea storage: address comments
Address some comments:
* fix persist driver func names for better understanding
* modify some logic, add some returned error etc

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 15:33:53 +08:00
Wei Zhang
6e4149d86c persist: save and restore state from persist.json
Save and restore state from persist.json instead of state.json

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 15:33:53 +08:00
Wei Zhang
039ed4eeb8 persist: persist device data
Persist device information to relative file

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 15:33:53 +08:00
Wei Zhang
b42fde69c0 persist: demo code for persist api
Demonstrate how to make use of `virtcontainer/persist/api` data structure
package.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 15:33:53 +08:00
Wei Zhang
e14ffb40cf persist: baseline persist data format
Fixes #803

The disk persist data should be "versioned" and baselined, any modification in
persist data should be considered potential break of backward compatibility.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-04-19 15:33:53 +08:00
Hui Zhu
ae40622f60 Merge pull request #435 from yuwang888/master
README: Update README.md for link of VM Templating
2019-04-19 14:50:05 +08:00
WangYu
a83849e8b9 README: Update README.md for link of VM Templating
correct the link of VM Templating
Fixes: #436

Signed-off-by: WangYu <WangYu@linux.alibaba.com>
2019-04-19 14:23:44 +08:00
Hui Zhu
925193fb3e Merge pull request #1563 from bergwolf/blockIndex
vc: remove BlockIndex from container state
2019-04-19 13:54:08 +08:00
Hui Zhu
0549a70d93 factory: Add new factory option template_path
Add new factory option template_path that specifies the path of template.

Fixes: #1549

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-04-19 11:31:18 +08:00
Fupan Li
3bdc40bfd0 Merge pull request #1547 from teawater/vmtemplate_init_check
factory: Check if vm templateing is on before vm templateing initialize
2019-04-19 10:19:14 +08:00
Archana Shinde
f6b8387814 devices: Skip floppy drives while passing devices to guest
In privileged mode, all host devices are supposed to be passed
to the container in config.json. Skip floppy drives.

Fixes #1551

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-04-18 11:26:07 -07:00
James O. D. Hunt
63776a197a docs: Fix markdown
Resolve issues in the markdown files in this repo.

Fixes #435.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-18 16:00:17 +01:00
James O. D. Hunt
82d105f759 doc: Fix markdown
Resolve a number of syntax issues that were lurking in the markdown.

Fixes: #1564.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-18 15:50:34 +01:00
James O. D. Hunt
1a0a4bc049 doc: Fix broken internal link
Link addresses must be all lower case to work.

Partially fixes: #1564.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-18 15:50:26 +01:00
James O. D. Hunt
92edeb11c6 doc: Simplify note
It seems that codeblocks inside block quotes are not well understood by
markdown parsers, so simplify by removing the codeblock in the note -
the note is clear enough without labouring the point.

Partially fixes: #1564.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-04-18 15:50:23 +01:00
Xu Wang
ed0dfa37a4 Merge pull request #432 from Remy-xl/master
Update README.md for GPU-Passthrough-with-Kata
2019-04-18 18:00:36 +08:00
Remy-xl
17e0919a2b README: Update README.md for GPU-Passthrough-with-Kata
Fixes: #431

GPU-Passthrough-with-Kata link to a error address.

Signed-off-by: Lei Xu <xulei@cmss.chinamobile.com>
2019-04-18 17:50:26 +08:00
Xu Wang
9dc2191451 Merge pull request #430 from Remy-xl/master
Zun: add zun-ui plugin for devstack
2019-04-18 15:21:39 +08:00
Remy-xl
9c8a087a58 Zun: add zun-ui plugin for devstack
Fixes: #429

Add zun-ui plugin for devstack when intergrated with zun.

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

Signed-off-by: Lei Xu <xulei@cmss.chinamobile.com>
2019-04-18 15:12:29 +08:00
Peng Tao
203728676a vc: remove BlockIndex from container state
No longer used.

Fixes: #1562

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-17 22:39:42 -07:00
Hui Zhu
76a5076e56 template: Add check if vm template is on before vm template initialize
Add check if vm template is on before vm template initialize.

Fixes: #1514

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-04-18 10:53:08 +08:00
Eric Ernst
8097c54e79 Firecracker: update to version v0.15.2
Fixes: #1559

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-04-17 16:09:40 -07:00
Eric Ernst
717a30bfe0 Merge pull request #1556 from katacontainersbot/1.7.0-alpha1-branch-bump
# Kata Containers 1.7.0-alpha1
2019-04-17 13:26:18 -07:00
Eric Ernst
d5fbd1c25f Merge pull request #277 from katacontainersbot/1.7.0-alpha1-branch-bump
# Kata Containers 1.7.0-alpha1
2019-04-17 13:23:54 -07:00
katacontainers bot
0ec4d799f8 release: Kata Containers 1.7.0-alpha1
- s390x: fix gofmt complain
- factory: Make VMCache and VM templating can work together
- agent: pass correct mount type to agent for ephemeral volumes
- network: Make tcfilter model as default
- netmon: Fix bug in how routes are converted
- shimv2 should return grpc error codes
- Deprecate hyperstart, CC shim, and CC proxy
- virtcontainers: inherit parent's CPU constraint
- fix ut failure due to incorrect cleanup and make it runnable with non-root
- storage: create k8s emptyDir inside VM
- virtcontainers: prepend a kata specific string to host cgroups path
- Factory: enable template feature for arm64
- cli: fix kata-check test
- shimv2: fix the issue of stop container failed
- split sandbox/container state
- Make factory can control VMCache server
- vc: remove spawner
- s390x: fix golangci-lint complains
- qemu: Remove the storage directories if qemu get from the factory
- katautils: fix the issue of missing proxy debug config
- vendor: update govmm
- virtcontainers: Use only supported namespaces
- cri-o: Update repository URLs
- travis: use xenial
- runtime: support memory hotplug via probe interface on aarch64
- s390x: not set socketID and threadID
- config: fix panic in type assertion
- Fix yq issues

a013f9b s390x: fix gofmt complain
3852682 network: Change the package level network default
33bae70 network: Make tcfilter model as default
343a0d3 factory: Make VMCache and VM templating can work together
b08ab6a vc: modify ioctl function to handle shim test
c425079 vc: Deprecate CC proxy and shim
c658770 vc: remove virtc api cli
d4ef9c0 vc: deprecate hyperstart agent
8abd2ec netmon: Fix bug in how routes are converted
59e3956 virtcontainers: inherit parent's CPU constraint
f512542 sandbox: return ErrNoSuchContainer when failing to find a container
8215a3c shimv2: convert vc errors to grpc errors
cf90751 vc: export vc error types
9040f6a ut: fix UT failure due to incorrect cleanup
a0f49a9 ut: fix UT failure due to non-root
1a1f93b virtcontainers: add a kata specific prefix to host cgroups path
f7223c6 shimv2: fix the issue of stop container failed
76c4639 storage: create k8s emptyDir inside VM
98687a3 Template: enable template for arm64
16fe855 qemu: Remove the storage directories if qemu get from the factory
ace8115 factory: Make factory status can show status of VMCache server
f639787 factory: Make factory destroy can stop VMCache server
9ac6831 cli: fix kata-check test
a63013d vc: remove spawner
c414599 types: remove pid from sandbox state
03ee25d agent: treat container as shared pidns whenever it has pidns path
616f26c types: split sandbox and container state
8041fc9 katautils: fix the issue of missing proxy debug config
bb347ac vendor: update govmm
0b430dc virtcontainers: Use only supported namespaces
e31b040 cri-o: Update repository URL
ea1df84 travis: use xenial
b50292a arm64: dep ensure to keep track of the revisons in kata agent
3bfcdf7 agent: add interface memHotplugByProbe
47670fc memoryDevice: reconstruct memoryDevice
30a6a7d agent: acquire memory hotplug probe info via GetGuestDetails
4993dff ci: Add a failed execution check for curl
7fa0390 ci: set $yq_version to 2.3.0
19458ec s390x: fix golangci-lint
49be8ee s390x: not set socketID and threadID
1b6affe config: fix panic in type assertion
2d422a8 agent: pass correct mount type to agent for ephemeral volumes
228d151 mount: Add check for k8s host empty directory
70c1931 mounts: Add check for system volumes

Signed-off-by: katacontainers bot <katacontainersbot@katacontainers.io>
2019-04-17 17:39:20 +00:00
katacontainers bot
7465fde308 release: Kata Containers 1.7.0-alpha1
- image-builder: share the mkfs configuration file
- rootfs-builder: add rootfs.sh DOCKER_RUNTIME env var
- rootfs-builder: SELinux relabel container volumes
- image-builder: add fs type
- image-builder: re-implement image builder script
- builder: Pass the DEBUG flag when using docker
- Add chrony to image
- Print attempt number after max check

88b8523 image-builder: share the mkfs configuration file
77fb808 image-builder: check format_loop return code
8debe95 image-builder: add fs type
c72c954 rootfs-builder: add rootfs.sh DOCKER_RUNTIME env var
c1d9510 rootfs-builder: SELinux relabel container volumes
d8cdd88 image-builder: re-implement image builder script
f32ae14 tests: remove DAX env variable
f355c02 tests: enable DEBUG
6c7f307 image-builder: add xfsprogs to Dockerfile
ad6e1a9 scripts: implement error function
0d2ba47 builder: Pass the DEBUG flag when using docker
e16ff37 chrony: Comment out any NTP sources for chrony
3df19ff chrony: Add virtual PTP as source for chrony
ad5d879 rootfs: Print attempt number after max check
8fe6405 rootfs: Include chrony in the Dockerfile images
0b33519 rootfs: add PACKAGE var to debian config
510ddd2 rootfs: Add chrony service to rootfs

Signed-off-by: katacontainers bot <katacontainersbot@katacontainers.io>
2019-04-17 17:38:46 +00:00
Jose Carlos Venegas Munoz
57b1ce9328 Merge pull request #1554 from alicefr/fix-gofmt
s390x: fix gofmt complain
2019-04-17 11:05:16 -05:00
Alice Frosi
a013f9b27b s390x: fix gofmt complain
Fix gofmt complain for virtcontainers/qemu_s390x.go

Fixes: #1553

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-04-17 14:10:09 +02:00
Stefan Hajnoczi
53ebe51f1c build: fix race between 'clean' and generated files
When a parallel build is invoked using "make -j4" there is a race
between EXTRA_DEPS ('clean') and generating files:

  CPU1                             CPU2
  ----                             ----
  create cli/generated-config.go
                                   rm cli/generated-config.go
  go build -> error: generated-config.go doesn't exist!

Previous commits ensured that targets relying on version information
like VERSION and COMMIT declare appropriate dependencies.  Therefore
make is now able to detect changes and rebuild targets as needed.  It is
no longer necessary to abuse the clean target to force a rebuild.

Fixes: #1540
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-04-17 11:59:10 +01:00
Stefan Hajnoczi
7949cd6ebc build: turn COMMIT into a file dependency
Makefile uses $(shell) to build a git commit string.  Unfortunately this
means make targets cannot be rebuilt when COMMIT changes value.  We need
to reflect this string value into files on which make can process
dependencies.

I stole a solution from QEMU's Makefile:
1. Print the string into .git-commit.tmp
2. If .git-commit.tmp differs from .git-commit, copy it to .git-commit
3. Depend on .git-commit from all targets that need $COMMIT

This way targets are only rebuilt if the commit string value actually
changes.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-04-17 11:59:10 +01:00
Stefan Hajnoczi
0f7bb25cf7 build: extract config-generated.go.in from Makefile
Makefile had a template for cli/config-generated.go embedded inside it.
There is already a templating mechanism for .in files.  Using a .in file
is cleaner since it avoids make's awkward interaction with shell
escaping and line splitting.

This patch moves the template into cli/config-generated.go.in and reuses
the existing .in file templating mechanism.  Only the PKGRUNDIR variable
needs to be added.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-04-17 11:59:10 +01:00
Stefan Hajnoczi
1eb5d6c900 build: use MAKEFILE_LIST for a more complete Makefile dependency
Depending on Makefile is not enough to detect all changes.  We must
rebuild when included makefiles change, too.

The MAKEFILE_LIST special variable contains the filenames of all
included makefiles and Makefile itself.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-04-17 11:26:24 +01:00
Stefan Hajnoczi
bbf92533f4 build: add VERSION dependency to netmon target
The netmon target must be rebuilt when the VERSION file changes since it
uses the value of VERSION on the build command-line.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-04-17 11:26:00 +01:00
Stefan Hajnoczi
b20fd9d10e build: remove duplicated COLLECT_SCRIPT from clean
GENERATED_FILES already includes COLLECT_SCRIPT, so there's no need to
specify it again:

  GENERATED_FILES += $(COLLECT_SCRIPT)
  ...
  clean:
    $(QUIET_CLEAN)rm -f ... $(GENERATED_FILES) $(COLLECT_SCRIPT)

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-04-17 11:26:00 +01:00
Fupan Li
5d875be274 Merge pull request #1409 from teawater/vmcache_templating
factory: Make VMCache and VM templating can work together
2019-04-16 23:56:08 +08:00
Peng Tao
168665b9a7 Merge pull request #1439 from YongjiXie/pass-correct-mount-type-for-ephemeral-volumes
agent: pass correct mount type to agent for ephemeral volumes
2019-04-16 15:36:14 +08:00
Archana Shinde
edc77a0263 Merge pull request #1502 from amshinde/make-tc-default
network: Make tcfilter model as default
2019-04-15 11:34:07 -07:00
Archana Shinde
385268226f network: Change the package level network default
Change the package level default network model to tcfilter.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-04-15 09:34:58 -07:00
Archana Shinde
33bae7053f network: Make tcfilter model as default
tcfilter requires no changes to the interface provided by the network
plugin and supports a larger set of plugins.

Fixes #1501

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-04-15 09:34:58 -07:00
Sebastien Boeuf
d75e7fc8ca Merge pull request #1524 from amshinde/fix-netmon-routes-cidr
netmon: Fix bug in how routes are converted
2019-04-15 08:38:15 -06:00
Fupan Li
2b45f0b2fd Merge pull request #1528 from bergwolf/grpc
shimv2 should return grpc error codes
2019-04-15 09:50:10 +08:00
Hui Zhu
343a0d35fe factory: Make VMCache and VM templating can work together
Make VMCache and VM templating can work together.

Fixes: #1376

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-04-13 21:07:39 +08:00
zhangwei_cs
fae022dc64 Merge pull request #1428 from gabibeyer/slashNburn
Deprecate hyperstart, CC shim, and CC proxy
2019-04-13 11:06:23 +08:00
Hui Zhu
6e5957830e Merge pull request #1530 from devimc/topic/virtcontainers/inheritParentCpuCgroup
virtcontainers: inherit parent's CPU constraint
2019-04-13 08:36:26 +08:00
Gabi Beyer
b08ab6ae1f vc: modify ioctl function to handle shim test
The kata shim tests make use of an ioctl function, so instead
of having a custom one within that file, use the ioctl
function in utils/utils_linux

Fixes #1419

Signed-off-by: Gabi Beyer <Gabrielle.n.beyer@intel.com>
2019-04-12 10:48:08 -07:00
Gabi Beyer
c42507903d vc: Deprecate CC proxy and shim
Clear Containers proxy and shim are no longer supported. This
was mentioned in issue #1113. Their functionalities are thus
removed from the runtime.

Fixes #1419

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
2019-04-12 10:48:08 -07:00
Gabi Beyer
c658770891 vc: remove virtc api cli
previously used as a small api client for virtcontainers, virtc
no longer needed.

Fixes #1419

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
2019-04-12 10:48:08 -07:00
Gabi Beyer
d4ef9c05d7 vc: deprecate hyperstart agent
The hyperstart agent has not been supported in kata since 2.1,
so remove it as a component to kata. Mentioned in issue #1113.

Fixes: #1419

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
2019-04-12 10:48:06 -07:00
Julio Montes
d5a759e1cf Merge pull request #1526 from bergwolf/ut-non-root
fix ut failure due to incorrect cleanup and make it runnable with non-root
2019-04-12 12:44:33 -05:00
Archana Shinde
8abd2ec53f netmon: Fix bug in how routes are converted
The agent expects a IP CIDR for the route destination
rather than an IP address. netmon was incorrectly
converting route dest to an IP address and hence
exiting with an error.

We did not have an integration test for netmon with tcfilter mode.
macvtap mode did not uncover this, as with macvtap routes are
not really passed to the agent.
We delete the IP on the veth device, and netmon looks at the
routes after the IP is deleted with macvtap.

Fixes #1523

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-04-12 09:42:47 -07:00
Archana Shinde
9b622b7e77 Merge pull request #1485 from awprice/k8s-empty-dir-local
storage: create k8s emptyDir inside VM
2019-04-12 08:29:18 -07:00
Julio Montes
59e3956397 virtcontainers: inherit parent's CPU constraint
Don't set a default CPU constraint if period and quota are not specified, that
way the container will inherit the CPU constraint from its parent. Container
creation won't fail if the parent CPU constraint is smaller than the default
number of vCPUs.

fixes #1521

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-12 08:59:25 -05:00
Julio Montes
d99693a564 Merge pull request #1518 from lifupan/fixtop
virtcontainers: prepend a kata specific string to host cgroups path
2019-04-12 08:58:38 -05:00
Julio Montes
e15f3e4938 Merge pull request #1337 from jongwu/bypass
Factory: enable template feature for arm64
2019-04-12 07:03:48 -05:00
Peng Tao
f5125421d0 sandbox: return ErrNoSuchContainer when failing to find a container
So that caller can determine that it is ENOENT-alike error.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-12 03:57:07 -07:00
Peng Tao
8215a3ce9a shimv2: convert vc errors to grpc errors
containerd checks for the grpc error code to determine
correct recover action upon grpc errors. We need to provide
them properly.

Unfortunately ttrpc doesn't support grpc interceptor so we have
to modify every service function for it.

Fixes: #1527

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-12 03:57:01 -07:00
Peng Tao
cf90751638 vc: export vc error types
So that shimv2 can convert it into grpc errors.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-12 02:01:02 -07:00
Peng Tao
9040f6a8cd ut: fix UT failure due to incorrect cleanup
cleanup() actually removes all things under testdir and
causes UT failures.

=== RUN   TestCreateMockSandbox
ERRO[0000] Create new sandbox failed                     error="QEMU path (/tmp/vc-tmp-007004370/hypervisor) does not exist" sandbox=7f49d00d-1995-4156-8c79-5f5ab24ce138 sandboxid=7f49d00d-1995-4156-8c79-5f5ab24ce138 source=virtcontainers subsystem=sandbox
exit status 1

Fixes: #1525

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-11 23:33:57 -07:00
Peng Tao
a0f49a91e4 ut: fix UT failure due to non-root
We should allow UT to run without root.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-11 23:21:27 -07:00
lifupan
1a1f93bc78 virtcontainers: add a kata specific prefix to host cgroups path
prepend a kata specific string to oci cgroup path to
form a different cgroup path, thus cAdvisor couldn't
find kata containers cgroup path on host to prevent it
from grabbing the stats data.

Fixes:#1488

Signed-off-by: lifupan <lifupan@gmail.com>
2019-04-12 10:30:19 +08:00
Julio Montes
f758083836 Merge pull request #429 from devimc/topic/ci/snap
ci: run tests using kata snap
2019-04-11 14:13:07 -05:00
Julio Montes
58b799bf9d ci: run tests using kata snap
build, install and test kata containers snap package.

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

fixes #428

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-11 10:01:46 -05:00
Sascha Grunert
e26f342e00 build: Update golang to 1.12.3
This commit bumps the golang version to remove the go modules hash
mismatch between 1.11 and 1.12.

Fixes: #1520

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-04-11 15:41:41 +02:00
Fupan Li
da08b3afc9 Merge pull request #1509 from bergwolf/kata-check
cli: fix kata-check test
2019-04-11 20:13:24 +08:00
Julio Montes
c08976e1a2 Merge pull request #1494 from lifupan/fixstop
shimv2: fix the issue of stop container failed
2019-04-11 07:10:49 -05:00
Julio Montes
dd5c6aa757 Merge pull request #1507 from bergwolf/state
split sandbox/container state
2019-04-11 07:09:23 -05:00
Julio Montes
1d603643e3 Merge pull request #432 from ganeshmaharaj/build-local-kernel-change
kernel: Make sure local versions.yaml file from runtime get precedence
2019-04-11 07:05:46 -05:00
lifupan
f7223c6f00 shimv2: fix the issue of stop container failed
There is no need to send another SIGKILL signal following
SIGTERM signal, otherwise, sending the SIGKILL signal would
get failed since the container process would has been terminated
by the previous SIGTERM signal.

Fixes:#1493

Signed-off-by: lifupan <lifupan@gmail.com>
2019-04-11 18:01:23 +08:00
Fupan Li
6d81e44670 Merge pull request #1437 from teawater/vmcache_grpc
Make factory can control VMCache server
2019-04-11 14:01:47 +08:00
Alex Price
76c4639ada storage: create k8s emptyDir inside VM
This introduces a new storage type: local. Local storage type will
tell the kata-agent to create an empty directory in the sandbox
directory within the VM.

K8s host emptyDirs will then use the local storage type and mount it
inside each container. By doing this, we utilise the storage medium
that the sandbox uses. In most cases this will be 9p.

If the VM is using device mapper for container storage, the containers
will benefit from the better performance of device mapper for
host emptyDir.

Fixes #1472

Signed-off-by: Alex Price <aprice@atlassian.com>
2019-04-11 09:01:58 +10:00
Julio Montes
124ee50bbb Merge pull request #425 from jongwu/memory_hotplug_4.19
Memory hotplug 4.19
2019-04-10 11:48:30 -05:00
Julio Montes
6ab15ab890 Merge pull request #1511 from bergwolf/spawner
vc: remove spawner
2019-04-10 08:33:10 -05:00
Julio Montes
baa30b4fd0 Merge pull request #1460 from alicefr/golangci-lint
s390x: fix golangci-lint complains
2019-04-10 07:53:41 -05:00
Peng Tao
40f2a03c85 Merge pull request #1491 from teawater/factory_leak
qemu: Remove the storage directories if qemu get from the factory
2019-04-10 20:14:17 +08:00
Gabriela Cervantes
9071ffc8be doc: Update SLES installation documentation
Remove the warning as a CI of SLES in available
https://github.com/kata-containers/ci/pull/142.

Fixes #425

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-04-10 04:35:31 -05:00
Jianyong Wu
98687a3463 Template: enable template for arm64
Now, template feature can't work on arm64. When using bypass-shared-memory
cap to saving sandbox as a template, new sandbox cloning from the template
will fail. From initial investigation, it maybe a qemu issue. Further
research should be done.
To enable template on arm64, this patch adds a switch to offer the capability
to open or close the bypass-shared-memory cap.
While closing bypass-shared-memory cap, saving vm will occupy more space
and consume more time. So increase 300M for mount size and bump the time
waiting for migration to 10 seconds.

Fixes: #1336

Signed-off-by: Jianyong Wu  <jianyong.wu@arm.com>
2019-04-10 05:30:59 -04:00
Hui Zhu
d63b7c92a8 Merge pull request #1496 from lifupan/fixproxy
katautils: fix the issue of missing proxy debug config
2019-04-10 13:59:33 +08:00
Hui Zhu
16fe8553af qemu: Remove the storage directories if qemu get from the factory
Store related in directory /var/lib/vc/sbs and /run/vc/sbs if
vm template is enabled.
The cause is NewVM and NewVMFromGrpc will create vcStore with
VM's ID and set it as store of hypervisor if the factory is enabled.

This commit record the VM's ID to HypervisorConfig.VMid and remove
directories in qemu.cleanupVM to handle the issue.

Fixes: #1452

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-04-10 11:11:45 +08:00
Hui Zhu
ace81155a4 factory: Make factory status can show status of VMCache server
This commit adds a new gRPC function Status to CacheService.  VMCache
server will reply the status of VMCache server.
Factory destroy will call gRPC Status to get the status of VMCache
server and output it when VMCache is enabled.

Fixes: #1395

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-04-10 11:03:14 +08:00
Hui Zhu
f639787e02 factory: Make factory destroy can stop VMCache server
VMCache server just can be stopped by ctrl-c without current commit.

This commit adds a new gRPC function Quit to CacheService.  VMCache
server will stop by itself after 1 second when Quit is called.
Factory destroy will call gRPC Quit when VMCache is enabled.

Fixes: #1395

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-04-10 11:03:14 +08:00
Hui Zhu
3343e9f7b3 Merge pull request #1498 from devimc/topic/vendor/govmm
vendor: update govmm
2019-04-10 10:22:33 +08:00
Peng Tao
9ac68310f7 cli: fix kata-check test
We don't really require nested nor unrestricted_guest to run. And there
is no point validating host cpu properties in UT.

Fixes: #1508

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-09 19:00:38 -07:00
Peng Tao
a63013de5c vc: remove spawner
Dead code that is never used.

Fixes: #1510

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-09 19:00:18 -07:00
Peng Tao
c414599635 types: remove pid from sandbox state
No longer needed.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-09 18:59:56 -07:00
Peng Tao
03ee25d4ef agent: treat container as shared pidns whenever it has pidns path
Current approach cannot work for shimv2 as there is no kata-shim thus
sandbox.state.pid is always -1. Let's just simplify things by always
making a container share pidns if it has a pidns path.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-09 18:59:56 -07:00
Peng Tao
616f26cfe5 types: split sandbox and container state
Since they do not really share many of the fields.

Fixes: #1434

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-09 18:59:56 -07:00
Jianyong Wu
c33b51911d kernel: Enable memory hotplug(add) for arm64
This patch is update version for [1] as kernel
upgrad to v4.19.
It derives from [2] which has accept by kernel
community after v4.20. Modifacation has been done
to make it be able to enable memory hotplug using
probe method as it originally aims to using acpi.
Also some corresponding configurations in kernel
config are opened.

[1] https://github.com/kata-containers/packaging/
commit/e654dbd8367371c1b34776445a402d3c90f0dc66
[2] https://git.kernel.org/pub/scm/linux/kernel/
git/torvalds/linux.git/commit/
?id=4ab215061554ae2a4b78744a5dd3b3c6639f16a7

Change-Id: I305435f1d7e38d5cfcee22799792d1f4b0f015f8
Signed-off-by: Jianyong Wu  <jianyong.wu@arm.com>
Jira: ENTOS-899
2019-04-09 20:56:41 -04:00
Ganesh Maharaj Mahalingam
3771b04d6f kernel: Make sure local versions.yaml file from runtime get precedence
Fixes: #431

Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-04-09 11:44:09 -07:00
GabyCT
4265509e9c Merge pull request #1499 from devimc/topic/virtcontainers/onlySupportedNs
virtcontainers: Use only supported namespaces
2019-04-09 13:26:10 -05:00
Julio Montes
11a9005aca Merge pull request #1479 from chavafg/topic/update-crio-url
cri-o: Update repository URLs
2019-04-09 10:03:38 -05:00
Graham Whaley
4470e322e9 Merge pull request #424 from jcvenegas/master
install: Allow define kata branch.
2019-04-09 14:55:02 +01:00
lifupan
8041fc9314 katautils: fix the issue of missing proxy debug config
When used builtin proxy, it's better to config the proxy
debug based on debug setting of runtime in kata configuration.

Fixes:#1495

Signed-off-by: lifupan <lifupan@gmail.com>
2019-04-09 09:17:28 -04:00
Salvador Fuentes
e7fb9c1ad0 Merge pull request #427 from kata-containers/snap-next
snap: release 1.6.1
2019-04-09 07:55:10 -05:00
Julio Montes
bb347acc56 vendor: update govmm
Bring QMP fixes and vhost-user support

Shortlog:
694a7b1 qemu/qmp: re-implement mainLoop
5712b11 qemu/qmp: fix readLoop() reuse scanner.Bytes() underlying array problem
3c84b1d govmm: add VhostUserFS vhost-user device type

fixes #1497

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-09 07:38:16 -05:00
Julio Montes
0b430dc71f virtcontainers: Use only supported namespaces
Depending of the linux versions some namespaces are supported or not.
To avoid failures running containers and unit tests in old linux kernels,
only the supported namespaces should be used.

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

fixes #228

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-09 07:36:50 -05:00
Salvador Fuentes
23c00ffa03 Merge pull request #1500 from chavafg/topic/travis-xenial
travis: use xenial
2019-04-09 07:35:09 -05:00
Salvador Fuentes
e31b040085 cri-o: Update repository URL
cri-o was moved to a new organization. The new URL
of the project is https://github.com/cri-o/cri-o
Update URL references.

Fixes: #1478.

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

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-04-09 07:32:52 -05:00
Julio Montes
b8ac31c39c Merge pull request #422 from tuan-hoang1/s390x-4.19.28
kernel: disable ZSWAP, remove zVM hypervisor on s390x
2019-04-09 07:15:09 -05:00
Salvador Fuentes
ea1df84727 travis: use xenial
We have hit an issue using trusty in travis and go 1.11.7
the issue is fixed using xenial.

Fixes: #1492.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-04-08 13:58:17 -05:00
Jose Carlos Venegas Munoz
9f12577be2 install: Allow define kata branch.
Kata OBS repositories provide multiple branch support.

Let define a variable to allow users define kata branch to use.

Fixes: #423

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-04-08 11:13:04 -05:00
Julio Montes
3c3d87756f snap: release 1.6.1
bump snap version to 1.6.1

fixes #426

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-08 11:00:57 -05:00
Julio Montes
34e2064b39 Merge pull request #1152 from Pennyzct/memory_hotplug
runtime: support memory hotplug via probe interface on aarch64
2019-04-08 08:43:03 -05:00
Julio Montes
c884f65a26 Merge pull request #1449 from alicefr/thread_id
s390x: not set socketID and threadID
2019-04-08 08:01:40 -05:00
Fupan Li
303f126e5b Merge pull request #1441 from Ace-Tang/fix-panic
config: fix panic in type assertion
2019-04-08 17:01:17 +08:00
Graham Whaley
26ca2a3429 Merge pull request #1414 from teawater/yq_version
Fix yq issues
2019-04-08 09:47:03 +01:00
Eric Ernst
fef124921c Merge pull request #1469 from egernst/1.7.0-alpha0-branch-bump
# Kata Containers 1.7.0-alpha0
2019-04-05 14:04:02 -07:00
Archana Shinde
2ccff837f9 Merge pull request #409 from grahamwhaley/20190328_drop_annotations
kata-deploy: remove Trusted annotations from examples
2019-04-05 12:52:44 -07:00
Eric Ernst
f59e367706 release: Kata Containers 1.7.0-alpha0
- doc: update architecture.md link
- VMCache: check if vm_cache_endpoint file exists before VMCache server…
- vsock: Pass info about vsock being used or not to the agent.
- qemu: fix qemu leak when failed to start container
- hypervisor: return cpu->threadID mapping
- tests: do cleanUp() always in the end
- cgroups: remove duplicate fields from state
- shimv2: optionally plug rootfs block storage instead of mounting it
- linter: remove deadcode linter check for generic item
- virtcontainers: firecracker: disable ACPI
- config: validate proxy path
- lint: Change go linter from gometalinter to golangci-lint
- Factory: Fix fake return value issue on creating template
- config: Add config flag "experimental"
- Add more build targets
- Update collect script for dax nvdimm images
- Allow data collection to be hidden
- config: Make VMCache can work with vsock
- ci: check curl before use it
- virtcontainers: improve security and mount the rootfs as read-only fs
- refactor: improve readability of `bumpAttachCount`

57b103a vsock: Pass info about vsock being used or not to the agent.
fb64a3e doc: update architecture.md link
b6f382e VMCache: check if vm_cache_endpoint file exists before VMCache server runs
dd6d1e4 fc: return vcpu thread info properly
6fda03e hypervisor: make getThreadIDs return vcpu to threadid mapping
ad697cc vendor: add prometheus/procfs dependency
0e2be42 vendor: fix containerd/cgroups dependency
52c66d2 shimv2: plugin the block backed rootfs directly instead of mount it
628ea46 virtcontainers: change container's rootfs from string to mount alike struct
c0aedeb virtcontainers: firecracker: disable ACPI
096fa04 qemu: fix qemu leak when failed to start container
2e5194e linter: remove deadcode linter check for generic item
dca7a6f config: validate proxy path
dd6e8eb tests: do cleanUp() always in the end
ad7d9b7 cgroups: remove duplicate fields from state
f442876 lint: Update go linter from gometalinter to golangci-lint.
5d761ce scripts: Handle images with a DAX/NVDIMM header
bdf6b2d scripts: Handle missing partitions in collect script
ad228e3 build: Add missing targets to show-usage
e6a7091 build: Allow runtime to be built+installed without shim
206ffc6 build: Don't build the runtime when building shim binary
639e827 config: Make VMCache can work with vsock
aec0d26 ci: check curl before use it
9b73900 katautils: mask systemd-random-seed
6498466 virtcontainers: improve security and mount the rootfs as read-only fs
26a9b72 refactor: improve readability of `bumpAttachCount`
5a271f0 scripts: Allow data collection script output to be hidden
4f34a54 scripts: Refactor collect script
eadf977 Factory: Fix fake return value issue on creating template
da80c70 config: enhance Feature structure
111774c config: add docs for experimental
050f03b config: Add config flag "experimental"

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-04-05 09:24:55 -07:00
Eric Ernst
d362102c6a Merge pull request #1484 from jcvenegas/master-travis-fix
ci: travis
2019-04-05 08:52:39 -07:00
Eric Ernst
253cd9dd7b Merge pull request #414 from grahamwhaley/20190329_annotate_crioconf
kata-deploy: crio.conf: Add some whitespace and comments
2019-04-04 20:43:58 -07:00
Eric Ernst
d329d0781b Merge pull request #371 from egernst/probot-stale
stale: add initial configuration for stale probot
2019-04-04 20:43:30 -07:00
Julio Montes
3c0cb089e2 Merge pull request #420 from devimc/topic/configureQemu3
scripts: update configure-hypervisor.sh
2019-04-04 15:07:52 -06:00
Eric Ernst
18bbbd47a6 stale: add initial configuration for stale probot
To assist in tracking older issues/PRs, let's add a tool for marking
issues and pull requests as being stale after 60 days of inactivity. A
stale issue/PR will be closed after 7 days of being marked stale.

Fixes: #366

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-04-04 13:48:15 -07:00
Jose Carlos Venegas Munoz
f61cbed15a ci: travis
Use TRAVIS branch to checkout test repository

Fixes: #1481

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-04-04 13:19:48 -06:00
Julio Montes
df2dc3521f scripts: update configure-hypervisor.sh
Update configure hypervisor to support QEMU 3 and 4

fixes #419

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-04 11:35:40 -06:00
Tuan Hoang
ebefdea1a7 kernel: disable ZSWAP, remove zVM hypervisor on s390x
Unless we run kata VM as a hypervisor, we may need
CONFIG_S390_HYPFS_FS and CONFIG_SYS_HYPERVISOR.

CONFIG_S390_VMUR is for z/VM hypvervisor.

Remove CONFIG_ZSWAP and its dependencies to match other arches.

Fixes: #421

Signed-off-by: Tuan Hoang <tmhoang@linux.ibm.com>
2019-04-04 12:42:57 +02:00
Penny Zheng
b50292a215 arm64: dep ensure to keep track of the revisons in kata agent
We need to change the constraints of kata agent into the memory-hotplug
related commit, to keep track of the revisons in kata agent.

Fixes: #1149

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-04-04 17:03:20 +08:00
Penny Zheng
3bfcdf755a agent: add interface memHotplugByProbe
we need to notify guest kernel about memory hot-added event via probe interface.
hot-added memory deivce should be sliced into the size of memory section.

Fixes: #1149

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-04-04 17:03:20 +08:00
Penny Zheng
47670fcf73 memoryDevice: reconstruct memoryDevice
If kata-runtime supports memory hotplug via probe interface, we need to reconstruct
memoryDevice to store relevant status, which are addr and probe. addr specifies the
physical address of the memory device, and probe determines it is hotplugged via
acpi-driven or probe interface.

Fixes: #1149

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-04-04 17:03:20 +08:00
Penny Zheng
30a6a7de39 agent: acquire memory hotplug probe info via GetGuestDetails
In order to support memory hotplug via probe interface in kata-runtime,
firstly, we need to verify whether guest kernel is capable of that.

Fixes: #1149

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-04-04 17:03:19 +08:00
Eric Ernst
2ee437f171 Merge pull request #420 from gabibeyer/updatedocs
doc: update architecture.md link
2019-04-02 21:04:18 -07:00
Gabi Beyer
a11768e1b7 doc: update architecture.md link
update architecture.md link, since it has moved to within the
design/ directory.

Fixes: #417

Signed-off-by: Gabi Beyer <Gabrielle.n.beyer@intel.com>
2019-04-02 21:04:32 -07:00
Eric Ernst
722aa3f2d3 Merge pull request #1456 from gabibeyer/updatedocs
doc: update architecture.md link
2019-04-02 20:48:16 -07:00
Peng Tao
755cbcde3c Merge pull request #1410 from teawater/vmcache_endpoint
VMCache: check if vm_cache_endpoint file exists before VMCache server…
2019-04-03 11:21:42 +08:00
Eric Ernst
5a41e5f240 Merge pull request #1458 from amshinde/pass-vsock-as-kernel-option
vsock: Pass info about vsock being used or not to the agent.
2019-04-02 16:18:41 -07:00
Eric Ernst
9f86c31e10 Merge pull request #417 from gabibeyer/updatedocs
doc: update architecture.md link
2019-04-02 14:13:00 -07:00
Julio Montes
c00849b0bc rootfs-builder: remove /var/log
/var/log is not required in the rootfs

fixes #254

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-02 11:48:19 -06:00
Archana Shinde
57b103a81b vsock: Pass info about vsock being used or not to the agent.
Instead of the agent trying to determine if a serial
or vsock channel is used, pass this information explicitly
as a kernel command line option.

Fixes #1457

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-04-02 09:48:10 -07:00
Gabi Beyer
7f14430421 doc: update architecture.md link
update architecture.md link, since it has moved to within the
design/ directory.

Fixes: #418

Signed-off-by: Gabi Beyer <Gabrielle.n.beyer@intel.com>
2019-04-02 09:34:00 -07:00
Gabi Beyer
fb64a3ec8b doc: update architecture.md link
update architecture.md link, since it has moved to within the
design/ directory.

Fixes: #1462

Signed-off-by: Gabi Beyer <Gabrielle.n.beyer@intel.com>
2019-04-02 09:29:24 -07:00
Fupan Li
c9a3b933f8 Merge pull request #1427 from Ace-Tang/fix-qemu-leak
qemu: fix qemu leak when failed to start container
2019-04-02 23:32:11 +08:00
Wei Li
cece49764c Merge pull request #1436 from bergwolf/vcpu
hypervisor: return cpu->threadID mapping
2019-04-02 20:51:33 +08:00
Hui Zhu
b6f382ef6f VMCache: check if vm_cache_endpoint file exists before VMCache server runs
There is an issue that more than one VMCache server can run with same
vm_cache_endpoint file together.
The cause is factory try to remove vm_cache_endpoint file before VMCache
server runs.
Change it to check if vm_cache_endpoint file exists before VMCache server
runs to handle the issue.

Fixes: #1385

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-04-02 20:33:01 +08:00
Hui Zhu
4993dfffe6 ci: Add a failed execution check for curl
There is no checks for curl get 404 or something else.
Add a check for it.

Fixes: #1411

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-04-02 20:03:43 +08:00
Hui Zhu
7fa03902b4 ci: set $yq_version to 2.3.0
According what I said in https://github.com/kata-containers/tests/issues/1349,
use the last verion is not a good choice.
This commit set it to 2.3.0.

Fixes: #1411

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-04-02 20:03:43 +08:00
Alice Frosi
19458ec473 s390x: fix golangci-lint
Fix lint complains in the s390x files

Fixes: #1453

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-04-02 13:44:12 +02:00
Peng Tao
432eda0f83 Merge pull request #1423 from WeiZhang555/fix-failing-test
tests: do cleanUp() always in the end
2019-04-02 16:21:15 +08:00
Peng Tao
d76eddf41e Merge pull request #1416 from WeiZhang555/dont-save-cgroups-to-state-file
cgroups: remove duplicate fields from state
2019-04-02 16:09:33 +08:00
Peng Tao
dd6d1e435b fc: return vcpu thread info properly
So that we can apply cgroup constraints to them.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-02 15:51:27 +08:00
Peng Tao
6fda03ec92 hypervisor: make getThreadIDs return vcpu to threadid mapping
We need such mapping information to put vcpus in container cpuset properly.

Fixes: #1435

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-02 15:51:27 +08:00
Peng Tao
ad697cc763 vendor: add prometheus/procfs dependency
So that we can read procfs easily.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-02 15:51:27 +08:00
Peng Tao
0e2be42514 vendor: fix containerd/cgroups dependency
Gopkg.lock says it's "dbea6f2bd41658b84b00417ceefa416b979cbf10"
but it is actually "5017d4e9a9cf2d4381db99eacd9baf84b95bfb14".

We need to make sure Gopkg.lock does not lie otherwise `dep ensure`
would really fetch the locked revision and it causes build failure
due to API changes.

Introduced by: 76d9db3e0b (vendor: Add github.com/gogo/protobuf).

While at it, constraint containerd/cgroups to a working revision.

Fixes: #1447

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-04-02 15:51:27 +08:00
Peng Tao
25d21060e3 Merge pull request #1412 from lifupan/shimv2mount
shimv2: optionally plug rootfs block storage instead of mounting it
2019-04-02 15:30:40 +08:00
Hui Zhu
12437c2ded Merge pull request #1433 from Pennyzct/nolint/deadcode
linter: remove deadcode linter check for generic item
2019-04-02 14:22:38 +08:00
lifupan
52c66d20dc shimv2: plugin the block backed rootfs directly instead of mount it
When the container's rootfs is block storage backed such as devmapper,
shimv2 will not mount it on the host, instead it insert it into hypervisor
as a block device directly.

If kata's config set "disable_block_device_use" as true, it will mount
the rootfs onto host as before.

Fixes:#1158

Signed-off-by: lifupan <lifupan@gmail.com>
2019-04-02 10:56:03 +08:00
lifupan
628ea46c58 virtcontainers: change container's rootfs from string to mount alike struct
container's rootfs is a string type, which cannot represent a
block storage backed rootfs which hasn't been mounted.
Change it to a mount alike struct as below:
    RootFs struct {
            // Source specify the BlockDevice path
            Source string
            // Target specify where the rootfs is mounted if it has been mounted
            Target string
            // Type specifies the type of filesystem to mount.
            Type string
            // Options specifies zero or more fstab style mount options.
            Options []string
            // Mounted specifies whether the rootfs has be mounted or not
            Mounted bool
     }

If the container's rootfs has been mounted as before, then this struct can be
initialized as: RootFs{Target: <rootfs>, Mounted: true} to be compatible with
previous case.

Fixes:#1158

Signed-off-by: lifupan <lifupan@gmail.com>
2019-04-02 10:54:05 +08:00
Peng Tao
7d0de42d98 Merge pull request #1455 from devimc/topic/fcNoACPI
virtcontainers: firecracker: disable ACPI
2019-04-02 10:17:32 +08:00
Julio Montes
c0aedeb7ee virtcontainers: firecracker: disable ACPI
Disable ACPI to fix ACPI BIOS error in the guest kernel

fixes #1454

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-01 14:23:49 -06:00
GabyCT
edd7d9ccd3 Merge pull request #272 from devimc/topic/fsFeatures
image-builder: share the mkfs configuration file
2019-04-01 13:03:23 -06:00
Julio Montes
22d1bc50db Merge pull request #269 from stefanha/rootfs-DOCKER_RUNTIME-env-var
rootfs-builder: add rootfs.sh DOCKER_RUNTIME env var
2019-04-01 10:38:50 -06:00
Julio Montes
e8bb3bcf23 Merge pull request #267 from stefanha/rootfs.sh-selinux-relabel
rootfs-builder: SELinux relabel container volumes
2019-04-01 10:38:42 -06:00
Alice Frosi
49be8ee21c s390x: not set socketID and threadID
For cpu hotplug, the options socketID and threadID are not used.

Fixes: #1448

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-04-01 17:29:24 +02:00
Julio Montes
88b85231ca image-builder: share the mkfs configuration file
Share with the container the mkfs configuration file to use only the
filesystem features supported in the host.

fixes #270

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-04-01 09:18:28 -06:00
GabyCT
b09a469097 Merge pull request #418 from egernst/docs-cleanup
Docs cleanup
2019-03-29 16:13:24 -06:00
Eric Ernst
152330a4fd docs: Use relative paths for URLs which are part of this repo
Let's make our static testers happy.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-03-29 14:17:54 -07:00
Eric Ernst
51f12efae9 arch: fix dead link
api.proto moved, resulting in a broken link. The original link wasn't
very useful in the first place, so simply remove.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-03-29 14:03:59 -07:00
Eric Ernst
daef1791ff arch: move architecture.md to the design directory
Fixes: #417

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-03-29 11:04:34 -07:00
Eric Ernst
c0d63796a2 constraints: add as part of design documents
Let's keep all design documents in the same logical location. Updating
the file to be called 'cpu-constraints', though we may want to expand to
resource constraints going forward.

Fixes: #417

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-03-29 10:16:49 -07:00
Eric Ernst
353b2ecf9f vsocks: move to design directory
Let's keep all design documents in the design directory

Fixes: #417

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-03-29 10:11:04 -07:00
Eric Ernst
8e3db7f3df zun: move to use-cases, utilize images dir
Fixes: #417

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-03-29 10:10:10 -07:00
GabyCT
a17d2bbb40 Merge pull request #271 from devimc/topic/fixWrongFS
image-builder: add fs type
2019-03-29 10:10:55 -06:00
Jose Carlos Venegas Munoz
bb0a5635eb Merge pull request #411 from kata-containers/snap-next
snap: release 1.6.0
2019-03-29 08:41:22 -06:00
Julio Montes
77fb8085f4 image-builder: check format_loop return code
check format_loop return code and die if it fails

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-29 07:47:22 -06:00
Graham Whaley
af74d18014 kata-deploy: crio.conf: Add some whitespace and comments
When writing our runtime configs to crio.conf, let's add some
whitespace and comments to make it clearer, and fit in with the
rest of the crio.conf file.

Fixes: #412

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-03-29 11:50:09 +00:00
Julio Montes
8debe95b61 image-builder: add fs type
Add filesystem type to format the loop device.

fixes #270

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-28 15:10:16 -06:00
Julio Montes
3464f8e6a3 snap: release 1.6.0
bump snap version to 1.6.0

fixes #410

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-28 14:52:06 -06:00
Stefan Hajnoczi
c72c95496e rootfs-builder: add rootfs.sh DOCKER_RUNTIME env var
On some systems the "runc" runtime isn't available or has a different
name.  Allow the user to override the Docker runtime.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Fixes: #268
2019-03-28 15:48:15 +00:00
Stefan Hajnoczi
c1d9510cb3 rootfs-builder: SELinux relabel container volumes
rootfs.sh fails on machines with SELinux in enforcing mode if the
volumes aren't labelled.

This patch labels volumes so the container is able to access them.

In order to do this rootfs directory creation must be moved before the
Docker container is started.  Previously docker-run(1) would create the
rootfs directory in the USE_DOCKER case.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Fixes: #266
2019-03-28 15:39:35 +00:00
Sebastien Boeuf
20b087e3d2 Merge pull request #264 from devimc/topic/supportDAXandFC
image-builder: re-implement image builder script
2019-03-28 06:56:02 -07:00
Ace-Tang
096fa046f8 qemu: fix qemu leak when failed to start container
do cleanup inside startVM() if start vm get error

Fixes: #1426

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-03-28 19:38:56 +08:00
Ace-Tang
1b6affe498 config: fix panic in type assertion
when use shim v2 interface to run container, no need to use kata-proxy
and kata-shim, remove kata-proxy and kata-shim in config file will cause
panic since type assertion. add check to avoid panic

Fixes: #1440

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-03-28 19:28:51 +08:00
Graham Whaley
ff1698d915 kata-deploy: remove Trusted annotations from examples
We no longer use the TrustedSandbox style annotations now we
have moved to the RuntimeClass method of choosing a runtime.
Drop the remaining Trusted items from the examples.

Fixes: #403

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-03-28 11:17:43 +00:00
Xie Yongji
2d422a845b agent: pass correct mount type to agent for ephemeral volumes
The "ephemeral" is just used to indicate ephemeral volumes in
runtime. We should not pass it to agent. Instead, "bind" should be
the correct mount type to be passed.

Fixes: #1438

Signed-off-by: Xie Yongji <xieyongji@baidu.com>
2019-03-28 18:40:59 +08:00
Penny Zheng
2e5194e279 linter: remove deadcode linter check for generic item
After we switched golang linter to golangci-lint, we has extra 'deadcode'
linter check, and we need to remove this linter check for all
generic items.

Fixes: #1432

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-03-28 14:05:38 +08:00
zhangwei_cs
c89eb81dec Merge pull request #1425 from bergwolf/proxy-path
config: validate proxy path
2019-03-27 11:31:39 +08:00
Julio Montes
d8cdd88ace image-builder: re-implement image builder script
Re-implement image builder script to generate an image with a double MBR +
a DAX metadata. The DAX metadata is read by the NVDIMM driver to know the
beginning of the data in the pmem device.
This new image format is required to enable DAX in the kernels and hypervisors
that support NVDIMM, without breaking the compatibility with the kernels and
hypervisors that don't support it.

Following diagram shows how the resulting image will look like

```
	.-----------.----------.---------------.-----------.
	| 0 - 512 B | 4 - 8 Kb |  2M - 2M+512B |    3M     |
	|-----------+----------+---------------+-----------+
	|   MBR #1  |   DAX    |    MBR #2     |  Rootfs   |
	'-----------'----------'---------------'-----------+
	      |          |      ^      |        ^
	      |          '-data-'      '--------'
	      |                                 |
	      '--------rootfs-partition---------'
```

MBR: Master boot record.
DAX: Metadata required by the NVDIMM driver to enable DAX in the guest [1][2]
(struct nd_pfn_sb).
Rootfs: partition that contains the root filesystem (/usr, /bin, etc).

Kernels and hypervisors that support DAX/NVDIMM read the MBR #2,
otherwise MBR #1 is read.

[1] - https://github.com/kata-containers/osbuilder/blob/master/image-builder/\
nsdax.gpl.c
[2] - https://github.com/torvalds/linux/blob/master/drivers/nvdimm/pfn.h

fixes #263

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-26 09:02:45 -06:00
Julio Montes
f32ae14883 tests: remove DAX env variable
DAX envar is no more required to generate images with support for DAX

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-26 09:02:45 -06:00
Julio Montes
f355c026c0 tests: enable DEBUG
run tests with debug enabled to detect errors easier

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-26 09:02:45 -06:00
Peng Tao
dca7a6f98b config: validate proxy path
Like shim, we should validate the proxy path if it is provided.

Fixes: #1424

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
2019-03-26 03:46:36 -07:00
Wei Zhang
dd6e8eb82c tests: do cleanUp() always in the end
Fixes: #1422

Detect failing test case:

```
....
=== RUN   TestEnterContainerFailingContNotStarted
--- PASS: TestEnterContainerFailingContNotStarted (0.01s)
=== RUN   TestEnterContainer
--- FAIL: TestEnterContainer (0.00s)
 Error Trace: sandbox_test.go:1154
 Error:      	Expected value not to be nil.
 Messages:   	Entering non-running container should fail
 Error Trace: sandbox_test.go:1157
 Error:      	Expected nil, but got: &errors.errorString{s:"Can not
move from running to running"}
 Messages:   	Failed to start sandbox: Can not move from running to
running
FAIL
```

`TestEnterContainerFailingContNotStarted` calls `cleanUp` at function
begging but it doesn't clean its garbage after it ends.
`TestEnterContainer` only call `cleanUp` in the end but it doesn't do
cleanUp in the begging, that gives first test case a chance to impact
latter one.

This commit modifies all the test cases, let them all do the cleanUp()
in the end.

The policy here is: "everyone needs to take their garbage away when they
leave" :)

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-03-26 16:29:39 +08:00
Hui Zhu
c6804c8e2b Merge pull request #1372 from ganeshmaharaj/go-linter-change
lint: Change go linter from gometalinter to golangci-lint
2019-03-26 12:32:38 +08:00
Wei Zhang
ad7d9b7bab cgroups: remove duplicate fields from state
Fixes: #1415

Container resources have been saved to ContainerConfig so there's no
need to save it again in state.json.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-03-26 10:34:03 +08:00
Archana Shinde
228d1512d9 mount: Add check for k8s host empty directory
k8s host empty-dir is equivalent to docker volumes.
For this case, we should just use the host directory even
for system directories.

Move the isEphemeral function to virtcontainers to not
introduce cyclic dependency.

Fixes #1417

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-25 14:06:23 -07:00
Archana Shinde
70c193132d mounts: Add check for system volumes
We handle system directories differently, if its a bind mount
we mount the guest system directory to the container mount and
skip the 9p share mount.
However, we should not do this for docker volumes which are directories
created by Docker.

This introduces a Docker specific check, but that is the only
information available to us at the OCI layer.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-25 10:49:27 -07:00
Ganesh Maharaj Mahalingam
f4428761cb lint: Update go linter from gometalinter to golangci-lint.
gometalinter is deprecated and will be archived April '19. The
suggestion is to switch to golangci-lint which is apparently 5x faster
than gometalinter.

Partially Fixes: #1377

Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-03-25 08:48:13 -07:00
GabyCT
c67e7b78fa Merge pull request #413 from jodh-intel/debug-console-needs-systemd
docs: Explain systemd needed for debug console
2019-03-25 09:41:30 -06:00
Julio Montes
6c7f3077c9 image-builder: add xfsprogs to Dockerfile
xfsprogs is a package required to generate xfs images.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-25 08:20:49 -06:00
Julio Montes
ad6e1a9d59 scripts: implement error function
Implement function to log errors without exit.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-25 08:19:13 -06:00
Julio Montes
e888ef5a60 Merge pull request #260 from darfux/pass_debug_to_docker
builder: Pass the DEBUG flag when using docker
2019-03-25 07:25:12 -06:00
James O. D. Hunt
dcadf2cbfb Merge pull request #256 from kata-containers/add-chrony-to-image
Add chrony to image
2019-03-25 10:59:16 +00:00
James O. D. Hunt
0b7e456d47 Merge pull request #250 from matthewfischer/max_attempts
Print attempt number after max check
2019-03-25 10:32:49 +00:00
James O. D. Hunt
17cd8e84ed docs: Explain systemd needed for debug console
Add a note to the developer guide explaining that the debug console
requires systemd support (hence nominally you cannot use alpine linux
for example as that doesn't use systemd).

Fixes #412.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-25 09:39:53 +00:00
Li Yuxuan
0d2ba4766e builder: Pass the DEBUG flag when using docker
When using docker, pass the `DEBUG` flag to trace the commands as well.

Fixes: #261

Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2019-03-25 17:36:38 +08:00
James O. D. Hunt
49b3cd0c56 Merge pull request #409 from jodh-intel/undo-docker-pin
Undo docker pin
2019-03-25 08:07:26 +00:00
Hui Zhu
814e5de224 Merge pull request #1334 from jongwu/factory
Factory: Fix fake return value issue on creating template
2019-03-25 11:58:30 +08:00
Xu Wang
de9c42e80f Merge pull request #1227 from WeiZhang555/experimental-support
config: Add config flag "experimental"
2019-03-23 08:59:45 +08:00
Graham Whaley
6301fbe458 Merge pull request #408 from amshinde/remove-privileged-limitation
Limitations: Remove privileged flag limitation
2019-03-22 17:04:52 +00:00
Archana Shinde
bf0d680f56 Limitations: Remove privileged flag limitation
Kata does support privileged flag but within the guest,
so explain how this works in the Limitations docs.

Fixes #362

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-22 09:55:46 -07:00
Archana Shinde
71a4ba11b3 Merge pull request #411 from jodh-intel/fix-debug-console-example-on-ubuntu
docs: Fix debug console for ubuntu/debian
2019-03-22 09:49:10 -07:00
James O. D. Hunt
4c19083e01 docs: Fix debug console for ubuntu/debian
Change the debug console systemd job to specify the path to bash as
`/bin/bash`, *not* `/usr/bin/bash`. This unbreaks the debug console for
Ubuntu and Debian and also works for all other distros.

Fixes #410.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-22 13:13:47 +00:00
James O. D. Hunt
1f52f5e7bd Merge pull request #1403 from jodh-intel/add-more-build-targets
Add more build targets
2019-03-22 11:52:32 +00:00
James O. D. Hunt
bfbd4edcca docker: Undo docker version 18.06 pin
Don't force Docker to be kept at version 18.06 (to ensure devicemapper
is available). This feature won't be re-added by Docker and remaining on
an old version of Docker is not good from a security perspective.

Replace the pinning with a note pointing users at an issue which
provides details of alternatives to devicemapper.

Fixes #407.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-22 10:59:54 +00:00
James O. D. Hunt
17acacbc47 docs: Capital letter at start and period at end of sentence
Fix two nits in the Debian install guide.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-22 10:57:36 +00:00
James O. D. Hunt
0d146738de Merge pull request #1405 from jodh-intel/update-collect-script-for-dax-nvdimm-images
Update collect script for dax nvdimm images
2019-03-22 09:54:03 +00:00
James O. D. Hunt
36fce98517 Merge pull request #1387 from jodh-intel/allow-data-collection-to-be-hidden
Allow data collection to be hidden
2019-03-22 09:53:44 +00:00
James O. D. Hunt
072acea2a0 Merge pull request #358 from yyyeerbo/wip
install: VERSION_ID in buster/sid can be unset. default it to 9
2019-03-22 08:40:43 +00:00
Yang Bo
6ba8ae53dd install: Debian sid/buster has no VERSION_ID, error out.
Error out if debian has no VERSION_ID, point user to stable
packages.

Fixes: #357

Signed-off-by: Yang Bo <bo@hyper.sh>
2019-03-21 21:01:11 -07:00
Xu Wang
4f712b0657 Merge pull request #1401 from teawater/vmcache_vsock
config: Make VMCache can work with vsock
2019-03-22 10:51:35 +08:00
Eric Ernst
30726d1dd7 Merge pull request #370 from jcvenegas/release-1.5.1
Release 1.5.1
2019-03-21 13:27:34 -07:00
Salvador Fuentes
a06c82a120 Merge pull request #257 from jcvenegas/release-1.6.0
release: 1.6.0
2019-03-21 13:28:49 -06:00
Jose Carlos Venegas Munoz
75f4338350 release: 1.6.0
Version bump to kata 1.6.0.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-03-21 13:00:15 -06:00
James O. D. Hunt
e1eb28836a Merge pull request #249 from GabyCT/topic/modifytest
test: Modify test_images script to handle FC
2019-03-21 17:04:32 +00:00
GabyCT
2069a3d953 Merge pull request #406 from teawater/vmcache_vsock
howto: Remove vsock from VMCache howto
2019-03-21 10:06:38 -06:00
Julio Montes
a7ccc24c80 Merge pull request #1398 from teawater/curl
ci: check curl before use it
2019-03-21 08:17:38 -06:00
James O. D. Hunt
5d761cec76 scripts: Handle images with a DAX/NVDIMM header
osbuilder recently added the ability to create images with a DAX/NVDIMM
header [1], however this change broke the data collection script. Update
that script to handle images with and without this header.

The data collection script will now assume a header is present. However,
if it fails to find the required partition data, it will try again, this
time assuming the image does not have a DAX/NVDIMM header.

Fixes #1404.

[1] - https://github.com/kata-containers/osbuilder/pull/236

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-21 12:35:28 +00:00
James O. D. Hunt
bdf6b2d49d scripts: Handle missing partitions in collect script
Add an extra check in the data collection script to ensure partitions
are found in the image.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-21 12:28:58 +00:00
James O. D. Hunt
ad228e3c3b build: Add missing targets to show-usage
Add a number of useful build and install targets to the `show-usage`
target which are visible when the user runs `make help`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-21 11:30:19 +00:00
James O. D. Hunt
e6a7091981 build: Allow runtime to be built+installed without shim
Add `install-runtime` and `install-netmon` targets. This allows the
`install` target to be simplified and also allows the runtime to be
built without having to build the `containerd-shim-v2` binary which is
slow to build:

```
$ make runtime && sudo -E PATH=$PATH make install-runtime
```

Fixes #1402.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-21 11:30:12 +00:00
James O. D. Hunt
206ffc66aa build: Don't build the runtime when building shim binary
The `containerd-shim-v2` binary does not need the `kata-runtime` binary
to be built first, so remove the dependency.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-21 11:30:07 +00:00
Graham Whaley
c70ba4844f Merge pull request #1390 from devimc/topic/roFS
virtcontainers: improve security and mount the rootfs as read-only fs
2019-03-21 09:33:04 +00:00
Hui Zhu
c3f082ccb8 howto: Remove vsock from VMCache howto
Remove vsock from VMCache howto because VMCache can work with vsock now.

Fixes: #405

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-21 17:24:57 +08:00
Hui Zhu
639e8271de config: Make VMCache can work with vsock
After code check and test, found VMCache can work with vsock.
Remove the code that prohibit them from working together.

Fixes: #1400

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-21 17:13:03 +08:00
Hui Zhu
aec0d263fa ci: check curl before use it
install-yq.sh use curl but not check if curl is available or not.
Add code to check curl before use it.

Fixes: #1379

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-21 10:52:33 +08:00
Archana Shinde
e16ff37f86 chrony: Comment out any NTP sources for chrony
Reference:  https://chrony.tuxfamily.org/doc/3.4/chrony.conf.html

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-20 16:05:33 -07:00
Archana Shinde
3df19ff984 chrony: Add virtual PTP as source for chrony
KVM virtual PTP in linux kernel allows guest to sync its
clock to the host clock with high precision. kvm-ptp has been
enabled in our kernel. Add this as a source for `chrony` so that
it can be used to sync the guest system clock.
`chrony` needs to be started in the guest for time sync.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-20 14:05:42 -07:00
Julio Montes
8c2190d3a3 Merge pull request #400 from Pennyzct/snap_aarch64
snap-aarch64: modify qemu-related info for arm64
2019-03-20 09:22:07 -06:00
Sebastien Boeuf
f1ef63e5c6 Merge pull request #1394 from WeiZhang555/improve-readability
refactor: improve readability of `bumpAttachCount`
2019-03-20 08:13:45 -07:00
Julio Montes
9b73900ba6 katautils: mask systemd-random-seed
systemd-random-seed service fails if the rootfs is a read-only fs.
systemd-random-seed restores the random seed of the system at early
boot and saves it at shutdown, since kata containers are one boot machines
this service is not needed.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-20 09:02:20 -06:00
Julio Montes
64984667ad virtcontainers: improve security and mount the rootfs as read-only fs
Mounting the rootfs as read-only fs the binaries can't be modified.

fixes #1389

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-20 07:50:20 -06:00
Wei Zhang
26a9b72c34 refactor: improve readability of bumpAttachCount
Fixes #1392

Improve code readability of function `device.bumpAttachCount`

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-03-20 11:38:49 +08:00
Penny Zheng
ddf638ba86 snap-aarch64: modify qemu-related info for arm64
Former snap configuration snapcraft.toml install qemu-lite for all
platforms, which isn't applicable on aarch64. We need qemu-aarch64
of specific version and extra patches.

Fixes: #399

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-03-20 11:08:15 +08:00
Matt Fischer
ad5d879f8c rootfs: Print attempt number after max check
With the old code it was possible to see odd messages like:
"INFO: Create root disk image. Attempt 6 out of 5."

Move the attempt number print to after we check against the max

Fixes #251

Signed-off-by: Matt Fischer <matt@mattfischer.com>
2019-03-19 21:04:40 -06:00
Archana Shinde
8fe64058aa rootfs: Include chrony in the Dockerfile images
Add chrony to distro Dockerfile.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-19 14:34:14 -07:00
Archana Shinde
0b33519709 rootfs: add PACKAGE var to debian config
debian config seems to be missing PACKAGE variable altogether.
Add it along with appending chrony to the list.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-19 14:30:10 -07:00
Archana Shinde
510ddd28c8 rootfs: Add chrony service to rootfs
chrony will be used to schronize guest clock with host
using kvm_ptp kernel driver.
This does add another active component to the rootfs
but keeping time scychorized is crucial.

Fixes #255

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-19 14:12:21 -07:00
Gabriela Cervantes
523405e62d test: Modify test_images script to handle FC
We need to modify this test in order to handle firecracker.

Fixes #248

Depends-on:github.com/kata-containers/osbuilder#247

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-03-19 13:42:00 -06:00
Jose Carlos Venegas Munoz
d67aad893f Merge pull request #247 from devimc/topic/fixFCNoDax
image-builder: make DAX support optional
2019-03-19 11:51:19 -06:00
Archana Shinde
93e59021b9 Merge pull request #404 from jodh-intel/unbreak-debug-console-instructions
Unbreak debug console instructions
2019-03-19 09:45:58 -07:00
Julio Montes
8e72cf15e6 Merge pull request #1381 from alicefr/bridges_func
s390x: add bridges function
2019-03-19 10:38:38 -06:00
Julio Montes
dbc5a32b74 Merge pull request #1366 from devimc/topic/fixRelativeCgroupPath
virtcontainers: honor OCI cgroupsPath
2019-03-19 10:32:41 -06:00
Julio Montes
6217689cc0 Merge pull request #253 from bergwolf/1.6.0-rc2-branch-bump
# Kata Containers 1.6.0-rc2
2019-03-19 09:50:19 -06:00
Julio Montes
b39d0ced69 Merge pull request #1383 from bergwolf/1.6.0-rc2-branch-bump
# Kata Containers 1.6.0-rc2
2019-03-19 09:49:54 -06:00
James O. D. Hunt
5a271f06ce scripts: Allow data collection script output to be hidden
Use a clever HTML trick to allow the output of the data collection
script to be hidden / unhidden in the github.com interface.

See the example at the top of
https://github.com/kata-containers/runtime/issues/1347.

Fixes #1386.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-19 15:29:13 +00:00
James O. D. Hunt
4f34a54777 scripts: Refactor collect script
Create a new function to collect all data display function calls in the
data collection script.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-19 15:28:14 +00:00
James O. D. Hunt
b347b3302c docs: Don't modify pristine config files
Kata supports multiple configuration file locations, so update the dev
guide to tweak config settings in
`/etc/kata-containers/configuration.toml` rather than the pristine
`/usr/share/defaults/kata-containers/configuration.toml` file. The
former is read first meaning the system can be reset to a vanilla Kata
configuration by simply deleting
`/etc/kata-containers/configuration.toml`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-19 11:29:58 +00:00
James O. D. Hunt
c771f76eae docs: Unbreak debug console instructions
The debug console systemd job needs to specify `PrivateDevices=no` to
ensure the job can access the *real* console. Without this, connecting
to the socket does not provide access to the main guest root context.

Fixes #403.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-19 11:23:24 +00:00
Graham Whaley
ea24ff318a Merge pull request #402 from ttx/packagecloud
Credit packagecloud for package hosting
2019-03-19 10:53:42 +00:00
Xu Wang
441c51c22c Merge pull request #402 from amshinde/add-links-to-docs
Add links to all how-to and use-case docs in README.md
2019-03-19 16:18:16 +08:00
Archana Shinde
534ac218c7 docs: Add links to use-case documents.
Fixes #401

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-18 11:35:33 -07:00
Archana Shinde
e02829b443 docs: Add link for VM templating and VM cache
Add links for these docs in REAME.md

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-18 11:30:35 -07:00
Peng Tao
6570944b67 release: Kata Containers 1.6.0-rc2
- image-builder: fill out device namespace information into kata image
- tests: install kata components from master
- tests: skip euleros
- arch: Remove calls to arch command
- pullapprove: remove it
- memory_hotplug: MEM_BOUNDARY_MB should be arch-dependent

726f798 image-builder: fill out device namespace information into kata image
cbe5642 image-builder: add gcc as dependecy to generate the image
7620066 image-builder: sync rootfs data after copying it into the image
dc5bc07 image-builder: fix mem boundary recalculation
71ccc0a mage-builder: remove -s option and IMG_SIZE envar
8065bb6 rootfs-builder: delete dnf and rmp data
35588dd tests: install kata containers components from master
519bbe8 tests: remove docker before installing the newer version
b4de168 tests: skip euleros
f38c67d arch: Remove calls to arch command
8963b8e pullapprove: remove it
e4d5c1b memory_hotplug: MEM_BOUNDARY_MB should be arch-dependent

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2019-03-18 22:14:31 +08:00
Peng Tao
70d8b167e7 release: Kata Containers 1.6.0-rc2
- volumes: Handle k8s empty-dirs of "default" medium type
- versions: kernel: update to 4.19.28
- qemu: throw error when fail to get addr from bridges
- vc:qemu: Fix id calculation of memory hotplug
- s390x: 2 small test fixes
- arm64: support NVDIMM
- virtcontainers: move resource calculation to its own function
- versions: update nemu to latest release
- Add crio and containerd details to collect script
- pkg: reduce memory footprint
- Fix rootfs mount assumptions
- s390x: fix golint complain
- Network: remove Physical field in VethEndpoint
- test: add tests for sandbox creation rollback and cleanup
- VMCache: the new function that creates VMs as caches before using it
- unit test: Fix local test
- Add upstream version url regexp's to allow upto date checks
- virtcontainer: watch the qemu's console when proxy's debug enabled
- unit-test: fix undefined struct field SupportVSocks on arm64
- Makefile: Fix aarch64 fail in No GO command or GOPATH not set mode
- tracing: Fix tracing
- config: check the builtIn first when updating shim/proxy/agent
- qemu: fix devID value error
- Makefile: Change "GOPATH not set" to "No GO command"

8e2a5ea tests: Fix units tests to check empty-dir volumes backed by host-dir
47a6023 volumes: Handle k8s empty-dirs of "default" medium type
4e81522 vc:qemu: Fix id calculation of memory hotplug
502fdab test: add test for addDeviceToBridge
0061e16 virtcontainers: move resource calculation to its own function
7504d9e unit-test: add TestSandboxUpdateResources
f009a53 versions: update nemu to latest release
f2a506a scripts: Add containerd details to collect script
7266d31 scripts: Log crio config file in collect script
30f9776 scripts: Create separate section for crio in collect script
ae08ea3 scripts: Add helper function to collect script
ae4d8b4 versions: kernel: update to 4.19.28
c7ace4b qemu: throw error when fail to get addr from bridges
2456ac5 pkg: reduce memory footprint
df9a401 Network: remove Physical field in VethEndpoint
76d9db3 vendor: Add github.com/gogo/protobuf
45fe870 runtime: Add unit tests
0f8b2ad VMCache: Update factory to run as a VMCache server
90704c8 VMCache: the core and the client
d8bcddb qemu-arm64: add unit test for func appendImage on aarch64
986e4dc qemu-arm64: Support nvdimm on arm64
8ba27e1 s390x: remove pmu from test
6242af3 s390x: fix TestQemuS390xMemoryTopology
613edd5 s390x: fix golint complain
27a92f9 runtime: Fix rootfs mount assumptions
c964a26 virtcontainers: makefile fix .ci path
fcee080 unit-test: Fix local test
c4957dd virtcontainer: watch the qemu's console when proxy's debug enabled
1e30673 test: add tests for sandbox creation rollback and cleanup
bdb34e7 Makefile: Fix aarch64 fail in No GO command or GOPATH not set mode
c759cf5 tracing: Fix tracing
31232b4 config: check the builtIn first when updating shim/proxy/agent
03dd780 qemu: fix devID value error
a1ddf53 Makefile: Change "GOPATH not set" to "No GO command or GOPATH not set"
35672b5 unit-test: fix undefined struct field SupportVSocks on arm64
975157d versions.yaml: add uscan annotations

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2019-03-18 22:13:32 +08:00
Alice Frosi
6a95ad2ca9 s390x: add bridges function
The bridges function was missing for s390x

Fixes: #1380

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-03-18 14:57:58 +01:00
Peng Tao
925122a411 Merge pull request #1374 from amshinde/k8s-empty-dir
volumes: Handle k8s empty-dirs of "default" medium type
2019-03-18 12:53:35 +08:00
Julio Montes
02fa22bbdd image-builder: make DAX support optional
Not all hypervisor support NVDIMM hence DAX support MUST BE enabled explicitly
setting the DAX environment variable to 'yes'

fixes #246

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-15 13:14:52 -06:00
Archana Shinde
8e2a5eaa36 tests: Fix units tests to check empty-dir volumes backed by host-dir
Test verify that k8s volumes that are mounted as tmpfs are considered as
ephemeral.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-15 11:02:17 -07:00
James O. D. Hunt
e84c62c960 Merge pull request #386 from amshinde/check-crio-runtime-config
kata-deploy: Add runtime config for crio if it does not exist
2019-03-15 17:43:08 +00:00
Sebastien Boeuf
4d65fb4ec4 Merge pull request #398 from amshinde/sysctl-docs
sysctsl: Add how-to doc for setting sysctls.
2019-03-15 10:18:28 -07:00
Archana Shinde
47a6023382 volumes: Handle k8s empty-dirs of "default" medium type
We were considering all empty-dir k8s volumes as backed by tmpfs.
However they can be backed by a host directory as well.
Pass those as 9p volumes, while tmpfs volumes are handled as before,
namely creating a tmpfs directory inside the guest.
The only way to detect "Memory" empty-dirs is to actually check if the
volume is mounted as a tmpfs mount, since any information of k8s
"medium" is lost at the OCI layer.

Fixes #1341

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-15 09:44:10 -07:00
Thierry Carrez
4f4cfb99f7 Credit packagecloud for package hosting
We use a packagecloud OSS account for package hosting.
As part of the arrangement with packagecloud we need to
credit them and add a link back to https://packagecloud.io
on our website and project README.

This was added to the kata-containers repository's README,
but it is also probably appropriate to add it to the packaging
README as well.

Signed-off-by: Thierry Carrez <thierry@openstack.org>
2019-03-15 15:13:37 +01:00
James O. D. Hunt
fd3d0651e0 Merge pull request #391 from lifupan/master
how-to: Update the how-to containerd-kata doc to support runtime option
2019-03-15 09:54:41 +00:00
fupan
1998e98f40 how-to: Update the how-to containerd-kata doc to support runtime option
Update the how-to containerd-kata doc to support runtime option, by which
we can specify kata configure file for different kata runtime.

Fixes:#390

Signed-off-by: fupan <lifupan@gmail.com>
2019-03-15 16:39:36 +08:00
Jianyong Wu
eadf97765d Factory: Fix fake return value issue on creating template
Now, function NewFactory will return nil even create template
does't complete. As for this, it will tell user that factory
has been initialized no matter whether the template is created
or not. This patch correct it by adding another return value
of error in NewFactory.

Testing initFactoryCommand when enable template will need root
privilege to mount tmpfs. So skip it for no-root user.

Testing initFactoryCommand func will create template, but no
proxy type assigned to VMconfig which will using katabuiltinProxy
instead. this will lead to failure for this type of proxy will
check proxyparams which contains many null value. This commit
fix it by substitute katabuiltinProxy as noopProxy when for test
purpose.

Fixes: #1333
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
2019-03-15 04:17:28 -04:00
Julio Montes
3aaa77db22 virtcontainers: honor OCI cgroupsPath
Create cgroup path relative the cgroups mount point if it's absolute,
or create it relative to a runtime-determined location if the path
is relative.

fixes #1365
fixes #1357

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-14 08:13:22 -06:00
James O. D. Hunt
ecd072430f Merge pull request #236 from devimc/topic/fixDAX
image-builder: fill out device namespace information into kata image
2019-03-14 08:35:50 +00:00
Archana Shinde
8342ca1d04 kata-deploy: Add runtime config for crio if it does not exist
Rather than add the config for kata-qemu and kata-fc unconditionally,
the script now checks if the runtime config exists.
If it exists, then do not chnage the path for the runtime.
The user may have configured this to a specific path for testing
local chnages.

Fixes #374

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-13 16:13:00 -07:00
Archana Shinde
8058fb0791 Merge pull request #1289 from grahamwhaley/20190227_v4.19.26
versions: kernel: update to 4.19.28
2019-03-13 15:21:31 -07:00
Archana Shinde
19e8a5e024 docs: Add link to the sysctl how-to in README.md
Add link so that the doc is discoverable

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-13 15:11:16 -07:00
Archana Shinde
817110d652 sysctsl: Add how-to doc for setting sysctls.
Document sysctls for Docker and Kubernetes.

Fixes #399

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-03-13 15:11:16 -07:00
Archana Shinde
a8c6d94c58 Merge pull request #397 from bmwiedemann/kernel
Override build user+host+timestamp
2019-03-13 14:37:28 -07:00
Archana Shinde
9f96da2014 Merge pull request #1006 from Ace-Tang/throw_error
qemu: throw error when fail to get addr from bridges
2019-03-13 14:34:24 -07:00
Julio Montes
726f798ff7 image-builder: fill out device namespace information into kata image
The new NVDIMM driver implementation (kernel >= 4.16) needs to know the device
namespace information to map pages, this metadata is read from the nvdimm
namespace at 4k offset.

fixes #235

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-13 13:05:06 -06:00
Julio Montes
cbe5642b9d image-builder: add gcc as dependecy to generate the image
gcc is required to build the binary in charge to fill out the device
namespace information (matadata) into the kata containers image.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-13 13:05:06 -06:00
Julio Montes
7620066c8a image-builder: sync rootfs data after copying it into the image
Rootfs data must be sync'd after copying it into the image to avoid
data corruption

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-13 13:05:06 -06:00
Julio Montes
dc5bc07825 image-builder: fix mem boundary recalculation
$/${} is unnecessary on arithmetic variables. [SC2004]

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-13 13:05:06 -06:00
Julio Montes
71ccc0a6ea mage-builder: remove -s option and IMG_SIZE envar
guest kernel needs 64 bytes of DRAM per 4K page of emulated PMEM, hence the
image size should be as small as possible to reduce the container's memory
footprint. The image size is recalculated automatically if it's too small
to contain the rootfs.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-13 13:05:06 -06:00
Julio Montes
8065bb615a rootfs-builder: delete dnf and rmp data
dnf and rmp data are not needed in the final rootfs, removing them we save
2MB of disk

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-13 13:05:06 -06:00
Salvador Fuentes
da8101a2aa Merge pull request #243 from devimc/topic/testMaster
tests: install kata components from master
2019-03-13 13:04:41 -06:00
James O. D. Hunt
71fc406381 Merge pull request #1361 from darfux/fix-mem-id
vc:qemu: Fix id calculation of memory hotplug
2019-03-13 18:10:47 +00:00
Julio Montes
35588dd303 tests: install kata containers components from master
build and install kata containers components from master and
run osbuilder tests.

fixes #242

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-13 10:47:03 -06:00
Julio Montes
32220a5beb Merge pull request #1330 from alicefr/s390_fix_test
s390x: 2 small test fixes
2019-03-13 08:59:50 -06:00
Bernhard M. Wiedemann
693d240971 Override build user+host+timestamp
to make kata-linux-container package builds reproducible.

See https://reproducible-builds.org/ for why this is good.

Uses -u to be independent of timezone.
Uses LANG=C to not have Day-of-Week and Month names vary.

Signed-off-by: Bernhard M. Wiedemann <bwiedemann@suse.de>
2019-03-13 13:50:59 +01:00
James O. D. Hunt
594ce2fee7 Merge pull request #335 from wenlxie/fixmemory
kernel: enable config CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE by default
2019-03-13 11:40:56 +00:00
Li Yuxuan
4e81522571 vc:qemu: Fix id calculation of memory hotplug
QMP doesn't guarantee the order of the array that is returned by
`query-memory-devices` command. So we would better search the whole
array to find out the current max slot, rather than simply use the last
element's slot.

Fixes: #1362

Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
2019-03-13 16:39:31 +08:00
Wenli Xie
47a8725801 enable config CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE by default
Fixes: #343

Signed-off-by: Wenli Xie <wenlxie@ebay.com>
2019-03-13 13:01:53 +08:00
Archana Shinde
b083b912c3 Merge pull request #396 from kata-containers/snap-next
snap: launchpad: Add missing kernel dependencies
2019-03-12 10:29:17 -07:00
Archana Shinde
076313996c Merge pull request #397 from jodh-intel/add-rhel-install-warning
docs: Add RHEL and SLES install warnings
2019-03-12 09:58:49 -07:00
Xu Wang
419d9791c7 Merge pull request #393 from teawater/vmcache
howto: Add VMCache introduction and guide
2019-03-13 00:21:40 +08:00
Julio Montes
4d20943266 snap: launchpad: Add missing kernel dependencies
new kernel, new dependencies. Add bison, build-essential and flex as
kernel dependencies

fixes #395

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-12 07:25:29 -06:00
Hui Zhu
7b94750180 howto: Add VMCache introduction and guide
Add "What Is VMCache and How To Enable It" to howto.

Fixes: #392

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-12 21:02:03 +08:00
James O. D. Hunt
9a8553fa4a Merge pull request #377 from Pennyzct/nvdimm
nvdimm: support nvdimm on arm64 kernel
2019-03-12 11:02:57 +00:00
James O. D. Hunt
ffbae64a2d Merge pull request #1323 from Pennyzct/nvdimm
arm64: support NVDIMM
2019-03-12 10:11:01 +00:00
Penny Zheng
5dd1d7c706 nvdimm: support nvdimm on arm64 kernel
let's open nvdimm-related kernel config parameters on arm64, such as
CONFIG_ACPI_NFIT, etc. and we also need to backport patch
'kvm:arm64:Dynamic IPA and 52bit IPA'(https://patchwork.kernel.org/cover/10616271/)
and related dependency into v4.19.X to fully support nvdimm from guest kernel.
Former patch has already been merged into v4.20.X.

Fixes: #376

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-03-12 14:46:41 +08:00
Ace-Tang
502fdab75e test: add test for addDeviceToBridge
add test for addDeviceToBridge in three case
1. addDeviceToBridge successful
2. fail cause no more available bridge slot
3. fail cause state.bridge == 0

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-03-12 09:18:03 +08:00
Julio Montes
f9f2d925ba Merge pull request #239 from devimc/topic/eulerosMirrors
tests: skip euleros
2019-03-11 16:29:47 -06:00
Julio Montes
519bbe8f66 tests: remove docker before installing the newer version
In some distros docker is already installed and the CI fails because the newer
version can't be installed because it conflicts with the old version. Remove
old version before installing the newer version of docker.

fixes #241

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-11 15:20:22 -06:00
Julio Montes
b18a62c63e Merge pull request #1346 from jcvenegas/resource-calc-multi-container
virtcontainers: move resource calculation to its own function
2019-03-11 14:59:05 -06:00
Julio Montes
e73beab5ea Merge pull request #1353 from chavafg/topic/update-nemu-version
versions: update nemu to latest release
2019-03-11 14:55:23 -06:00
Jose Carlos Venegas Munoz
0061e166d4 virtcontainers: move resource calculation to its own function
Make cpu and memory calculation in a different function
this help to reduce the function complexity and easy  unit test.

Fixes: #1296

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-03-11 12:17:01 -06:00
Jose Carlos Venegas Munoz
7504d9e50c unit-test: add TestSandboxUpdateResources
Add unit test for Update Resources

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-03-11 12:17:01 -06:00
Salvador Fuentes
f009a534c2 versions: update nemu to latest release
Latest release fixes entropy issue.

Fixes: #1251.
Fixes: #987.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-03-11 11:59:16 -06:00
Julio Montes
b4de168cf4 tests: skip euleros
euleros mirrors are down almost all time, don't fail if euleros rootfs
or image can't be generated.

fixes #238

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-11 11:46:17 -06:00
James O. D. Hunt
ff7019999f Merge pull request #1351 from jodh-intel/collect-script-add-more-details
Add crio and containerd details to collect script
2019-03-11 17:43:59 +00:00
James O. D. Hunt
d591b63dc2 Merge pull request #390 from jodh-intel/codeowners-for-kernel-changes
docs: Add CODEOWNERS file for doc and kernel changes.
2019-03-11 17:32:33 +00:00
Julio Montes
e19e29735b Merge pull request #392 from devimc/topic/snap-1.6.0-rc1
snap: release 1.6.0-rc1
2019-03-11 10:23:47 -06:00
James O. D. Hunt
cad58e8a2d Merge pull request #1340 from devimc/topic/noJournald
pkg: reduce memory footprint
2019-03-11 14:37:48 +00:00
James O. D. Hunt
21e042d7ec docs: Add kernel changes to CODEOWNERS file
All kernel changes need approval from the kernel team.

Fixes #389.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-11 14:36:12 +00:00
Julio Montes
6329cf7470 Merge pull request #384 from grahamwhaley/20190307_CODEOWNERS
ci: add CODEOWNERS to cover .md files
2019-03-11 08:22:39 -06:00
James O. D. Hunt
f2a506affa scripts: Add containerd details to collect script
Add a new sub-section for containerd details.

Fixes #1349.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-11 14:20:39 +00:00
James O. D. Hunt
7266d31813 scripts: Log crio config file in collect script
Add details of the crio config to the data collection script.

Partially fixes #1349.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-11 14:20:34 +00:00
Julio Montes
6827efb87d snap: release 1.6.0-rc1
This version includes support for s390x

fixes #391

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-11 08:18:59 -06:00
James O. D. Hunt
30f9776e60 scripts: Create separate section for crio in collect script
Rather than folding crio under k8s, move it to a separate sub-section.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-11 14:18:10 +00:00
James O. D. Hunt
ae08ea3211 scripts: Add helper function to collect script
Add a `have_service()` helper function to the data collection script to
simplify the code.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-11 14:18:02 +00:00
Graham Whaley
ae4d8b453e versions: kernel: update to 4.19.28
Update kernel to latest version.

Fixes: #1288

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-03-11 11:44:37 +00:00
James O. D. Hunt
7aa48565d0 Merge pull request #1326 from ganeshmaharaj/fix-rootfs-mount
Fix rootfs mount assumptions
2019-03-11 11:32:57 +00:00
James O. D. Hunt
5b58e6a715 Merge pull request #1328 from alicefr/golint-fix
s390x: fix golint complain
2019-03-11 11:17:31 +00:00
Ace-Tang
c7ace4b4bc qemu: throw error when fail to get addr from bridges
Return error soon when addDeviceToBridge() can not get empty address
from bridges, or the error will thrown by qemu, this is not obvious.

Fixes: #1005

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-03-11 18:03:46 +08:00
James O. D. Hunt
81404baf1d Merge pull request #1344 from caoruidong/rmphy
Network: remove Physical field in VethEndpoint
2019-03-11 10:01:32 +00:00
James O. D. Hunt
5f95c9ae2b Merge pull request #385 from devimc/topic/fixDAX
kernel: pmem device should map pages
2019-03-11 09:46:50 +00:00
James O. D. Hunt
3124131816 docs: Add RHEL and SLES install warning
Unfortunately, at present we have no way of testing Kata packages for
Red Hat Enterprise Linux (RHEL) or SUSE Linux Enterprise (SLES).

Add warnings to the RHEL and SLES install guides explaining this and
advising users to exercise caution. Hopefully, we will be able to drop
this warning soon (either when we have the ability to test on RHEL/SLES
or when Kata packages are available in RHEL/SLES).

Fixes #396.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-11 09:05:55 +00:00
Wei Zhang
da80c70c0c config: enhance Feature structure
Fixes #1226

Add more fields to better describe an experimental feature.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-03-10 22:44:41 +08:00
Wei Zhang
111774c859 config: add docs for experimental
Fixes #1226

Add more docs for experimental features.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-03-12 11:03:28 +08:00
Wei Zhang
050f03bb36 config: Add config flag "experimental"
Fixes #1226

Add new flag "experimental" for supporting underworking features.
Some features are under developing which are not ready for release,
there're also some features which will break compatibility which is not
suitable to be merged into a kata minor release(x version in x.y.z)

For getting these features above merged earlier for more testing, we can
mark them as "experimental" features, and move them to formal features
when they are ready.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2019-03-12 11:03:28 +08:00
Haomin Tsai
7ff18192a4 Merge pull request #880 from jingxiaolu/rollback_when_creation_fail
test: add tests for sandbox creation rollback and cleanup
2019-03-09 14:12:22 +08:00
Sebastien Boeuf
6c720cd306 Merge pull request #382 from egernst/v2-containerd
kata-deploy: add support for v2 shim
2019-03-08 18:08:17 -08:00
Julio Montes
2456ac52eb pkg: reduce memory footprint
Reduce memory footprint ~7% by disabling some systemd services like
systemd-journald and systemd-udevd, those services are just consuming memory
and are not needed. For example kata-agent logs the errors through the proxy.

fixes #1339

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-08 15:45:25 -06:00
Ruidong Cao
df9a4015a5 Network: remove Physical field in VethEndpoint
This a bool field. It is useless because veth endpoint is never a
physical endpoint.

Fixes #1343

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2019-03-09 03:29:27 +08:00
Sebastien Boeuf
80cdf895c5 Merge pull request #1166 from teawater/vm_cache
VMCache: the new function that creates VMs as caches before using it
2019-03-08 07:52:11 -08:00
Julio Montes
d1a9aa7aea kernel: pmem device should map pages
enable ZONE_DEVICE config to support map pages, pmem_should_map_pages()
function fails if this config is not enabled.

fixes #378

Signed-off-by: Julio Montes <julio.montes@intel.com
2019-03-08 09:26:32 -06:00
Hui Zhu
76d9db3e0b vendor: Add github.com/gogo/protobuf
VMCache code use github.com/gogo/protobuf.

Fixes: #52

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-08 20:59:00 +08:00
James O. D. Hunt
ff67e32d30 Merge pull request #395 from grahamwhaley/20190307_CODEOWNERS
ci: add a CODEOWNERS file to cover .md files
2019-03-08 08:36:38 +00:00
Ganesh Maharaj Mahalingam
45fe8700b8 runtime: Add unit tests
Add unit tests for the rootfs patch

Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-03-07 23:50:24 -08:00
Hui Zhu
0f8b2ad007 VMCache: Update factory to run as a VMCache server
When VMCache is enabled, factory init will run as a VMcache server.

Fixes: #52

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-08 10:06:38 +08:00
Hui Zhu
90704c8bb6 VMCache: the core and the client
VMCache is a new function that creates VMs as caches before using it.
It helps speed up new container creation.
The function consists of a server and some clients communicating
through Unix socket.  The protocol is gRPC in protocols/cache/cache.proto.
The VMCache server will create some VMs and cache them by factory cache.
It will convert the VM to gRPC format and transport it when gets
requestion from clients.
Factory grpccache is the VMCache client.  It will request gRPC format
VM and convert it back to a VM.  If VMCache function is enabled,
kata-runtime will request VM from factory grpccache when it creates
a new sandbox.

VMCache has two options.
vm_cache_number specifies the number of caches of VMCache:
unspecified or == 0   --> VMCache is disabled
> 0                   --> will be set to the specified number
vm_cache_endpoint specifies the address of the Unix socket.

This commit just includes the core and the client of VMCache.

Currently, VM cache still cannot work with VM templating and vsock.
And just support qemu.

Fixes: #52

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-08 10:05:59 +08:00
Eric Ernst
3cecb36902 kata-deploy: containerd-v2: specify configuration file for runtime
Eventually containerd will allow us to provide an argument for a given
runtime handler, but in the meantime, let's use bash to provide
indirection to specify the appropriate configuration file.

Only QEMU is handled until we have a block based snapshotter available.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-03-07 15:56:49 -08:00
Eric Ernst
f04fac8fae kata-deploy: add support for v2 shim
Add support for the v2-shim integration with containerd. This registers
a runtimeClass named 'kata', utilizing the containerd-shim-kata-v2
binary.

This change adds volume mounts (hopefully temporarily) for
/usr/local/bin, as containerd requires the shim binary be within the
existing path.

Fixes: #323

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-03-07 13:05:54 -08:00
Graham Whaley
9ef7c75191 ci: add CODEOWNERS to cover .md files
Add a CODEOWNERS file to get github auto review requests
for any .md file changes.

Fixes: #383

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-03-07 11:14:42 +00:00
Graham Whaley
0f45a33684 ci: add a CODEOWNERS file to cover .md files
Add a CODEOWNERS file so we get auto-review requests from github
for any .md file changes.

Fixes: #394

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-03-07 11:09:47 +00:00
Penny Zheng
d8bcddb3d1 qemu-arm64: add unit test for func appendImage on aarch64
Since we overrided the func appendImage for aarch64, we should also
provide related unit test.

Fixes: #843

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-03-07 18:38:40 +08:00
Penny Zheng
986e4dc7b8 qemu-arm64: Support nvdimm on arm64
Original guest image was reprensented as block device in qemu-aarch64,
and it will bring up write lock error when running multiple containers.
Thanks to the new expanded IPA_SIZE feature in kernel 4.20 and
Eric Auger's related patch set in qemu(which are still under upstream
review), we could fully support nvdimm on arm64.

Depends-on: github.com/kata-containers/packaging#377

Fixes: #843

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-03-07 18:08:11 +08:00
Julio Montes
351d9b7a62 Merge pull request #373 from GabyCT/topic/addextraflags
kernel: Add missing config option
2019-03-06 12:52:26 -06:00
Julio Montes
169fa9531a Merge pull request #381 from chavafg/topic/rm-kernel-test-script
kernel: remove build-kernel_test.sh
2019-03-06 10:45:40 -06:00
Salvador Fuentes
425c9e89c6 Merge pull request #345 from jcvenegas/kernel-changes-docs
docs: kernel: Describe how to do kernel changes.
2019-03-06 10:39:11 -06:00
Alice Frosi
8ba27e14a1 s390x: remove pmu from test
Remove pmu option because it is not used and the test TestQemuS390xCPUModel
fails because the option is present

Fixes: #1329

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-03-06 17:02:15 +01:00
Alice Frosi
6242af34e4 s390x: fix TestQemuS390xMemoryTopology
The memory parameters of the test are wrong

Fixes: #1329

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-03-06 17:02:15 +01:00
Salvador Fuentes
1fbeaec69e kernel: remove build-kernel_test.sh
`build-kernel_test.sh` builds the kernel when there are changes
of it in a PR and then runs the whole CI tests. Now we are running
all CI tests on all changes[1] (not only when there is a kernel change).
This is making the CI to run all tests twice when there is a change
in the kernel, so we need to remove the script.

[1] https://github.com/kata-containers/packaging/pull/348

Fixes: #380.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-03-06 08:51:17 -06:00
Graham Whaley
ec6a1cc823 Merge pull request #1313 from jcvenegas/fix-unit-test
unit test: Fix local test
2019-03-06 10:18:51 +00:00
Alice Frosi
613edd5195 s390x: fix golint complain
Changed capital letter of VirtioSerialCCW to avoid golint complain

Fixes : #1327

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-03-06 10:38:17 +01:00
Frank Cao
c986a08ad9 Merge pull request #1243 from grahamwhaley/20190214_uscan_urls
Add upstream version url regexp's to allow upto date checks
2019-03-06 17:08:19 +08:00
Gabriela Cervantes
f93b9878ee kernel: Add missing config option
This will add missing config option (DRM_FBDEV_LEAK_PHYS_SMEM) that are
being asked while running the installation script for kata kernel. Also,
this jumps to the current kernel version that is being used at the runtime.

Fixes #372

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-03-06 02:32:07 -06:00
Ganesh Maharaj Mahalingam
27a92f94c8 runtime: Fix rootfs mount assumptions
This patch fixes the issue where various version of snapshotters,
overlay, block based graphdriver, containerd-shim-v2 overlay, block
based snapshotters mount & create rootfs differently and kata should be
able to handle them all.

The current version of the code always assumes that a folder named
'rootfs' exists within the mount device and that is the path the
container should start at. This patch checks the existing mount point
and if it is the same as the rootFs passed to the container, we no
longer add a suffix to the container's rootfs path.

Fixes: #1325

Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
Co-Authored-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-03-05 13:41:37 -08:00
Jose Carlos Venegas Munoz
c964a26476 virtcontainers: makefile fix .ci path
If enter to vircontainers directory and do make check-go-test, the makefile
does not found the kata .ci directory use relative path to makefile.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-03-05 14:12:46 -06:00
Julio Montes
55ac2559f5 Merge pull request #368 from devimc/topic/snap-1.5.1
snap: release 1.5.1
2019-03-05 13:52:09 -06:00
Jose Carlos Venegas Munoz
fcee080a2d unit-test: Fix local test
Simplify empty string proxy type handling and cast invalid proxy type to
ProxyType.

Fixes: #1312

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-03-05 13:51:15 -06:00
Julio Montes
7a4ee11cd1 snap: release 1.5.1
bump release version and delete hotfix patches

fixes #367

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-03-05 11:12:17 -06:00
Jose Carlos Venegas Munoz
9530002c47 docs: kernel: Describe how to do kernel changes.
Add documentation on how the kernel is tested and how changes could be
introduced.

Fixes: #344

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-03-05 10:15:45 -06:00
Sebastien Boeuf
e2c17661b0 Merge pull request #1322 from lifupan/fixconsole
virtcontainer: watch the qemu's console when proxy's debug enabled
2019-03-05 06:50:57 -08:00
Jose Carlos Venegas Munoz
c84bbf4a94 pkgs: disable CONFIG_RETPOLINE for RHEL
The gcc provided has not support for it.

Fixes: #369

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-03-05 08:35:35 -06:00
Graham Whaley
866da10f27 Merge pull request #1304 from Pennyzct/unit-test-2019/3/1
unit-test: fix undefined struct field SupportVSocks on arm64
2019-03-05 11:02:43 +00:00
Graham Whaley
8aedafad60 Merge pull request #1321 from teawater/makea64
Makefile: Fix aarch64 fail in No GO command or GOPATH not set mode
2019-03-05 10:12:49 +00:00
fupan
c4957ddd8d virtcontainer: watch the qemu's console when proxy's debug enabled
kata builtin proxy has always watched the qemu's console
whether proxy's debug is set or not, this is not aligned
with kata cli. This patch will change it and watch the
qemu's console only when proxy's debug is set in kata config.

Fixes: #1318

Signed-off-by: fupan <lifupan@gmail.com>
2019-03-05 17:09:26 +08:00
Eric Ernst
5dda0b7eea Merge pull request #1317 from jodh-intel/fix-runtime-tracing
tracing: Fix tracing
2019-03-04 21:11:39 -08:00
l00397676
1e30673adc test: add tests for sandbox creation rollback and cleanup
Adding unit tests for rollback ops when sandbox creation failling.

Fixes: #1257

Signed-off-by: l00397676 <lujingxiao@huawei.com>
2019-03-05 11:00:35 +08:00
Xu Wang
886d859fbe Merge pull request #1316 from lifupan/fixconfig
config: check the builtIn first when updating shim/proxy/agent
2019-03-05 09:52:39 +08:00
Hui Zhu
bdb34e7617 Makefile: Fix aarch64 fail in No GO command or GOPATH not set mode
Got aarch64 fail in No GO command or GOPATH not set mode:
Makefile:38: arch/aarch64-options.mk: No such file or directory
Makefile:237: *** "ERROR: No hypervisors known for architecture aarch64 (looked for: firecracker qemu)".  Stop.

The cause is the machine hardware name of aarch64 is aarch64 but
runtime's arch make file's name is arm64-options.mk.

This commit convert aarch64 to arm64 to fix the issue.

Fixes: #1320

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-05 09:48:03 +08:00
Eric Ernst
a2fe01131d Merge pull request #374 from jodh-intel/pin-docker-to-version-18.06
docs: Pin docker to version 18.06
2019-03-04 10:43:20 -08:00
Sebastien Boeuf
56a5accad0 Merge pull request #1307 from shaojiaxue/master
qemu: fix devID value error
2019-03-04 07:40:14 -08:00
Jose Carlos Venegas Munoz
837451b7ea versions: update versions file to 1.5.1
Update versions file

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-03-04 08:43:20 -06:00
Jose Carlos Venegas Munoz
54c4a017f0 lib: pkgs: Dont query host version file.
We do releases based on kata branches lets get a fresh
versions file as the one in the host may be not updated.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-03-04 08:41:27 -06:00
Graham Whaley
f8acf38d7f Merge pull request #361 from tuan-hoang1/s390x-4.19.24
kernel: update to 4.19.24 on s390x
2019-03-04 13:26:16 +00:00
Tuan Hoang
7839a5c276 kernel: CPU hotplug on s390x
Add CONFIG_CFS_BANDWIDTH so CPU hotplug feature works on s390x. Note
that CPU hot-unplug does not work yet due to limitations in qemu s390x.

Fixes #360

Signed-off-by: Tuan Hoang <tmhoang@linux.vnet.ibm.com>
2019-03-04 13:41:56 +01:00
Tuan Hoang
c1f8242e82 kernel: update to 4.19.24 on s390x, remove USB support
Remove CONFIG_USB_SUPPORT because s390x doesn't do USB.

Fixes #360

Signed-off-by: Tuan Hoang <tmhoang@linux.vnet.ibm.com>
2019-03-04 13:34:48 +01:00
James O. D. Hunt
c759cf5f37 tracing: Fix tracing
The store refactor (#1066) inadvertently broke runtime tracing as it
created new contexts containing trace spans.

Reworking the store changes to re-use the existing context resolves the
problem since runtime tracing assumes a single context.

Fixes #1277.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-04 11:02:31 +00:00
fupan
31232b4416 config: check the builtIn first when updating shim/proxy/agent
Check the "builtIn" first when updating the shim/proxy/agent,
thus can avoid checking the shim/proxy's binary files path which
is needless for "builtIn" type.

Fixes: #1314

Signed-off-by: fupan <lifupan@gmail.com>
2019-03-04 16:25:08 +08:00
fli
2af09d1d58 Merge pull request #1286 from teawater/nogomode
Makefile: Change "GOPATH not set" to "No GO command"
2019-03-04 09:37:56 +08:00
xueshaojia 00464843
03dd780ddd qemu: fix devID value error
reason: When excutes ExecuteNetCCWDeviceAdd, the DevID is always "virtio-".
If add-iface multy times, qemu may report "dumplicated id:virtio-".

Fixes: #1305

Signed-off-by: xueshaojia <xueshaojia@huawei.com>
2019-03-04 09:01:38 +08:00
Sebastien Boeuf
9f8d4e1291 Merge pull request #1311 from egernst/1.6.0-rc1-branch-bump
# Kata Containers 1.6.0-rc1
2019-03-01 13:15:22 -08:00
Eric Ernst
105dc2bd35 release: Kata Containers 1.6.0-rc1
- doc: Fix invalid URLs
- virtcontainers: fix vCPU calculation errors
- Network: add ipvlan unmarshal
- store: Add SetLogger API
- versions: Bump to kernel 4.19.24
- cgroups: fix failed to remove sandbox cgroup
- devices: fix attach count for vhost-user-blk
- qemu: Cleanup Vm paths irrespective of Sandbox stop pass/fail
- virtcontainers: reimplement sandbox cgroup
- delete: force: Do not fail on non exiting container
- vendor: add missing comma to Gopkg.lock
- Unit test: fix bugs on a few unit tests on aarch64
- versions: update k8s, cri-o and containerd
- versions: Update qemu-lite hash
- virtcontainers: Improve debug messages when deleting files
- versions: use clear linux latest rootfs.
- shimv2: Send async task events to containerd/cri
- Makefile: Set ARCH in GOPATH not set mode
- Virtcontainers store
- runtime: Do not error if only initrd/rootfs image installed
- pullapprove: remove it
- Reduce virtcontainers unit test noise
- snap: add snapcraft store banner
- kata-env: kata-env error out when there is no VERSION_ID.
- ppc64le: Fix hotplug issue
- Network interface removal and decoupling
- Makefile: Provide default hypervisor CMD settings
- ci: Add a CODEOWNERS file for github ack checks
- shimv2: use the runtime config file passed from containerd/cri
- cli: set config options before showing config paths
- makefile: honor DESDIR on install
- factory: do not destroy vm factory when checking status
- runtime: Fix TestCCCheckCLIFunction on P9 system

dc26508 virtcontainers: fix vCPU calculation errors
f540a80 store: Add SetLogger API
4357e85 doc: Fix invalid URLs
36141d2 Network: add ipvlan unmarshal
454775f cgroups: fix failed to remove sandbox cgroup
768658f versions: Update kernel version to 4.19.24
46e2f88 devices: fix attach count for vhost-user-blk
6daefdb qemu: Cleanup Vm paths irrespective of Sandbox stop pass/fail
58d2785 virtcontainers: don't try to talk with the proxy when it's not running
62c393c virtcontainers: change container's state to stop asap
5201860 virtcontainers: reimplement sandbox cgroup
9758cdb virtcontainers: move cpu cgroup implementation
c78d6b0 delete: force: Do not fail on non exiting container
a136999 vendor: Add missing comma to Gopkg.lock and dep ensure
409a8a5 versions: update k8s, cri-o and containerd
23c554e unit-test: refine func TestGetCPUDetails
1b967a4 unit-test: add nolint comment to avoid unused warning
3ec56ea runtime: add appendBridges for arm64
e93fb0b unit-test: test func for RunningOnVMM should be arch-dependent
0679f6f unit-test: refine qemu_arm64_test.go
44e2b9a unit-test: struct TestDataa should be included in arch-indenpedent .go file
a1c8590 virtcontainers: add method to get hypervisor PID
c17dd11 versions: Update qemu-lite hash
a614273 virtcontainers: Improve debug when create/delete files
84b7165 versions: use clear linux latest rootfs.
81c7a96 Makefile: Set ARCH in GOPATH not set mode
96e524d shimv2: Send task events to containerd/cri
bb99e41 virtcontainers: Fix Store related vm factory leak
7b0376f virtcontainers: Fix container.go cyclomatic complexity
f8e7e30 virtcontainers: Remove the resource storage original implementation
fad23ea virtcontainers: Conversion to Stores
962e1e6 pullapprove: remove it
2ecffda virtcontainers: store: Add a ItemLock API
6e9256f virtcontainers: store: Add a Raw API
c25c608 virtcontainers: store: Add a VC specific Store
ef11bf5 virtcontainers: store: Add a Delete API
f2ab58d virtcontainers: store: Implement the filesystem backend
d22cdf2 virtcontainers: store: Add an internal backend interface
6b87ecf virtcontainers: store: Keep track of newly created Stores
efd50ec virtcontainers: Add a Store manager
4be76e9 virtcontainers: Initial Store implementation
2affa1f virtcontainers: Reduce hyperstart agent test noise
a3eff87 virtcontainers: Make proxy startup sequence less noisy
f0312f6 virtcontainers: Reduce filesystem test noise
e402601 virtcontainers: Reduce sandbox test noise
799ac6e virtcontainers: Reduce qemu test noise
560902c virtcontainers: Reduce kata_agent test noise
2093fe6 virtcontainers: Reduce cc_proxy mock test noise
79ed088 virtcontainers: Reduce hyperstart mock test noise
be0726c runtime: Do not error if only initrd/rootfs image installed
7222f53 snap: add snapcraft store banner
4f51687 kata-env: kata-env error out when there is no VERSION_ID.
a48e614 ci: Add a CODEOWNERS file for github ack checks
b1c6667 vendor: Update govmm vendoring
b0986a5 ppc64le: Fix vCPU hotplug issue
68043b5 cli: set config options before showing config paths
f1a12ce shimv2: use the runtime config file passed from containerd/cri
18dcd2c virtcontainers: Decouple the network API from the sandbox one
b39cb1d virtcontainers: Remove the network interface
a02c39e Makefile: Set arch regardless of GOPATH state
d78a62d factory: do not destroy vm factory when checking status
718488b makefile: honor DESDIR on install
c93aa53 runtime: Check SMT=on/off only for P8 or lesser

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-03-01 10:45:10 -08:00
Hui Zhu
a1ddf53df4 Makefile: Change "GOPATH not set" to "No GO command or GOPATH not set"
The cause that make "sudo make install" fail is not "GOPATH not set",
but no go command in path.
But the commit still keep the "GOPATH not set" because
execute "unset GOPATH; make" will fail because "go build" cannot work
without GOPATH.

Fixes: #1285

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-03-01 22:47:37 +08:00
Julio Montes
d37061bf46 Merge pull request #1301 from GabyCT/topic/updateurl
doc: Fix invalid URLs
2019-03-01 08:32:01 -06:00
James O. D. Hunt
5524fc39e5 docs: Clarified docker install note
Improved wording in docker installation Note based on review feedback.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-03-01 11:24:58 +00:00
Penny Zheng
35672b5896 unit-test: fix undefined struct field SupportVSocks on arm64
Since arch-specific func getExpectedHostDetails holds undefined struct
field SupportVSocks on arm64, unit test TestEnvGetEnvInfoSetsCPUType,
TestEnvGetHostInfo and so on failed.
I'm trying to use generic func genericgetExpectedHostDetails on arm64
to avoid similar issues.

Fixes: #1287

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-03-01 15:13:15 +08:00
Jose Carlos Venegas Munoz
6f2597ed11 Merge pull request #1294 from egernst/vCPU-calculations-fix
virtcontainers: fix vCPU calculation errors
2019-02-28 15:53:20 -06:00
Archana Shinde
9b624d5b9b Merge pull request #1255 from caoruidong/ipvlan-ep
Network: add ipvlan unmarshal
2019-02-28 12:18:31 -08:00
GabyCT
b702f5028d Merge pull request #387 from devimc/topic/cpuCgroups
constraints: add cpu cgroups documentation
2019-02-28 11:48:32 -06:00
Eric Ernst
dc2650889c virtcontainers: fix vCPU calculation errors
We were grabbing a running total of quota and period for each container
and then calculating the number of resulting vCPUs. Summing period
doesn't make sense.  To simplify, let's just calculate mCPU per
container, keep a running total of mCPUs requested, and then translate
to sandbox vCPUs after.

Fixes: #1292

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-02-28 08:13:04 -08:00
Julio Montes
dbfd96583a Merge pull request #1298 from jodh-intel/store-pkg-add-SetLogger
store: Add SetLogger API
2019-02-28 08:52:50 -06:00
Graham Whaley
da9f541deb Merge pull request #227 from jodh-intel/remove-arch-calls
arch: Remove calls to arch command
2019-02-28 11:30:08 +00:00
James O. D. Hunt
f540a80354 store: Add SetLogger API
Add a `store.SetLogger()` API to allow the store package to log with the
standard set of fields (as expected by the log parser [1].

Fixes #1297.

---

[1] - https://github.com/kata-containers/tests/tree/master/cmd/log-parser#logfile-requirements

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-02-28 10:56:26 +00:00
Gabriela Cervantes
4357e851bf doc: Fix invalid URLs
Now that we have been moved the CI to ubuntu 18.04, we need to update the
README.

Fixes #1300

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2019-02-28 01:41:18 -06:00
Julio Montes
1e1a735796 constraints: add cpu cgroups documentation
Explain cpu cgroups are implemented in kata containers

fixes #386

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-27 11:57:17 -06:00
Graham Whaley
975157d75b versions.yaml: add uscan annotations
Adds uscan key/values for all items with a Version field that are pulled
from a repo with version info (such as github) so we can perform
automated upstream version update checks.

Fixes: #1250

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-02-26 16:41:09 +00:00
Jose Carlos Venegas Munoz
873ac754d4 Merge pull request #348 from jcvenegas/run-all-ci
ci: Run all CI test.
2019-02-25 22:21:16 -06:00
Jose Carlos Venegas Munoz
dca8748fa0 Merge pull request #363 from egernst/issue-362
update kata-deploy readme's ToC
2019-02-25 19:19:56 -06:00
Eric Ernst
2f70232cae kata-deploy: update README's ToC
The kata-deploy README's table of contents was out of date

Fixes: #362

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-02-25 15:26:07 -08:00
Julio Montes
60e058942d Merge pull request #342 from tuan-hoang1/s390x-snap
snap: add support for s390x
2019-02-25 15:06:02 -06:00
Julio Montes
4448646cee Merge pull request #359 from nitkon/master
kernel: Add 4.19.10 config for powerpc
2019-02-25 12:33:00 -06:00
Tuan Hoang
035ba0808b snap: add support for s390x
This allows running packaging CI scripts on s390x to create snap image.

Fixes #341

Signed-off-by: Tuan Hoang <tmhoang@linux.vnet.ibm.com>
2019-02-25 18:40:43 +01:00
Jose Carlos Venegas Munoz
618aeba540 ci: Run all CI test.
run all CI test to increase testing coverage on kernel config changes.

Fixes: #346

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-02-25 08:56:51 -06:00
Nitesh Konkar
1c5ba65912 kernel: Add 4.19.10 config for powerpc
We want to make sure Kata runs on latest stable kernels so that it
benefits from the latest features.

Fixes: #358

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2019-02-25 19:46:00 +05:30
Graham Whaley
e8a8e0db79 Merge pull request #1111 from sboeuf/bump_kernel
versions: Bump to kernel 4.19.24
2019-02-22 17:32:35 +00:00
Ruidong Cao
36141d27fc Network: add ipvlan unmarshal
We have 7 types of endpoints, but forget ipvlan in unmarshal funciton.
So add it and refactor for cyclomatic complexity reason.

Fixes #1254

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2019-02-23 01:25:26 +08:00
Jose Carlos Venegas Munoz
a8e458aae2 Merge pull request #356 from devimc/topic/fixSnap
snap: use sudo to configure and start docker
2019-02-22 11:02:01 -06:00
Julio Montes
31ec69ecd2 snap: add user into docker group
add user into docker group wo allow it run containers

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-22 10:23:32 -06:00
Julio Montes
f31829d016 snap: unsmask docker
in some systems docker service is masked, to build the
rootfs image we need to unmask it

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-22 10:22:08 -06:00
Julio Montes
41f4ebc1cb snap: use sudo to configure and start docker
configure and start docker using sudo

fixes #355

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-22 09:46:00 -06:00
Julio Montes
d8d78bb383 Merge pull request #351 from devimc/topic/removeSnapBuild
snap: remove snap-build scripts
2019-02-22 07:16:06 -06:00
Julio Montes
16bd983387 Merge pull request #1264 from Ace-Tang/master
cgroups: fix failed to remove sandbox cgroup
2019-02-21 13:46:06 -06:00
James O. D. Hunt
b96ca2237f Merge pull request #1260 from stefanha/fix-vhost-user-blk-detach
devices: fix attach count for vhost-user-blk
2019-02-21 16:57:11 +00:00
Julio Montes
8a055c44f8 snap: remove snap-build scripts
snap-build scripts were used to cross-build snap images in local environments.
Currently we are using launchpad to build and release the snaps, hence those
old scripts are no more needed.

fixes #350

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-21 10:51:50 -06:00
Graham Whaley
62d347a426 Merge pull request #338 from Pennyzct/v4.19
config: add kernel config v4.19.23 for arm64
2019-02-21 16:12:31 +00:00
Julio Montes
3fa6a83d4d Merge pull request #384 from liubin/master
docs: fix broken links in architecture.md
2019-02-21 08:22:27 -06:00
Ace-Tang
454775fb97 cgroups: fix failed to remove sandbox cgroup
sandbox cgroup use V1NoConstraints, this only create memory subsystem,
but when delete, load parent cgroup always use `cgroups.V1`, so other
subsystem path can not be find, sandbox cgroup can not be deleted.

Fixes: #1263

Signed-off-by: Ace-Tang <aceapril@126.com>
2019-02-21 17:34:34 +08:00
bin liu
0a643e9a56 docs: fix broken links in architecture.md
Two links to `how-to` file is broken.

Fixes: #383

Signed-off-by: bin liu <liubin0329@gmail.com>
2019-02-21 15:15:01 +08:00
Peng Tao
1d79338a1a Merge pull request #1247 from nitkon/leakyPods
qemu: Cleanup Vm paths irrespective of Sandbox stop pass/fail
2019-02-21 11:56:57 +08:00
Penny Zheng
af2a3ff76e config: add kernel config v4.19.23 for arm64
we add the rough kernel config v4.19.23 for arm64, here we let
'make oldconfig'(setting default) to do the transformation from
v4.14.X to v4.19.X.

Fixes: #337

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-21 09:59:15 +08:00
Sebastien Boeuf
768658f61b versions: Update kernel version to 4.19.24
We need to bump the kernel version from 4.14.67 to 4.19.24 in order
to follow the recent kernel config bump.

Fixes #618
Fixes #1029

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2019-02-20 14:44:41 -08:00
GabyCT
60f7c4f401 Merge pull request #1189 from devimc/topic/fixCpuCgroup
virtcontainers: reimplement sandbox cgroup
2019-02-20 10:18:56 -06:00
Stefan Hajnoczi
46e2f885af devices: fix attach count for vhost-user-blk
Commit affd6e3216 ("devices: add reference
count for devices.") introduced an attach count for devices.  The
vhost-user-blk device increments the counter instead of decrementing it
when detaching.

Fixes: #1259
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-02-20 14:58:45 +00:00
Nitesh Konkar
6daefdb177 qemu: Cleanup Vm paths irrespective of Sandbox stop pass/fail
Sometimes qemu/qmp commands error out and VM files
get left behind on the host filesystem. Clen them up
irrespective of `stopSandbox` succeeds or fails.

Fixes: #1246

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-02-20 16:02:48 +05:30
Julio Montes
58d278560e virtcontainers: don't try to talk with the proxy when it's not running
To avoid long timeouts, the runtime shouldn't try to talk with the proxy
when it's not running.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-19 13:13:45 -06:00
Julio Montes
62c393c119 virtcontainers: change container's state to stop asap
container is killed by force, container's state MUST change its state to stop
immediately to avoid leaving it in a bad state.

fixes #1088

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-19 13:13:44 -06:00
Julio Montes
5201860bb0 virtcontainers: reimplement sandbox cgroup
All containers run in different cgroups even the sandbox, with this new
implementation the sandbox cpu cgroup wil be equal to the sum of all its
containers and the hypervisor process will be placed there impacting to the
containers running in the sandbox (VM). The default number of vcpus is
used when the sandbox has no constraints. For example, if default_vcpus
is 2, then quota will be 200000 and period 100000.

**c-ray test**
http://www.futuretech.blinkenlights.nl/c-ray.html

```
+=============================================+
|         | 6 threads 6cpus | 1 thread 1 cpu  |
+=============================================+
| current |   40 seconds    |   122 seconds   |
+==============================================
|   new   |   37 seconds    |   124 seconds   |
+==============================================
```

current = current cgroups implementation
new = new cgroups implementation

**workload**

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: c-ray
  annotations:
    io.kubernetes.cri.untrusted-workload: "true"
spec:
  restartPolicy: Never
  containers:
  - name: c-ray-1
    image: docker.io/devimc/c-ray:latest
    imagePullPolicy: IfNotPresent
    args: ["-t", "6", "-s", "1600x1200", "-r", "8", "-i",
          "/c-ray-1.1/sphfract", "-o", "/tmp/output.ppm"]
    resources:
      limits:
        cpu: 6
  - name: c-ray-2
    image: docker.io/devimc/c-ray:latest
    imagePullPolicy: IfNotPresent
    args: ["-t", "1", "-s", "1600x1200", "-r", "8", "-i",
          "/c-ray-1.1/sphfract", "-o", "/tmp/output.ppm"]
    resources:
      limits:
        cpu: 1
```

fixes #1153

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-19 13:13:44 -06:00
Julio Montes
9758cdba7c virtcontainers: move cpu cgroup implementation
cpu cgroups are container's specific hence all containers even the sandbox
should be able o create, delete and update their cgroups. The cgroup crated
matches with the cgroup path passed by the containers manager.

fixes #1117
fixes #1118
fixes #1021

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-19 13:13:44 -06:00
Sebastien Boeuf
9294979854 Merge pull request #334 from ganeshmaharaj/crio-conf-fix
kata-deploy: Check crio conf before update
2019-02-19 10:04:45 -08:00
Peng Tao
22cee2d0cd Merge pull request #1220 from jcvenegas/delete-force-not-fail-non-container
delete: force: Do not fail on non exiting container
2019-02-19 12:23:51 +08:00
Jose Carlos Venegas Munoz
c78d6b057e delete: force: Do not fail on non exiting container
When a container does not exist, runc does not fail.  Lets mimic this
behavior, sometimes kuberentes will try to force delete containers that
could not be created and gets confused if delete --force fails.

Fixes: #1219

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-02-18 11:39:25 -06:00
Ganesh Maharaj Mahalingam
059b48bfa2 kata-deploy: Check crio conf before update
kata-deploy inserts 'manage_network_ns_lifecycle' into crio.conf without any
prior checks and if there is a previous entry in the file, this becomes a
duplicate causing crio service restart issues. This patch addresses that
particular scenario.

Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2019-02-18 09:33:16 -08:00
Li Wei
731ff7b13f Merge pull request #1242 from teawater/golock
vendor: add missing comma to Gopkg.lock
2019-02-18 20:57:47 +08:00
James O. D. Hunt
ceae7b48e0 docs: Pin docker to version 18.06
Docker 18.09 removed devicemapper support but did not provide an
alternative. This can cause problems for users so update the install
docs to install Docker at version 18.06 (the last version that supports
devicemapper).

This is a temporary solution until either docker provide an alternative
or we find a way to work around the Docker feature being removed.

Note the extra logic required for Fedora since 18.06 is not available
for that release.

Fixes #373.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-02-18 08:55:41 +00:00
James O. D. Hunt
4c71475122 Merge pull request #372 from marcov/zun-kata-install
zun: update kata install instructions
2019-02-18 08:48:19 +00:00
James O. D. Hunt
f38c67da0c arch: Remove calls to arch command
The `arch(1)` command is not available on some systems so use the
`uname(1)` command for the equivalent functionality.

Fixes #150.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-02-18 08:36:22 +00:00
Hui Zhu
a136999258 vendor: Add missing comma to Gopkg.lock and dep ensure
$ dep ensure
error while parsing /home/teawater/gopath/src/github.com/kata-containers/runtime/Gopkg.lock: Unable to parse the lock as TOML: (697, 6): missing comma

Add missing comma to Gopkg.lock and dep ensure to handle the issue.

Fixes: #1241

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-02-16 22:55:39 +08:00
Graham Whaley
816ea42840 Merge pull request #1202 from Pennyzct/unit-test
Unit test: fix bugs on a few unit tests on aarch64
2019-02-15 10:26:03 +00:00
Graham Whaley
7f2b2da7f7 Merge pull request #1239 from chavafg/topic/update-k8s
versions: update k8s, cri-o and containerd
2019-02-15 09:56:03 +00:00
Salvador Fuentes
409a8a5fbb versions: update k8s, cri-o and containerd
Update:
- k8s to version 1.13.3
- cri-o to version 1.13.0
- containerd to version 1.2.4, which
  according to its release notes, uses
  cri plugin version da0c016c830b2ea97fd1d737c49a568a816bf964

Fixes: #1238.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-02-14 16:09:12 -06:00
Julio Montes
2b382fdfec Merge pull request #209 from jcvenegas/release-process-md
docs: Document release process - tools.
2019-02-14 09:28:41 -06:00
Julio Montes
268ddc595f Merge pull request #1237 from chavafg/topic/update-qemu-lite-hash
versions: Update qemu-lite hash
2019-02-14 08:17:06 -06:00
Penny Zheng
23c554ee96 unit-test: refine func TestGetCPUDetails
refine struct testData in func TestGetCPUDetails to remove redundant
/unused struct field expectedVendor and expectedModel

Fixes: #1200

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-14 15:14:27 +08:00
Penny Zheng
1b967a4a6a unit-test: add nolint comment to avoid unused warning
since all generic* could bring unused linter warnings, which lead to
CI crash, we add nolint comment to avoid them.

Fixes: #1200

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-14 14:56:42 +08:00
Penny Zheng
3ec56eaf9f runtime: add appendBridges for arm64
since generic func genericAppendBridges and genericBridges
is also applied for machine type QemuVirt, we use it as implementation
for appendBridges and bridges on aarch64.
since const defaultPCBridgeBus is used in generic func
genericAppendBridges for pc machine, we should define it once
in generic file, instead of redefining it in different
arch-specific files.

Fixes: #1200

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-14 14:56:42 +08:00
Penny Zheng
e93fb0b3a0 unit-test: test func for RunningOnVMM should be arch-dependent
original tests for func RunningOnVMM are sort of amd64-specific,
since all other archs don't support nested VMM for now.

Fixes: #1200

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-14 14:56:30 +08:00
Penny Zheng
0679f6fa59 unit-test: refine qemu_arm64_test.go
refine a set of test functions under qemu_arm64_test.go. e.g. test
func for memoryTopology shouldn't be the same one on amd64, since
for now, we don't support nvdimm on arm64.

Fixes: #1200

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-14 11:34:05 +08:00
Penny Zheng
44e2b9aa0a unit-test: struct TestDataa should be included in arch-indenpedent .go file
argument struct TestDataa in generic func genericTestGetCPUDetails is repeatedly
defined in almost all arch-dependent .go file, cli/kata-check_amd64_test.go,
cli/kata-check_ppc64le_test.go, etcm, except arm64. let's only declare it once in
cli/kata-check_test.go. change its name to testCPUDetail for better understanding.

Fixes: #1200

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-02-14 11:34:05 +08:00
Julio Montes
a1c85902f6 virtcontainers: add method to get hypervisor PID
hypervisor PID can be used to move the whole process and its
threads into a new cgroup.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-13 18:01:14 -06:00
Salvador Fuentes
c17dd11e01 versions: Update qemu-lite hash
We are using a newer hash for the packaged qemu-lite.
Update our record in versions.yaml to use the same version
in our CI.

Fixes: #1236.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2019-02-13 16:01:46 -06:00
Jose Carlos Venegas Munoz
d0879d779c docs: Document release process - tools.
Document flow to create a release based in the tools
from this repository.

Fixes: #207

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-02-13 15:52:36 -06:00
Graham Whaley
136b188fd4 Merge pull request #1235 from nitkon/debug
virtcontainers: Improve debug messages when deleting files
2019-02-13 17:53:48 +00:00
Nitesh Konkar
a614273af5 virtcontainers: Improve debug when create/delete files
Adding debug messages which state which files
are being created/deleted could be helpful in
analyzing situations like leaky pod issues.

Fixes: #1234

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-02-13 20:51:33 +05:30
Marco Vedovati
f39a73ea0c zun: update kata install instructions
Update zun guide to point to the kata installation instructions for
Ubuntu.

Fixes: #371

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-02-13 13:09:52 +01:00
Graham Whaley
d07297c197 Merge pull request #1232 from jcvenegas/clear-rootfs-latest
versions: use clear linux latest rootfs.
2019-02-13 09:36:07 +00:00
Jose Carlos Venegas Munoz
50097f93f9 Merge pull request #327 from marcov/ccloudvm-kata-install
ccloudvm: update kata install URL
2019-02-12 12:37:19 -06:00
Jose Carlos Venegas Munoz
84b7165e90 versions: use clear linux latest rootfs.
Update Clear Linux rootfs to latest.

Fixes: #1230

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-02-12 12:21:33 -06:00
Hui Zhu
d7b6b25059 Merge pull request #1205 from lifupan/asyncevents
shimv2: Send async task events to containerd/cri
2019-02-12 17:12:27 +08:00
Peng Tao
1c27ab79d9 Merge pull request #1225 from teawater/fixmakeinstall
Makefile: Set ARCH in GOPATH not set mode
2019-02-12 09:14:54 +08:00
Eric Ernst
6431f1f288 Merge pull request #1066 from sameo/topic/state-storage
Virtcontainers store
2019-02-11 14:42:20 -08:00
Graham Whaley
319a98fdf8 Merge pull request #1175 from nitkon/master
runtime: Do not error if only initrd/rootfs image installed
2019-02-11 17:48:49 +00:00
James O. D. Hunt
828feca036 Merge pull request #332 from grahamwhaley/20190206_remove_pullapprove
pullapprove: remove it
2019-02-11 11:03:38 +00:00
James O. D. Hunt
a3a3d1a53e Merge pull request #1216 from grahamwhaley/20190206_remove_pullapprove
pullapprove: remove it
2019-02-11 10:55:07 +00:00
Graham Whaley
5b483f289a Merge pull request #380 from nitkon/patch-1
docs: Fix a typo in how-to docs
2019-02-11 10:23:02 +00:00
Hui Zhu
81c7a968ed Makefile: Set ARCH in GOPATH not set mode
In GOPATH not set mode got:
make: go: Command not found
Makefile:38: arch/-options.mk: No such file or directory
make: go: Command not found
Makefile:237: *** "ERROR: No hypervisors known for architecture  (looked for: firecracker qemu)".  Stop.

The root cause is GOPATH not set mode is not set ARCH.
Set it to fix the issue.

Fixes: #1224

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-02-11 17:06:16 +08:00
fupan
96e524d2a0 shimv2: Send task events to containerd/cri
The Runtime v2 supports an async event model. In order for the an upstream
caller (such as Docker) to get these events in the correct order a Runtime
v2 shim MUST implement some events.

For much more info, please see:
https://github.com/containerd/containerd/blob/master/runtime/v2/README.md#events

Fixes:#1204

Signed-off-by: fupan <lifupan@gmail.com>
2019-02-11 11:49:10 +08:00
nitkon
bc7d96998d docs: Fix a typo in how-to docs
Fix Typo

Fixes: #379

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-02-11 01:05:11 +05:30
James O. D. Hunt
d48ccf4816 Merge pull request #333 from jschintag/qemu_configure_s390x
s390x: add support to build qemu
2019-02-07 17:20:59 +00:00
James O. D. Hunt
56f1044e12 Merge pull request #229 from grahamwhaley/20190206_remove_pullapprove
pullapprove: remove it
2019-02-07 17:19:48 +00:00
GabyCT
1f87f86812 Merge pull request #377 from grahamwhaley/20190206_remove_pullapprove
pullapprove: remove config file
2019-02-07 10:26:30 -06:00
jschintag
5a6b92b711 s390x: add support to build qemu
This commit adds the s390x specific build flags to the configure-hypervisor.sh

Fixes: #324

Signed-off-by: Jan Schintag <jan.schintag@de.ibm.com>
2019-02-07 16:49:57 +01:00
Samuel Ortiz
bb99e4152b virtcontainers: Fix Store related vm factory leak
We are creating Store directories but never removing them.
Calling into a VM factory created vm Stop() will now clean the VM Store
artifacts up.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-07 00:59:33 +01:00
Samuel Ortiz
7b0376f3d3 virtcontainers: Fix container.go cyclomatic complexity
With the Stores conversion, the newContainer() cyclomatic complexity
went over 15. We fix that by extracting the block devices creation
routine out of newContainer.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-07 00:59:33 +01:00
Samuel Ortiz
f8e7e308c3 virtcontainers: Remove the resource storage original implementation
Now that we converted the virtcontainers code to the store package, we
can remove all the resource storage old code.

Fixes: #1099

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-07 00:59:33 +01:00
Samuel Ortiz
fad23ea54e virtcontainers: Conversion to Stores
We convert the whole virtcontainers code to use the store package
instead of the resource_storage one. The resource_storage removal will
happen in a separate change for a more logical split.

This change is fairly big but mostly does not change the code logic.
What really changes is when we create a store for a container or a
sandbox. We now need to explictly do so instead of just assigning a
filesystem{} instance. Other than that, the logic is kept intact.

Fixes: #1099

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-07 00:59:29 +01:00
Graham Whaley
8963b8e3c9 pullapprove: remove it
We are moving off pullapprove. Remove its config file.

Fixes: #228

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-02-06 16:14:24 +00:00
Graham Whaley
0d0c525672 pullapprove: remove it
We are moving off pullapprove. remove its config file.

Fixes: #331

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-02-06 16:11:23 +00:00
Graham Whaley
d53675125b pullapprove: remove config file
We are moving off pullapprove. Remove its config file.

Fixes: #376

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-02-06 15:55:28 +00:00
Graham Whaley
962e1e6566 pullapprove: remove it
We are moving off pullapprove. Remove its config file.

Fixes: #1215

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-02-06 15:50:31 +00:00
Samuel Ortiz
2ecffda170 virtcontainers: store: Add a ItemLock API
The ItemLock API allows for taking shared and exclusive locks on all
items.
For virtcontainers, this is specialized into taking locks on the Lock
item, and will be used for sandbox locking.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-06 14:19:18 +01:00
Samuel Ortiz
6e9256f483 virtcontainers: store: Add a Raw API
The Raw API creates a raw item, i.e. an item that must be handled
directly by the caller. A raw item is one that's not defined by the
store.Item enum, i.e. it is a custom, caller defined one.
The caller gets a URL back and is responsible for handling the item
directly from this URL.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-06 14:19:18 +01:00
Samuel Ortiz
c25c60898b virtcontainers: store: Add a VC specific Store
This is basically a Store dispatcher, for storing items into their right
Store (either configuration or state).
There's very little logic here, except for finding out which store an
item belongs to in the virtcontainers context.

vc.go also provides virtcontainers specific utilities.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-06 14:19:18 +01:00
Samuel Ortiz
ef11bf52a6 virtcontainers: store: Add a Delete API
It's going to be used to completely clean a Store away.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-06 14:19:18 +01:00
Samuel Ortiz
f2ab58d841 virtcontainers: store: Implement the filesystem backend
new() only creates the backend and initialized the first layout.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-06 14:19:18 +01:00
Samuel Ortiz
d22cdf2dd9 virtcontainers: store: Add an internal backend interface
All Store backends will have to implement that simple interface.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-06 14:19:18 +01:00
Samuel Ortiz
6b87ecfc1b virtcontainers: store: Keep track of newly created Stores
When a component creates a new store from a given root path, we add it
to the store manager and return it back when another component asks for
it.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-06 14:19:18 +01:00
Samuel Ortiz
efd50ecac9 virtcontainers: Add a Store manager
Each virtcontainers module/component should be able to get a handler on
a Store for loading component specific items. The Store manager is an
internal Store layer for tracking all created Stores.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-06 14:19:18 +01:00
Samuel Ortiz
4be76e9969 virtcontainers: Initial Store implementation
Store is a replacement for the current resource storage virtcontainers
implementation and the Manager is the front-end for it. The back-ends
will provide actual storage capabilities and the first one will be the
filesystem one, for storing virtcontainers Items on a local filesystem.

The main design goals for Store are the following ones:

- Simplicity: The API should be short and simple.
- Transparency: The core virtcontainers code should not care about
  the storage backend details.
- Extensibility: It should be easily extensible to add non local and in
  memory backends.

Manger provides a very short and simple API for the rest of the virtcontainers
code base to consume:

New: Creates a new Store, if needed.
Load: Loads an Item from a Store
Store: Stores an Item into a Store.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-06 14:19:18 +01:00
Manohar Castelino
1666474b45 Merge pull request #330 from egernst/fix-329
kata-deploy: fix yaml example for install/remove commands
2019-02-05 17:15:36 -08:00
Eric Ernst
02729c5c6e kata-deploy: fix yaml example for install/remove commands
There was a bug in the script invocation in the YAML.  Fixed.

Fixes: #329

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-02-05 15:20:38 -08:00
Eric Ernst
d3c63e66e3 Merge pull request #1212 from sameo/topic/ut-noise
Reduce virtcontainers unit test noise
2019-02-05 14:43:29 -08:00
Julio Montes
f92ca1d98d Merge pull request #1199 from devimc/topic/snapBanner
snap: add snapcraft store banner
2019-02-05 14:34:25 -06:00
Samuel Ortiz
2affa1fe26 virtcontainers: Reduce hyperstart agent test noise
We need to pass a context to the filesystem handle.

Fixes: #1211

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-05 16:33:06 +01:00
Samuel Ortiz
a3eff87e80 virtcontainers: Make proxy startup sequence less noisy
We only want to know which proxy started when debugging.

Fixes: #1211

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-05 16:33:06 +01:00
Samuel Ortiz
f0312f607b virtcontainers: Reduce filesystem test noise
We need to set the context before calling into the API.

Fixes: #1211

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-05 16:33:06 +01:00
Samuel Ortiz
e402601cf8 virtcontainers: Reduce sandbox test noise
We need to set the sandbox context before calling into its API.

Fixes: #1211

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-05 16:33:06 +01:00
Samuel Ortiz
799ac6edf6 virtcontainers: Reduce qemu test noise
We only need to set the context before calling into qemu's API.

Fixes: #1211

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-05 16:33:06 +01:00
Samuel Ortiz
560902c8f1 virtcontainers: Reduce kata_agent test noise
We only need to set the agent context before calling into its API.

Fixes: #1211

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-05 16:33:05 +01:00
Samuel Ortiz
2093fe6bfd virtcontainers: Reduce cc_proxy mock test noise
We don't need that many logs, especially for the positive path.

Fixes: #1211

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-05 16:33:05 +01:00
Samuel Ortiz
79ed0886c6 virtcontainers: Reduce hyperstart mock test noise
We don't need that many logs, especially for the positive path.

Fixes: #1211

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-02-05 16:32:58 +01:00
Marco Vedovati
c3282958f2 ccloudvm: update kata install URL
Update the kata install commands to point to the correct repository URL.

Fixes: #326

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-02-04 17:25:05 +01:00
Nitesh Konkar
be0726ce50 runtime: Do not error if only initrd/rootfs image installed
If only initrd or rootfs image is installed,
allow to start Kata Containers without erroring
out.

Fixes:  #1174

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-02-04 18:01:00 +05:30
Julio Montes
7222f533b8 snap: add snapcraft store banner
add snapcraft store banner

fixes #1198

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-02-01 11:20:49 -06:00
James O. D. Hunt
970b26c349 Merge pull request #304 from egernst/kata-deploy-1.5.0-rc2
kata deploy rewrites
2019-02-01 09:17:21 +00:00
Eric Ernst
b4ba52d432 kata-deploy: s/kata-containers.io/katacontainers.io
To be consistent with project URL, use katacontainers.io
instead of kata-containers.io

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-01-31 21:13:00 -08:00
Eric Ernst
5f955968e6 kata-deploy: update documentation after 1.5 rewrite
With the 1.5 release, we made several changes:
-simplification of daemonsets
-introduction of runtimeClass

Update documentation to take this into account.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-01-31 21:12:40 -08:00
Eric Ernst
53115c0de9 kata-deploy: add docker details to readme
Add details for Docker configuration to the kata-deploy README

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-01-31 21:12:40 -08:00
Eric Ernst
c0cdc045a5 kata-deploy: add script for configuring Docker
Before the kata-deploy container image was intended to be
used with only Kubernetes.  This commit adds a script for configuring
Kata to run with Docker.

This assumes > release 1.5 of Kata, as Firecracker is being configured
as well as QEMU based Kata. Note, in order for this to work, Docker must
be configured to use a block-based storage driver.

To succeed, it the following directories must be mounted:
- /opt/kata - this is the location that the kata artifacts are stored
- /run/systemd - for reloading the docker service
- /var/run/dbus - for reloading the docker service
- /etc/docker - for updating the docker configuration (daemon.json)

usage: kata-deploy-kata [install | remove]

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-01-31 21:12:40 -08:00
Eric Ernst
471415b245 kata-deploy: updates for Dockerfile
Additional packages are necessary and/or were removed from the base
image.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-01-31 21:12:40 -08:00
Eric Ernst
5db1ba5710 kata-deploy: add support for runtime class, firecracker
Simplify the yaml and combine the prior scripts. The resulting script,
kata-deploy.sh, is used for  install and configuration and
removal for CRI-O and containerd. While this could be used standalone
outside of daemonsets, today it will sleep infinity after processing the
request, since it is assumed to be called by a daemon.

By checking the CRI runtime within the script itself, we no longer need
to support many daemonsets for deploy - just a single. Still requires a
seperate cleanup daemonset (for restarting the CRI runtime), and an
RBAC.

Verified with CRI-O -- containerd testing WIP

Throwing this up now for feedback since I do not bash good.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
Signed-off-by: Saikrishna Edupuganti <saikrishna.edupuganti@intel.com>
2019-01-31 21:12:40 -08:00
Julio Montes
e12442bc65 snap: release 1.5.0
release kata containers 1.5.0

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-31 21:12:40 -08:00
Julio Montes
7e312f833b snap: use new GOPATH to build image
Use a new GOPATH to build image in order to avoid clashes with user's GOPATH,
otherwise user's kata agent will be used causing problem if that repository is
not up to date.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-31 21:12:40 -08:00
Julio Montes
51f5c22409 snap: remove commands used for debugging
remove set and env commands that were used for debugging

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-31 21:12:40 -08:00
Julio Montes
70876b3343 snap: apply patch in runtime to fix config paths
This is a hotfix to fix https://github.com/kata-containers/runtime/issues/1185

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-31 21:12:40 -08:00
Julio Montes
2145fc1112 snap: apply patch in runtime to fix DESTDIR
This is a hotfix to fix https://github.com/kata-containers/runtime/pull/1162

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-31 21:12:40 -08:00
Julio Montes
e7ff7e1c44 snap: fix qemu command name
set qemu-system instead of qemu-lite as default qemu command

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-31 21:12:40 -08:00
Julio Montes
d901b625c9 snap: get sources from git repositories
get source from git repositories to show the right commit
version of each component.

fixes #317

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-31 21:12:40 -08:00
GabyCT
bbc3ce9edb Merge pull request #370 from devimc/topic/snap-installation
snap: add snap store banner
2019-01-31 08:52:59 -06:00
Julio Montes
5f1ca16402 Merge pull request #1178 from yyyeerbo/wip
kata-env: kata-env error out when there is no VERSION_ID.
2019-01-31 08:36:22 -06:00
Julio Montes
7722faf104 snap: add snap store banner
add snap store banner

fixes #369

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-31 08:32:25 -06:00
James O. D. Hunt
530360d515 Merge pull request #1186 from nitkon/Hotplug
ppc64le: Fix hotplug issue
2019-01-31 09:26:25 +00:00
James O. D. Hunt
a6b5d7e5e4 Merge pull request #294 from jcvenegas/release-fixes-1.4.1
release: 1.5.0 fixes
2019-01-31 08:52:39 +00:00
Frank Cao
7cf81c47af Merge pull request #368 from grahamwhaley/20190130_fc_link
docs: firecracker: add top level link off to fc wiki page
2019-01-31 14:15:16 +08:00
Yang Bo
4f51687550 kata-env: kata-env error out when there is no VERSION_ID.
For example, under debian buster/sid. Those information should be
provide with best effort instead of error out. Set name and version
to "<<unknown>>" if they are not defined.

Fixes: #1177

Signed-off-by: Yang Bo <bo@hyper.sh>
2019-01-31 14:05:51 +08:00
Eric Ernst
29dae85ad5 Merge pull request #1181 from sameo/topic/network-interface
Network interface removal and decoupling
2019-01-30 19:59:50 -08:00
Jose Carlos Venegas Munoz
784f14b4f7 release: docs: update installation notes.
Documentation is not forked today.

Fixes: #320

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-30 13:51:08 -06:00
Jose Carlos Venegas Munoz
d1f8846adb releaes: static: add wrapper for firecracker config.
https://github.com/kata-containers/documentation/wiki/Initial-release-of-Kata-Containers-with-Firecracker-support

The wiki says that a wrapper is part of the release tarball,  `make install`
from runtime is not doing it, add workaround until this is added as an official wrapper.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-30 13:51:08 -06:00
Jose Carlos Venegas Munoz
ed39937a2c static: release: add correct symlink until is fixed
dest dir is broken and symlink is created on the host not the tarbal.

See:
https://github.com/kata-containers/runtime/issues/1161

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-30 13:51:08 -06:00
Jose Carlos Venegas Munoz
0a889b540b release: static: add firecracker to tarball.
The firecracker binary was not added to release tarball.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-30 13:51:08 -06:00
Graham Whaley
87d9ebc14c docs: firecracker: add top level link off to fc wiki page
We have some initial Firecracker/Kata documentaiton, but for now
it lives in the wiki. Link off to it from the top level docs
README to make it more obvious and easier to find.

Fixes: #367

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-01-30 17:45:08 +00:00
Jose Carlos Venegas Munoz
4f02627d30 pkgs: runtime: spec fix qemu path
QEMUCMD is used to identify the defauly hypervisor on kata.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-30 08:49:34 -06:00
Jose Carlos Venegas Munoz
6e2677c456 pkgs: Fix spec file.
- Remove not needed require
- call %autosetup before apply patches.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-30 08:49:34 -06:00
James O. D. Hunt
91c454da09 Merge pull request #1168 from bryteise/hypervisor-cmd-defaults
Makefile: Provide default hypervisor CMD settings
2019-01-30 11:36:32 +00:00
James O. D. Hunt
eb92f49811 Merge pull request #1193 from grahamwhaley/20190129_CODEOWNERS
ci: Add a CODEOWNERS file for github ack checks
2019-01-30 11:28:08 +00:00
Graham Whaley
a48e614ce2 ci: Add a CODEOWNERS file for github ack checks
Add a CODEOWNERS file so we can get github to automatically
request reviews. In this instance, specifically the docs team
for markdown documents.

Fixes: #1192

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-01-30 11:23:25 +00:00
Xu Wang
7cb2f31c8d Merge pull request #1173 from lifupan/criconfig
shimv2: use the runtime config file passed from containerd/cri
2019-01-30 19:01:38 +08:00
James O. D. Hunt
4ba2802632 Merge pull request #359 from qzivli/master
docs: Fix typo
2019-01-29 17:58:10 +00:00
James O. D. Hunt
4092eba600 Merge pull request #1187 from devimc/topic/fix1185
cli: set config options before showing config paths
2019-01-29 17:23:11 +00:00
James O. D. Hunt
a9edac83a2 Merge pull request #364 from jodh-intel/fully-non-interactive-debian-install
install: Make Debian install fully non-interactive
2019-01-29 09:11:55 +00:00
Jose Carlos Venegas Munoz
6b11ed27a3 pkg: spec: add all files that match as config file.
New hypervisor configs could be added in the future, add
any possible new config file.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-28 14:32:19 -06:00
Jose Carlos Venegas Munoz
d8fcb58d02 deploy: release: Fix config paths
Now there are 2 config paths lets update both to not use
initrd by default.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-28 14:32:19 -06:00
Jose Carlos Venegas Munoz
c9ac12d58b pkgs: Update version for kata 1.5.0
Update versions file as part of release process.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-28 14:32:19 -06:00
Jose Carlos Venegas Munoz
8693ba7513 pkgs: debian: fix kernel build.
Dont use -j all, it may lead the builder workers run out of memory.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-28 14:32:19 -06:00
Jose Carlos Venegas Munoz
8db26ee1d4 Merge pull request #318 from devimc/topic/snapFixVersions
snap: release 1.5.0
2019-01-28 14:09:06 -06:00
Nitesh Konkar
b1c666730e vendor: Update govmm vendoring
Shortlog:

78d079d Merge pull request #84 from nitkon/master
4692f6b qmp: Conditionally pass threadID and socketID when CPU device add
b9c8f76 Merge pull request #85 from markdryan/fix-travis
1f51b43 Update the versions of Go used to build GoVMM
ad310f9 Fix staticcheck S1023
932fdc7 Fix staticcheck S1023
cb2ce93 Fix staticcheck S1008
f0172cd Fix staticcheck (S1002)
5f2e630 Fix staticcheck (S1025)
4beea51 Fix staticcheck (ST1005) errors

Fixes: #1155

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-28 23:42:50 +05:30
Nitesh Konkar
b0986a5f7f ppc64le: Fix vCPU hotplug issue
ppc64le qemu does not need threadID and
socketID parameters when hotplugging.

Fixes: #1155

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-28 23:42:20 +05:30
Julio Montes
86fca4564e snap: release 1.5.0
release kata containers 1.5.0

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-28 09:37:05 -06:00
Julio Montes
7684c8e29a snap: use new GOPATH to build image
Use a new GOPATH to build image in order to avoid clashes with user's GOPATH,
otherwise user's kata agent will be used causing problem if that repository is
not up to date.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-28 09:37:05 -06:00
Julio Montes
e5940ce66d snap: remove commands used for debugging
remove set and env commands that were used for debugging

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-28 09:21:46 -06:00
Julio Montes
7d77ae9ca8 snap: apply patch in runtime to fix config paths
This is a hotfix to fix https://github.com/kata-containers/runtime/issues/1185

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-28 09:21:46 -06:00
Julio Montes
7c25b606ba snap: apply patch in runtime to fix DESTDIR
This is a hotfix to fix https://github.com/kata-containers/runtime/pull/1162

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-28 09:19:24 -06:00
Julio Montes
68043b5ca6 cli: set config options before showing config paths
Config paths are set correctly but they must be set before handleShowConfig

fixes #1185

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-28 08:29:29 -06:00
James O. D. Hunt
c3184c30e7 install: Make Debian install fully non-interactive
Although the installation instructions specify `apt-get -y ...`, the
installation blocks when trying to install the Kata pages with a message
like this:

```
...

Restart services during package upgrades without asking?

<Yes>                                          <No>
```

Setting `DEBIAN_FRONTEND=noninteractive` avoids this.

Fixes #363.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-01-28 14:06:12 +00:00
James O. D. Hunt
726df9dad8 Merge pull request #1162 from jcvenegas/fix-1161
makefile: honor DESDIR on install
2019-01-28 11:42:18 +00:00
Fupan Li
f1a12ce04c shimv2: use the runtime config file passed from containerd/cri
containerd/cri's different runtime handlers can pass different
config files to shimv2 by a generic runtime options, by this kata
can launch the pods using different VMM for different runtime handlers.

Fixes:#1082

Signed-off-by: Fupan Li <lifupan@gmail.com>
2019-01-28 17:31:09 +08:00
Q. Ziv Li
ed7ec36325 docs: Fix typo
Fix typo: librdbd1 -> librbd1

Fixes: #359

Signed-off-by: Q. Ziv Li <qzivli@hotmail.com>
2019-01-26 17:19:50 +08:00
Archana Shinde
fe90fe053f Merge pull request #361 from grahamwhaley/20190125_snap_docs
install: snap: add link out to config and integrate instrs
2019-01-25 15:19:24 -08:00
Archana Shinde
767ac47a15 Merge pull request #312 from jongwu/memory_hotplug
kernel: Add memory hotplug(add) support for arm64
2019-01-25 14:37:52 -08:00
Samuel Ortiz
18dcd2c2f7 virtcontainers: Decouple the network API from the sandbox one
In order to fix #1059, we want to create a hypervisor package. Some of
the hypervisor implementations (qemu) depend on the network and endpoint
interfaces. We can not have a virtcontainers -> hypervisor -> network,
endpoint -> virtcontainers cyclic dependency.
So before creating the hypervisor package, we need to decouple the
network API from the virtcontainers one.

Fixes: #1180

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-25 15:25:49 +01:00
Samuel Ortiz
b39cb1d13a virtcontainers: Remove the network interface
There's only one real implementer of the network interface and no real
need to implement anything else. We can just go ahead and remove this
abstraction.

Fixes: #1179

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-25 15:25:46 +01:00
Julio Montes
526c5ffd76 snap: fix qemu command name
set qemu-system instead of qemu-lite as default qemu command

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-25 07:53:41 -06:00
Graham Whaley
d90bb59a15 install: snap: add link out to config and integrate instrs
The snap install doc only told you how to install the kata snap,
and did not then go further to describe how to configure and
intergrate it. Those details are available already over in the
packaging repo, so let's link out to them.

Fixes: #360

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-01-25 11:09:36 +00:00
William Douglas
a02c39efd0 Makefile: Set arch regardless of GOPATH state
Architecture-dependent settings were not being populated when GOPATH
was set. This change ensures they are always set.

Fixes #1169

Signed-off-by: William Douglas <william.douglas@intel.com>
2019-01-24 09:20:21 -08:00
James O. D. Hunt
db1fb858a4 Merge pull request #349 from jjolly/opensuse-install-fix
Docs: Remove invalid option from suse guides
2019-01-24 14:27:13 +00:00
Peng Tao
c60b72f5d1 Merge pull request #332 from gnawux/shimv2
document the new introduced shimv2
2019-01-24 10:43:22 +08:00
Jose Carlos Venegas Munoz
411aefb295 Merge pull request #354 from kata-containers/fix-ubuntu-guide
install: have ubuntu install point to master for 1.5 release
2019-01-23 10:56:23 -06:00
Eric Ernst
e797606d4c install: have ubuntu install point to master for 1.5 release
Fixes: #335

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-01-23 16:42:14 +00:00
Julio Montes
33dc19f82a snap: get sources from git repositories
get source from git repositories to show the right commit
version of each component.

fixes #317

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-23 10:07:19 -06:00
James O. D. Hunt
6f2c036601 Merge pull request #1164 from liwei/fix-factory-status
factory: do not destroy vm factory when checking status
2019-01-23 11:48:18 +00:00
James O. D. Hunt
d97e994c47 Merge pull request #348 from bergwolf/vm-template
howto: add vm template introduction and guide
2019-01-23 11:44:41 +00:00
James O. D. Hunt
1353499e74 Merge pull request #1115 from nitkon/P9SMT
runtime: Fix TestCCCheckCLIFunction on P9 system
2019-01-23 10:34:21 +00:00
Peng Tao
07f6cb16e7 howto: add vm template introduction and guide
So that we have a doc to point to when people asks about VM templating.

Fixes: #347

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2019-01-23 16:23:34 +08:00
Wei Li
d78a62da87 factory: do not destroy vm factory when checking status
Fixes: #1163

Signed-off-by: Wei Li <liwei@anbutu.com>
2019-01-23 15:57:04 +08:00
Jose Carlos Venegas Munoz
718488b7b5 makefile: honor DESDIR on install
- Do symlink to a relative path to hypervisor config.
- Create symlink on DESTDIR

Fixes: #1161

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-23 00:27:55 -06:00
Xu Wang
9343ece91e how-to: a standalone doc for containerd integration
including shimv2 and runtime class

Fixes: 322
Signed-off-by: Xu Wang <xu@hyper.sh>
2019-01-23 14:12:40 +08:00
Xu Wang
04498bd4d2 architecture.md: update the architecture of v1.5
- shimv2 has been introduced
- vsock has been supported

Fixes: #322
Signed-off-by: Xu Wang <xu@hyper.sh>
2019-01-23 14:12:29 +08:00
Xu Wang
75501df2fa how-to: add shimv2 as the default in the k8s and containerd howto
move the  containerd+kata parts to containerd-kata.md and make
this file simpler

Signed-off-by: Xu Wang <xu@hyper.sh>
2019-01-23 14:12:12 +08:00
Xu Wang
c06e9f241f developer-guide: update for shimv2
- update cri-containerd to containerd with cri plugin
- suggest the shimv2 to be the preferred kubernetes integration way.

Signed-off-by: Xu Wang <xu@hyper.sh>
2019-01-23 14:11:48 +08:00
Jose Carlos Venegas Munoz
5f7fcd7730 Merge pull request #1156 from katacontainersbot/1.5.0-branch-bump
# Kata Containers 1.5.0
2019-01-22 14:44:35 -06:00
GabyCT
c9ebb56683 Merge pull request #346 from rpw/master
Fix Debian install documentation.
2019-01-22 10:35:17 -06:00
Nitesh Konkar
c93aa53187 runtime: Check SMT=on/off only for P8 or lesser
Set testCPUInfoTemplate to systems /proc/cpuinfo
and check if SMT is on/off only on P8 and lower
systems as Power 9 systems support virtualization
irrespective of SMT being on/off.

Fixes: #1114

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-22 22:04:52 +05:30
James O. D. Hunt
c271d1c055 Merge pull request #1142 from alicefr/pci_type
s390x: change pci bridge type
2019-01-22 15:31:25 +00:00
Xu Wang
2bb23519f7 install: mention shimv2 for the manual installation instruction
- mentioned shimv2 in the configuration part of manual installation
- reference the link of shim v2 api and the k8s containerd howto

Signed-off-by: Xu Wang <xu@hyper.sh>
2019-01-22 15:39:05 +08:00
Xu Wang
3b0b0147bd Merge pull request #1139 from bergwolf/delete
clean up container dir
2019-01-22 10:16:34 +08:00
katacontainers bot
6875d3f6da release: Kata Containers 1.5.0
- s390x: root parameter is missing
- vc: qemu: fix error message on hotplug.
- virtcontainers: set private propagation in rootfs
- virtcontainers: ppc64le qemu does not have nvdimm capabilities yet
- shimv2: use the UnmarshalAny() to unmarshal Protobuf.Any
- runtime-v2: Make sure Shutdown() only shuts the server down
- Add build support for the firecracker hypervisor
- virtcontainers: Fix unit test typo
- shimv2: multi wait support for wait service
- update: allow do update on ready.
- cli: fix parameter order error in cli/ps.go
- virtcontainers: Add Asset, Capabilities and Bridge to the types package
- katautils: Move SetKernelParams from CreateSandbox to updateRuntimeCo…
- Versions: Add firecracker version
- Hypervisor interface simplification
- kata-runtime: Return correct kata-env on ppc64le
- katautils: Remove unused argument containerID of function SetKernelPa…
- kernel: Revert "versions: Bump to kernel 4.19.10"
- versions: Bump to kernel 4.19.10
- Initial types package creation
- cli: allow to kill a stopped container and sandbox
- virtcontainers: Pass seccomp profile inside VM
- First createSandboxFromConfig simplification
- shimv2: get the kata configure file from env KATA_CONF_FILE
- firecracker: Network API update
- container: Use lazy unmount
- block: Add new block storage driver "nvdimm"

5329a71 runtime-v2: Make sure Shutdown() only shuts the server down
a07b4cd virtcontainers: Fix unit test typo
f542233 s390x: root parameter is missing
18c7aa4 virtcontainers: ppc64le qemu does not have nvdimm capabilities yet
5ee838d shimv2: use the UnmarshalAny() to unmarshal Protobuf.Any
7228bab container: update: Allow updates once container is created
2e1ddbc virtcontainers: Add Bridge to the types package
5ba30fd shimv2: multi wait support for wait service
b25f43e virtcontainers: Add Capabilities to the types package
67e696b virtcontainers: Add Asset to the types package
6c3e0a9 build: Add support for building firecracker hypervisor
6fcb76c build: Handle qemu explicitly
933b16f build: Improve quiet install
a5a74f6 vc: qemu: fix error message on hotplug.
d4dd5f1 qemu: fix gofmt import order.
42a89d0 katautils: Move SetKernelParams from CreateSandbox to updateRuntimeConfig
abcc2d5 Versions: Add firecracker version
db33d71 Kata-runtime: Use correct model name for TestGetCPUDetails
11e24aa kata-runtime: Return correct kata-env on ppc64le
2c1b15d kernel: Revert "versions: Bump to kernel 4.19.10"
b029e44 virtcontainers: set private propagation in rootfs
a02fd59 virtcontainers: Remove code duplication in the test setup
cf22f40 virtcontainers: Remove the hypervisor waitSandbox method
763bf18 virtcontainers: Remove the hypervisor init method
fb149ce katautils: Remove unused argument containerID of function SetKernelParams
b05dbe3 runtime: Convert to the new internal types package
701afe9 virtcontainers: First types package
3ab7d07 virtcontainers: Alias for pkg/types
c2c9c84 virtcontainers: Conditionally pass seccomp profile
bf2813f cli: allow to kill a stopped container and sandbox
09168cc virtcontainers: Call stopVM() from sandbox.Stop()
acf833c virtcontainers: Call agent startSandbox from startVM
ebf8547 virtcontainers: Remove useless startSandbox wrapper
0b28ab9 shimv2: get the kata configure file from env KATA_CONF_FILE
5c6d94d firecracker: Revendor firecracker go sdk to 0.12.0
ec5cf18 firecracker: Network API update
dd28ff5 memory: Add new option memory_offset
ef75c3d block: Add new block storage driver "nvdimm"
c099be5 container: Use lazy unmount
802bfa2 versions: Bump to kernel 4.19.10
08f1c05 Module: fix parameter order error in cli/ps.go

Signed-off-by: katacontainers bot <katacontainersbot@katacontainers.io>
2019-01-21 17:37:58 +00:00
Frank Cao
d1cd82d0c1 Merge pull request #1143 from alicefr/missing_root
s390x: root parameter is missing
2019-01-21 19:40:38 +08:00
Peng Tao
e8788bebd5 Merge pull request #1121 from jcvenegas/fix-memory-max-message
vc: qemu: fix error message on hotplug.
2019-01-21 14:16:41 +08:00
Peng Tao
d75f26d719 vc: set detach flag when umounting rootfs
docker might bind mount some files/dirs under container rootfs
without notifying runtime. We need to unmount them otherwise
docker will fail to clean up containers.

man umount(2):
MNT_DETACH (since Linux 2.4.11)
     Perform a lazy unmount: make the mount point unavailable for new accesses, immediately
     disconnect the filesystem and all filesystems mounted below it from each other and
     from the mount table, and actually perform the unmount when the mount point ceases to be busy.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2019-01-21 14:11:35 +08:00
Peng Tao
d314e2d0b7 agent: clean up share path created by the agent
The agent code creates a directory at
`/run/kata-containers/shared/sandboxes/sbid/` to hold shared data
between host and guest. We need to clean it up when removing a sandbox.

Fixes: #1138

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2019-01-21 14:10:59 +08:00
Peng Tao
36762c7cad qemu: cleanup vm template path properly
VM templates creates a symlink from `/run/vc/vm/sbid` to
`/run/vc/vm/vmid`. We need to clean up both of them.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2019-01-21 14:10:51 +08:00
Peng Tao
0c09d2bf9a Merge pull request #980 from devimc/topic/left_mount_points
virtcontainers: set private propagation in rootfs
2019-01-21 13:28:23 +08:00
Ralf-Philipp Weinmann
771b1b1869 docs: fix Debian install documentation due to OBS repo rename
As the Debian OBS repo was renamed was renamed on 20181219 the corresponding documentation
needs to be fixed. See also #306, more specifically
https://github.com/kata-containers/documentation/pull/306#discussion_r242983373

A test install using the documentation on a fresh Debian Stretch (9.5) was done
on 20190119.

Fixes #344

Signed-off-by: Ralf-Philipp Weinmann <ralf@comsecuris.com>
2019-01-19 07:23:35 +01:00
John L. Jolly
e7d2141648 Docs: Remove invalid option from suse guides
The OpenSUSE and SLES install guide for Docker used the --containerd
option. When this option is used on OpenSUSE Leap 15 or SLES 15, the
following error occurs when starting Docker:

    Failed to connect to containerd: failed to dial
        "/run/containerd/containerd.sock": context deadline exceeded

Removing the --containerd option from the configuration file allows the
Docker daemon to start successfully and a Kata container to be created.

Fixes: #350

Signed-off-by: John L. Jolly <jjolly@suse.com>
2019-01-18 12:35:47 +01:00
Graham Whaley
150a44fa6c Merge pull request #1137 from nitkon/patch-1
virtcontainers: ppc64le qemu does not have nvdimm capabilities yet
2019-01-18 10:46:32 +00:00
Sebastien Boeuf
744354db56 Merge pull request #1134 from lifupan/marshalany
shimv2: use the UnmarshalAny() to unmarshal Protobuf.Any
2019-01-18 01:33:52 -08:00
Sebastien Boeuf
45f72219f8 Merge pull request #1151 from sboeuf/fix_v2_shutdown
runtime-v2: Make sure Shutdown() only shuts the server down
2019-01-18 01:32:43 -08:00
Jianyong Wu
d2a42cb6d5 kernel: config: bump config
Fixes: #309

Signed-off-by: Jianyong Wu  <jianyong.wu@arm.com>
2019-01-18 02:55:44 -05:00
Jianyong Wu
e654dbd836 kernel: Add memory hotplug(add) support for arm64
As memory hotplug for arm64 by acpi is not ready on qemu, we choose
"probe" instead. You can refer to [1] to get more infomation about
"probe". The process of memory hotplug by "probe" in kata lies below:
firstly, add memory in qemu qmp; secondly, echo the start phyical address
of that memory to /sys/devices/system/memory/probe, which will be done
through kata-agent; thirdly, excute online op, then this newly added
memory is capable to be used.

All functions in this patch will be called after "echo" op. It can be
divided into two parts:
1. create page table for that memory;
2. add that memory to memblock.

In this patch, NUMA must be turned off for not all arm64 machine supports
NUMA.
As the newly added memory should be placed from 2T to 6T which is decided
in qemu and phyical address and virtual address will be one-one mapping
when create pgd for that memory, we must config ARM64_VA_BITS as 48.
Also some configs should be turned on, especially "ARCH_MEMORY_PROBE".

We have tested this patch integrated with another patch which performed
that echo op. It works well when using "-m" in command line when start a
kata-container on aarch64 machine.

This patch derived from Maciej Bielski. You can refer to [2] to get full
infomation about it.

[1] https://www.kernel.org/doc/Documentation/memory-hotplug.txt
[2] https://lkml.org/lkml/2017/11/23/183

Fixes: #309

Signed-off-by: Jianyong Wu  <jianyong.wu@arm.com>
Signed-off-by: Jia He <justin.he@arm.com>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-01-18 02:52:18 -05:00
Sebastien Boeuf
5329a71b3d runtime-v2: Make sure Shutdown() only shuts the server down
Because the runtime v2 runs as a RPC server, the caller will at some
point use the Shutdown() API to shut down the server. Because this
will cause the server to exit, the caller cannot expect any valid
answer when calling this. That's why we cannot afford stopping and
deleting the sandbox from this function.

Instead, we move sandbox.Stop() and sandbox.Delete() to a more
appropriate API, the Delete() one.

Fixes #1150

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2019-01-17 22:15:29 -08:00
Eric Ernst
d7b02c502e Merge pull request #1109 from jodh-intel/create-fc-config
Add build support for the firecracker hypervisor
2019-01-17 21:46:47 -08:00
Eric Ernst
50650e9342 Merge pull request #1146 from sameo/topic/typo
virtcontainers: Fix unit test typo
2019-01-17 21:41:42 -08:00
Peng Tao
ea2086b45f Merge pull request #1133 from lifupan/multiwait
shimv2: multi wait support for wait service
2019-01-18 12:12:39 +08:00
Frank Cao
6c3277e013 Merge pull request #1126 from jcvenegas/allow-update-on-ready
update: allow do update on ready.
2019-01-18 11:03:12 +08:00
Jose Carlos Venegas Munoz
f802dd8796 Merge pull request #303 from mcastelino/topic/firecracker
Firecracker: Add support for firecracker packaging
2019-01-17 15:18:39 -05:00
Manohar Castelino
6a44bdb48b Firecracker: Add support for firecracker packaging
Start packaging the supported version of firecracker.

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-01-17 09:37:31 -08:00
Samuel Ortiz
a07b4cd57f virtcontainers: Fix unit test typo
s/Emtpy/Empty/g

Fixes: #1145

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-17 15:55:56 +01:00
Alice Frosi
02261f9b40 s390x: change pci bridge type
Change type name for PCIBridge

Fixes: #1141

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-01-17 15:52:20 +01:00
Alice Frosi
f542233cbd s390x: root parameter is missing
Fixes: #1140

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2019-01-17 15:41:12 +01:00
James O. D. Hunt
1e89f7ed68 Merge pull request #225 from Pennyzct/memory-hotplug
memory_hotplug: MEM_BOUNDARY_MB should be arch-dependent
2019-01-17 11:18:29 +00:00
nitkon
18c7aa44a8 virtcontainers: ppc64le qemu does not have nvdimm capabilities yet
Remove `nvdimm` from qemu command line
as the upstream qemu on ppc64le does not have
nvdimm capabilities yet.

Fixes: #1136

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-17 14:29:28 +05:30
fupan
5ee838d412 shimv2: use the UnmarshalAny() to unmarshal Protobuf.Any
It'll be much clear to unmarshal Protobuf.Any using
UnmarshalAny().

Fixes: #1130

Signed-off-by: fupan <lifupan@gmail.com>
2019-01-17 10:14:37 +08:00
Jose Carlos Venegas Munoz
7228bab79b container: update: Allow updates once container is created
Before, we would only allow for a container-update command
to proceed if the container was in the running state. So
long as the container is created, this should be allowed.

This was found using the `static` policy for Kubernetes CPU
manager[1]. Where the `update` command is called after the
`create` runtime command (when the container state is `ready`).

[1] https://github.com/kubernetes/community/blob/95a4a1/contributors/design-proposals/node/cpu-manager.md#example-scenarios-and-interactions

Fixes: #1083

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-16 17:15:00 -05:00
Archana Shinde
9b9ff2b7e6 Merge pull request #1019 from shaojiaxue/master
cli: fix parameter order error in cli/ps.go
2019-01-16 11:21:51 -08:00
Sebastien Boeuf
e03caf6234 Merge pull request #1122 from sameo/topic/asset-types
virtcontainers: Add Asset, Capabilities and Bridge to the types package
2019-01-16 09:03:45 -08:00
Samuel Ortiz
2e1ddbc725 virtcontainers: Add Bridge to the types package
Bridge is representing a PCI/E bridge, so we're moving the bridge*.go
to types/pci*.go.

Fixes: #1119

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-16 15:45:08 +01:00
fupan
5ba30fd628 shimv2: multi wait support for wait service
Support multi wait on one container/exec process.

Fixes: #1131

Signed-off-by: fupan <lifupan@gmail.com>
2019-01-16 12:41:59 +08:00
Penny Zheng
e4d5c1b751 memory_hotplug: MEM_BOUNDARY_MB should be arch-dependent
As runtime/#624(https://github.com/kata-containers/runtime/pull/624#discussion_r212534586)
discussed before, the size of memory section is arch-dependent.
For arm64, it should be 1G, not 128MB.

Fixes: #224

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2019-01-16 11:16:26 +08:00
Jose Carlos Venegas Munoz
b3d2688762 Merge pull request #306 from devimc/topic/fixSnap
snap: don't use make snap to build the snap
2019-01-14 16:43:44 -05:00
Samuel Ortiz
b25f43e865 virtcontainers: Add Capabilities to the types package
In order to move the hypervisor implementations into their own package,
we need to put the capabilities type into the types package.

Fixes: #1119

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-14 20:30:06 +01:00
Samuel Ortiz
67e696bf62 virtcontainers: Add Asset to the types package
In order to move the hypervisor implementations into their own package,
we need to put the asset type into the types package and break the
hypervisor->asset->virtcontainers->hypervisor cyclic dependency.

Fixes: #1119

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-14 20:30:06 +01:00
James O. D. Hunt
6c3e0a9c06 build: Add support for building firecracker hypervisor
Support building with `make HYPERVISOR=firecracker`.

Notes:

- Firecracker is currently only supported on x86_64, hence the
  architecture check.

- The template file `cli/config/configuration-fc.toml.in` is based
  on `cli/config/configuration.toml.in`.

Fixes #1105.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-01-14 16:55:01 +00:00
James O. D. Hunt
6fcb76cb37 build: Handle qemu explicitly
Improve the build to:

- Encapsulate the qemu configuration.
- Validate the chosen hypervisor.
- Display hypervisor details for `make help`.

This lays the groundwork to build configurations for multiple
hypervisors.

Notes:

- Variables that are hypervisor specific have now been suffixed with `_QEMU`.

- `make install` now installs `configuration-qemu.toml`.

  To maintain compatibility with existing installations, a symbolic link
  to this file called `configuration.toml` is created.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-01-14 16:54:57 +00:00
Julio Montes
7f7e258d14 snap: don't use make snap to build the snap
In some build systems like launchpad is not possible to run neither
custom commands or hooks, hence build a snap image with `make snap` is
not feasible, to deal with this limitation, the final snapcraft.yaml
is part of the repository and all packages versions are read from versions.yaml
in the runtime repository.

fixes #305

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-14 07:58:48 -06:00
James O. D. Hunt
933b16fc61 build: Improve quiet install
Move the quiet prefix from the `INSTALL_EXEC` recipe and use it at the
call sites. This makes the code robust when calling the recipe in a
`$(foreach ...)` loop.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-01-14 10:48:38 +00:00
fli
4fda493384 Merge pull request #1107 from teawater/move_SetKernelParams
katautils: Move SetKernelParams from CreateSandbox to updateRuntimeCo…
2019-01-14 10:18:43 +08:00
Jose Carlos Venegas Munoz
a5a74f6d20 vc: qemu: fix error message on hotplug.
The error message does not provide the max memory that is exceeded.

Fix it for better error information.

Fixes: #1120

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-11 13:34:32 -06:00
Jose Carlos Venegas Munoz
d4dd5f1508 qemu: fix gofmt import order.
use gofmt changes the import order.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-11 13:33:01 -06:00
Graham Whaley
ab214c1378 Merge pull request #343 from abousselmi/master
Docs: remove ps and network connect limitations
2019-01-11 12:33:33 +00:00
Ayoub Bousselmi
9b9e5d63e0 Docs: network connect is no longer a limitation
Remove the `network connect` limitation from `Limitations.md` as the limitation has been removed.

Fixes #287.

Signed-off-by: Ayoub Bousselmi <abousselmi@users.noreply.github.com>
2019-01-11 12:15:20 +01:00
Ayoub Bousselmi
bb361623f6 Docs: ps is no longer a limitation
Remove the `ps` limitation from `Limitations.md` as the limitation has been removed.

Fixes #342.

Signed-off-by: Ayoub Bousselmi <abousselmi@users.noreply.github.com>
2019-01-11 12:14:57 +01:00
Hui Zhu
42a89d0dcd katautils: Move SetKernelParams from CreateSandbox to updateRuntimeConfig
Function SetKernelParams is just to update the runtimeConfig according to itself.
It just around the configuration.
So this patch moves it to updateRuntimeConfig.

Fixes: #1106

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-01-11 08:25:42 +08:00
Eric Ernst
3a2c0a6506 Merge pull request #1104 from mcastelino/topic/packaging
Versions: Add firecracker version
2019-01-09 15:44:45 -08:00
Manohar Castelino
abcc2d5867 Versions: Add firecracker version
Add firecracker version to versions.yaml. This allows kata
packaging to build and package firecracker.

Fixes: #1103

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2019-01-09 13:23:29 -08:00
Sebastien Boeuf
5be3458f84 Merge pull request #1010 from sameo/topic/hypervisor-interface
Hypervisor interface simplification
2019-01-09 13:04:55 -08:00
Eric Ernst
a60cd133bd Merge pull request #300 from jcvenegas/use-local-kernel-version
kernel: build: Use local kernel version.
2019-01-09 11:09:52 -08:00
Jose Carlos Venegas Munoz
95fef541c2 kernel: test: improve error handler
print output from  last command that failed.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-09 11:21:13 -06:00
Frank Cao
b7ebc276aa Merge pull request #1090 from nitkon/kataenv
kata-runtime: Return correct kata-env on ppc64le
2019-01-09 20:34:05 +08:00
Nitesh Konkar
db33d71102 Kata-runtime: Use correct model name for TestGetCPUDetails
Use the correct model name for ppc64le TestGetCPUDetails
model name.

Fixes: #1089

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-09 15:19:22 +05:30
Nitesh Konkar
11e24aa42d kata-runtime: Return correct kata-env on ppc64le
The contents of /proc/cpuinfo were
trimmed and hence the "model" field could
not be parsed despite being a field in
/proc/cpuinfo. Fix this issue.

Fixes: #1089

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-09 15:18:09 +05:30
Xu Wang
4977445cc5 Merge pull request #327 from teawater/vmware
vsock: Add introduction about VMWare guest
2019-01-09 10:45:57 +08:00
Xu Wang
8a0793234b Merge pull request #1098 from teawater/remove_containerID
katautils: Remove unused argument containerID of function SetKernelPa…
2019-01-09 10:45:16 +08:00
Jose Carlos Venegas Munoz
8f6c7c4c7f Merge pull request #1101 from chavafg/topic/revert-kernel
kernel: Revert "versions: Bump to kernel 4.19.10"
2019-01-08 19:17:54 -06:00
Jose Carlos Venegas Munoz
789970bc43 kernel: config: bump config
Kernel dir changed.

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

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-08 17:23:50 -06:00
Jose Carlos Venegas Munoz
a5c2a2c813 kernel: test: Fix detection on kernel changes.
Kernele changes are not being detected, fix it.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-08 16:28:50 -06:00
Salvador Fuentes
2c1b15def9 kernel: Revert "versions: Bump to kernel 4.19.10"
This reverts commit 802bfa26c9.
Seems that we have some performance issues when
using this new kernel. Reverting to have a clean CI and
have a proper investigation about the degradation.

Fixes: #1100.

Signed-off-by: Salvador Fuentes salvador.fuentes@intel.com
2019-01-08 16:13:21 -06:00
Jose Carlos Venegas Munoz
2e93dbd737 kernel: build: Use local kernel version.
If the runtime repository is already cloned get version from it,
else keep getting from github.

Fixes: #299

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-08 15:23:12 -06:00
Julio Montes
b029e442b2 virtcontainers: set private propagation in rootfs
When overlay is used as storage driver, kata runtime creates a new bind mount
point to the merged directory, that way this directory can be shared with the
VM through 9p. By default the mount propagation is shared, that means mount
events are propagated, but umount events not, to deal with this problem and to
avoid left mount points in the host once container finishes, the mount
propagation of bind mounts should be set to private.

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

fixes #794

Signed-off-by: Julio Montes <julio.montes@intel.com>
2019-01-08 13:07:08 -06:00
Eric Ernst
ca528285cf Merge pull request #1030 from sboeuf/bump_4_19_9
versions: Bump to kernel 4.19.10
2019-01-08 11:01:32 -08:00
Samuel Ortiz
a02fd5982c virtcontainers: Remove code duplication in the test setup
And add some additional log output for displaying the directories and
files created when kicking the virtcontainers tests.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-08 19:38:33 +01:00
Samuel Ortiz
cf22f402d8 virtcontainers: Remove the hypervisor waitSandbox method
We always call waitSandbox after we start the VM (startSandbox), so
let's simplify the hypervisor interface and integrate waiting for the VM
into startSandbox.
This makes startSandbox a blocking call, but that is practically the
case today.

Fixes: #1009

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-08 19:38:33 +01:00
Samuel Ortiz
763bf18daa virtcontainers: Remove the hypervisor init method
We always combine the hypervisor init and createSandbox, because what
we're trying to do is simply that: Set the hypervisor and have it create
a sandbox.

Instead of keeping a method with vague semantics, remove init and
integrate the actual hypervisor setup phase into the createSandbox one.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-08 19:37:20 +01:00
Sebastien Boeuf
142d3b45e1 Merge pull request #1096 from sameo/topic/types
Initial types package creation
2019-01-08 09:51:31 -08:00
Hui Zhu
fb149ce34e katautils: Remove unused argument containerID of function SetKernelParams
Remove unused argument containerID of function SetKernelParams.

Fixes: #1097

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-01-08 22:22:28 +08:00
Samuel Ortiz
b05dbe3886 runtime: Convert to the new internal types package
We can now remove all the sandbox shared types and convert the rest of
the code to using the new internal types package.

This commit includes virtcontainers, cli and containerd-shim changes in
one atomic change in order to not break bisect'ibility.

Fixes: #1095

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-08 14:43:33 +01:00
Samuel Ortiz
701afe9e60 virtcontainers: First types package
The types package holds all shared virtcontainers types.
With the separation of the virtcontainers code into separate packages,
we need a types one to not create circular dependencies.

This package holds sandbox related types and structures for now. It will
grow as virtcontainers code is moved into their own internal packages.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-08 14:24:42 +01:00
Samuel Ortiz
3ab7d077d1 virtcontainers: Alias for pkg/types
Since we're going to have both external and internal types packages, we
alias the external one as vcTypes. And the internal one will be usable
through the types namespace.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-08 14:24:06 +01:00
James O. D. Hunt
36c267a1d2 Merge pull request #1085 from bergwolf/containerd
cli: allow to kill a stopped container and sandbox
2019-01-08 08:44:10 +00:00
James O. D. Hunt
38c9cd2b85 Merge pull request #689 from nitkon/seccomp
virtcontainers: Pass seccomp profile inside VM
2019-01-08 08:42:07 +00:00
Nitesh Konkar
c2c9c844e2 virtcontainers: Conditionally pass seccomp profile
Pass Seccomp profile to the agent only if
the configuration.toml allows it to be passed
and the agent/image is seccomp capable.

Fixes: #688

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-08 10:22:23 +05:30
Eric Ernst
87570b78eb Merge pull request #1012 from sameo/topic/sandbox-simplification
First createSandboxFromConfig simplification
2019-01-07 19:30:49 -08:00
Peng Tao
bf2813fee8 cli: allow to kill a stopped container and sandbox
cri containerd calls kill on stopped sandbox and if we
fail the call, it can cause `cri stopp` command to fail
too.

Fixes: #1084

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2019-01-08 11:19:25 +08:00
Hui Zhu
4eee734665 vsock: Add introduction about VMWare guest
Add introduction about use Kata Containers with vsocks
in a VMWare guest environment.

Fixes: #326

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2019-01-08 11:09:19 +08:00
GabyCT
f0913e2d10 Merge pull request #319 from marcov/docker-config
dev-guide: detect & use existing docker unit file
2019-01-07 13:40:43 -06:00
GabyCT
d109febe8a Merge pull request #340 from nitkon/patch-2
Developer Guide: Update how to include seccomp in image
2019-01-07 12:29:49 -06:00
Samuel Ortiz
09168ccda7 virtcontainers: Call stopVM() from sandbox.Stop()
Now that stopVM() also calls agent.stopSandbox(), we can have the
sandbox Stop() call using stopVM() directly and avoid code duplication.

Fixes: #1011

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-07 09:56:58 -08:00
Samuel Ortiz
acf833cb4a virtcontainers: Call agent startSandbox from startVM
We always ask the agent to start the sandbox when we start the VM, so we
should simply call agent.startSandbox from startVM instead of open
coding those.
This slightly simplifies the complex createSandboxFromConfig routine.

Fixes: #1011

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-01-07 09:56:04 -08:00
Samuel Ortiz
ebf8547c38 virtcontainers: Remove useless startSandbox wrapper
startSandbox() wraps a single operation (sandbox.Start()), so we can
remove it and make the code easier to read/follow.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2019-01-07 09:48:22 -08:00
Eric Ernst
8a3f7cf6d3 Merge pull request #288 from sboeuf/add_config_x86_4_19_10
kernel: Add 4.19.10 config for x86
2019-01-07 09:20:50 -08:00
Nitesh Konkar
dab26ebf8a Developer-Guide: Update how to include seccomp in image
Update the developer guide to include documentation
for the inclusion of seccomp packages in initrd/rootfs
images.

Fixes: #339

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-07 20:35:46 +05:30
Peng Tao
a8e158c9e3 Merge pull request #1092 from lifupan/config
shimv2: get the kata configure file from env KATA_CONF_FILE
2019-01-07 22:35:52 +08:00
Graham Whaley
069987acd5 Merge pull request #342 from nitkon/patch-3
Limitations: Remove seccomp limitation.
2019-01-07 11:15:30 +00:00
Sebastien Boeuf
63e95c1af7 Merge pull request #295 from kata-containers/revert-269-build_development_kernel
Revert "kernel: update guest kernel to 4.19.8 on aarch64 "
2019-01-07 01:15:02 -08:00
Nitesh Konkar
4078d0aa14 Limitations: Remove seccomp limitation.
Document that seccomp support is now available.

FIxes: #341

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-07 14:29:52 +05:30
fupan
0b28ab9e57 shimv2: get the kata configure file from env KATA_CONF_FILE
If the env KATA_CONF_FILE was set, shimv2 will use it as the
kata configure file, otherwise, it will try to find it from
/etc and /usr/share directory.

Fixes: #1091

Signed-off-by: fupan <lifupan@gmail.com>
2019-01-05 17:50:47 +08:00
GabyCT
66ee0e480d Merge pull request #338 from egernst/update-frequency
stable-branching: update frequency, reference schedule
2019-01-04 12:28:44 -06:00
Eric Ernst
a31c1b99d0 stable-branching: update frequency, reference schedule
Add a reference to the release rotation wiki, and clarify that
the current stable release schedule is every-other-week.

Fixes: #337

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-01-04 08:47:09 -08:00
Peng Tao
0a5b5adbfb Revert "kernel: update guest kernel to 4.19.8 on aarch64 "
Reverts #269

The added kernel patch doesn't apply and is causing all CI to fail. FYI, the current guest kernel version is 4.14.67. Please rebase and re-submit your PR cleanly @Pennyzct.

e.g., http://jenkins.katacontainers.io/job/kata-containers-runtime-centos-7-4-PR/995/console

NFO: Applying patch /tmp/jenkins/workspace/kata-containers-runtime-centos-7-4-PR/go/src/github.com/kata-containers/packaging/kernel/patches/0003-backport-Arm64-KVM-Dynamic-IPA-and-52bit-IPA-support.patch
patching file arch/arm/include/asm/kvm_arm.h
patching file arch/arm/include/asm/kvm_host.h
Hunk #1 succeeded at 266 (offset -7 lines).
Hunk #2 succeeded at 314 with fuzz 2 (offset -40 lines).
patching file arch/arm/include/asm/kvm_mmu.h
Hunk #1 FAILED at 35.
Hunk #2 succeeded at 47 with fuzz 2 (offset -5 lines).
Hunk #3 succeeded at 266 with fuzz 2 (offset -96 lines).
1 out of 3 hunks FAILED -- saving rejects to file arch/arm/include/asm/kvm_mmu.h.rej
patching file arch/arm/include/asm/stage2_pgtable.h
patching file arch/arm64/include/asm/cpufeature.h
Hunk #1 FAILED at 262.
Hunk #2 succeeded at 284 (offset -246 lines).
1 out of 2 hunks FAILED -- saving rejects to file arch/arm64/include/asm/cpufeature.h.rej
patching file arch/arm64/include/asm/kvm_arm.h
Hunk #1 succeeded at 102 (offset -5 lines).
Hunk #2 succeeded at 116 (offset -5 lines).
Hunk #3 succeeded at 305 (offset -7 lines).
patching file arch/arm64/include/asm/kvm_asm.h
Hunk #1 succeeded at 27 (offset -3 lines).
Hunk #2 FAILED at 73.
1 out of 2 hunks FAILED -- saving rejects to file arch/arm64/include/asm/kvm_asm.h.rej
patching file arch/arm64/include/asm/kvm_host.h
Hunk #1 succeeded at 48 (offset -5 lines).
Hunk #2 FAILED at 61.
Hunk #3 succeeded at 399 with fuzz 2 (offset -41 lines).
Hunk #4 FAILED at 503.
2 out of 4 hunks FAILED -- saving rejects to file arch/arm64/include/asm/kvm_host.h.rej
patching file arch/arm64/include/asm/kvm_hyp.h
patching file arch/arm64/include/asm/kvm_mmu.h
Hunk #1 succeeded at 154 (offset 13 lines).
Hunk #2 succeeded at 229 with fuzz 1 (offset -17 lines).
Hunk #3 succeeded at 409 with fuzz 2 (offset -110 lines).
patching file arch/arm64/include/asm/stage2_pgtable-nopmd.h
patching file arch/arm64/include/asm/stage2_pgtable-nopud.h
patching file arch/arm64/include/asm/stage2_pgtable.h
patching file arch/arm64/kvm/guest.c
Hunk #1 succeeded at 305 (offset -86 lines).
patching file arch/arm64/kvm/hyp-init.S
Hunk #1 FAILED at 65.
1 out of 1 hunk FAILED -- saving rejects to file arch/arm64/kvm/hyp-init.S.rej
patching file arch/arm64/kvm/hyp/Makefile
Hunk #1 succeeded at 18 (offset -1 lines).
patching file arch/arm64/kvm/hyp/s2-setup.c
Reversed (or previously applied) patch detected! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file arch/arm64/kvm/hyp/s2-setup.c.rej
patching file arch/arm64/kvm/hyp/switch.c
Hunk #1 FAILED at 198.
Hunk #2 succeeded at 226 (offset -37 lines).
1 out of 2 hunks FAILED -- saving rejects to file arch/arm64/kvm/hyp/switch.c.rej
patching file arch/arm64/kvm/hyp/tlb.c
Hunk #1 succeeded at 29 (offset -1 lines).
Hunk #2 succeeded at 38 (offset -1 lines).
patching file arch/arm64/kvm/reset.c
Hunk #4 FAILED at 86.
Hunk #5 succeeded at 133 (offset -4 lines).
1 out of 5 hunks FAILED -- saving rejects to file arch/arm64/kvm/reset.c.rej
patching file include/linux/irqchip/arm-gic-v3.h
Hunk #1 succeeded at 374 (offset -14 lines).
patching file include/uapi/linux/kvm.h
Hunk #1 succeeded at 739 (offset -11 lines).
Hunk #2 FAILED at 962.
1 out of 2 hunks FAILED -- saving rejects to file include/uapi/linux/kvm.h.rej
patching file virt/kvm/arm/arm.c
Hunk #1 succeeded at 115 (offset -5 lines).
Hunk #2 succeeded at 207 (offset -6 lines).
Hunk #3 succeeded at 236 (offset -6 lines).
Hunk #4 succeeded at 463 (offset -35 lines).
Hunk #5 FAILED at 546.
Hunk #6 succeeded at 1164 with fuzz 2 (offset -145 lines).
Hunk #7 succeeded at 1261 (offset -147 lines).
1 out of 7 hunks FAILED -- saving rejects to file virt/kvm/arm/arm.c.rej
patching file virt/kvm/arm/mmu.c
Hunk #1 succeeded at 43 with fuzz 2 (offset -2 lines).
Hunk #2 succeeded at 147 (offset -2 lines).
Hunk #3 succeeded at 216 (offset -35 lines).
Hunk #4 succeeded at 226 (offset -35 lines).
Hunk #5 succeeded at 245 (offset -35 lines).
Hunk #6 succeeded at 255 (offset -35 lines).
Hunk #7 succeeded at 272 (offset -35 lines).
Hunk #8 succeeded at 371 with fuzz 2 (offset 40 lines).
Hunk #9 FAILED at 340.
Hunk #10 FAILED at 370.
Hunk #11 FAILED at 388.
Hunk #12 FAILED at 408.
Hunk #13 succeeded at 753 (offset -143 lines).
Hunk #14 succeeded at 842 (offset -143 lines).
Hunk #15 succeeded at 850 (offset -143 lines).
Hunk #16 succeeded at 859 (offset -143 lines).
Hunk #17 succeeded at 881 (offset -143 lines).
Hunk #18 succeeded at 1024 (offset -182 lines).
Hunk #19 succeeded at 1114 (offset -188 lines).
Hunk #20 succeeded at 1148 (offset -188 lines).
Hunk #21 succeeded at 1176 (offset -188 lines).
Hunk #22 succeeded at 1190 (offset -188 lines).
Hunk #23 succeeded at 1333 (offset -196 lines).
Hunk #24 succeeded at 1552 (offset -220 lines).
Hunk #25 succeeded at 1852 (offset -219 lines).
4 out of 25 hunks FAILED -- saving rejects to file virt/kvm/arm/mmu.c.rej
patching file virt/kvm/arm/vgic/vgic-its.c
Hunk #1 succeeded at 233 (offset -8 lines).
Hunk #2 succeeded at 696 (offset -56 lines).
Hunk #3 succeeded at 721 (offset -56 lines).
Hunk #4 succeeded at 736 (offset -56 lines).
Hunk #5 succeeded at 746 (offset -56 lines).
Hunk #6 succeeded at 1214 (offset -80 lines).
Hunk #7 succeeded at 1232 (offset -80 lines).
Hunk #8 succeeded at 1279 (offset -80 lines).
Hunk #9 succeeded at 2135 (offset -82 lines).
Hunk #10 succeeded at 2207 (offset -82 lines).
Hunk #11 succeeded at 2256 (offset -82 lines).
patching file virt/kvm/arm/vgic/vgic-mmio-v3.c
Hunk #1 succeeded at 326 (offset -38 lines).
Hunk #2 succeeded at 343 (offset -38 lines).
Build step 'Execute shell' marked build as failure
Performing Post build task...
Match found for :.* : True
Logical operation result is TRUE
Running script : #!/bin/bash

Fixes: #296
Signed-off-by: Peng Tao <bergwolf@gmail.com>
2019-01-04 09:32:12 +08:00
Jose Carlos Venegas Munoz
4be12af819 Merge pull request #286 from marcov/fix-version-compare
obs-packaging: support comparisons of pre-releases versions
2019-01-02 13:09:41 -06:00
Sebastien Boeuf
8161b4c1c1 Merge pull request #1077 from mcastelino/topic/firecracker-api-fix
firecracker: Network API update
2019-01-02 02:29:45 -08:00
James O. D. Hunt
63024cdd5b Merge pull request #269 from Pennyzct/build_development_kernel
kernel: update guest kernel to 4.19.8 on aarch64
2019-01-02 09:07:59 +00:00
Xu Wang
0d215b7439 Merge pull request #306 from zeigerpuppy/zeigerpuppy-patch-1
Patch for debian install instructions docs
2018-12-30 17:52:26 +08:00
Xu Wang
8a9e40451b arch-images: add a figure for shimv2
The comparison w/ or w/o shimv2

Signed-off-by: Xu Wang <xu@hyper.sh>
2018-12-30 14:42:04 +08:00
zeigerpuppy
e9ca4d8d60 docs: Add Debian installation guides
Fixes #310.

These install instructions are based on the katacontainers repository for Debian.  For installation, a newer version of `librbd1` is required.  This is available from the `unstable` repo.

Tested only on Debian 9 - Stretch (x86_64).
- tested with `docker-ce=17.12.0~ce-0~debian`

Signed-off-by: zeigerpuppy <zeigerpuppy@users.noreply.github.com>
2018-12-29 14:45:33 +11:00
Manohar Castelino
5c6d94d756 firecracker: Revendor firecracker go sdk to 0.12.0
Revendor firecracker go sdk for Firecracker 0.12.0 API changes

git shortlog

9614612 (HEAD -> master, origin/master, origin/HEAD) Merge pull request
653c342 Adding drives builder
3c1f5c3 Merge pr #41
c4151ff Migrate firectl to its own repository
433f262 Merge pull request #23 from xibz/fifo_logging_file
121ef9a add handler lists to handle initialization
0fd9825 Adding support for capturing fifo logs to file.
6b08ec7 Merge branch 'fc-0.12.0'
25878e7 Update for Firecracker 0.12.0 API changes
ea93f77 Regenerate API client from swagger spec
00d8eee Update swagger.yaml for firecracker 0.12.0

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2018-12-27 19:47:17 -08:00
Eric Ernst
fc90bdad22 Merge pull request #329 from kata-containers/fix-ubuntu-guide
install: use stable instead of master for docs
2018-12-27 10:22:31 -08:00
Manohar Castelino
ec5cf18bd1 firecracker: Network API update
The Network API no longer supports the state field. Using the
state field causes the API call to fail.

Note: The firecracker binary needs to be updated to match the API
as the older versions will expect the state field.

Fixes: #1078

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2018-12-27 09:34:13 -08:00
Eric Ernst
808d85b467 install: use stable instead of master for docs
1.5.0-rc2 packages for linux-container fail for Ubuntu.  Let's use 1.4-stable instead of master for now.

Fixes #325

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-12-27 17:23:32 +00:00
Eric Ernst
e89efa29b7 Merge pull request #292 from bergwolf/releasing-1.5.0-rc2
Add 1.5.0-rc2 changes
2018-12-27 07:40:19 -08:00
Frank Cao
174e0c98bc Merge pull request #963 from running99/master
container: Use lazy unmount
2018-12-26 09:50:44 +08:00
fli
2b75f440f0 Merge pull request #962 from teawater/nvdimm
block: Add new block storage driver "nvdimm"
2018-12-26 09:38:55 +08:00
James O. D. Hunt
4265ca9e12 Merge pull request #321 from Pennyzct/qemu-section
qemu: add 'Build a custom qemu-system-aarch64' section
2018-12-24 09:02:50 +00:00
Peng Tao
ce105e77da obs: bump versions.txt for 1.5.0-rc2 release
To match what we have shipped.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-12-24 16:55:20 +08:00
Peng Tao
7a269ea6e6 runtime-spec: add containerd-shim-kata-v2
Otherwise rpmbuild fails.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-12-24 16:53:07 +08:00
Peng Tao
f4994f4531 obs: reset kata_version
We've changed `-rc` to `~rc` for rpmbuild. But we need to change
it back when doing comparision.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-12-24 16:50:25 +08:00
Hui Zhu
dd28ff5986 memory: Add new option memory_offset
This value will be plused to max memory of hypervisor.
It is the memory address space for the NVDIMM devie.
If set block storage driver (block_device_driver) to "nvdimm",
should set memory_offset to the size of block device.

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-24 15:36:25 +08:00
Hui Zhu
ef75c3d19e block: Add new block storage driver "nvdimm"
Set block_device_driver to "nvdimm" will make the hypervisor use
the block device as NVDIMM disk.

Fixes: #1032

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-24 15:32:33 +08:00
Eric Ernst
b954eecad1 Merge pull request #1072 from egernst/1.5.0-rc2-branch-bump
# Kata Containers 1.5.0-rc2
2018-12-21 13:54:00 -08:00
Eric Ernst
53215acc8e Merge pull request #222 from bergwolf/1.5.0-rc2-branch-bump
# Kata Containers 1.5.0-rc2
2018-12-21 12:29:34 -08:00
Eric Ernst
0f2c5bcf3d release: Kata Containers 1.5.0-rc2
- sandbox: cleanup sandbox if creation failed
- mounts: Ignore existing mounts if they cannot be honored
- config: Add firecracker as a supported hypervisor configuration
- Firecracker: virtio mmio support
- Firecracker VMM support
- shimv2: discard log before shim init log output
- virtcontainers: cgroups: Don't error if no thread ID
- Copy files from host to guest
- katautils: check config factory/template and vsock
- virtcontainers: Add context when creating tests sandboxes
- make: Add "GOPATH not set"
- virtcontainers: network: Use multiqueue flag only when appropriate
- katautils: fix the issue of shimv2 boot failed with vsock enabled
- docs: add IBM Z in the README
- qemu-arm64: refactor 'console=hvc0,hvc1' for kata-agent debugging
- network: Don't assume multiple queues support by default
- virtcontainers: make sandbox manage VM resources
- factory: set guest time after resuming
- shimv2: fix the error of reaping qemu process mistakenly
- s390x: add support for s390x
- config: Add cache-related options for block devices

83e38c9 mounts: Ignore existing mounts if they cannot be honored
bf1a5ce sandbox: cleanup sandbox if creation failed
0d84d79 virtio-mmio: Add support for virtio-mmio
353564a config: Reorganize the code to fix code complexity
d6c1f53 config: Add firecracker configuration support
b4c3a2f virtcontainers: fc: Stop the VM by killing the process
fba2379 firecracker: Add support for pseudo hotplug
22ebc09 firecracker: Close the vsock vhostfd
e65bafa virtcontainers: Add firecracker as a supported hypervisor
c1d3f1a firecracker: VMM API support
c34b045 firecracker: vendor in all firecracker dependencies
a21d1e6 virtcontainers: cgroups: Don't error if no thread ID
378d815 virtcontainers: copy or bind mount shared file
bc31844 virtcontainers: Check file sharing support
6291762 virtcontainers: copy files form host to guest
dcd48a9 vc: capabilities: add capability flags for filesystem sharing
e776380 vendor: update kata agent
e4e7c3a katautils: check config template and vsock
0f1fde4 virtcontainers: network: Use multiqueue flag only when appropriate
f63a18d virtcontainers: Add context when creating tests sandboxes
05be5bf shimv2: discard log before shim init log output
e98dee6 docs: drop 's in architecture names for consistency
1892102 docs: add IBM Z in the README
573b73e katautils: fix the issue of shimv2 boot failed with vsock enabled
c8c564b qemu-arm64: refactor 'console=hvc0,hvc1' for kata-agent debugging
a1af1cb virtcontainers: network: Rely on hypervisor capabilities for multi queues
a227ab8 virtcontainers: hypervisor: Add capability regarding multiqueue support
0bcd221 virtcontainers: network: Rename numCPUs to queues
2cb4bb9 virtcontainers: network: Reorganize endpoints interconnection
d4586d4 test: remove TestHotplugRemoveMemory
0d80202 vc:sandbox: rename newcontainer to fetchcontainer.
618cfbf vc: sandbox: Let sandbox manage VM resources.
2535844 make: Add "GOPATH not set"
8444a7a factory: set guest time after resuming
f813708 vendor: update agent vendor for SetGuestDateTime
6f83061 s390x: add support for s390x
df8b7db shimv2: fix the issue of reaping child mistakenly
e4a3fd5 vendors: upgrade the containerd vendors
6024088 config: Add cache-related options for block devices

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-12-21 19:31:19 +00:00
Eric Ernst
4014ab0212 Merge pull request #1058 from bergwolf/vsock-cleanup
sandbox: cleanup sandbox if creation failed
2018-12-21 10:42:33 -08:00
Sebastien Boeuf
1e8f84854c Merge pull request #1069 from sboeuf/fix_fc_k8s
mounts: Ignore existing mounts if they cannot be honored
2018-12-21 09:36:32 -08:00
Sebastien Boeuf
83e38c959a mounts: Ignore existing mounts if they cannot be honored
In case we use an hypervisor that cannot support filesystem sharing,
we copy files over to the VM rootfs through the gRPC protocol. This
is a nice workaround, but it only works with regular files, which
means no device file, no socket file, no directory, etc... can be
sent this way.

This is a limitation that we accept here, by simply ignoring those
non-regular files.

Fixes #1068

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-12-21 15:38:06 +00:00
Peng Tao
d890478fa2 release: Kata Containers 1.5.0-rc2
- docs: update compatibility matrix with s390
- setup: Add make and gcc as dependencies
- suse: fix port URL detection for aarch64
- s390x: set CC for fedora
- Add 'install' target to makefile
- rootfs: Bump golang version to 1.11.1
- tests: skip docker,kata install with KATA_DEV_MODE

c3d77ae docs: add s390 to the compatibility matrix
be97380 setup: Add make and gcc as dependencies
de7fe19 s390x: set CC for fedora
3366a32 README: add ARM architecture to openSUSE
804286f suse: fix port URL detection for aarch64
434fff8 rootfs_builder: Dont fail if GOPATH not defined.
1bbf1e4 rootfs: Allow use host repositories.
f994560 rootfs: Bump golang version to 1.11.1
06c8d88 makefile: Add make install
9c0773a test: avoid errors in exit_handler
eb92306 tests: skip docker,kata install with KATA_DEV_MODE

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-12-21 17:11:51 +08:00
Peng Tao
bf1a5ce000 sandbox: cleanup sandbox if creation failed
This includes cleaning up the sandbox on disk resources,
and closing open fds when preparing the hypervisor.

Fixes: #1057

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-12-21 13:46:16 +08:00
Eric Ernst
0f6fb5439a Merge pull request #1043 from sboeuf/fc_config
config: Add firecracker as a supported hypervisor configuration
2018-12-20 21:17:43 -08:00
Sebastien Boeuf
e14071f2bd Merge pull request #1045 from mcastelino/topic/firecracker-virtio-mmio
Firecracker: virtio mmio support
2018-12-20 19:47:01 -08:00
running
c099be56da container: Use lazy unmount
Unmount recursively to unmount bind-mounted volumes.
Fixes: #965
Signed-off-by: Ning Lu <crossrunning@outlook.com>
2018-12-21 11:11:58 +08:00
Manohar Castelino
0d84d799ea virtio-mmio: Add support for virtio-mmio
Start adding support for virtio-mmio devices starting with block.
The devices show within the vm as vda, vdb,... based on order of
insertion and such within the VM resemble virtio-blk devices.

They need to be explicitly differentiated to ensure that the
agent logic within the VM can discover and mount them appropropriately.
The agent uses PCI location to discover them for virtio-blk.
For virtio-mmio we need to use the predicted device name for now.

Note: Kata used a disk for the VM rootfs in the case of Firecracker.
(Instead of initrd or virtual-nvdimm). The Kata code today does not
handle this case properly.

For now as Firecracker is the only Hypervisor in Kata that
uses virtio-mmio directly offset the drive index to comprehend
this.

Longer term we should track if the rootfs is setup as a block
device explicitly.

Fixes: #1046

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2018-12-20 15:08:51 -08:00
Sebastien Boeuf
353564abe0 config: Reorganize the code to fix code complexity
By breaking down updateRuntimeConfig() into smaller functions, this
commit prevents the function to grow a Go complexity higher than 15.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-20 15:02:55 -08:00
Eric Ernst
d6c1f531a9 config: Add firecracker configuration support
In order to let the user choose firecracker hypervisor instead of
QEMU (from the configuration.toml), let's add it to the list of
supported hypervisors.

Fixes #1042

Depends-on: github.com/kata-containers/runtime#1044

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-12-20 15:02:55 -08:00
Sebastien Boeuf
8764fc1467 Merge pull request #1044 from mcastelino/topic/fc-vendor
Firecracker VMM support
2018-12-20 15:02:06 -08:00
Sebastien Boeuf
b4c3a2ffbd virtcontainers: fc: Stop the VM by killing the process
Because firecracker currently does not support a proper stop from
the caller, and because we don't want the agent to initiate a reboot
to shutdown the VM, the simplest and most efficient solution at the
moement is to signal the VM process with SIGTERM first, followed by
a SIGKILL if the process is still around.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-20 11:54:59 -08:00
Manohar Castelino
fba23796d6 firecracker: Add support for pseudo hotplug
Use the firecracker rescan logic to update the pre-attached drive.
This allows us to emulate hotplug.

Initially the drive backing stores are set to empty files on the
host. Once the actual block based device or file is available
swap the backing store.

The rescan needs to be issued iff the VM is running.

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2018-12-20 11:54:59 -08:00
Manohar Castelino
22ebc09f00 firecracker: Close the vsock vhostfd
Unlike QEMU firecracker cannot accept a fd as part of the REST API.
Close the vsock vhostfd close to the point where we launch the VM.

Note: This is still racy.

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2018-12-20 11:54:59 -08:00
Manohar Castelino
e65bafa793 virtcontainers: Add firecracker as a supported hypervisor
Add firecracker as a supported hypervisor. This connects the
newly defined firecracker implementation as a supported
hypervisor.

Move operation definition to the common hypervisor code.

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2018-12-20 11:54:59 -08:00
Manohar Castelino
c1d3f1a98b firecracker: VMM API support
Initial Support for the firecracker VMM

Note:
- 9p is unsupported by firecracker
- Enable pseudo hotplug block device hotplug capability

Initially, this will be a pseudo capability for Firecracker hypervisor,
but we will utilize a pool of block devices and block device rescan as a
temporary workaround.

Fixes: #1064

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2018-12-20 11:54:49 -08:00
Penny Zheng
cc530e7e77 qemu: add 'Build a custom qemu-system-aarch64' section
Since aarch64 need custom QEMU binary and doesn't support OBS
packaging for now, we add this section to lead developers to build
required qemu-system-aarch64 binary.

Fixes: #320

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-12-20 17:58:53 +08:00
James O. D. Hunt
10559f0c68 Merge pull request #1036 from lifupan/fixlog
shimv2: discard log before shim init log output
2018-12-20 08:55:30 +00:00
James O. D. Hunt
dcd3bd0476 Merge pull request #290 from marcov/up-obs-distros
Update list of stable release distros
2018-12-20 08:36:35 +00:00
Manohar Castelino
c34b0455e4 firecracker: vendor in all firecracker dependencies
Vendor in all firecracker dependencies. This allows virtcontainers
to pull call the firecracker REST API.

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2018-12-19 16:23:41 -08:00
Eric Ernst
f22370cca0 Merge pull request #1063 from sboeuf/fix_fc_cgroups
virtcontainers: cgroups: Don't error if no thread ID
2018-12-19 16:06:22 -08:00
Sebastien Boeuf
a21d1e693f virtcontainers: cgroups: Don't error if no thread ID
In case the hypervisor implementation does not return any thread
ID, this should not issue any error since there is simply nothing
to constrain.

Fixes #1062

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-19 14:19:40 -08:00
Eric Ernst
b51c57e6fe Merge pull request #1041 from devimc/topic/no9pCopyFiles
Copy files from host to guest
2018-12-19 12:16:34 -08:00
Marco Vedovati
c3c8a3d926 obs-packaging: add openSUSE Leap 15 and Tumbleweed
Add more recent openSUSE distributions.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-12-19 18:09:34 +01:00
Marco Vedovati
6b375a9573 obs-packaging: remove EOL distros from stable releases
Remove distros that reached EOL (Fedora 26, Fedora 27, Ubuntu 17.10).

Fixes: #279

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-12-19 18:09:03 +01:00
Marco Vedovati
31b04a739b obs-packaging: Add Debian 9 distro
Add Debian 9 distro to the list of stable release distros.

Fixes: #289

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-12-19 18:08:42 +01:00
Julio Montes
378d8157a6 virtcontainers: copy or bind mount shared file
Copy files to contaier's rootfs if hypervisor doesn't supports filesystem
sharing, otherwise bind mount them in the shared directory.

see #1031

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-12-19 09:58:44 -06:00
Julio Montes
bc31844106 virtcontainers: Check file sharing support
If the hypervisor does not support filesystem sharing (for example, 9p),
files will be copied over gRPC using the copyFile request function.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-12-19 09:58:21 -06:00
Julio Montes
62917621c2 virtcontainers: copy files form host to guest
Files are copied over gRPC and there is no limit in size of the files that
can be copied. Small files are copied using just one gRPC call while big files
are copied by parts.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-12-19 09:55:25 -06:00
Eric Ernst
dcd48a9ca1 vc: capabilities: add capability flags for filesystem sharing
Not all hypervisors support filesystem sharing. Add capability flags to track
this. Since most hypervisor implementations in Kata *do* support this, the set
semantices are reversed (ie, set the flag if you do not support the feature).

Fixes: #1022

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-12-19 09:54:00 -06:00
Julio Montes
e776380ff8 vendor: update kata agent
Brings support to copy file from host to guest

shortlog:
169d755 protocols/grpc: implement function to copy files
ff87c26 virtio-mmio: Add support for virtio-mmio blk devices
b9c5d5b libcontainer: use /run as root containers path
092f1a0 block: add support of block storage driver "nvdimm"

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-12-19 09:10:20 -06:00
James O. D. Hunt
0d6a035f95 Merge pull request #1056 from lifupan/fixVsock
katautils: check config factory/template and vsock
2018-12-19 10:39:38 +00:00
Frank Cao
07a0b163f9 Merge pull request #1049 from sameo/topic/ctx-unset
virtcontainers: Add context when creating tests sandboxes
2018-12-19 14:43:16 +08:00
fupan
e4e7c3ae54 katautils: check config template and vsock
Vsock conflicts with factory, when both of them are enabled,
kata will try to create a new vm template which is useless,
thus it's better to return an error directly to let users know
that those two config cannot be enabled at the same time.

Fixes: #1055

Signed-off-by: fupan <lifupan@gmail.com>
2018-12-19 14:12:41 +08:00
Peng Tao
b446179fa4 Merge pull request #1015 from teawater/fix_yq2
make: Add "GOPATH not set"
2018-12-19 13:16:07 +08:00
Peng Tao
ade738f7b7 Merge pull request #1052 from sboeuf/fc_fix_network
virtcontainers: network: Use multiqueue flag only when appropriate
2018-12-19 09:56:42 +08:00
Sebastien Boeuf
0f1fde498d virtcontainers: network: Use multiqueue flag only when appropriate
The multiqueue flag associated with the TUNTAP network device cannot
be used if the number of queues indicates 0. When 0, this means the
multiqueue is not supported, and we cannot use the according flag.

Fixes #1051

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-18 11:06:06 -08:00
Samuel Ortiz
f63a18deea virtcontainers: Add context when creating tests sandboxes
We can use the background context when creating test sandboxes from the
sanbox unit tests. This shuts the "trace called before context set"
erros down.

Fixes: #1048

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2018-12-18 13:22:08 +01:00
Sebastien Boeuf
5d91edd695 Merge pull request #1038 from lifupan/fixvsock
katautils: fix the issue of shimv2 boot failed with vsock enabled
2018-12-17 11:35:25 -08:00
Sebastien Boeuf
9ad35bd6b6 kernel: Add 4.19.10 config for x86
We want to make sure Kata runs on latest stable kernels so that it
benefits from the latest features.

For instance, in case of Kata relying on NEMU hypervisor, the recent
kernel patches reworking the way timer calibration is handled are
solving some boot latency issues.

Fixes #287

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-17 08:53:04 -08:00
Sebastien Boeuf
802bfa26c9 versions: Bump to kernel 4.19.10
We need to bump the kernel version from 4.14.67 to 4.19.10 in order
to follow the recent kernel config bump.

Fixes #1029

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-17 08:16:10 -08:00
Fupan Li
05be5bf1f9 shimv2: discard log before shim init log output
containerd would like to get the shim's socket
address from shimv2's stdout, thus it's better
to discard the log's output before shimv2 init
it's logger and at the same time add a hook to
log into syslog.

Fixes: #1035

Signed-off-by: Fupan Li <lifupan@gmail.com>
2018-12-17 15:39:44 +00:00
James O. D. Hunt
006d375358 Merge pull request #1040 from alicefr/doc_s390
docs: add IBM Z in the README
2018-12-17 15:25:11 +00:00
Alice Frosi
e98dee6a22 docs: drop 's in architecture names for consistency
Drop 's for the other archs to be consistent

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-12-17 16:18:16 +01:00
Sebastien Boeuf
658bd82490 Merge pull request #1034 from Pennyzct/hvc
qemu-arm64: refactor 'console=hvc0,hvc1' for kata-agent debugging
2018-12-17 06:50:55 -08:00
Julio Montes
bb06a0498a Merge pull request #221 from alicefr/s390_docu
docs: update compatibility matrix with s390
2018-12-17 07:42:08 -06:00
Alice Frosi
1892102dc3 docs: add IBM Z in the README
Fixes: #1039

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-12-17 12:56:25 +01:00
Marco Vedovati
3549d5a5e2 obs-packaging: support comparisons of pre-releases versions
Fix version compare when specifying a pre-release version in
versions.txt. This is needed because kata on git uses strict semver,
while kata RPM packages uses ~ in place of - for PATCH version, to
allow RPM version comparison to work properly.

Fixes: #285

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-12-17 12:36:09 +01:00
Alice Frosi
c3d77aea6a docs: add s390 to the compatibility matrix
Fixes: #198

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-12-17 10:39:09 +01:00
Fupan Li
573b73eb10 katautils: fix the issue of shimv2 boot failed with vsock enabled
shimv2 missed to enable vsock in KataAgentConfig.

Fixes: #1037

Signed-off-by: Fupan Li <lifupan@gmail.com>
2018-12-17 07:13:38 +00:00
Eric Ernst
df6a8ed37a Merge pull request #272 from mcastelino/topic/firehack
Firecracker support: Add support for virtio-mmio
2018-12-16 21:31:01 -08:00
Eric Ernst
31489976ae Merge pull request #1028 from sboeuf/multi_queues
network: Don't assume multiple queues support by default
2018-12-16 21:23:10 -08:00
Penny Zheng
c8c564bdd6 qemu-arm64: refactor 'console=hvc0,hvc1' for kata-agent debugging
Since kata-agent is using virtio-console to output debugging info
and the console ports are available in the guest as /dev/hvc0 and
/dev/hvc1, we should swap origin console type 'console=ttyAMA0'
with 'console=hvc0,hvc1'.

Fixes: #1033

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <Wei.Chen@arm.com>
2018-12-17 11:34:11 +08:00
Penny Zheng
aee668b51d kernel: update guest kernel to 4.19.8 on aarch64
For supporting nvdimm, we need to update kernel on aarch64 to the
stable version 4.19.8 and backport Suzuki K Poulose's latest
Dynamic IPA and 52bit IPA support patch series
(https://patchwork.kernel.org/cover/10616271/)which has been included
in 4.20-rc3+ to the v4.19.8.

Fixes: #268

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <Wei.Chen@arm.com>
2018-12-17 10:00:59 +08:00
Manohar Castelino
662147ce03 Merge pull request #283 from kata-containers/revert-278-add_config_x86_4_19_8
Revert "kernel: Add 4.19.8 config for x86"
2018-12-14 17:10:28 -08:00
Manohar Castelino
8f513d6c86 Add support for virtio-mmio
Add support for virtio-mmio. Firecracker uses virtio-mmio.

Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
2018-12-14 17:02:09 -08:00
Manohar Castelino
edc9bcba30 Revert "kernel: Add 4.19.8 config for x86" 2018-12-14 16:34:18 -08:00
Sebastien Boeuf
a1af1cb099 virtcontainers: network: Rely on hypervisor capabilities for multi queues
In order to properly setup the network, hence allocate or not multiple
queues, this commit makes sure that the hypervisor capabilities are
checked for this.

Fixes #1027

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-14 15:39:25 -08:00
Manohar Castelino
9d4e6b0742 Merge pull request #278 from sboeuf/add_config_x86_4_19_8
kernel: Add 4.19.8 config for x86
2018-12-14 15:21:22 -08:00
Sebastien Boeuf
a227ab852a virtcontainers: hypervisor: Add capability regarding multiqueue support
Each hypervisor is different and supports different options regarding
the network interface it creates. In particular, the multiqueue option
is not supported by Firecracker and should not be assumed by default.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-14 15:11:44 -08:00
Sebastien Boeuf
0bcd221fad virtcontainers: network: Rename numCPUs to queues
The point of knowing the number of CPUs from the network perspective
is to determine the number of queues that can be allocated to the
network interface of the our virtual machine.

Therefore, it's more logical to name it queues from a network.go
perspective.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-14 15:08:55 -08:00
Sebastien Boeuf
2cb4bb9db7 virtcontainers: network: Reorganize endpoints interconnection
In order to prevent from future duplication of calls into the
hypervisor interface, the hypervisor is directly passed as part
of the xConnectVMNetwork() function. Because this does not apply
the disconnection case, this commit splits the former function
into two separate ones.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-14 14:50:11 -08:00
Marco Vedovati
59ce0b3d4e dev-guide: detect & use existing docker unit file
Only create a new docker unit file if no other existing unit files
are detected. Creating a new docker file when not necessary may mask out
existing docker daemon configurations.

Fixes: #300

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-12-14 18:34:29 +01:00
Salvador Fuentes
4fc6e33ccc Merge pull request #220 from chavafg/topic/fix-dependencies-fedora
setup: Add make and gcc as dependencies
2018-12-14 10:58:32 -06:00
Sebastien Boeuf
9ec1ca731d kernel: Add 4.19.8 config for x86
We want to make sure Kata runs on latest stable kernels so that it
benefits from the latest features.

For instance, in case of Kata relying on NEMU hypervisor, the recent
kernel patches reworking the way timer calibration is handled are
solving some boot latency issues.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-14 07:28:30 -08:00
Salvador Fuentes
be97380a3b setup: Add make and gcc as dependencies
We require make and gcc to run our CI tools.

Fixes: #219.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-12-14 08:09:52 -06:00
Julio Montes
121de2ccf3 Merge pull request #216 from marcov/suse-arm-repo-fix
suse: fix port URL detection for aarch64
2018-12-14 07:08:45 -06:00
Julio Montes
695702b61b Merge pull request #218 from alicefr/master
s390x: set CC for fedora
2018-12-14 07:08:21 -06:00
James O. D. Hunt
bcf995bfe1 Merge pull request #887 from jcvenegas/sandbox-manage-resources
virtcontainers: make sandbox manage VM resources
2018-12-14 09:21:36 +00:00
x00464843
08f1c05144 Module: fix parameter order error in cli/ps.go
Fixes: #1017
reason: when calls vci.ProcessListContainer, fix wrong parameter order

Signed-off-by: x00464843 <xueshaojia@huawei.com>
2018-12-14 09:08:54 +08:00
Jose Carlos Venegas Munoz
d4586d4bcc test: remove TestHotplugRemoveMemory
HotplugRemoveMemory require to do a qmp call, but
unit test does not start a Qemu instance.

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

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-12-13 16:33:35 -06:00
Jose Carlos Venegas Munoz
0d80202573 vc:sandbox: rename newcontainer to fetchcontainer.
The containers is not new but fech from an existing one.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-12-13 16:33:24 -06:00
Jose Carlos Venegas Munoz
618cfbf1db vc: sandbox: Let sandbox manage VM resources.
- Container only is responsable of namespaces and cgroups
inside the VM.

- Sandbox will manage VM resources.

The resouces has to be re-calculated and updated:

- Create new Container: If a new container is created the cpus and memory
may be updated.

- Container update: The update call will change the cgroups of a container.
the sandbox would need to resize the cpus and VM depending the update.

To manage the resources from sandbox the hypervisor interaface adds two methods.

- resizeMemory().

This function will be used by the sandbox to request
increase or decrease the VM memory.

- resizeCPUs()

vcpus are requested to the hypervisor based
on the sum of all the containers in the sandbox.

The CPUs calculations use the container cgroup information all the time.

This should allow do better calculations.

For example.

2 containers in a pod.

container 1 cpus = .5
container 2 cpus = .5

Now:
Sandbox requested vcpus 1

Before:
Sandbox requested vcpus 2

When a update request is done only some atributes have
information. If cpu and quota are nil or 0 we dont update them.

If we would updated them the sandbox calculations would remove already
removed vcpus.

This commit also moves the sandbox resource update call at container.update()
just before the container cgroups information is updated.

Fixes: #833

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-12-13 16:33:14 -06:00
Alice Frosi
de7fe193ab s390x: set CC for fedora
Fixes: #217

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-12-13 14:40:44 +01:00
Hui Zhu
25358444ad make: Add "GOPATH not set"
Most of the projects, they can be built with "make".  After that,
"sudo make install" can install the application.
It is not work for kata-runtime because kata-runtime's make must work
with golang in the environment that default sudo cannot supply it.
But "make install" doesn't need golang.

So add "GOPATH not set" to handle the issue.

Fixes: #1008

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-13 13:25:43 +08:00
Marco Vedovati
3366a32077 README: add ARM architecture to openSUSE
The openSUSE image can be built for ARM.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-12-12 18:16:32 +01:00
Marco Vedovati
804286f90d suse: fix port URL detection for aarch64
Fix port URL detection for aarch64, and error out if an unknown
architecture is detected.

Fixes: #215

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-12-12 18:15:07 +01:00
fli
97fce623d5 Merge pull request #976 from bergwolf/synctime
factory: set guest time after resuming
2018-12-12 18:25:18 +08:00
Peng Tao
8444a7a99e factory: set guest time after resuming
We might have paused a guest for a long time so we need to sync
its time.

Fixes:#951
Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-12-12 12:54:16 +08:00
Peng Tao
f81370876c vendor: update agent vendor for SetGuestDateTime
Full commit list:

34b7454 grpc: sandbox: add container when is fully created.
df822eb grpc: support rlimits
87ad0a8 release: Kata Containers 1.5.0-rc1
31c6b6e grpc: add SetGuestDateTime API
4eca13b client: do cleanup after UT stop mock server
c25288a Makefile: Decide if agent will be built by seccomp tag
0aae82b release: Kata Containers 1.4.0
7b4c337 vendor: Update vendor/github.com/containerd/console
8dedf30 agent: build as Position-Independent-Executable
dc635d4 test: Add test for ipvlan routes in l3 mode
69ee60f network: Refactor to reduce cyclomatic complexity
4005c33 network: Handle default route where gateway is empty
83138df pkg: types: Add a new field type

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-12-12 12:52:40 +08:00
Peng Tao
971fb677b2 Merge pull request #1004 from lifupan/fixchildreap
shimv2: fix the error of reaping qemu process mistakenly
2018-12-12 12:31:13 +08:00
Julio Montes
976f5b2a6e Merge pull request #990 from alicefr/s390x
s390x: add support for s390x
2018-12-11 10:57:27 -06:00
Jose Carlos Venegas Munoz
58b8ebb1dc Merge pull request #281 from alicefr/s390_4.19
kernel: add s390 config for version 4.19.8
2018-12-11 10:30:07 -06:00
Julio Montes
32738ba59c Merge pull request #998 from teawater/blkconfig
config: Add cache-related options for block devices
2018-12-11 07:40:06 -06:00
James O. D. Hunt
4cd5f2cbb8 Merge pull request #318 from devimc/topic/snap-installation
install: add snap installation guide
2018-12-11 12:04:22 +00:00
Alice Frosi
6f83061139 s390x: add support for s390x
The PR adds the support for s390x.

In the case of CCW devices, the vhost-user devices are not supported.
See #659. An error message is thrown if they tried to be used.

Memory hotplug is not supported on s390 yet and an error message is thrown.

The VirtioNetPCI has been changed to VirtioNet. The generalization
allows to set the VirtioNet to the correct CCW device for s390x.

Fixes: #666

Co-authored-by: Yash D Jain ydjainopensource@gmail.com
Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-12-11 12:32:17 +01:00
Alice Frosi
02476450a2 kernel: add s390 config for version 4.19.8
Remove configs s390_kata_kvm_4.14.x

The patch 0003-serial-forbid-8250-on-s390 is no longer necessary as it
has been upstreamed since version 4.16

The kernel configs have been generated as described in https://github.com/kata-containers/packaging/issues/246
plus the vsock options have been manually enabled:
CONFIG_VSOCKETS=y
CONFIG_VIRTIO_VSOCKETS=y
CONFIG_VIRTIO_VSOCKETS_COMMON=y

Fixes: #280

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-12-11 11:01:26 +01:00
Xu Wang
349a848714 Merge pull request #271 from teawater/dimm
obs-packaging: Add Eric Auger's latest PCDIMM/NVDIMM patches
2018-12-11 14:09:00 +08:00
Peng Tao
8f22d672db Merge pull request #996 from lifupan/fixFactory
virtcontainers: share the agent's client between factory's VM and san…
2018-12-11 11:29:33 +08:00
fupan
df8b7db3ae shimv2: fix the issue of reaping child mistakenly
For kata shimv2, the sub-reaper isn't needed, otherwise
it will break the cmd.Run() calling in govmmQemu.LaunchQemu().

Fixes: #939

Signed-off-by: fupan <lifupan@gmail.com>
2018-12-11 03:12:31 +00:00
Fupan Li
e4a3fd5565 vendors: upgrade the containerd vendors
kata shimv2 needs the commit of:
f05672357f,
thus upgrade it to the latest.

Signed-off-by: Fupan Li <lifupan@gmail.com>
2018-12-11 02:50:36 +00:00
Jose Carlos Venegas Munoz
4cc94b6063 Merge pull request #994 from katacontainersbot/1.5.0-rc1-branch-bump
# Kata Containers 1.5.0-rc1
2018-12-10 15:40:17 -06:00
Julio Montes
718b4b95e1 Merge pull request #277 from jcvenegas/modulecleanup
Kernel: Remove modules
2018-12-10 09:10:02 -06:00
Graham Whaley
9b6ac0aa29 Merge pull request #275 from alicefr/enable_vsock
kernel: enable vsock on s390x
2018-12-10 14:35:00 +00:00
fupan
20f2d30ab8 virtcontainers: share the agent's client between factory's VM and sandbox
When agent is configured as longLive, the VM's agent created
by factory will not close it's client once it connected, thus
the sandbox's agent cannot re-connect successfully.

Sharing the agent's client between VM's agent and sandbox
can fix this issue.

Fixes: #995

Signed-off-by: fupan <lifupan@gmail.com>
2018-12-10 18:28:08 +08:00
James O. D. Hunt
3781db2edc Merge pull request #267 from jcvenegas/f29
obs: enable fedora 29
2018-12-10 09:57:18 +00:00
Alice Frosi
c63de1523a kernel: enable vsock on s390x
The vsock options need to be enabled to build a kernel able to use the
vsock option

Fixes: #274

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-12-10 08:51:34 +01:00
Hui Zhu
6024088ca0 config: Add cache-related options for block devices
Add block_device_cache_set, block_device_cache_direct
and block_device_cache_noflush.

Fixes: #997

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-09 18:10:39 +08:00
Jose Carlos Venegas Munoz
5117654699 Kernel: Remove modules
Remove modules from default kernel config.

Modules are not used in default kata images.

Lets remove them.

Fixes: #276

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-12-07 16:09:56 -06:00
Jose Carlos Venegas Munoz
c081eda8b3 Merge pull request #266 from devimc/snap/skipGoVersionCheck
snap: skip go version check
2018-12-07 14:45:03 -06:00
Jose Carlos Venegas Munoz
f8f76907eb Merge pull request #263 from marcov/kernel-multiarch
obs-packaging: multi-arch kernel build support
2018-12-07 14:44:35 -06:00
Archana Shinde
a323a87b59 Merge pull request #975 from teawater/dimm
versions: refactor configuration of qemu in version.yaml
2018-12-07 10:57:21 -08:00
Archana Shinde
063d04f913 Merge pull request #992 from teawater/upv
vendor: Update govmm vendoring
2018-12-07 10:53:12 -08:00
katacontainers bot
d4104bf5ab release: Kata Containers 1.5.0-rc1
- Block: Add cache-related options for block devices
- versions: Add nemu
- Update cid vsock
- shim: Add trace config option
- vendor: Update govmm vendoring
- git: Add containerd-shim-kata-v2 to .gitignore
- virtcontainers: change uint32 to uint64 for ioctl
- virtcontainers: Return the appropriate container status
- config: Check factory config
- Implement containerd shim v2 API for Kata Containers
- ppc64le: kata-env fails due to missing vendor field
- kata-check: do not require nested vt
- kata-env: Show runtime trace setting

deb6f16 virtcontainers: update context id of vsock to uint64
f651147 block: Add cache-related options for block devices
018c8c1 vendor: Update govmm vendoring
ea74b98 shim: Add trace config option
2af240b versions: Add nemu
7093eec git: Add containerd-shim-kata-v2 to .gitignore
96ed6c5 git: Sort .gitignore entries
04ce4c0 virtcontainers: change uint32 to uint64 for ioctl
0bf29c8 config: Check factory config
fe784c1 config: Create function to check config options
70e4dc5 config: Move check code to end of LoadConfiguration
fa9b15d virtcontainers: Return the appropriate container status
02f8b29 containerd-shim-kata-v2: add building of shimv2 into Makefile
8199d10 containerd-shim-kata: add unit test cases
7951041 containerd-shim-kata-v2: add the service Stats support
5cc016c containerd-shim-kata-v2: add the service Kill support
9ee53be containerd-shim-kata-v2: add the service Resume support
8df33d3 containerd-shim-kata-v2: add the service Pause support
cd321a3 containerd-shim-kata-v2: add the service ResizePty support
47326f5 containerd-shim-kata-v2: add the service Update support
642231b containerd-shim-kata-v2: add the service Shutdown support
87f591a containerd-shim-kata-v2: add the service Connect support
ec4f27b containerd-shim-kata-v2: add the service CloseIO support
8c95b75 containerd-shim-kata-v2: add the service Pids support
709bc9a containerd-shim-kata-v2: add the service Cleanup support
a0e6456 containerd-shim-kata-v2: add the service Delete support
fd18b22 containerd-shim-kata-v2: add the service State support
fbaefc9 containerd-shim-kata-v2: add the service wait support
269c940 containerd-shim-kata-v2: add the exec service support
4c5b296 containerd-shim-kata-v2: add the start service support
72fd6e0 containerd-shim-kata-v2: add the create service support
ca58bb4 ppc64le: kata-env fails due to missing vendor field
d6c4ca5 container-shim-kata-v2: The init containerd shim v2 support
5e6cd00 containerd-shim-v2: add the shim v2 required vendors
f0cb0c7 cli: refactor to align with katautils package
9984636 kata-env: Show runtime trace setting
8cfb06f kata-check: optionally require kvm-intel unrestricted_guest
acbcde3 kata-check: do not require nested vt
ea9ecd7 kata-check: modprobe missing kernel modules

Signed-off-by: katacontainers bot <katacontainersbot@katacontainers.io>
2018-12-07 16:06:23 +00:00
Hui Zhu
617e5e4e25 vendor: Update govmm vendoring
Shortlog:

97fc343 contributors: add my name
c891f5f qmp: Add nvdimm support

Fixes #991

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-07 19:10:29 +08:00
Xu Wang
408428edf4 Merge pull request #957 from teawater/cache
Block: Add cache-related options for block devices
2018-12-07 11:01:40 +08:00
Julio Montes
4d1a92adea Merge pull request #971 from chavafg/topic/nemu
versions: Add nemu
2018-12-06 16:26:09 -06:00
Sebastien Boeuf
31b0db0892 Merge pull request #960 from alicefr/update_cid_vsock
Update cid vsock
2018-12-06 22:11:31 +00:00
James O. D. Hunt
ed6f7eb56a Merge pull request #938 from jodh-intel/trace-shim
shim: Add trace config option
2018-12-06 11:03:44 +00:00
Alice Frosi
deb6f16d82 virtcontainers: update context id of vsock to uint64
The CID of VSock needs to be change to uint64. Otherwise that leads to
an endianess issue. For more details see
https://github.com/kata-containers/runtime/issues/947

Remove the uint64 introduced by #984

Fixes: #958

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-12-06 10:13:30 +00:00
Hui Zhu
f6511471d4 block: Add cache-related options for block devices
Add block_device_cache_set, block_device_cache_direct and
block_device_cache_noflush.
They are cache-related options for block devices that are described in
https://github.com/qemu/qemu/blob/master/qapi/block-core.json.
block_device_cache_direct denotes whether use of O_DIRECT (bypass the host
page cache) is enabled.  block_device_cache_noflush denotes whether flush
requests for the device are ignored.
The json said they are supported since 2.9.
So add block_device_cache_set to control the cache options set to block
devices or not.  It will help to support the old version qemu.

Fixes: #956

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-06 18:07:44 +08:00
James O. D. Hunt
9dee04a314 Merge pull request #984 from sboeuf/vendor_govmm
vendor: Update govmm vendoring
2018-12-06 09:55:25 +00:00
Sebastien Boeuf
018c8c1468 vendor: Update govmm vendoring
Shortlog:

f9b31c0 qemu: Allow disable-modern option from QMP
d617307 Run tests for the s390x build
b36b5a8 Contributors: Add Clare Chen to CONTRIBUTORS.md
b41939c Contributors: Add my name
dab4cf1 qmp: Add tests
5ea6da1 Verify govmm builds on s390x
ee75813 contributors: add my name
c80fc3b qemu: Add s390x support
ca477a1 Update source file headers
e68e005 Update the CONTRIBUTING.md
2b7db54 Add the CONTRIBUTORS.md file
b3b765c qemu: test Valid for Vsock for Context ID
3becff5 qemu: change of ContextID from uint32 to uint64
f30fd13 qmp: Output error detail when execute QMP command failed
7da6a4c qmp: fix mem-path properties for hotplug memory.
e4892e3 qemu/qmp: preparation for s390x support
110d2fa qemu/qmp: add new function ExecuteBlockdevAddWithCache
a0b0c86 qmp_test: Change QMP version from 2.6 to 2.9
10c36a1 qemu: add support for pidfile option

Fixes #983

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-12-06 00:13:15 -08:00
Julio Montes
d3bdfa306d install: add snap installation to installing table
Add snap installation to "Installing on a Linux System" table

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-12-05 09:45:00 -06:00
Julio Montes
3440caeda5 install: add snap installation guide
Add snap installation guide

fixes #274

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-12-05 09:45:00 -06:00
James O. D. Hunt
ea74b981d9 shim: Add trace config option
Add a new `enable_tracing` option to `configuration.toml` to enable
shim tracing.

Fixes #934.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-12-05 15:20:13 +00:00
Hui Zhu
7d0be360bd versions: refactor configuration of qemu in version.yaml
Include info such as commit number,tag number, etc for building
nvdimm-supported qemu on aarch64 from source code.

Fixes: #974

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-05 10:27:43 +08:00
Julio Montes
1270003af9 snap: skip go version check
Right golang version is installed before building kata-containers, skip go
version check to avoid including extra build dependencies.

fixes #265

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-12-04 09:02:25 -06:00
Julio Montes
0c06e0356e snap: remove QEMU_ARCH variable
QEMU_ARCH variable is not needed

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-12-04 09:02:25 -06:00
Hui Zhu
81a077fd9b obs-packaging: Add Eric Auger's latest PCDIMM/NVDIMM patches
Add Eric Auger's latest PCDIMM/NVDIMM patches for supporting nvdimm
on aarch64.

Fixes: #270

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-04 18:42:07 +08:00
Jose Carlos Venegas Munoz
1b0b6a1169 obs: Enable fedora 29
Enable F29 repository.

Fixes: #261

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-12-03 12:19:12 -06:00
Jose Carlos Venegas Munoz
dc3dcdc424 pkgs: Fix qemu build on fedora 29
Add python as build require.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-12-03 12:11:54 -06:00
Salvador Fuentes
2af240bd18 versions: Add nemu
Since Kata Containers work with NEMU, add an entry
of the supported nemu version and its OVMF firmware.

Fixes: #970.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-12-03 11:13:12 -06:00
Salvador Fuentes
72c5f6a223 Merge pull request #207 from jcvenegas/install
Add 'install' target to makefile
2018-12-03 11:04:45 -06:00
Graham Whaley
0a7a4379dc Merge pull request #967 from jodh-intel/add-containerd-shim-to-git-ignore
git: Add containerd-shim-kata-v2 to .gitignore
2018-12-03 09:28:48 +00:00
James O. D. Hunt
7093eec9c4 git: Add containerd-shim-kata-v2 to .gitignore
Hide the `containerd-shim-kata-v2` binary from `git status`.

Fixes: #966.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-12-03 08:57:46 +00:00
James O. D. Hunt
96ed6c59ee git: Sort .gitignore entries
Sort the contents of `.gitignore` into two groups: globs and actual
paths. This is more intuitive than a purely sorted list.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-12-03 08:56:21 +00:00
Jose Carlos Venegas Munoz
434fff890a rootfs_builder: Dont fail if GOPATH not defined.
Define GOPATH if is not set.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-11-30 10:45:19 -06:00
Jose Carlos Venegas Munoz
1bbf1e4106 rootfs: Allow use host repositories.
Instead of create a dnf repository allow the config from the host.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-11-30 10:44:26 -06:00
Jose Carlos Venegas Munoz
08d52c53a4 Merge pull request #209 from marcov/golang-bump
rootfs: Bump golang version to 1.11.1
2018-11-30 10:16:07 -06:00
Marco Vedovati
e2fb50411f obs-packaging: multi-arch kernel build support
Update the kernel package to allow building for multiple architectures with
a single set of sources.
Changes:
- Add kernel configs for all architectures
- Detect at runtime the correct target architecture and kernel
compressed image location. This is done  with the script kata-multiarch.sh

Note that debian control files still need to be updated to handle Multi-Arch,
so that they are not tied to the architecture on which
`linux-container/update.sh` is run.

Fixes: #262

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-30 12:02:16 +01:00
Frank Cao
6edb3618f6 Merge pull request #952 from alicefr/utils_linux_fix
virtcontainers: change uint32 to uint64 for ioctl
2018-11-30 09:56:39 +08:00
Jose Carlos Venegas Munoz
645728dc71 Merge pull request #256 from marcov/fix-versions
Update versions.txt content and detect versions misalignment
2018-11-29 15:21:50 -06:00
James O. D. Hunt
58575231bd Merge pull request #950 from sboeuf/sboeuf/fix_docker_18_09
virtcontainers: Return the appropriate container status
2018-11-29 17:11:36 +00:00
Alice Frosi
04ce4c05df virtcontainers: change uint32 to uint64 for ioctl
The PR changes the parameter args from uint32 to uint64 for ioctl function.
That leads to an endianess bug.

Fixes: #947

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-11-29 14:51:06 +00:00
James O. D. Hunt
fa19fd0c15 Merge pull request #949 from jodh-intel/check-factory-config
config: Check factory config
2018-11-29 10:46:51 +00:00
James O. D. Hunt
9654a403b0 Merge pull request #258 from bergwolf/fix-deploy-static
release: fix kata-deploy-binaries.sh install command
2018-11-29 09:34:46 +00:00
James O. D. Hunt
0bf29c8207 config: Check factory config
If VM factory templating is enabled (`enable_template=true`), error if
the configured image is not an `initrd=` one.

Also add a note to the config file explaining that a normal image cannot
be used - only initrd images are supported.

Fixes #948.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-29 08:33:15 +00:00
James O. D. Hunt
fe784c1e36 config: Create function to check config options
Moved the checking routines in `LoadConfiguration()` to a new
`checkConfig()` function for clarity.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-29 08:28:14 +00:00
James O. D. Hunt
70e4dc550a config: Move check code to end of LoadConfiguration
Move the VSOCK handling code higher up so that all the checking code is
gathered together at the end of `LoadConfiguration()`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-29 08:19:33 +00:00
Sebastien Boeuf
fa9b15dafe virtcontainers: Return the appropriate container status
When our runtime is asked for the container status, we also handle
the scenario where the container is stopped if the shim process for
that container on the host has terminated.

In the current implementation, we retrieve the container status
before stopping the container, causing a wrong status to be returned.
The wait for the original go-routine's completion was done in a defer
within the caller of statusContainers(), resulting in the
statusContainer()'s values to return the pre-stopped value.

This bug is first observed when updating to docker v18.09/containerd
v1.2.0. With the current implementation, containerd-shim receives the
TaskExit when it detects kata-shim is terminating. When checking the
container state, however, it does not get the expected "stopped" value.

The following commit resolves the described issue by simplifying the
locking used around the status container calls. Originally
StatusContainer would request a read lock. If we needed to update the
container status in statusContainer, we'd start a go-routine which
would request a read-write lock, waiting for the original read lock to
be released.  Can't imagine a bug could linger in this logic. We now
just request a read-write lock in the caller (StatusContainer),
skipping the need for a separate go-routine and defer. This greatly
simplifies the logic, and removes the original bug.

Fixes #926

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-28 20:10:34 -08:00
Sebastien Boeuf
e06c8aafdc Merge pull request #572 from hyperhq/shimv2
Implement containerd shim v2 API for Kata Containers
2018-11-28 16:37:10 +00:00
Peng Tao
a8fe5b1746 release: fix install command
The kata-shim Makefile is changed and we should not set libexecdir
anymore.

Fixes: #257

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-11-28 20:46:44 +08:00
James O. D. Hunt
c2eea35b18 Merge pull request #865 from nitkon/kata-env
ppc64le: kata-env fails due to missing vendor field
2018-11-28 09:22:47 +00:00
James O. D. Hunt
7c44129614 Merge pull request #308 from jodh-intel/mention-warnings
docs: Add warnings to doc requirements doc
2018-11-28 08:48:12 +00:00
fupan
02f8b29837 containerd-shim-kata-v2: add building of shimv2 into Makefile
Add the Makefile target of building shimv2.

Fixes: #485

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
8199d10742 containerd-shim-kata: add unit test cases
Add unit test cases.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
ZeroMagic
7951041eb0 containerd-shim-kata-v2: add the service Stats support
Add the Stats api support to get the container's
resouces statistic.

Signed-off-by: ZeroMagic <anthonyliu@zju.edu.cn>
2018-11-28 14:32:25 +08:00
ZeroMagic
5cc016c8a2 containerd-shim-kata-v2: add the service Kill support
Add the Kill api support to send signal to a given
container process.

Signed-off-by: ZeroMagic <anthonyliu@zju.edu.cn>
Signed-off-by: fupan.li <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
ZeroMagic
9ee53be986 containerd-shim-kata-v2: add the service Resume support
Add the Resume api support to resume a paused container.

Signed-off-by: ZeroMagic <anthonyliu@zju.edu.cn>
2018-11-28 14:32:25 +08:00
ZeroMagic
8df33d34e8 containerd-shim-kata-v2: add the service Pause support
Add the Pause api support to pause a container running
in the pod.

Signed-off-by: ZeroMagic <anthonyliu@zju.edu.cn>
2018-11-28 14:32:25 +08:00
ZeroMagic
cd321a3e6e containerd-shim-kata-v2: add the service ResizePty support
Add the ResizePty api support to resize the console.

Signed-off-by: ZeroMagic <anthonyliu@zju.edu.cn>
2018-11-28 14:32:25 +08:00
fupan
47326f566c containerd-shim-kata-v2: add the service Update support
Add the Update api support to update a running
process's resouce.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
642231ba25 containerd-shim-kata-v2: add the service Shutdown support
Add the Shutdown api support to shutdown the shim.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
87f591a697 containerd-shim-kata-v2: add the service Connect support
Add the Connect api to get the shim's info.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
ec4f27b4c6 containerd-shim-kata-v2: add the service CloseIO support
Add the CloseIO api support to close a process's
input stream.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
8c95b7569d containerd-shim-kata-v2: add the service Pids support
Add the Pids api support to get the processes
pids running in the pod.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
709bc9aa12 containerd-shim-kata-v2: add the service Cleanup support
Add the Cleanup api support to cleanup the pod and
containers running in it when the pod's corresponding
shim died.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
a0e6456455 containerd-shim-kata-v2: add the service Delete support
Add the Delete api support to delete a stopped
container or pod.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
fd18b2289d containerd-shim-kata-v2: add the service State support
Add the State api support to get a container
or exec process's states.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
fbaefc9af1 containerd-shim-kata-v2: add the service wait support
Add the Wait api to wait on a started container
or exec process.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
269c940edc containerd-shim-kata-v2: add the exec service support
Add the Exec api support for exec an process in
a running container.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
4c5b29647b containerd-shim-kata-v2: add the start service support
Add the Start api support of start a pod or
container created before.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:03 +08:00
fupan
72fd6e0c7d containerd-shim-kata-v2: add the create service support
Add the "Create" api support for creating a pod
or container.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:29:35 +08:00
Graham Whaley
d7d5d0bdd2 Merge pull request #313 from egernst/azure-install-guide
Azure install guide
2018-11-27 19:30:38 +00:00
Eric Ernst
584bc5d232 docs: update azure install guide
Add link to distribution specific guides, and reference
azure document from install README.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-11-27 11:31:36 -08:00
Marco Vedovati
c3a371b2b0 obs-packaging: detect versions misalignments
Detect misalignments of versions between the content of versions.txt
file and the version found in the VERSION file in the git branch being
released on OBS.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-27 19:40:53 +01:00
Marco Vedovati
a0b8cc8ab8 obs-packaging: add --compare option to gen_versions_txt.sh
Introduce the --compare option to compare the content of the local
versions.txt file with the one found at the specified git branch.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-27 19:39:32 +01:00
Marco Vedovati
5a10544dca obs-packaging: bump versions.txt content to 1.4.0
Align the content of versions.txt with the latest version released on OBS.

Fixes: #255

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-27 19:38:10 +01:00
Marco Vedovati
f994560859 rootfs: Bump golang version to 1.11.1
Bump the golang version to 1.11.1, that is the "newest-version"
currently specified in the runtime version file.

Fixes: #208

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-27 16:41:34 +01:00
James O. D. Hunt
342a8a6cf6 Merge pull request #317 from grahamwhaley/20181127_vexx_docfix
cloud: vexx: fix wrong style type of vexx title
2018-11-27 10:47:04 +00:00
Graham Whaley
4bfed86116 cloud: vexx: fix wrong style type of vexx title
The vexx got added as a '#' top level item instead of a
'*' bullet entry. Fix it...

Fixes: #316

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-11-27 10:24:10 +00:00
Graham Whaley
d45863a2a4 Merge pull request #309 from hejianet/master_my
docs: Improve Developer-Guide and SRIOV doc on arm64
2018-11-27 09:58:54 +00:00
Nitesh Konkar
ca58bb4ca1 ppc64le: kata-env fails due to missing vendor field
There is no vendor field in /proc/cpuinfo contents
on ppc64le. Make sure to return "" for vendor field
for ppc64le and fix all the corresponding testcases
as well.

Fixes: #864

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-11-27 15:26:33 +05:30
Graham Whaley
adc8a92a22 Merge pull request #252 from egernst/kata-deploy-1.4
kata-deploy: update for 1.4 release
2018-11-27 09:41:31 +00:00
fupan
d6c4ca5fe5 container-shim-kata-v2: The init containerd shim v2 support
This patch is the init codes of the shimv2 for
containerd.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-27 17:17:43 +08:00
fupan
5e6cd0090f containerd-shim-v2: add the shim v2 required vendors
Add the vendors required by containerd shim v2.

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-27 17:17:43 +08:00
fupan
f0cb0c7ef7 cli: refactor to align with katautils package
refactor the cli codes which can be shared with shimv2.

Signed-off-by: fupan <lifupan@gmail.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-11-27 17:17:31 +08:00
James O. D. Hunt
2931f8db08 Merge pull request #819 from bergwolf/nested
kata-check: do not require nested vt
2018-11-27 08:16:29 +00:00
Jia He
fc6d46b7a3 docs: Improve Developer-Guide and SRIOV doc on arm64
This improves the guest kernel build section of Developer-Guide
on arm64.
This also improve the description of sriov use-case.

Fixes: #299
Signed-off-by: Jia He <justin.he@arm.com>
2018-11-27 16:11:00 +08:00
James O. D. Hunt
cf506408e2 Merge pull request #314 from mnaser/master
vexxhost: add quickstart docs
2018-11-27 07:28:36 +00:00
Frank Cao
c55e73da24 Merge pull request #937 from jodh-intel/kata-env-show-tracing
kata-env: Show runtime trace setting
2018-11-27 10:51:36 +08:00
Jose Carlos Venegas Munoz
64eb46e901 Merge pull request #248 from alicefr/s390_configs
kernel: s390 configs
2018-11-26 17:45:20 -06:00
Eric Ernst
8bc6f042d2 kata-deploy: update for 1.4 release
Fixes: #251

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-11-26 15:45:17 -08:00
Jose Carlos Venegas Munoz
e8092a38dc Merge pull request #250 from marcov/remove-modaliases
obs-packaging: remove dh-modaliases deb requirement
2018-11-26 17:44:46 -06:00
Mohammed Naser
03758b1ce1 vexxhost: add quickstart docs
Created a new installation guide for installing Kata on
https://vexxhost.com.

Fixes #315.

Signed-off-by: Mohammed Naser <mnaser@vexxhost.com>
2018-11-26 15:28:55 -08:00
Sarah
2c6800eb3e docs: Creating placeholder for Azure get started guide
Simple starter template to get URLs in shape.  Content pending.

Fixes: #130

Signed-off-by: scooley@microsoft.com
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-11-26 08:47:55 -08:00
Jose Carlos Venegas Munoz
06c8d88eb6 makefile: Add make install
allow install osbuilder scripts.

Example:
make install DESTDIR=/tmp/t

export DISTRO_REPO=1                                                                                                                                         export GOPATH=~/go
export AGENT_SOURCE_BIN=/tmp/usr/bin/kata-agent

/tmp/t/usr/libexec/kata-containers/osbuilder/rootfs-builder/rootfs.sh fedora
pushd /tmp/t/usr/libexec/kata-containers/osbuilder/rootfs-builder
/tmp/t/usr/libexec/kata-containers/osbuilder/image-builder/image_builder.sh $(pwd)/rootfs-Fedora

Fixes: #206

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-11-26 10:36:14 -06:00
James O. D. Hunt
ea8004087a Merge pull request #201 from marcov/skip-katamgr-install
tests: skip docker,kata install with KATA_DEV_MODE
2018-11-26 12:03:50 +00:00
Marco Vedovati
b067be836d obs-packaging: remove dh-modaliases deb requirement
Remove the redundant dh-modaliases package as a build requirement
for deb packages. This allows to build packages for the Debian distro.

Fixes: #249

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-23 19:21:10 +01:00
James O. D. Hunt
9984636f5a kata-env: Show runtime trace setting
Show whether runtime tracing is enabled in the output of `kata-env`.

Fixes #936.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-23 16:29:30 +00:00
Alice Frosi
671c8317d0 kernel: s390 configs
The s390_kata_kvm_4.14.x configs have been obtained by applying the patch
serial-forbid-8250-on-s390 and the combination:
make defconfig kvmconfig localyesconfig

Fixes: #246

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-11-23 10:16:27 +01:00
Alice Frosi
a305460b05 kernel: add patch 0003-serial-forbid-8250-on-s390
The patch 0003-serial-forbid-8250-on-s390.patch fixes a conflict between
the ttysclp0 and serial 8250 console. The patch is already upstream and
it has been introduce in version v4.16-rc1.
However, it is not backported. See https://lore.kernel.org/patchwork/patch/861679/

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-11-23 10:12:44 +01:00
Peng Tao
21f0059487 Merge pull request #929 from bergwolf/1.4.0-branch-bump
# Kata Containers 1.4.0
2018-11-23 14:35:04 +08:00
Peng Tao
7b63f210aa release: Kata Containers 1.4.0
- versions: Update Kubernetes, containerd and cri-o
- virtcontainers: fix sandbox store struct VFIODevice bug
- virtcontainers: Add function supportGuestMemoryHotplug
- make: add ability to skip go version check
- cli: Fix console for big endian architecture
- virtcontainers: fix not close socket with ethtool
- build: introduction of archConvertStatFs function
- network: support hotplug a nic several times
- sandbox: Extend sandbox API
- golang.mk: Check and install yq before use it
- cli: refactor the config into a separated package
- newContainer: Not attach device if it is a CDROM
- build: check golang version meets min req.
- network: Use constant string for "none" network model
- runtime,netmon: build as Position-Independent-Executable
- virtcontainers: Rely on new interface LinkType field
- enable default network endpoints hotplug for vm factory
- cli: fix the issue of using wrong path to get version
- cli: add guest hook path option (v2)
- factory: use customised deep compare
- qemu: query migrate status
- Add support for ipvlan network driver
- Add cgroup support
- vfio: Change the way the driver is fetched
- vendor: Rely on new agent package types
- network: Use tc filtering rules in bridge mode
- cli: add configuration option to use or not use host netns
- versions: Update golang to 1.10.4
- network: Marshal BridgedMacvlanEndpoint and MacvtapEndpoint
- device: fix the issue of passing wrong device address using virtio-blk
- create/run: Make bundle path default to cwd
- virtcontainers: Add missing API trace calls
- sandbox/virtcontainers: memory resource hotplug when create container.
- virtcontainers: Add missing API release calls
- qemu: Disable the default romfile used by virtio-pci
- Refactor network.go
- network: Sort endpoints by name
- virtcontainers: qemu: Add proper support for virt machine type
- network: Add support for macvlan and macvtap driver
- memory: update: Update state using the memory removed
- block: Advertise block support for q35
- vendor: fix govmm package

766f9ed versions: Update Kubernetes, containerd and cri-o
cba7a88 virtcontainers: fix sandbox store struct VFIODevice bug
0796f2e virtcontainers: Add function supportGuestMemoryHotplug
d73f27c test: set arch for test TestHotplugRemoveMemory
bf56858 cli: Fix console for big endian architecture
4b9a471 virtcontainers: fix not close socket with ethtool
58c1db5 make: notify user if yq is going to be installed
ab43e2a make: add ability to skip go version check
b185f31 build: introduction of archConvertStatFs function
982381b api: Cleanup StartContainer()
5777381 sandbox: Create and export Pause/ResumeContainer() to the API level
b298ec4 sandbox: Create and export ProcessListContainer() to the API level
3add296 sandbox: Create and export KillContainer() to the API level
7653726 sandbox: Create and export StopContainer() to the API level
109e12a sandbox: Export Stop() to the API level
6c3e266 sandbox: Export Start() to the API level
f5048b7 golang.mk: Check and install yq before use it
2f98b3e network: support hotplug a nic several times
842a00a cli: refactor the config into a separated package
193b324 newContainer: Not attach device if it is a CDROM
8ddc0ce network: Use constant string for "none" network model
5199777 virtcontainers: Rely on new interface LinkType field
45b2191 netmon: Rely on new interface field LinkType
7bf84d0 types: Replace agent/pkg/types with virtcontainers/pkg/types
39b95cc virtcontainers: Create a new package "types"
658bdb1 runtime,netmon: build as Position-Independent-Executable
e9aa870 network: enable network hotplug for vm factory
95f4fdb build: check golang version meets min req.
eaa5c7a CI: travis: call yq installer
cbf7fb2 CI: travis: add yq installer script
11c6753 cli: fix the issue of using wrong path to get version
21a671e network: set endpoint pci address when hotplug
33abb3e cli: add guest hook path option in the configuration file
34fe3b9 cgroups: add host cgroup support
523d49c vendor: add github.com/containerd/cgroups lib
38d56c9 netmon: Rely on agent/pkg/types instead of duplicating types
309dcf9 vendor: Update the agent vendoring based on pkg/types
0acbbf0 network: Add support for ipvlan
c38792e config: Add documentation for tcfilter in configuration.toml
17be8e3 network: Introduce constants for the network model strings
5da973d test: Add test to verify tc redirect
e20dbd0 network: Use tc redirect filter to redirect traffic to the VM
526d55b versions: Update golang to 1.10.4
62992f5 versions: Update cri containerd version for golang 1.10.2 fix
31cf6fb vfio: Change the way the driver is fetched
7a5a57d cli: test: add unit test for kata-env and kata-check
14e5437 cli: add configuration option to use or not use host netns
6935279 network: add new NetInterworkingModel "none" and endpoint type TapEndpoint
f8f2962 virtcontainers: refactor hotplug qmp functions
21d38e9 network: Marshal BridgedMacvlanEndpoint and MacvtapEndpoint
32ef29b factory: use customised deep compare
36306e2 sandbox/virtcontainers: modify tests relate to memory hotplug.
3f39d6e virtcontainers: Add missing API release calls
b72a3cd device: fix the issue of passing wrong device address using virtio-blk
ee9275f virtcontainers: Add missing API trace calls
8831245 create/run: Make bundle path default to cwd
0ae5b14 qemu: Disable the default romfile used by virtio-pci
6f0873a vendor: Update govmm vendoring
14f480a sandbox/virtcontainers: combine addResources and updateResources
8e2ee68 sandbox/virtcontainers: memory resource hotplug when create container.
b04691e network: Collapse log calls for endpoint Attach and Detach
ab15498 network: Explicitly check for veth type
3c590b0 network: Rename VirtualEndpoint to VethEndpoint
df8f21d network: Refactor network tests.
adcd910 network: Refactor network.go
8f1b28d network: Sort endpoints by name
eb77a41 qemu: make saveSandbox wait for migration completion
dffb4f9 virtcontainers: qemu: Add proper support for virt machine type
3c7cf58 tests: Add additional network tests to verifu link creation functions
378191a tests: Add tests for macvlan and macvtap endpoints
def070d golint: Refactor to reduce cyclomatic complexity
417c1f0 macvtap: Add support for macvtap
0de7572 vendor: Update govmm vendoring
581ff17 macvlan: Assign random MAC address
8847af8 network: Add support for macvlan driver
1f5792e test: fix unit test nil pointer.
4697cf3 memory: update: Update state using the memory removed.
0cab192 block: Advertise block support for q35
f4cf213 vendor: fix govmm package

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-11-23 10:07:36 +08:00
Peng Tao
766f9ed54e Merge pull request #928 from chavafg/topic/k8s-1.12
versions: Update Kubernetes, containerd and cri-o
2018-11-23 09:56:20 +08:00
Peng Tao
39e6aa4094 Merge pull request #205 from bergwolf/1.4.0-branch-bump
# Kata Containers 1.4.0
2018-11-23 09:45:10 +08:00
Salvador Fuentes
a2799bba09 versions: Update Kubernetes, containerd and cri-o
Update supported versions of Kubernetes with its
corresponding CRI implementations:

- Kubernetes from 1.10.5 to 1.12.2
- cri-o from 1.10 to 1.12.0, commit:
  fa540c8e806d28c2cbcd157bdf8acf2b20990ab6 as it is needed
  for fixing the devicemapper issues when removing a pod.
  More info on this issue, see:
  https://github.com/kubernetes-sigs/cri-o/issues/1883
- containerd from 1.1.3 to 1.2.0

Fixes: #927.

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

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-11-22 11:51:45 -06:00
James O. D. Hunt
176aefff54 Merge pull request #202 from teawater/agent
rootfs.sh: add environment variable AGENT_SOURCE_BIN
2018-11-22 10:26:55 +00:00
Peng Tao
b7abc27776 release: Kata Containers 1.4.0
- Add s390x architecture
- rootfs: Conditionally add libseccomp support in rootfs image
- rootfs.sh: enable curl use http_proxy
- tests: allow rootfs build to fail for specific distros
- docs: Fix link in README
- tests: get config from distro-specific config.sh
- Add support for suse rootfs
- tests: handle docker set runtime for systemd / sysconfig
- tests: Sort size summary by image size and rootfs size
- tests: parallel images build support

6f50538 build: Add s390x architecture
7f23718 rootfs: Conditionally add libseccomp support in rootfs image
a588140 ci: Improve debugging info on travis CI run
8599143 rootfs.sh: enable curl use http_proxy
97f38c7 tests: allow euleros rootfs build to fail
ee7f2e1 tests: allow build to fail for specific distros
57d0a83 rootfs.sh: trap build errors for specific distros
c8ae9c0 rootfs.sh: improve usage output
06437bb docs: Fix link in README
962b7ee tests: get config from distro-specific config.sh
be3bea4 rootfs.sh: add options to list and get test config
3b3f044 tests: handle docker set runtime for systemd / sysconfig
fc4c23f tests: Sort size summary by image size and rootfs size
83d8838 osbuilder: Add support for openSUSE rootfs image
7c443ed travis: remove AGENT_INIT env combinations
562be90 tests: support parallel building of artifacts

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-11-22 11:34:50 +08:00
Hui Zhu
8ffb0cbe90 rootfs.sh: add environment variable AGENT_SOURCE_BIN
AGENT_SOURCE_BIN is Path to the directory of agent binary.
If set, use the binary as agent but not build agent package.
Its default value is not set.

Fixes: #203

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-11-22 11:17:39 +08:00
James O. D. Hunt
4eb2b1cf04 Merge pull request #296 from johscheuer/fix-nginx-example
Correct nginx example in developer docu
2018-11-21 13:11:44 +00:00
James O. D. Hunt
5a9bdc864d Merge pull request #291 from yangy2000/fix_link
docs: fix a link in installing-with-kata-manager.md
2018-11-21 13:10:45 +00:00
James O. D. Hunt
ce85eb2ccd docs: Add warnings to doc requirements doc
Document how other admonitions such as warnings and hints should be
handled.

Fixes #307.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-21 10:36:56 +00:00
James O. D. Hunt
e81421a5d1 docs: Remove bang from code block
Remove the `!` from the `echo` in the code example in the doc
requirements doc.

The current code is in fact invalid as the shell will try to interpret
the exclamation mark as it is a reserved word. Rather than escaping it
in the example, just remove it.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-21 10:36:56 +00:00
James O. D. Hunt
205c6eaba8 docs: Add missing article
Add an article to make the notes section read more naturally in the doc
requirements doc.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-21 10:36:48 +00:00
James O. D. Hunt
0143ef557c Merge pull request #304 from jodh-intel/dont-fold-code-lines
docs: Don't use backslashes in command blocks
2018-11-21 09:06:34 +00:00
Marco Vedovati
9c0773a399 test: avoid errors in exit_handler
Avoid generating errors in the exit_handler, as those could be
misinterpreted as red herrings for the actual error being trapped.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-21 09:47:03 +01:00
Johannes M. Scheuermann
b3061289e4 subsystem: docs
Correct nginx example in developer documentation

Fixes: #0

Signed-off-by: Johannes M. Scheuermann <joh.scheuer@gmail.com>
2018-11-21 07:03:48 +01:00
Marco Vedovati
eb92306c48 tests: skip docker,kata install with KATA_DEV_MODE
Skip installation of docker and kata packages when the environment
variable KATA_DEV_MODE is not empty, as a dev system may be using
a non standard setup.

Fixes: #195

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-20 19:02:09 +01:00
Jose Carlos Venegas Munoz
1ad6ef33f1 Merge pull request #245 from marcov/build_all-improve
Build all improvements
2018-11-20 09:59:38 -06:00
James O. D. Hunt
5eda4b1020 Merge pull request #243 from marcov/packaging-golang
golang version requirements for OBS packaging
2018-11-20 13:57:53 +00:00
Marco Vedovati
3084801cd8 runtime: skip golang version check in OBS pkg
Skip the golang version check when building the runtime, passing to make
`SKIP_GO_VERSION_CHECK=1`. This check requires yq, that's not packaged
for most distributions and it can't be downloaded at build time on OBS.
It is the responsibility of the package maintainer to verify that the
correct golang version is used.

Fixes: #242

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-20 11:47:35 +01:00
Marco Vedovati
08956e4a4c obs-packaging: remove hardcoded golang version
Remove hardcoded golang version, as it overwrites the value previously
fetched from the runtime/versions.yaml.

NOTE: this has as consequence replacing the golang compiler version from
1.10.2 to 1.11.1 (that is currently the "newest-version" specified on
master).

Fixes: #242

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-20 11:47:31 +01:00
Marco Vedovati
bc7959349c build_all.sh: improve usage and error handling
Usage:
 - add more information about what the script does
 - support for -h / --help flags
 - tagging of error messages with `ERROR: ` prefix

Fixes: #244

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-20 10:33:20 +01:00
Marco Vedovati
3fe90cc439 build_all.sh: specify a list of projects as extra args
Add the ability to specify a list of projects to process, instead of
processing all projects (default behaviour).

Fixes: #244

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-20 10:33:14 +01:00
Sebastien Boeuf
780cd5f7b9 Merge pull request #925 from woshijpf/fix-remove-hotplug-vfio-devices
virtcontainers: fix sandbox store struct VFIODevice bug
2018-11-20 06:11:46 +00:00
j00444339
cba7a882aa virtcontainers: fix sandbox store struct VFIODevice bug
Since struct VFIODevice needed to be stored into disk by storeSandboxDevices() function,
however struct VFIODevice has a field named "vfioDevs", which is named begin with lower-case,
so it can't be written into file by json.Marshal.And this bug will will cause hotplug vfio
device can not been removed correctly while container exits.

Fixes: #924

Signed-off-by: flyflypeng <jiangpengfei9@huawei.com>
2018-11-20 08:40:19 -05:00
Sebastien Boeuf
ccc41d7363 Merge pull request #911 from alicefr/memory_hotplug
virtcontainers: Add function supportGuestMemoryHotplug
2018-11-19 20:17:32 +00:00
Sebastien Boeuf
aafc2a823d Merge pull request #917 from marcov/gocheck
make: add ability to skip go version check
2018-11-19 17:24:53 +00:00
Sebastien Boeuf
187d0139aa Merge pull request #922 from alicefr/fix_console
cli: Fix console for big endian architecture
2018-11-19 17:20:17 +00:00
Sebastien Boeuf
ca26283a1e Merge pull request #918 from Ace-Tang/master
virtcontainers: fix not close socket with ethtool
2018-11-19 17:20:00 +00:00
Alice Frosi
0796f2e5a0 virtcontainers: Add function supportGuestMemoryHotplug
This PR defines a new function supportGuestMemoryHotplug that
clearly defines if the architecture supports memory hotplug. The function
can be reimplemented in virtcontainers/qemu_$arch.go file for each
architecture.

Fixes: #910

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-11-19 11:22:22 +00:00
Alice Frosi
d73f27c612 test: set arch for test TestHotplugRemoveMemory
The arch field needs to be set

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-11-19 11:21:14 +00:00
Alice Frosi
bf5685860a cli: Fix console for big endian architecture
The function ioctl can lead to a big endian bug.
Issue already solved in containerd/console:
dbd69c59b8

Fixes: #921

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-11-19 10:16:09 +00:00
James O. D. Hunt
9d74134bef Merge pull request #196 from alicefr/add_s390x
Add s390x architecture
2018-11-19 08:20:11 +00:00
James O. D. Hunt
e83d658ed3 docs: Don't use backslashes in command blocks
Advise authors not to use continuation characters in code blocks.

Fixes #303.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-11-19 08:16:53 +00:00
Ace-Tang
4b9a471f29 virtcontainers: fix not close socket with ethtool
close socket after use ethtool.NewEthtool()

Fixes: #919

Signed-off-by: Ace-Tang <aceapril@126.com>
2018-11-19 10:42:37 +08:00
Marco Vedovati
58c1db54a8 make: notify user if yq is going to be installed
Notify about yq installation, and make the output of curl silent.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-16 18:56:46 +01:00
Marco Vedovati
ab43e2accb make: add ability to skip go version check
Add the ability to skip checking the go version, by passing to make the
variable SKIP_GO_VERSION_CHECK=1

Fixes: #916

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-16 17:33:49 +01:00
James O. D. Hunt
8077078ceb Merge pull request #293 from liucimin/update_architecture_docs
docs: update the architecture doc
2018-11-16 15:53:05 +00:00
Sebastien Boeuf
c0551de093 Merge pull request #909 from alicefr/add_archConvertStatFs
build: introduction of archConvertStatFs function
2018-11-15 19:54:53 -08:00
Archana Shinde
23e75f0f03 Merge pull request #895 from caoruidong/multi-hotplug
network: support hotplug a nic several times
2018-11-15 14:33:41 -08:00
Jose Carlos Venegas Munoz
e5a2f4aa45 Merge pull request #241 from devimc/topic/fix-snap
snap: fix build error in launchpad
2018-11-15 12:20:41 -06:00
Alice Frosi
b185f31c9e build: introduction of archConvertStatFs function
Type of StatFs is not always declared as int64 for all the architecture(e.g s390x).
The function archConvertStatFs could be reimplemented for other architecture
to correctly convert the StatFs.Type.

Fixes: #908

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-11-15 14:39:43 +00:00
Alice Frosi
6f505389d9 build: Add s390x architecture
Fixes: #197

Co-authored-by: Yash D Jain <ydjainopensource@gmail.com>
Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
2018-11-15 09:52:07 +01:00
GabyCT
d75434ac61 Merge pull request #297 from GabyCT/topic/removeramdisk
docs: Remove Ramdisk Limitations
2018-11-14 15:52:04 -06:00
Sebastien Boeuf
0911331974 Merge pull request #904 from sboeuf/export_sandbox_api
sandbox: Extend sandbox API
2018-11-14 09:01:21 -08:00
Sebastien Boeuf
78c4362a34 Merge pull request #236 from chavafg/topic/k8s-info-release-notes
release: Add k8s compatible version to release notes
2018-11-13 11:24:12 -08:00
Sebastien Boeuf
982381bff0 api: Cleanup StartContainer()
Simple patch reducing the complexity of StartContainer().

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-12 15:15:56 -08:00
Sebastien Boeuf
57773816b3 sandbox: Create and export Pause/ResumeContainer() to the API level
In order to support use cases such as containerd-shim-v2 where
we would have a long running process holding the sandbox pointer,
there would be no reason to call into the stateless functions
PauseContainer() and ResumeContainer(), which would recreate a
new sandbox pointer and the corresponding ones for containers.

Fixes #903

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-12 15:15:50 -08:00
Sebastien Boeuf
b298ec4228 sandbox: Create and export ProcessListContainer() to the API level
In order to support use cases such as containerd-shim-v2 where
we would have a long running process holding the sandbox pointer,
there would be no reason to call into the stateless function
ProcessListContainer(), which would recreate a new sandbox pointer
and the corresponding ones for containers.

Fixes #903

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-12 15:15:44 -08:00
Sebastien Boeuf
3add296f78 sandbox: Create and export KillContainer() to the API level
In order to support use cases such as containerd-shim-v2 where we
would have a long running process holding the sandbox pointer, there
would be no reason to call into the stateless function KillContainer(),
which would recreate a new sandbox pointer and the corresponding ones
for containers.

Fixes #903

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-12 15:15:37 -08:00
Sebastien Boeuf
76537265cb sandbox: Create and export StopContainer() to the API level
In order to support use cases such as containerd-shim-v2 where we
would have a long running process holding the sandbox pointer, there
would be no reason to call into the stateless function StopContainer(),
which would recreate a new sandbox pointer and the corresponding ones
for containers.

Fixes #903

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-12 15:15:31 -08:00
Sebastien Boeuf
109e12aa56 sandbox: Export Stop() to the API level
In order to support use cases such as containerd-shim-v2 where we
would have a long running process holding the sandbox pointer, there
would be no reason to call into the stateless function StopSandbox(),
which would recreate a new sandbox pointer and the corresponding ones
for containers.

Fixes #903

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-12 15:15:24 -08:00
Sebastien Boeuf
6c3e266eb9 sandbox: Export Start() to the API level
In order to support use cases such as containerd-shim-v2 where we
would have a long running process holding the sandbox pointer, there
would be no reason to call into the stateless function StartSandbox(),
which would recreate a new sandbox pointer and the corresponding ones
for containers.

Fixes #903

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-12 15:15:04 -08:00
Eric Ernst
4cddfc63d8 Merge pull request #900 from teawater/yq
golang.mk: Check and install yq before use it
2018-11-12 13:22:50 +01:00
Eric Ernst
4af6a40f39 Merge pull request #156 from nitkon/master
rootfs: Conditionally add libseccomp support in rootfs image
2018-11-12 09:39:34 +01:00
Hui Zhu
f5048b725b golang.mk: Check and install yq before use it
golang.mk call yq to get golang_version_min but some environments do
not install it.
This patch check and install yq before use it to handle the issue.

Fixes #899

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-11-10 18:31:49 +08:00
Marco Vedovati
14e5bc02ed Merge pull request #192 from houstar/master
rootfs.sh: enable curl use http_proxy
2018-11-09 12:09:45 +01:00
Ruidong Cao
2f98b3ee90 network: support hotplug a nic several times
Bind back the nic's MAC in HotDetach. So we don't need to modify
nic's MAC in description to hotplug it again.

Fixes: #894

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-11-09 17:21:03 +08:00
Eric Ernst
ebd86d604e Merge pull request #870 from lifupan/cli_refactor
cli: refactor the config into a separated package
2018-11-08 14:23:16 -08:00
Nitesh Konkar
7f2371858c rootfs: Conditionally add libseccomp support in rootfs image
If the rootfs is built with SECCOMP=yes environment
variable then include libseccomp package inside the
rootfs image. Else do not include it.

Fixes: #155

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-11-09 00:27:44 +05:30
Nitesh Konkar
a588140bc6 ci: Improve debugging info on travis CI run
Fixes: #174

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-11-09 00:00:21 +05:30
Graham Whaley
a935f8a1f4 Merge pull request #828 from teawater/dev
newContainer: Not attach device if it is a CDROM
2018-11-08 16:58:35 +00:00
Julio Montes
7256ff8453 snap: fix build error in launchpad
Add cpio to build-packages list since it's required to create initrd images

fixes #240

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-11-08 08:23:01 -06:00
Julio Montes
6c7de6c297 snap: fix prefix and dest paths
Use /snap/kata-containers/current as prefix on building but /usr on install.
This changes are needed to include all new kata components like netmon in the
final snap.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-11-08 08:19:45 -06:00
Graham Whaley
722c5962b8 Merge pull request #239 from Weichen81/master
kernel: Enable Real time clock for Arm64
2018-11-08 10:49:34 +00:00
Wei Chen
1f7841c683 kernel: Enable Real time clock for Arm64
Without Real time clock the date could not work properly for Arm64.

fixes: #238
Change-Id: I5834a5e90dc648cc9599c50f259d5ae273052a39
Signed-off-by: Wei Chen <wei.chen@arm.com>
2018-11-08 10:11:14 +00:00
Julio Montes
2a7774df63 Merge pull request #237 from devimc/topic/snap-libfdt
snap: fix build errors
2018-11-08 03:05:52 -06:00
Gabriela Cervantes
5e9819fb24 docs: Remove Ramdisk Limitations
Now that https://github.com/kata-containers/runtime/pull/412 has been merged and
we have running a docker integration test for ramdisk in our CI
https://github.com/kata-containers/tests/pull/446, we can remove the limitation
of ramdisk.

Fixes #170

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-11-08 02:16:04 -06:00
fupan
842a00a5b6 cli: refactor the config into a separated package
Refactor the config related codes into a separated
package which can be shared with other cli programs
such as kata's shimv2.

Fixes: #787
Fixes: #714

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-08 09:43:29 +08:00
Julio Montes
95734e5a16 snap: fix build errors
Add libfdt-dev as build dependency because of qemu requires it in ppc and arm.

fixes #97

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-11-07 08:24:20 -06:00
Leno Hou
8599143069 rootfs.sh: enable curl use http_proxy
This patch added -x option to curl: -x uses the http_proxy
settings to download golang binary behind the firewall

Fixes: #193

Signed-off-by: Leno Hou <lenohou@gmail.com>
2018-11-07 13:20:02 +00:00
Hui Zhu
193b324242 newContainer: Not attach device if it is a CDROM
Got "docker: Error response from daemon: OCI runtime create failed:
QMP command failed: unknown." when "docker run --privileged" with kata.
In qemu part, it got:
"Could not open '/dev/sr0': Read-only file system"
or
"No medium found"
The cause is qemu need open block device to get its status.
But /dev/sr0 is a CDROM that cannot be opened.

This patch let newContainer doesn't attach device if it is a CDROM
to handle the issue.

Fixes #829

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-11-07 17:28:06 +08:00
Alex Yang
b78fe831ec docs: fix a link in installing-with-kata-manager.md
Fix the link from #install-kata-packages-only to #install-the-kata-packages-only

Fixes #295

Signed-off-by: Alex Yang <yangyang1@zte.com.cn>
2018-11-07 10:13:37 +08:00
Sebastien Boeuf
0123f8f2a9 Merge pull request #191 from marcov/allow-failures
tests: allow rootfs build to fail for specific distros
2018-11-06 08:49:53 -08:00
Marco Vedovati
97f38c7706 tests: allow euleros rootfs build to fail
Update test config for euleros to allow build failures.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-06 09:56:52 +01:00
Marco Vedovati
ee7f2e1175 tests: allow build to fail for specific distros
When running test_images.sh, allow specific rootfs builds to
fail without impacting the overall tests results.
The distros allowed to fail are the ones specifying
BUILD_CAN_FAIL in their config.sh.

Fixes: #190

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-06 09:56:52 +01:00
Marco Vedovati
57d0a8300b rootfs.sh: trap build errors for specific distros
Add the ability to trap a build error inside rootfs.sh, without
returning an error code.
Gating conditions (all of them are needed):
- GRACEFUL_EXIT shall be passed as env variable to rootfs.sh
- BUILD_CAN_FAIL shall be specified in the distro config.sh

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-06 09:56:46 +01:00
zhangwei_cs
d895cd0f2d Merge pull request #806 from grahamwhaley/20181002_golang_110
build: check golang version meets min req.
2018-11-06 16:11:41 +08:00
liucimin
81226f6943 docs: update the architecture doc
Update the k8s create sandbox and container code in runtime.

Fixes #292

Signed-off-by: Liu Cimin lcmjkson@gmail.com
2018-11-06 09:39:34 +08:00
Archana Shinde
f81db93ef0 Merge pull request #885 from caoruidong/test
network: Use constant string for "none" network model
2018-11-05 14:18:04 -08:00
Sebastien Boeuf
919b009b50 Merge pull request #877 from marcov/buildmode-pie
runtime,netmon: build as Position-Independent-Executable
2018-11-05 11:51:48 -08:00
Ruidong Cao
8ddc0ceefb network: Use constant string for "none" network model
Align with other network models.

Fixes #884.

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-11-06 02:28:49 +08:00
Sebastien Boeuf
abfc61b50d Merge pull request #867 from sboeuf/iface_type
virtcontainers: Rely on new interface LinkType field
2018-11-05 07:13:16 -08:00
James O. D. Hunt
dc411015ca Merge pull request #288 from liucimin/add_cni_diagram
docs: Delete the wrong cni flow in README
2018-11-05 14:12:29 +00:00
James O. D. Hunt
40bab8d76f Merge pull request #233 from xindazhao/gpu-support
kernel: configs: Add Intel GPU support
2018-11-05 12:41:59 +00:00
Eric Ernst
8f0efa5336 Merge pull request #290 from sboeuf/update_kata_nemu
nemu: Retrieve directly the latest OVMF binary
2018-11-02 13:57:27 -07:00
Sebastien Boeuf
51997775bd virtcontainers: Rely on new interface LinkType field
Now that Interface structure includes the useful information about
the type of interface, Kata does not need to do any assumption about
the type of interface that needs to be added.

Fixes #866

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-02 08:46:11 -07:00
Sebastien Boeuf
45b219107c netmon: Rely on new interface field LinkType
In order to provide the right information about the interface that
needs to be added, kata-netmon provisions the new field LinkType of
the Interface structure.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-02 08:46:11 -07:00
Sebastien Boeuf
7bf84d05ad types: Replace agent/pkg/types with virtcontainers/pkg/types
This commit replaces every place where the "types" package from the
Kata agent was used, with the new "types" package from virtcontainers.

In order to do so, it introduces a few translation functions between
the agent and virtcontainers types, since this is needed by the kata
agent implementation.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-02 08:46:11 -07:00
Sebastien Boeuf
39b95cc365 virtcontainers: Create a new package "types"
Instead of relying on the kata agent to define generic structures,
the logic is to define those as virtcontainers "types" package.
This way, all consumers of those structures, such as kata-runtime,
kata-netmon, and kata-containerd-shim, don't have to import some
dependency from the kata-agent.

Fixes #876

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-02 08:46:09 -07:00
Marco Vedovati
658bdb1ecb runtime,netmon: build as Position-Independent-Executable
Build {runtime,netmon} as Position-Independent-Executable (PIE) for improved
security and compliancy with distros packaging guidelines.

Fixes: #875

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-02 16:23:17 +01:00
fli
e90dc35e51 Merge pull request #872 from bergwolf/network-new
enable default network endpoints hotplug for vm factory
2018-11-02 16:20:33 +08:00
Sebastien Boeuf
23782b2c13 nemu: Retrieve directly the latest OVMF binary
Instead of specifying a version for OVMF binary, this patch uses
a tiny script to retrieve the proper URL to download from.

Fixes #289

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-11-01 09:19:24 -07:00
liucimin
4571e11f58 docs: Delete the wrong cni flow in README
Fix the wrong Network CNI section.

Fixes: #287

Signed-off-by: Liu Cimin lcmjkson@gmail.com
2018-11-01 09:55:36 +08:00
Peng Tao
e9aa870255 network: enable network hotplug for vm factory
After we scan the netns, we should hotplug the network interface to
the guest after it is kicked off running.

Fixes: #871

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-11-01 09:33:16 +08:00
Sebastien Boeuf
2cae9c3ef4 Merge pull request #869 from lifupan/fix_path
cli: fix the issue of using wrong path to get version
2018-10-30 15:14:37 -07:00
Graham Whaley
95f4fdb603 build: check golang version meets min req.
Check that the system golang version is new enough to build with
according to the data from the `versions.yaml` file.

Update the verions in the versions.yaml accordingly, and add a note
describing what the 'newest-version' item represents.
Note, we only do a minimum requirement check, and are not checking
against the 'newest-version' info from the yaml.

Fixes: #148

Inspired-by: Wei Zhang <zhangwei555@huawei.com>
Idea-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-10-30 15:45:05 +00:00
Graham Whaley
eaa5c7a442 CI: travis: call yq installer
Install `yq` before running the tests.
The Makefile now uses `yq` to check the golang version against
the versions file.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-10-30 15:44:40 +00:00
Graham Whaley
cbf7fb2f75 CI: travis: add yq installer script
We need to have `yq` installed before we can 'make', as we
now use it for a version check in the build. But, we may not
have golang installed. Add a script that installs `yq` via
curl'ing from the github releases.
This was cloned from the function in the tests repo .ci scripts
that perform the same action.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-10-30 15:44:06 +00:00
Marco Vedovati
c8ae9c077c rootfs.sh: improve usage output
Improve rootfs.sh usage output to have a consistent layout and
documentation of options and environment variables.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-30 16:27:57 +01:00
Fupan Li
11c6753bd5 cli: fix the issue of using wrong path to get version
Both of the netmon and proxy should use the right path
figured out from the configure instead of the default settings
to get their versions.

Fixes: #868

Signed-off-by: Fupan Li <lifupan@gmail.com>
2018-10-30 17:25:00 +08:00
Peng Tao
21a671eabe network: set endpoint pci address when hotplug
So that agent can use it to check and wait for the requested nic.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-10-30 11:43:40 +08:00
zhangwei_cs
58ce1b88c4 Merge pull request #834 from flx42/guest-hooks
cli: add guest hook path option (v2)
2018-10-30 09:41:50 +08:00
Peng Tao
26cef3ce0f Merge pull request #845 from bergwolf/deepcompare
factory: use customised deep compare
2018-10-30 08:50:56 +08:00
Peng Tao
381ea37d86 Merge pull request #745 from bergwolf/query-migrate
qemu: query migrate status
2018-10-30 08:50:21 +08:00
Felix Abecassis
33abb3ecf8 cli: add guest hook path option in the configuration file
Add support for specifying an optional drop-in path for guest OCI hooks.
This is the runtime side for leveraging the agent change introduced in
kata-containers/agent@980023ec62

Fixes: #720

Co-authored-by: Edward Guzman <eguzman@nvidia.com>
Co-authored-by: Felix Abecassis <fabecassis@nvidia.com>
Signed-off-by: Felix Abecassis <fabecassis@nvidia.com>
2018-10-29 13:06:22 -07:00
Salvador Fuentes
8b539ef600 release: Add k8s compatible version to release notes
Include in the release notes the kubernetes version that
has been tested with the release.

Fixes: #235.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-10-29 11:18:04 -06:00
Peng Tao
6d17e27de0 Merge pull request #852 from amshinde/ipvlan
Add support for ipvlan network driver
2018-10-29 16:41:05 +08:00
zhangwei_cs
95386fb1dd Merge pull request #734 from WeiZhang555/add-cgroup-support
Add cgroup support
2018-10-27 16:04:28 +08:00
Wei Zhang
34fe3b9d6d cgroups: add host cgroup support
Fixes #344

Add host cgroup support for kata.

This commits only adds cpu.cfs_period and cpu.cfs_quota support.

It will create 3-level hierarchy, take "cpu" cgroup as an example:

```
/sys/fs/cgroup
|---cpu
   |---kata
      |---<sandbox-id>
         |--vcpu
      |---<sandbox-id>
```

* `vc` cgroup is common parent for all kata-container sandbox, it won't be removed
after sandbox removed. This cgroup has no limitation.
* `<sandbox-id>` cgroup is the layer for each sandbox, it contains all other qemu
threads except for vcpu threads. In future, we can consider putting all shim
processes and proxy process here. This cgroup has no limitation yet.
* `vcpu` cgroup contains vcpu threads from qemu. Currently cpu quota and period
constraint applies to this cgroup.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
Signed-off-by: Jingxiao Lu <lujingxiao@huawei.com>
2018-10-27 09:41:35 +08:00
Wei Zhang
523d49c076 vendor: add github.com/containerd/cgroups lib
Add new vendor library "github.com/containerd/cgroups"
commit: 5017d4e9a9cf2d4381db99eacd9baf84b95bfb14

This library is for host cgroup support for next commit.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-10-27 09:41:27 +08:00
Sebastien Boeuf
2c2a60faf1 Merge pull request #851 from amshinde/modify-driver-fetch
vfio: Change the way the driver is fetched
2018-10-26 14:03:32 -07:00
Sebastien Boeuf
110f7a8a29 Merge pull request #858 from sboeuf/rely_agent_types
vendor: Rely on new agent package types
2018-10-26 13:05:34 -07:00
Sebastien Boeuf
38d56c994e netmon: Rely on agent/pkg/types instead of duplicating types
Now that the agent has split the generic types in their own package,
kata-netmon can use them directly and get rid of the duplication of
those. This is very helpful as it will prevent structures from being
out of sync between kata-netmon and the kata-runtime, without bringing
in the huge overhead that the initial grpc package was introducing.

Fixes #857

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-10-26 09:36:01 -07:00
Sebastien Boeuf
309dcf9977 vendor: Update the agent vendoring based on pkg/types
Some agent types definition that were generic enough to be reused
everywhere, have been split from the initial grpc package.

This prevents from importing the entire protobuf package through
the grpc one, and prevents binaries such as kata-netmon to stay
in sync with the types definitions.

Fixes #856

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-10-26 09:35:59 -07:00
Eric Ernst
a184f98cc9 Merge pull request #272 from raravena80/master
install: Add AWS installation guide
2018-10-26 04:51:14 +01:00
Archana Shinde
0acbbf0651 network: Add support for ipvlan
Support ipvlan interfaces by setting up tc redirect rules.

Fixes #591

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-25 18:58:48 -07:00
Zhao Xinda
24b89a9dad kernel: configs: Add Intel GPU support
The Intel GPU support has been enabled in kata runtime, but the
guest kernel of kata container lacks the support of Intel GPU,
so this commit enables it as default in guest kernel.

CONFIG_DRM, CONFIG_DRM_I915 and CONFIG_DRM_I915_USERPTR are necessary.
Others are obtained by running command "make menuconfig" and selecting
the following options.

Device Drivers
---> Graphics support
---> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)

Device Drivers
---> Graphics support
---> Intel 8xx/9xx/G3x/G4x/HD Graphics

Fixes #232

Signed-off-by: Zhao Xinda <xinda.zhao@intel.com>
2018-10-26 08:50:23 +08:00
Jose Carlos Venegas Munoz
1d6c296649 Merge pull request #280 from jodh-intel/ci-add-tests-for-other-install-doc-methods
CI: Test remaining install methods
2018-10-25 16:46:15 -05:00
Ricardo Aravena
942d5344e0 install: Add AWS installation guide
Fixes #273

Installation guide for AWS.

Signed-off-by: Ricardo Aravena <raravena@branch.io>
2018-10-25 08:49:59 -07:00
James O. D. Hunt
2f07105e1f CI: Test remaining install methods
Add new CI tests to ensure that the following installation methods are
also tested:

- "Automatic" method ([`kata-manager`](https://github.com/kata-containers/tests/tree/master/cmd/kata-manager))
- "Scripted" method ([`kata-doc-to-script`](https://github.com/kata-containers/tests/blob/master/.ci/kata-doc-to-script.sh))

**Note:** the "Automatic" method is **not** the same as the existing
`kata-manager` test: the existing test executes the "Manual"
installation method (which runs `kata-manager` to execute the
appropriate distro-specific install guide). However, this new test
executes the `install/installing-with-kata-manager.md` document, which
subsequently calls the `kata-manager` script.

Since the "Automatic" and "Scripted" installation methods are designed
to run "standalone" (without requiring any local git repo clones), the
script which runs these new tests has to take care to ensure the
environment they run in is clean. It does this by using the following
approach:

- Removes any local Kata github repos from the standard `GOPATH`
  locations (to ensure the scripts do not inadvertently access local
  files) [1].
- Creates a temporary directory containing:
  - A copy of *itself*.
  - The scripts it generated from the "Automatic" and "Scripted" installation documents.
- Re-exec's itself to run the version in the temporary directory,
  passing an option that tells itself to simply execute the scripts in
  the specified directory.
- It then runs the scripts in the directory specified.

---

[1] - Since the recursive delete of all local Kata github repos is
potentially dangerous, the test will immediately fail if the standard
`KATA_DEV_MODE` variable is set (since this denotes a developer system)
and will also fail unless the standard `CI` variable is set (denoting
the script is running in a Continuous Integration environment, such as
JenkinsCI.

Fixes #278.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
78692a1605 CI: Add main function to doc test script
Wrap the function calls in the doc test script in a `main()` function to
simplify future changes.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
83c38c229e CI: Improve doc test script setup function
Make `setup()` clone the tests repo and check for the `kata-manager`
script.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
4b1839fc37 CI: Refactor function in install doc test
Split out a function to create a container from
`test_distro_install_guide() in the script used to test install docs.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
d9c91d3723 CI: Remove golang dependency on doc test script
The script used to test the install docs does not actually use the
golang binary (it only uses the `GOPATH` variables) so remove the
unnecessary call to `go`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
8334d90979 CI: Add setup function to doc test script
Create a `setup()` function in the test script used to test
the install documents.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
e74c431d7c CI: Refactor check_install_guides()
Rework the logic in `check_install_docs()` to make the intention
clearer and support adding additional tests.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
d21eaaf9e8 CI: Rename+cleanup install doc test function
Rename the `check_install_guides()` function to `check_install_docs()`
and clean up:

- Improve messages.
- Add more braces around variables.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
3d08ccd6db CI: Fold long Travis check line
Folded the overly-long Travis check line in `check_install_guides()`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
f4351e4324 CI: Make info() variable local
Make the variable in the `info()` function a `local` one.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:22 +01:00
James O. D. Hunt
7dba230a1c docs: Add instructions to run the kata-doc-to-script generated scripts
Update the `kata-doc-to-script` install document to actually execute the
generated scripts, allowing the entire installation to be tested by the CI.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-25 16:28:19 +01:00
James O. D. Hunt
bdec513ca4 Merge pull request #189 from ygefen/doc-patch
docs: Fix link in README
2018-10-25 10:41:37 +01:00
Sebastien Boeuf
c7a9e454ac Merge pull request #827 from amshinde/tc-filtering
network: Use tc filtering rules in bridge mode
2018-10-24 15:21:54 -07:00
Archana Shinde
c38792ef9e config: Add documentation for tcfilter in configuration.toml
Document this mode for users to be able to use it.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-24 13:38:57 -07:00
Archana Shinde
17be8e37f5 network: Introduce constants for the network model strings
Introduce constants for the network model strings, so as to
avoid using the strings directly at multiple places.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-24 13:37:54 -07:00
Yonatan Gefen
06437bb51e docs: Fix link in README
Correct rootfs builder link in the image builder README.

Fixes #185.

Signed-off-by: Yonatan Gefen <yoni.gefen@gmail.com>
2018-10-24 13:52:00 -04:00
Archana Shinde
5da973d465 test: Add test to verify tc redirect
The test verifies tc filter setup by creating a test veth interface.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-24 10:46:02 -07:00
Archana Shinde
e20dbd04e0 network: Use tc redirect filter to redirect traffic to the VM
Introduce a new mode that uses tc filters to redirect traffic from
the network interface created by the network plugin to a
tap interface that we connect to the VM.
This mode will help support ipvlan as well.

Fixes #144

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-24 10:46:00 -07:00
James O. D. Hunt
67982e7a0f docs: Make "Scripted" installation method executable
Converted the plain code blocks in
`install/installing-with-kata-doc-to-script.md` to bash code blocks so
that they are executable by... `kata-doc-to-script.sh`.

Also, removed the backslashes to let github render scroll bars for
consistency with other docs.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-24 09:19:03 +01:00
zhangwei_cs
5a8b738818 Merge pull request #733 from caoruidong/qemu-ns
cli: add configuration option to use or not use host netns
2018-10-24 11:35:33 +08:00
James O. D. Hunt
0215c83e36 Merge pull request #282 from jodh-intel/ci-set-travis-golang-version
CI: Pin Travis golang version
2018-10-23 17:31:54 +01:00
James O. D. Hunt
b40b9ff13d CI: Pin Travis golang version
Travis appears to be providing a version of golang that is too old for
https://mvdan.cc/xurls/cmd/xurls, which is used by the CI scripts in the
tests repo.

See:

- https://github.com/kata-containers/runtime/pull/744
- https://github.com/kata-containers/tests/pull/843#issuecomment-432297737

Required adding a NOP makefile to avoid Travis from trying to build
this repo using `go`.

Fixes #281.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-23 17:25:20 +01:00
Jose Carlos Venegas Munoz
59f29270ee Merge pull request #184 from marcov/move-config
tests: get config from distro-specific config.sh
2018-10-23 09:56:47 -05:00
James O. D. Hunt
2a54ac9830 Merge pull request #277 from jodh-intel/improve-readme
docs: Improve table in install README
2018-10-23 15:38:31 +01:00
Graham Whaley
f3ef220dce Merge pull request #744 from jodh-intel/update-to-golang-1.10.4
versions: Update golang to 1.10.4
2018-10-23 14:56:11 +01:00
James O. D. Hunt
526d55b4af versions: Update golang to 1.10.4
Move to golang version 1.10.4 -- the oldest stable golang release at the
time of writing -- since golang 1.10+ is needed to make namespace
handling safe.

Re-ordered a couple of structs (moved `sync.WaitGroup` fields) to keep
the `maligned` linter happy. Previously:

``
virtcontainers/pkg/mock/cc_proxy_mock.go:24:18⚠️ struct of size 160 could be 152 (maligned)
virtcontainers/monitor.go:15:14⚠️ struct of size 80 could be 72 (maligned)
```

See:

- https://github.com/golang/go/issues/20676
- 2595fe7fb6

Also bumped `languages.golang.meta.newest-version` to golang version
1.11, which is the newest stable release at the time of writing.

Fixes #148.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-23 14:20:12 +01:00
James O. D. Hunt
62992f5485 versions: Update cri containerd version for golang 1.10.2 fix
Updated `externals.cri-containerd.version` in `versions.yaml` to the
newest version that includes the fix for building on golang 1.10.2:

- 8b0d53c09c

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-23 14:20:09 +01:00
Graham Whaley
ad911576a7 Merge pull request #279 from marcov/fix-kata-manager
install: clean instructions for kata-manager
2018-10-23 09:51:40 +01:00
Archana Shinde
31cf6fbe00 vfio: Change the way the driver is fetched
Instead of using ethtool for getting the driver for network
devices, use sysfs instead. This is because in case of virtio
devices, ethtool returns virtio-net instead of virtio-pci for
virtio network devices. We need to bind/unbind from virtio-pci
driver in case of virtio-net devices.

Fixes #612

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-22 18:19:58 -07:00
Ruidong Cao
7a5a57d50f cli: test: add unit test for kata-env and kata-check
Add unit test for `disable_new_netns`

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-10-22 21:06:58 +08:00
Ruidong Cao
14e5437cae cli: add configuration option to use or not use host netns
If `disable_new_netns` set to true, create VM and shim processes in the host netns

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-10-22 21:06:58 +08:00
Ruidong Cao
6935279beb network: add new NetInterworkingModel "none" and endpoint type TapEndpoint
This model is for not creating a new net ns for VM and directly
creating taps in the host net ns.

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-10-22 21:06:58 +08:00
Ruidong Cao
f8f29622a4 virtcontainers: refactor hotplug qmp functions
Refactor these functions so differernt types of endpoints can use a unified
function to hotplug nics.

Fixes #731

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-10-22 21:06:56 +08:00
Archana Shinde
40ee885e8e Merge pull request #846 from amshinde/marshal-net-endpoints
network: Marshal BridgedMacvlanEndpoint and MacvtapEndpoint
2018-10-19 11:37:09 -07:00
Marco Vedovati
08d233e4f1 install: clean instructions for kata-manager
Use a one-line code block for the installation command, and document the
dry run option.

Fixes: #275

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-19 19:50:55 +02:00
Archana Shinde
21d38e9948 network: Marshal BridgedMacvlanEndpoint and MacvtapEndpoint
These were skipped.
Fixes #842

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-19 09:29:24 -07:00
James O. D. Hunt
16379e3bc7 docs: Improve table in install README
Improvements to the table in the installation README:

- Fix the invalid link for the "Build from sources" option.

- Add column for "Packaged install" to make it clearer which
  options result in a distro-packed install.

- Tweaked the "Suggested for" column to make the use-case options
  clearer.

- Added detail for each use-case in a "Description" column.

Fixes #276.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-19 17:28:07 +01:00
James O. D. Hunt
30f2fbfb73 docs: Add more details to scripted install section
Add a little more information on the "Scripted Installation" section of
the install README.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-19 17:28:02 +01:00
James O. D. Hunt
c4fb842b8b docs: Fix install key URL
The URL for the public key used for package signing was incorrect.

See: https://github.com/kata-containers/tests/pull/825

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-19 16:31:26 +01:00
Peng Tao
32ef29bd18 factory: use customised deep compare
reflect.DeepEqual would return false when comparing nil map/slice with
empty map/slice. We would want to return success in such case, since it
is possible for upper layers to send these kind of configs.

Fixes: #844

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-10-19 17:54:42 +08:00
Julio Montes
96ed56ec3f Merge pull request #231 from Weichen81/master
kernel: configs: Disable IPv6-in-IPv4 tunnel in guest kernel for Arm64
2018-10-18 09:20:29 -05:00
Julio Montes
4c82d526ee Merge pull request #832 from lifupan/fix_blk
device: fix the issue of passing wrong device address using virtio-blk
2018-10-18 09:12:01 -05:00
Marco Vedovati
962b7ee3d2 tests: get config from distro-specific config.sh
Move the test configuration in the distro-specific config.sh
file, for better control of what to include/exclude from
testing based on the test environment.
test_config.sh is still used to exclude specific distros from
being tested, when running tests in bulk.

Fixes: #182

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-18 11:40:44 +02:00
James O. D. Hunt
b81131f4c0 Merge pull request #823 from jodh-intel/fix-default-bundle-path
create/run: Make bundle path default to cwd
2018-10-18 09:57:00 +01:00
Frank Cao
633f4567f3 Merge pull request #825 from jodh-intel/add-trace-to-remaining-api-funcs
virtcontainers: Add missing API trace calls
2018-10-18 16:53:30 +08:00
Graham Whaley
0a652a1ab8 Merge pull request #786 from linzichang/master
sandbox/virtcontainers: memory resource hotplug when create container.
2018-10-18 09:43:24 +01:00
Marco Vedovati
be3bea4325 rootfs.sh: add options to list and get test config
Add new options to rootfs.sh: -l prints the list of all distros,
-t retrieves a subset of the distro configuration from config.sh
for testing purpose.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-18 09:48:47 +02:00
Peng Tao
708007e42c Merge pull request #830 from caoruidong/add-release
virtcontainers: Add missing API release calls
2018-10-18 15:24:26 +08:00
Wei Chen
1d993c0918 kernel: configs: Disable IPv6-in-IPv4 tunnel in guest kernel for Arm64
As discussed in issue #171 IPv6-in-IPv4 tunnel is useless in guest. So we
decide to disable the CONFIG_IPV6_SIT by default for Arm64.
Fixed #230

Signed-off-by: Wei Chen <wei.chen@arm.com>
2018-10-18 05:51:58 +00:00
Zichang Lin
36306e283c sandbox/virtcontainers: modify tests relate to memory hotplug.
Signed-off-by: Clare Chen <clare.chenhui@huawei.com>
Signed-off-by: Zichang Lin <linzichang@huawei.com>
2018-10-17 23:01:13 -04:00
Ruidong Cao
3f39d6e807 virtcontainers: Add missing API release calls
Add missing release sandbox calls to network related functions in
virtcontainers API.

Fixes #732.

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-10-18 06:58:04 +08:00
Julio Montes
daf52dec57 Merge pull request #813 from sboeuf/romfile
qemu: Disable the default romfile used by virtio-pci
2018-10-17 15:12:57 -05:00
Archana Shinde
d37a2655b3 Merge pull request #227 from amshinde/disable-sit-ipv6
kernel: Disable CONFIG_IPV6_SIT
2018-10-17 09:17:36 -07:00
fupan
b72a3cdcce device: fix the issue of passing wrong device address using virtio-blk
Kata agent expects the pci address to be passed and not the
virtPath in guest.

Fixes: #831

Signed-off-by: fupan <lifupan@gmail.com>
2018-10-17 20:15:34 +08:00
James O. D. Hunt
ee9275fedb virtcontainers: Add missing API trace calls
Add missing trace calls to remaining public virtcontainers API
functions.

Fixes #824.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-17 11:34:43 +01:00
James O. D. Hunt
8831245e30 create/run: Make bundle path default to cwd
The bundle path was documented as defaulting to the current directory
but was not being set to that value if not explicitly specified.

Also moved factory creation code to a new `handleFactory()` function to
avoid cyclomatic complexity issues.

Fixes #821.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-17 11:34:16 +01:00
Sebastien Boeuf
0ae5b142a6 qemu: Disable the default romfile used by virtio-pci
As we try to make sure we don't pull unneeded dependency when using
QEMU or NEMU as the hypervisor, and because SeaBIOS and OVMF firmware
already handle what's done by the default efi-virtio.rom binary, this
commit gets rid of this dependency by providing a default empty one.

Fixes #812

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-10-16 18:29:49 -07:00
Sebastien Boeuf
6f0873a2c3 vendor: Update govmm vendoring
Shortlog:

9c819db qemu: Fix virtio-net-pci QMP command
7fdfc6a qemu: Add support for romfile option
e74de3c Update guidelines on security issue reporting
ec83abe qemu: Add virtio-balloon device suppport.
4697078 qemu: Show full path to qemu binary at launch time

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-10-16 18:29:40 -07:00
James O. D. Hunt
eee4f44ed0 Merge pull request #264 from marcov/refactor-install
install: Refactor installation instructions
2018-10-16 13:19:16 +01:00
Peng Tao
8cfb06f1a9 kata-check: optionally require kvm-intel unrestricted_guest
We have optionally handled it in kernel parameter in
genericArchKernelParamHandler but kata-check still forcely require it to
be present. Let's only require it when running on baremetal.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-10-16 16:57:01 +08:00
James O. D. Hunt
a50a7c2759 Merge pull request #229 from Weichen81/master
kernel: configs: Add EFI support for Arm64
2018-10-16 09:39:42 +01:00
James O. D. Hunt
4ee1e26813 Merge pull request #225 from nitkon/master
ppc64le: Fix linux-container OBS packaging
2018-10-16 09:38:01 +01:00
Peng Tao
acbcde3fee kata-check: do not require nested vt
We do not really require nested VT to run kata containers. Let's not
depend on it being there.

Fixes: #820

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-10-16 15:31:43 +08:00
Peng Tao
ea9ecd7386 kata-check: modprobe missing kernel modules
So that we can possibly verify its parameter later on.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-10-16 11:43:59 +08:00
Wei Chen
b2ac6c5d60 kernel: configs: Add EFI support for Arm64
As x86_64 has updated the guest kernel to enable EFI support for NEMU,
because OVMF that is used by NEMU is an EFI firmware. Although the
NEMU is not ready for Arm64, we'd better to enable EFI support in
kernel to keep sync with x86_64.

Fixes #228

Signed-off-by: Wei Chen <wei.chen@arm.com>
2018-10-16 03:12:13 +00:00
Archana Shinde
fd0ffc0d75 kernel: Disable CONFIG_IPV6_SIT
This is not required by default.
Fixes #171

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-15 13:31:30 -07:00
Julio Montes
dec67ee7a4 Merge pull request #221 from sboeuf/add_EFI
kernel: configs: Add EFI support
2018-10-15 15:25:24 -05:00
Nitesh Konkar
8a364b0784 ppc64le: Fix linux-container OBS packaging
Linux-container OBS packaging for ppc64le
fails as the spec file is x86 specific for
kernel build and install process.

Fixes: #224

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-10-15 23:15:13 +05:30
Archana Shinde
d00742f43f Merge pull request #811 from amshinde/network_refactor
Refactor network.go
2018-10-15 09:07:16 -07:00
James O. D. Hunt
323073008c Merge pull request #269 from nitkon/patch-1
Developer-Guide:  Update kernel installation doc
2018-10-15 16:47:13 +01:00
Clare Chen
14f480af8f sandbox/virtcontainers: combine addResources and updateResources
addResources is just a special case of updateResources. Combine the shared codes
so that we do not maintain the two pieces of identical code.

Signed-off-by: Clare Chen <clare.chenhui@huawei.com>
2018-10-15 10:39:08 +08:00
Zichang Lin
8e2ee686bd sandbox/virtcontainers: memory resource hotplug when create container.
When create sandbox, we setup a sandbox of 2048M base memory, and
then hotplug memory that is needed for every new container. And
we change the unit of c.config.Resources.Mem from MiB to Byte in
order to prevent the 4095B < memory < 1MiB from being lost.

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

Fixes #400

Signed-off-by: Clare Chen <clare.chenhui@huawei.com>
Signed-off-by: Zichang Lin <linzichang@huawei.com>
2018-10-15 10:37:29 +08:00
nitkon
4296b457d1 Developer-Guide: Update kernel installation doc
evged is required to make Kata work with NEMU.
Apply the kernel patch when building kernel.

Fixes: #268

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-10-14 16:15:33 +05:30
Marco Vedovati
cc046495e5 install: Refactor installation instructions
Refactor installation instruction to minimize duplicate content,
to document package source verification process, and to remove
some of the typos.

Fixes: #263

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-12 15:30:16 +02:00
James O. D. Hunt
82233b3e9b Merge pull request #266 from sboeuf/kata_nemu
docs: Add a quickstart about Kata Containers and NEMU
2018-10-12 07:23:44 +01:00
Sebastien Boeuf
7532532ae9 kernel: configs: Add EFI support
This commit bumps the default config from 4.14.49 to 4.14.67 first,
and then enables the support for EFI firmware as OVMF used by NEMU
is an EFI firmware.

Fixes #220

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-10-11 15:24:11 -07:00
Archana Shinde
b04691e229 network: Collapse log calls for endpoint Attach and Detach
Log Attach, Detach, HotAttach and HotDetach at a single
location.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-11 14:45:57 -07:00
Archana Shinde
ab15498bdf network: Explicitly check for veth type
Explicitly check for "veth" intergace type while creating a
veth endpoint. Error out for unsupported network interfaces.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-11 14:45:57 -07:00
Archana Shinde
3c590b0e2c network: Rename VirtualEndpoint to VethEndpoint
As this really represents a veth pair rather than a generic
virtual interface, rename VirtualEndpoint to VethEndpoint.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-11 14:45:57 -07:00
Archana Shinde
df8f21d9fe network: Refactor network tests.
Split network_test.go into separate test files.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-11 14:45:57 -07:00
Archana Shinde
adcd9106f9 network: Refactor network.go
Split endpoint implementations into their own file.

Fixes #799

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-11 14:45:55 -07:00
Archana Shinde
7fb2706667 Merge pull request #814 from amshinde/fix-endpoint-indexing
network: Sort endpoints by name
2018-10-11 14:38:32 -07:00
Sebastien Boeuf
043761f2c3 docs: Add a quickstart about Kata Containers and NEMU
This documentation is a short document explaining how to make Kata
Containers running with the NEMU hypervisor.

Fixes #267

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-10-11 10:58:04 -07:00
Archana Shinde
8f1b28da34 network: Sort endpoints by name
Sort endpoints by name to control the order in which
they are passed to the VM as the interface name inside
the VM depends on the order in which it is passed.

Long term we should come up with a more robust approach.

Fixes #785

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-11 09:23:49 -07:00
James O. D. Hunt
37d182463a Merge pull request #161 from marcov/suse-rootfs
Add support for suse rootfs
2018-10-09 09:39:18 +01:00
James O. D. Hunt
0ce16deab3 Merge pull request #261 from amshinde/intel-gpu-use-case
use-cases: Add documentation for using Intel GPU with Kata
2018-10-09 09:31:31 +01:00
Peng Tao
eb77a41535 qemu: make saveSandbox wait for migration completion
Then we can remove the arbitrary sleep waiting for migration
completion when creating a tempalte vm.

Fixes: #728

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-10-09 09:52:25 +08:00
Archana Shinde
647e535c5b Merge pull request #181 from marcov/set-runtime
tests: handle docker set runtime for systemd / sysconfig
2018-10-08 15:50:52 -07:00
Marco Vedovati
24dd8562c9 Merge pull request #179 from jodh-intel/sub-sort-image-size-summary
tests: Sort size summary by image size and rootfs size
2018-10-08 19:27:08 +02:00
Jose Carlos Venegas Munoz
3ff5b41e58 Merge pull request #218 from nitkon/qemu
qemu-vanilla: Make spec-template file requirement arch-specific
2018-10-08 12:24:22 -05:00
Archana Shinde
15d38d390f use-cases: Add documentation for using Intel GPU with Kata
This document decsribes how an Intel GPU can be used with
Kata Containers in GVT-g and GVT-d mode.
An example of an actual workload will be added in the future.

Fixes #260

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-08 10:20:24 -07:00
Marco Vedovati
3b3f044463 tests: handle docker set runtime for systemd / sysconfig
Detect when dockerd config is sourced from a sysconfig file instead of
being hardcoded in the systemd unit file, and improve re matching for the
two cases.

Fixes: #180

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-08 13:25:45 +02:00
Julio Montes
cb4392542b Merge pull request #217 from jcvenegas/fix-image
image: Fix image build
2018-10-05 11:30:01 -05:00
Nitesh Konkar
7318b4b660 qemu-vanilla: Make spec-template file requirement arch-specific
The spec-template file looks for x86 specific
files irrespective of the arch on which
packaging is done for.

Fixes: #216

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-10-05 20:23:39 +05:30
James O. D. Hunt
fc4c23fdbb tests: Sort size summary by image size and rootfs size
Sort the table of image sizes by rootfs size after having sorted by
image size so that the smaller rootfs images appear before larger ones
when the image size is the same.

Fixes #178.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-05 15:52:33 +01:00
Graham Whaley
a4912d69f1 Merge pull request #213 from nitkon/golang
obs-packaging: Make golang hash dependency arch-specific
2018-10-05 09:52:05 +01:00
Nitesh Konkar
294b658cd2 obs-packaging: Make golang hash dependency arch-specific
Fixes: #212

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-10-05 13:35:05 +05:30
Sebastien Boeuf
cf87c3b04e Merge pull request #215 from jcvenegas/enable-evged-kernel
kernel: enable evged.
2018-10-04 14:13:50 -07:00
Jose Carlos Venegas Munoz
eb010fa9df kernel: enable evged.
Add patch to enable evged,  the config option cannot be set normally since it
breaks current kata supported machine types.

Fixes: #214

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-10-04 14:52:18 -05:00
GabyCT
07af37e07d Merge pull request #253 from grahamwhaley/20180925_selinux_limitation
Limitations: add selinux support limitation
2018-10-04 12:01:03 -05:00
Graham Whaley
ec9f9d428e Merge pull request #251 from jodh-intel/improve-k8s+cri-containerd-howto
docs: Clean up k8s with cri-containerd howto
2018-10-04 13:23:41 +01:00
Manohar Castelino
c3cfe8204a Merge pull request #805 from sboeuf/fix_virt
virtcontainers: qemu: Add proper support for virt machine type
2018-10-03 17:19:07 -07:00
Archana Shinde
a0968ce1ce Merge pull request #506 from amshinde/macvlan-support
network: Add support for macvlan and macvtap driver
2018-10-03 14:19:14 -07:00
Marco Vedovati
83d883826b osbuilder: Add support for openSUSE rootfs image
Add support for building a rootfs image based on openSUSE Leap.

Fixes: #33

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-03 20:23:35 +02:00
Sebastien Boeuf
dffb4f96ae virtcontainers: qemu: Add proper support for virt machine type
The virt machine type provided by the NEMU project needs to be
supported the same way we support pc and q35 machine types.

First, this patch takes care of adding the hotpluggable block device
capability to this machine type, this way when using devicemapper, we
prevent the code from falling back on using 9pfs instead of SCSI.

It also add one or several bridges to this machine type, as the code
is tightly coupled to the fact that a bridge is required for PCI
hotplug.

At last, it changes the name of the PCI host bridge (main bus), to
use "pcie.0". The default set up from pc machine type "pci.0" is not
suitable for this machine type.

Fixes #804

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-10-03 10:04:02 -07:00
Archana Shinde
3c7cf589ad tests: Add additional network tests to verifu link creation functions
Add tests to verify bridge, tap and macvtap link creation.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-03 09:46:16 -07:00
Archana Shinde
378191a52c tests: Add tests for macvlan and macvtap endpoints
Add unit tests in network_test.go and qemu_arch_base_test.go
for macvlan and macvtap network endpoints.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-03 09:46:16 -07:00
Jose Carlos Venegas Munoz
45a5613a91 Merge pull request #208 from nitkon/master
create-repo-branch: Skip repo branch qemu-lite for non-amd64
2018-10-03 08:20:42 -05:00
Archana Shinde
def070d651 golint: Refactor to reduce cyclomatic complexity
Introduce function  getLinkForEndpoint to reduce cyclomatic
complexity.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-02 17:39:48 -07:00
Archana Shinde
417c1f07f9 macvtap: Add support for macvtap
Plugin may provide a macvtap interface. Add support for
directly attaching this to the VM.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-02 17:39:48 -07:00
Sebastien Boeuf
0de7572f7b vendor: Update govmm vendoring
Shortlog:

ef72505 qemu: Fix the support of PCIe bridge
56f645e qmp: add ExecuteQueryMigration
a429677 govmm: fix memory prealloc
1130aab qmp: add "query-cpus" support

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-10-02 17:15:14 -07:00
Archana Shinde
581ff17857 macvlan: Assign random MAC address
Macvtap interfaces require mac addresses to be unique even
though they may be in a separate namespace. Hence use a randomly
generate MAC address.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-02 16:23:50 -07:00
Archana Shinde
8847af8343 network: Add support for macvlan driver
Add support for macvlan driver by bridging it with a macvtap or
tap+bridge and moving the mac and ip address from the
macvlan to the bridged interface.

Fixes #162

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-02 16:23:50 -07:00
Sebastien Boeuf
c061fe1ff5 Merge pull request #802 from jcvenegas/fix-memory-update
memory: update: Update state using the memory removed
2018-10-02 15:23:11 -07:00
Jose Carlos Venegas Munoz
1f5792ecbb test: fix unit test nil pointer.
Add filesystem to qemu object.
Fix mock_hypervisor

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-10-02 15:58:08 -05:00
Jose Carlos Venegas Munoz
4697cf3c79 memory: update: Update state using the memory removed.
If the memory is reduced , its cgroup in the VM was updated properly. But the
runtime assumed that the memory was also removed from the VM.

Then when it is added more memory again, more is added (but not needed).

Fixes: #801

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-10-02 14:38:21 -05:00
Nitesh Konkar
596fb8ce32 obs-packaging: Skip packaging qemu-lite for non-amd64 arch
Skip packaging for qemu-lite
when releasing packages for
non-amd64 archs.

Fixes: #206

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-10-02 23:34:55 +05:30
Archana Shinde
532e0bbf75 Merge pull request #772 from amshinde/block-support-q35
block: Advertise block support for q35
2018-10-02 10:03:56 -07:00
Jose Carlos Venegas Munoz
47010dd2ea image: Fix image build
Update variables needed by osbuilder.

Also fix query to get the initrd base OS.

Fixes: #210

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-10-02 11:50:37 -05:00
Graham Whaley
c273c95aca Merge pull request #202 from nitkon/patch-2
create-repo-branch.sh: Fix a typo
2018-10-02 15:42:51 +01:00
Graham Whaley
caf485d3da Merge pull request #170 from marcov/parallel-build
tests: parallel images build support
2018-10-02 14:38:49 +01:00
Graham Whaley
1c24b7b083 Merge pull request #204 from nitkon/patch-3
obs-packaging: Makefile: Use -prune to delete a directory
2018-10-02 13:28:15 +01:00
Marco Vedovati
7c443ed218 travis: remove AGENT_INIT env combinations
Remove the AGENT_INIT = yes / no combinations from .travis.yml,
as test_images.sh is now running both builds in parallel.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-02 12:59:18 +02:00
Marco Vedovati
562be90907 tests: support parallel building of artifacts
Rework test_images.sh and Makefile to allow building artifacts in
parallel for faster tests execution.
Add new targets to Makefile ({rootfs,image,initrd}-<distro name>).

Fixes: #168

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-02 12:58:55 +02:00
nitkon
5e6d32fe40 obs-packaging: Makefile: Use -prune to delete a directory
make -f .obs-packaging/Makefile clean fails with
"No such file or directory" even after deleting the
files returned by find. Fix it by using -prune.

Fixes: #203

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-10-02 15:18:27 +05:30
Graham Whaley
d3e3d9c32a Merge pull request #197 from bergwolf/fix-release
release: fix release scripts issues found in 1.3.0 and bump package versions
2018-10-02 10:41:41 +01:00
nitkon
161bc07028 create-repo-branch.sh: Fix a typo
Fix a minor typo in create-repo-branch 
script. 

Fixes:  #201

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-10-02 15:05:25 +05:30
James O. D. Hunt
ca6f9dd851 Merge pull request #258 from devimc/topic/addSnapReleaseChecklist
checklist: add snap packages to the release checklist
2018-10-02 09:07:45 +01:00
Archana Shinde
0cab1924c2 block: Advertise block support for q35
Add block device capability for q35 as this machine type supports it.
This was never added with the introduction of q35 support.

Fixes #771

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-10-01 11:21:21 -07:00
Jose Carlos Venegas Munoz
356de607fa Merge pull request #194 from marcov/qemu-version
obs-packaging: fix runtime qemu-* required version
2018-10-01 10:57:13 -05:00
Graham Whaley
38a06cadee Limitations: add selinux support limitation
We do not currently support enablement of `selinux` in the
dockerd config. Document that.

Fixes: #252

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-10-01 16:31:39 +01:00
Graham Whaley
61c1c44127 Merge pull request #256 from marcov/fix-urls
install: have URLs point to the latest version on OBS
2018-10-01 14:40:05 +01:00
Marco Vedovati
795400525c install: have URLs point to the latest version on OBS
The repository URLs in the installation guides needs to point to the
latest release version.
This impact tests execution too (kata-manager uses this guides as
installation recipes).

Fixes: #255

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-10-01 11:09:38 +02:00
James O. D. Hunt
4cc9efedc0 docs: Clean up k8s with cri-containerd howto
This PR is based on #124 but has been reworked and updated to take into
account review feedback and extra cleanups to bring this howto in line
with the latest documentation requirements.

Fixes #127.

Signed-off-by: T. Nichole Williams <tribecca@tribecc.us>
Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-10-01 08:35:13 +01:00
Frank Cao
9bc582857b Merge pull request #798 from devimc/topic/depEnsure
vendor: fix govmm package
2018-09-29 18:48:56 +08:00
Peng Tao
18d126b8ed versions: bump package versions for 1.3.0 release
Packages are already pushed to obs.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-29 11:35:10 +08:00
Peng Tao
4338886211 obs-package: rename kernel to linux-container
We are using linux-container repo in the subproject.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-29 11:35:10 +08:00
Peng Tao
e30e2e8a01 osc: test alternative oscrc locations
On ubuntu, it exists at ~/.config/osc/oscrc instead.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-29 11:09:32 +08:00
Peng Tao
e074aa1099 spec: add kata-netmon to rpm spec
So that it is included in the package.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-29 11:09:32 +08:00
Peng Tao
71c693ccac release: only set LIBEXECDIR for kata-shim
It is the only repo that requires LIBEXECDIR. Do not set it
for other repos, otherwise the runtime repo will mistakenly install
kata-netmon in a wrong path.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-29 11:09:32 +08:00
Peng Tao
4672721efa static-build: do not make clean in qemu Dockerfile
It fails with:
step 13/16 : RUN make clean
 ---> Running in 5385ba104ad8
find: '/root/qemu/tests/docker/dockerfiles/debian-alpha-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/debian-hppa-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/debian-m68k-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/debian-mips64-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/debian-powerpc-user-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/debian-riscv64-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/debian-sh4-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/debian-sid.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/debian-sparc64-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/debian-tricore-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/dockerfiles/fedora-i386-cross.docker': No such file or directory
find: '/root/qemu/tests/docker/test-debug': No such file or directory
find: '/root/qemu/tests/docker/test-unit': No such file or directory

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-29 11:09:32 +08:00
Peng Tao
5188ed2d71 tag_repos: tag prerelease for rc releases
So the they are shown as prerelease on github.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-29 11:08:24 +08:00
Julio Montes
f4cf2137be vendor: fix govmm package
Last time govmm was updated it was not vendored correctly

Fixes #797

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-09-28 10:36:13 -05:00
Julio Montes
d47e66a9c5 checklist: add snap packages to the release checklist
add snap packages to the release checklist

fixes #257

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-09-28 09:32:26 -05:00
Peng Tao
f4feba9a9f release: fix release tag check
We should make sure ${tag} fully matches otherwise we cannot
differentiate `1.3.0` vs. `1.3.0-rc1`, nor `1.3.0` vs. `11.3.0`.

Fixes: #196

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-27 19:53:43 +08:00
James O. D. Hunt
01b68b1ca6 Merge pull request #192 from nitkon/master
runtime: Skip qemu-lite dependency for non-amd64 packaging
2018-09-27 08:22:10 +01:00
Eric Ernst
a786643d0b Merge pull request #789 from bergwolf/1.3.0-branch-bump
# Kata Containers 1.3.0
2018-09-26 17:34:08 -07:00
Nitesh Konkar
7fa02b2ef5 runtime: Skip qemu-lite dependency for non-amd64 packaging
Non-amd64 arch need not have qemu-lite as part of
their packaging dependency.

Fixes: #191

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-09-26 22:47:06 +05:30
Marco Vedovati
dfabc9f08c obs-packaging: fix runtime qemu-* required version
The kata-runtime spec file, when specifying a `Requires:` version for
qemu-lite and qemu-vanilla, does not include the "+git.<commit hash>"
part.
As a result of this, versions of kata-runtime and qemu installed on a
system using RPM package management may be inconsistent.

Fixes: #193

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-09-26 17:38:50 +02:00
James O. D. Hunt
bb193e9dd0 Merge pull request #175 from bergwolf/1.3.0-branch-bump
# Kata Containers 1.3.0
2018-09-26 15:16:44 +01:00
Julio Montes
0d99a4f49f Merge pull request #776 from jodh-intel/bling-collect-script
scripts: Use syntax highlighting in collect script
2018-09-26 08:47:15 -05:00
Peng Tao
7078d3b530 release: Kata Containers 1.3.0
- agent: change 9pfs mount option to cache=mmap
- vc: qemu: Add config option to choose entropy source.
- virtcontainers: revert "fix shared dir resource remaining"
- block: Fix how rootfs is passed to kata-agent using virtio-blk
- agent: clean up proxy process if start sandbox failed
- config: Add Memory slots config
- virtcontainers: support vhost and physical endpoints in AddInterface
- device: Add GPU device support
- virtcontainers: fix the issue of missing starting builtin proxy
- Cleanup template properly
- cli: add systemd-cgroup option
- netmon: Add signals handler support
- versions: update containerd version
- scripts: Add throttler details to collect script
- virtcontainers: hotplug memory with kata-runtime update command.
- factory: start proxy before assign vm to a sandbox
- virtcontainers: netmon: Monitor network changes
- versions: Bump golang from 1.8.3 to 1.9.7
- cli: add configuration option to enable/disable vhost_net

41619e4 vc: qemu:  Add option to change entropy source
9e606b3 virtcontainers: revert "fix shared dir resource remaining"
58cf7fc block: Fix how rootfs is passed to kata-agent using virtio-blk
ec87dca virtcontainers: support vhost and physical endpoints in AddInterface
19801bf config: Add Memory slots configuration.
bb513a7 agent: change 9pfs mount option to cache=mmap
0ddf99d agent: clean up proxy process if start sandbox failed
5612694 virtcontainers: fix the issue of missing starting builtin proxy
67ffa2f factory: close factory in UT
b193f0f template: clean up template mountpoint on failures
37b83c8 device: Add GPU device support
2216d52 vendor: Update govmm to add vfio mediated device support on root bus
048616f netmon: Add signals handler
1675410 pkg: signals: Factorize signals handling through a Go package
723fbac versions: update containerd version
0075175 cli: add systemd-cgroup option
6fc13e9 scripts: Add throttler details to collect script
12a0354 sandbox: get and store guest details.
13bf7d1 virtcontainers: hotplug memory with kata-runtime update command
0928519 vendor: update agent to support memory update
0ffe81c cli: config: Make netmon configurable
1406d99 virtcontainers: Start network monitor from virtcontainers
29e2fa0 virtcontainers: Avoid conflict with network monitor
f6ce465 vendor: Update agent vendoring
55af108 netmon: Add unit testing
f131590 netmon: Build netmon from the master Makefile
fca7435 netmon: Add logrus support
bbf2a47 netmon: Don't rely on agent protocol
b708a4a netmon: Monitor network changes
d75841e ut: add more UTs
07c1f18 factory: start proxy after create new VM
4738d4e agent: add setProxy/getAgentURL interface
8f77c33 proxy: decouple from sandbox
f39fa5d proxy: remove newProxyConfig
c41c9de proxy: do not decode proxy config
225e10c cli: add configuration option to enable/disable vhost_net
5ebb7cf vendor: Update govmm to disable vhost when host doesn't support vhost-net
d814bc5 versions: Bump golang from 1.8.3 to 1.9.7

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-26 17:34:18 +08:00
James O. D. Hunt
504e5836f0 Merge pull request #770 from bergwolf/9p-mmap
agent: change 9pfs mount option to cache=mmap
2018-09-26 10:19:54 +01:00
Peng Tao
5bbbd2abf9 release: Kata Containers 1.3.0
- osbuilder: Add support for debian rootfs
- Reformat usage output in test_image.sh
- osbuilder: Remove redundant argument to test_image.sh
- tests: Show summary of image sizes

4a2fdee osbuilder: fix loop devices manipulation in image-builder.sh
d5087c0 osbuilder: Increase Travis CI build timeout
dd68722 osbuilder: Add support for debian rootfs
2b187c3 tests: Reformat usage output in test_image.sh
6a307ed osbuilder: Remove redundant argument to test_image.sh
9f24610 tests: Show summary of image sizes

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-26 17:16:22 +08:00
Peng Tao
304ec7e231 Merge pull request #781 from jcvenegas/urandom-source
vc: qemu: Add config option to choose entropy source.
2018-09-26 09:43:28 +08:00
Jose Carlos Venegas Munoz
41619e4f83 vc: qemu: Add option to change entropy source
This adds a config option to choose the VM entropy
source.

Fixes: #702

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-25 17:54:32 -05:00
James O. D. Hunt
e50915017e Merge pull request #778 from devimc/topic/revert-292
virtcontainers: revert "fix shared dir resource remaining"
2018-09-25 11:18:39 +01:00
James O. D. Hunt
4eeae1d4d3 Merge pull request #221 from bergwolf/network
architecture.md: add network hotplug diagram
2018-09-25 09:13:51 +01:00
Peng Tao
6b450c0bb8 uml: add txt source of network hotplug uml
So that anyone can paste it into https://www.planttext.com/ to
modify the png file.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-25 15:24:14 +08:00
Peng Tao
b14dec08f2 api: update kata api design doc
To match the storage and network hotplug APIs we actually implemented.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-25 15:24:14 +08:00
Peng Tao
4928041943 architecture.md: add network hotplug diagram
To document the design we have agreed on network hotplug support.

Fixes: #220

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-25 15:24:14 +08:00
Julio Montes
9e606b3da8 virtcontainers: revert "fix shared dir resource remaining"
This reverts commit 8a6d383715.

Don't remove all directories in the shared directory because
`docker cp` re-mounts all the mount points specified in the
config.json causing serious problems in the host.

fixes #777

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-09-24 12:15:09 -05:00
James O. D. Hunt
eba23b1ae4 scripts: Use syntax highlighting in collect script
Make the output of `kata-collect-data.sh` slightly more attractive and
easier to read by using syntax highlighting where possible. This is
achieved by specifying a language for some of the code blocks,
specifically for the TOML config files and output of `kata-env` and the
YAML osbuilder config file.

See:

- https://help.github.com/articles/creating-and-highlighting-code-blocks/
- https://github.com/github/linguist

Fixes #775.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-09-24 09:22:54 +01:00
Peng Tao
e39a734184 Merge pull request #774 from amshinde/fix-virtio-blk
block: Fix how rootfs is passed to kata-agent using virtio-blk
2018-09-22 13:36:31 +08:00
Archana Shinde
d865515c29 Merge pull request #760 from bergwolf/proxy-cleanup
agent: clean up proxy process if start sandbox failed
2018-09-21 14:50:58 -07:00
Archana Shinde
58cf7fc5d6 block: Fix how rootfs is passed to kata-agent using virtio-blk
Kata agent expects the pci address to be passed and not the
predicted device name.

Fixes #773

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-09-21 14:40:30 -07:00
Sebastien Boeuf
b59ea21e4f Merge pull request #752 from jcvenegas/memory-slots-config
config: Add Memory slots config
2018-09-21 11:53:04 -07:00
Archana Shinde
38734bd7c6 Merge pull request #761 from caoruidong/add-inf
virtcontainers: support vhost and physical endpoints in AddInterface
2018-09-21 10:54:52 -07:00
Ruidong Cao
ec87dca2d8 virtcontainers: support vhost and physical endpoints in AddInterface
Support to hotplug vhost and physical endpoints by AddInterface API

Fixes #758

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-09-22 03:10:59 +08:00
Julio Montes
6613fc58b3 Merge pull request #190 from nitkon/makefail
obs-packaging: Fix "make test-packaging-tools" failure
2018-09-21 11:10:25 -05:00
Jose Carlos Venegas Munoz
19801bf784 config: Add Memory slots configuration.
Add configuration to decide the amount of slots that will be used in a VM

- This will limit the amount of times that memory can be hotplugged.
- Use memory slots provided by user.
- tests: aling struct

cli: kata-env: Add memory slots info.

- Show the slots to be added to the VM.

```diff
[Hypervisor]
  MachineType = "pc"
  Version = "QEMU ..."
  Path = "/opt/kata/bin/qemu-system-x86_64"
  BlockDeviceDriver = "virtio-scsi"
  Msize9p = 8192
+  MemorySlots = 10
  Debug = false
  UseVSock = false
```

Fixes: #751

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-21 10:57:00 -05:00
Nitesh Konkar
a3080b8d47 obs-packaging: Fix "make test-packaging-tools" failure
unable to prepare context, unable to evaluate symlinks
in context path when building target test-packaging-tools
on ppc64le.

Fixes: #189

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-09-21 20:08:52 +05:30
Julio Montes
66c1c78ba9 Merge pull request #188 from nitkon/Makefile
Makefile: Do not error out on "make clean"
2018-09-21 08:03:10 -05:00
Nitesh Konkar
9575f771aa Makefile: Do not error out on "make clean"
"make clean" errors out if snap/snapcraft.yaml file
does not exsist and the recipe for target 'clean'
fails. Avoid this my adding a "-f" option to rm to
have a clean state.

Fixes: #187

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-09-21 18:05:06 +05:30
Peng Tao
bb513a7066 agent: change 9pfs mount option to cache=mmap
It does not give better pjdfstest results but allows us to pass
ubuntu `apt update`, fedora `dnf install`, and also launch `mariadb:latest`.

Fixes: #769

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-21 17:59:55 +08:00
James O. D. Hunt
bd2623bd86 Merge pull request #533 from xindazhao/gpu-support
device: Add GPU device support
2018-09-21 08:56:31 +01:00
James O. D. Hunt
7f65751f62 Merge pull request #757 from lifupan/fixbuiltinproxy
virtcontainers: fix the issue of missing starting builtin proxy
2018-09-21 08:31:14 +01:00
James O. D. Hunt
0bd79918d9 Merge pull request #166 from marcov/debian-rootfs
osbuilder: Add support for debian rootfs
2018-09-21 08:24:28 +01:00
Peng Tao
0ddf99d13c agent: clean up proxy process if start sandbox failed
Otherwise we'll leave kata-proxy process dangling around forever.

Fixes: #759

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-21 14:54:37 +08:00
fupan
561269480c virtcontainers: fix the issue of missing starting builtin proxy
It shouldn't set kataAgent.state.URL in its configure() method
for builtin kata proxy, otherwise the following check of whether
is it nil in startProxy() will return directly and failed to
start builtin proxy which will log the qemu's console.

Fixes: #756

Signed-off-by: fupan <lifupan@gmail.com>
2018-09-21 09:41:38 +08:00
Archana Shinde
35d3c0bf5a Merge pull request #764 from bergwolf/cleanup-template
Cleanup template properly
2018-09-20 12:22:01 -07:00
Marco Vedovati
4a2fdee972 osbuilder: fix loop devices manipulation in image-builder.sh
Improve image-builder.sh to avoid the sporadic failures observed during
the CI builds of images. Also, some cosmetic changes to indentation.

Fixes: #172

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-09-20 17:52:06 +02:00
Marco Vedovati
d5087c07ca osbuilder: Increase Travis CI build timeout
Increase the build timeout to 50 minutes, this is required to allow more
distros to be built.

Fixes: #160

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-09-20 17:52:06 +02:00
Marco Vedovati
dd687223e3 osbuilder: Add support for debian rootfs
Fixes: #160

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-09-20 17:52:06 +02:00
James O. D. Hunt
f66ecea9ec Merge pull request #186 from devimc/topic/shpc
kernel: enable SHPC
2018-09-20 16:04:43 +01:00
Julio Montes
b882d19a44 kernel: enable SHPC
SHPC is need to support hotplug in q35

fixes #185

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-09-20 07:54:34 -05:00
Peng Tao
67ffa2fd0c factory: close factory in UT
So that we do not leave artifacts like template mountpoint
behind.

Fixes: #763

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-20 18:13:01 +08:00
Peng Tao
b193f0f3d0 template: clean up template mountpoint on failures
So that we don't leave it behind.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-20 17:30:23 +08:00
James O. D. Hunt
a64fccf3f1 Merge pull request #249 from devimc/topic/updateCommand
Limitations: update 'update command' section
2018-09-20 08:56:20 +01:00
Zhao Xinda
37b83c8923 device: Add GPU device support
Enable GPU device support in kata runtime, including GVT-g and GVT-d.
GVT-g: graphic virtualization technology with mediated pass through
GVT-d: graphic virtualization technology with direct pass through

BDF of device eg "0000:00:1c.0" is used to distinguish GPU device in GVT-d,
while sysfsdev of device eg "f79944e4-5a3d-11e8-99ce-479cbab002e4" is used
in GVT-g.

Fixes #542

Signed-off-by: Zhao Xinda <xinda.zhao@intel.com>
2018-09-20 15:27:34 +08:00
Zhao Xinda
2216d528f6 vendor: Update govmm to add vfio mediated device support on root bus
In addition to supporting hotplug for VFIO mediated device on PCI bridge,
this patch adds hotplug functionality on root bus.

When parameter bus and addr are set to be empty, the system will pick up
an empty slot on root bus.

Fixes #542

Signed-off-by: Zhao Xinda <xinda.zhao@intel.com>
2018-09-20 15:19:29 +08:00
Peng Tao
76b0c3c7d3 Merge pull request #747 from devimc/topic/systemdCgroup
cli: add systemd-cgroup option
2018-09-20 11:38:57 +08:00
Julio Montes
334bbe0f24 Limitations: update 'update command' section
update 'update command' section

fixes #248

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-09-19 15:44:55 -05:00
Julio Montes
d3340f828d Merge pull request #755 from sboeuf/add_sigs_netmon
netmon: Add signals handler support
2018-09-19 09:07:30 -05:00
zhangwei_cs
611158ac54 Merge pull request #750 from jcvenegas/cd-update
versions: update containerd version
2018-09-19 15:32:42 +08:00
Sebastien Boeuf
048616fb8d netmon: Add signals handler
After the signals package has been created and shared with the CLI,
this commit calls into it in order to properly handle the signals
directed to the network monitor process.

Fixes #718

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-18 23:10:51 -07:00
Sebastien Boeuf
1675410256 pkg: signals: Factorize signals handling through a Go package
In order to reuse the same scheme across several components of the
runtime repository, we need to factorize the code handling signalling
through a common package.

The immediate use case will be to use this package from both the CLI
and the network monitor.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-18 23:09:32 -07:00
Jose Carlos Venegas Munoz
723fbacb00 versions: update containerd version
Update the version that is used to test Kata.

```yaml
  cri-containerd:
    version: "v1.0.5"
    meta:
      containerd-version: "1.1.3"
```

Fixes: #748

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-18 17:01:32 -05:00
Julio Montes
00751754a9 cli: add systemd-cgroup option
Add support for cgroup driver systemd.
systemd cgroup is not applied in the VM since in some cases like initrd images
there is no systemd running and nobody can update a systemd cgroup using
systemctl.

fixes #596

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-09-18 15:55:17 -05:00
Jose Carlos Venegas Munoz
c3230c2561 Merge pull request #165 from marcov/reformat-usage
Reformat usage output in test_image.sh
2018-09-18 09:49:06 -05:00
Eric Ernst
a8284f875b Merge pull request #740 from jodh-intel/add-throttler-to-collect-script
scripts: Add throttler details to collect script
2018-09-18 07:36:09 -07:00
James O. D. Hunt
13aed3a3bc Merge pull request #238 from egernst/stable-documentation
stable: initial stable-branching documentation
2018-09-18 15:31:40 +01:00
Eric Ernst
2594c907a8 stable: initial stable-branching documentation
It is expected that this document will change over time. This
represents an initial starting point as we create and release
our stable branches.

Fixes: #237

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-09-18 07:25:10 -07:00
Graham Whaley
4d545625ba Merge pull request #182 from jcvenegas/kata-1.3-rc0
Kata 1.3 rc0
2018-09-18 11:55:11 +01:00
Graham Whaley
f099e2997f Merge pull request #164 from marcov/clean-testimage
osbuilder: Remove redundant argument to test_image.sh
2018-09-18 10:43:34 +01:00
Frank Cao
7d8ce4ec92 Merge pull request #624 from clarecch/update_memory
virtcontainers: hotplug memory with kata-runtime update command.
2018-09-18 16:28:54 +08:00
James O. D. Hunt
6fc13e9548 scripts: Add throttler details to collect script
Add details of the KSM throttler to the output of the data collection
script. Look for both Kata and Clear Containers KSM throttler details.

Fixes #739.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-09-17 17:27:54 +01:00
Clare Chen
12a0354084 sandbox: get and store guest details.
Get and store guest details after sandbox is completely created.
And get memory block size from sandbox state file when check
hotplug memory valid.

Signed-off-by: Clare Chen <clare.chenhui@huawei.com>
Signed-off-by: Zichang Lin <linzichang@huawei.com>
2018-09-17 07:00:46 -04:00
Clare Chen
13bf7d1bbc virtcontainers: hotplug memory with kata-runtime update command
Add support for using update command to hotplug memory to vm.
Connect kata-runtime update interface with hypervisor memory hotplug
feature.

Fixes #625

Signed-off-by: Clare Chen <clare.chenhui@huawei.com>
2018-09-17 05:02:18 -04:00
Zichang Lin
0928519132 vendor: update agent to support memory update
Fixes #671

agent Shortlog:
    7e8e20b agent: add GetGuestDetails gRPC function
    5936600 grpc: grpc.Code is deprecated
    2d3b9ac release: Kata Containers 1.3.0-rc0
    a6e27d6 client: fix dialer after vendor update
    cd03e0c vendor: update grpc-go dependency
    1d559a7 channel: add serial yamux channel close timeout
    fcf6fa7 agent: update resources list with the right device major-minor number

Signed-off-by: Zichang Lin <linzichang@huawei.com>
2018-09-17 05:02:18 -04:00
Peng Tao
a5e82c1d4d Merge pull request #684 from bergwolf/vm-proxy
factory: start proxy before assign vm to a sandbox
2018-09-17 16:37:46 +08:00
Archana Shinde
40bf14989d Merge pull request #534 from sboeuf/monitor_network_golang
virtcontainers: netmon: Monitor network changes
2018-09-14 15:21:45 -07:00
Jose Carlos Venegas Munoz
4b8f97c1ca Merge pull request #184 from devimc/topic/fixSnap130
snap: fix snapcraft.yaml for kata-container 1.3.0
2018-09-14 14:23:05 -05:00
Julio Montes
e63f8a08de snap: fix snapcraft.yaml for kata-container 1.3.0
fix proxy installation path
fix initrd creation

fixes #183

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-09-14 14:05:42 -05:00
Sebastien Boeuf
e620470fe1 Merge pull request #643 from jodh-intel/golang-1.8.3-to-1.9.7
versions: Bump golang from 1.8.3 to 1.9.7
2018-09-14 11:02:00 -07:00
Sebastien Boeuf
0ffe81cb71 cli: config: Make netmon configurable
In order to choose if the network monitor should be used or not, this
patch makes it configurable from the configuration.toml file.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:53 -07:00
Sebastien Boeuf
1406d99aba virtcontainers: Start network monitor from virtcontainers
This patch enables the code responsible for starting and stopping
the network monitor.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:53 -07:00
Sebastien Boeuf
29e2fa0fed virtcontainers: Avoid conflict with network monitor
Because the network monitor will be listening to every event received
through the netlink socket, it will be notified everytime a new link
will be added/updated/modified in the network namespace it's running
into. The goal being to detect new interface added by Docker such as
a veth pair.

The problem is that kata-runtime will add other internal interfaces
when the network monitor will ask for the addition of the new veth
pair. And we need a way to ignore those new interfaces being created
as they relate to the veth pair that is being added. That's why, in
order to prevent from running into an infinite loop, virtcontainers
needs to tag the internal interfaces with the "kata" suffix so that
the network monitor will be able to ignore them.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:53 -07:00
Sebastien Boeuf
f6ce46541e vendor: Update agent vendoring
8abc400 agent: add test to WaitProcess()
f746ed8 agent: allow multiple waitProcess()
157f1c1 travis: Add variable needed to run static checks
ed54087 travis: bump golang version
ba0c7fc client: wait for session to be fully closed
0865c98 agent: wait session to be fully shutdown
55f1480 vendor: update yamux dependency
5e36bfc network: Wait for network device in UpdateInterface
218ce89 device: Rename getBlockDeviceNodeName to getPCIDeviceName
c9a4e2e uevent: Store the interface field as device name for network interfaces
74a5364 build: fix make proto error
b1c2ad8 agent: add support for online memory and cpu separately.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:53 -07:00
Sebastien Boeuf
55af1083ec netmon: Add unit testing
This commit adds some unit testing in order to validate some of the
new code that have been introduced with the new network monitor.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:53 -07:00
Sebastien Boeuf
f1315908c7 netmon: Build netmon from the master Makefile
This commit modifies the Makefile at the root of this repository
so that the binary kata-netmon can be built from there.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:53 -07:00
Sebastien Boeuf
fca74356da netmon: Add logrus support
Instead of dumping logs through the standard output with fmt.Printf()
function, this commit improves the logging by relying on logrus.
Also, it relies on the syslog hook so that all the logs get redirected
to the journal.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:51 -07:00
Sebastien Boeuf
bbf2a47866 netmon: Don't rely on agent protocol
In order to reduce the overhead due to the import of the whole
agent protocol, only the needed structures are duplicated. This
is a temporary solution, and those structures should be defined
into their own package to prevent from such overhead.

Note: the overhead of the binray size went down from 15MiB to
3MiB when this commit removed the dependency on the agent protocol.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:12 -07:00
Sebastien Boeuf
b708a4a05c netmon: Monitor network changes
This commit introduces a new watcher dedicated to the monitoring
of a specific network namespace in order to detect any change that
could happen to the network.

As a result of such a detection, the watcher should call into the
appropriate runtime path with the correct arguments to modify the
pod network accordingly.

Fixes #170

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:10 -07:00
Jose Carlos Venegas Munoz
d109f99ac8 release: 1.3.0-rc1.
- Update versions file.
- Fix proxy installation in static tarball.
- Fix ksm-throttler spec path.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-13 21:20:21 -05:00
Peng Tao
d6e4a98387 Merge pull request #706 from caoruidong/vhost
cli: add configuration option to enable/disable vhost_net
2018-09-14 10:17:00 +08:00
Jose Carlos Venegas Munoz
886bef2e3d Merge pull request #163 from jodh-intel/tests-show-image-sizes
tests: Show summary of image sizes
2018-09-13 20:47:18 -05:00
Peng Tao
d75841ef23 ut: add more UTs
Let's make codecov happier;)

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-14 08:54:55 +08:00
Peng Tao
07c1f18e51 factory: start proxy after create new VM
The PR moves ahead the start of proxy process for vm factory so that
it waits for both vm and proxy to be up at the same time. This saves
about 300ms for new container creation in my local test machine.

Fixes: #683

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-14 08:54:55 +08:00
Peng Tao
4738d4e87a agent: add setProxy/getAgentURL interface
Callers can use setProxy to ask agent to use an existing proxy.
agent is modified to rely on its state.URL to tell if an
its proxy is a valid one. And startProxy will skip a valid
proxy since it is already started.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-14 08:54:55 +08:00
Peng Tao
8f77c33d68 proxy: decouple from sandbox
A proxy is mostly associated with an agent. Decouple it from sandbox
so that we can start it before linking vm with an actual sandbox.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-14 08:54:55 +08:00
Peng Tao
f39fa5d489 proxy: remove newProxyConfig
The proxy config does not depend on proxy type. Let's not misture them.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-14 08:54:55 +08:00
Peng Tao
c41c9de839 proxy: do not decode proxy config
It is a well defined structure that needs no decoding.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-14 08:54:55 +08:00
Eric Ernst
209433c799 Merge pull request #245 from gnawux/readme-organize
README.md: update the README of the documentation repo
2018-09-13 15:17:45 -04:00
Frank Cao
22aedc4fb6 Merge pull request #588 from nitkon/master
cli: Error out if initrd/rootfs not define in config file
2018-09-14 00:20:18 +08:00
Ruidong
225e10cfc4 cli: add configuration option to enable/disable vhost_net
Add `disable_vhost_net` option to enable or disable the use of
vhost_net. Vhost_net can improve network performance.

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-09-14 00:14:03 +08:00
Ruidong
5ebb7cf6f5 vendor: Update govmm to disable vhost when host doesn't support vhost-net
If the length of vhostfds is zero, it means host doesn't support vhost. So
do not pass vhost="on" in QMP.
Full list:
    1a1fee7 qemu/qmp: nic can works without vhost

Fixes #169

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-09-14 00:03:22 +08:00
Sebastien Boeuf
516b6ff1d0 Merge pull request #725 from jodh-intel/fix-kata-env-debug-output
kata-env: Fix display of debug options
2018-09-13 08:26:37 -07:00
Nitesh Konkar
bce6859af0 cli: Error out if initrd/rootfs not define in config file
If neither initrd nor rootfs path is mentioned in
the configuration.toml file, then error out stating
the same

Fixes: #587

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-09-13 20:14:05 +05:30
Peng Tao
5404aaba6f Merge pull request #719 from amshinde/net-queue-size
Set the queue size for Multiqueue virtio-net as the number of vCPUs on the guest.
2018-09-13 22:40:06 +08:00
James O. D. Hunt
23a35c84c9 kata-env: Fix display of debug options
The runtime and hypervisor `Debug` options were always showing as
`false` (although all debug options in `configuration.toml` were
correctly honoured).

Note: Also moved location of `FactoryConfig` in `RuntimeConfig` as the
`malign` linter was complaining:

```
virtcontainers/pkg/oci/utils.go:102:20⚠️ struct of size 408 could be 400 (maligned)
```

Fixes #724.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-09-13 11:15:43 +01:00
Archana Shinde
63785caf04 network: Use the number of CPUS to set the multiqueue size
Instead of using a default queue size of 8 for macvtap fds,
use the number of CPUs on the guest as the queue size.
This is the recommended approach. This also shown better
performance results.

Fixes #680

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-09-12 12:18:48 -07:00
Archana Shinde
2f552fbf43 hypervisor: Add hypervisor interface to return config
This api will allow the config to be accessed by other subsystems
such as network.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-09-12 12:02:15 -07:00
Sebastien Boeuf
a5f05bf3e1 Merge pull request #715 from eguzman3/vfio-ids
devices: add per-device VFIO ids
2018-09-12 09:56:17 -07:00
Eric Ernst
92037abbf3 Merge pull request #716 from jcvenegas/1.3.0-rc1-branch-bump
# Kata Containers 1.3.0-rc1
2018-09-12 12:51:19 -04:00
Eric Ernst
830b1a90c8 Merge pull request #167 from jcvenegas/1.3.0-rc1-branch-bump
# Kata Containers 1.3.0-rc1
2018-09-12 12:50:52 -04:00
Archana Shinde
439b4eb6e8 Merge pull request #712 from bergwolf/cgroupnamespace
kata_agent: disable cgroup namespace
2018-09-12 08:34:01 -07:00
Marco Vedovati
2b187c30d0 tests: Reformat usage output in test_image.sh
Reformat the usage output displayed with `help` command or `-h` option.
Trap exit codes only after options parsing, as that is used to
generate a test report.

Fixes: #169

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-09-12 16:55:12 +02:00
Xu Wang
0a4342e7a6 README.md: update the README of the documentation repo
Ship more information of the documents.

Fixes: #244
Signed-off-by: Xu Wang <xu@hyper.sh>
2018-09-12 16:41:47 +08:00
Xu Wang
ac8f66870e Merge pull request #242 from nitkon/master
Limitation: Document docker --security-opt option not supported
2018-09-12 15:38:21 +08:00
Jose Carlos Venegas Munoz
8a0b1ca1b5 release: Kata Containers 1.3.0-rc1
- Makefile: update targets to better track build artifacts
- OSbuilder : Add support for Ubuntu rootfs
- rootfs: Include libseccomp support in rootfs
- rootfs-fedora: bump Fedora release to 28
- rootfs: Fail on non existing agent version.

344a37c Makefile: update targets to better track build artifacts
f19da63 rootfs: Include libseccomp support in rootfs
3075de4 OSbuilder : Add support for Ubuntu rootfs
89bca97 rootfs: dockerfile: Fix fedora 28 build.
5a1d946 rootfs: Fail on non existing agent version.
1ac9c07 rootfs-fedora: bump Fedora release to 28

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-11 15:53:51 -05:00
Jose Carlos Venegas Munoz
cd243fa935 release: Kata Containers 1.3.0-rc1
- qemu: Add rng virtio device
- cli: fix build
- virtcontainers: remove sandboxConfig.VMConfig

1325444 cli: fix build
44e7631 versions: update qemu-lite version.
bf7fd2b vc: hypervisor: qemu: Add rng device.
f1829d0 vendor: Update govmm
a1537a5 hypervisor: rename DefaultVCPUs and DefaultMemSz
7af8e6c ut: fix hypervisor path
ce28865 virtcontainers: remove sandboxConfig.VMConfig

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-11 15:53:36 -05:00
Edward Guzman
e21cdf13a4 devices: add per-device VFIO ids
Adds per-device VFIO ids allowing IOMMU groups with
multiple devices to be passed to qemu.

Fixes #708

Signed-off-by: Edward Guzman <eguzman@nvidia.com>
2018-09-11 12:10:11 -07:00
Sebastien Boeuf
e02695bf7b Merge pull request #676 from jcvenegas/rng-device
qemu: Add rng virtio device
2018-09-11 07:03:07 -07:00
Peng Tao
ec80a55b74 kata_agent: disable cgroup namespace
We do not support it yet. If we pass it to the agent, container creation
will fail.

Fixes: #711

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-11 18:06:40 +08:00
James O. D. Hunt
daa80c244d Merge pull request #710 from bergwolf/build
cli: fix build
2018-09-11 08:16:23 +01:00
Peng Tao
13254440c6 cli: fix build
Sadly CI failed to catch the broken line due to the fact that it is introduced by a different
PR that passed w/o the naming PR.

./config.go:604:27: config.DefaultMemSz undefined (type virtcontainers.HypervisorConfig has no field or method DefaultMemSz)
Makefile:331: recipe for target '/golang/src/github.com/kata-containers/runtime/kata-runtime' failed
make: *** [/golang/src/github.com/kata-containers/runtime/kata-runtime] Error 2

Fixes: #709

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-11 11:04:07 +08:00
Archana Shinde
52394c3c18 Merge pull request #693 from bergwolf/memory
virtcontainers: remove sandboxConfig.VMConfig
2018-09-10 15:26:18 -07:00
Jose Carlos Venegas Munoz
44e7631970 versions: update qemu-lite version.
Update qemu-lite this disable static PRT on pc platform,
needed to use devices like virtio-rng.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-10 17:11:48 -05:00
Jose Carlos Venegas Munoz
bf7fd2bcd7 vc: hypervisor: qemu: Add rng device.
Kata Containers does not have provide a good entropy level,
make use of a paravirtual rng device to solve this problem.

Fixes: #445

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-10 17:11:48 -05:00
Jose Carlos Venegas Munoz
c60d1b73af versions: Update release version.
Update versions file to Kata 1.3-0-rc1.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-10 15:08:03 -05:00
Jose Carlos Venegas Munoz
f1829d078a vendor: Update govmm
Changes:

- qemu/qmp: support query-memory-devices qmp command.
- qemu: Add virtio RNG device.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-10 13:29:08 -05:00
Jose Carlos Venegas Munoz
f303311d01 obs: image: fix tarball name.
We find for the tarball name with the package name.

If this is a `-rc` tha package versoin will have `~rc`,
lets replace `~` for `-` before get the tarball name.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-10 10:58:03 -05:00
Jose Carlos Venegas Munoz
c04f9bed14 kata-static: Fix shim installation
Shim install does not suport destdir

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-10 10:56:43 -05:00
Marco Vedovati
6a307ed322 osbuilder: Remove redundant argument to test_image.sh
Remove the redundant `--distro` argument; when needed, the distro can be
specified using a positional argument.

Fixes: #158

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-09-10 16:15:55 +02:00
James O. D. Hunt
9f2461061f tests: Show summary of image sizes
At the end of the tests, show a summary of the size of all the rootfs's,
images and initrd's.

Fixes #162.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-09-10 14:44:02 +01:00
Nitesh Konkar
e5b29318ae Limitation: Document docker --security-opt option partially supported
Fixes: #241

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-09-07 20:59:58 +05:30
James O. D. Hunt
93ad0491ef Merge pull request #159 from marcov/upmakefile
Makefile: update targets to better track build artifacts
2018-09-07 14:03:31 +01:00
James O. D. Hunt
7dd00a1d36 Merge pull request #180 from jcvenegas/semver-replace
packaging: Replace `-` for `~`
2018-09-07 09:14:12 +01:00
James O. D. Hunt
d10bf8b3ef Merge pull request #240 from devimc/topic/updateKernelMem
limitations: remove 'docker run and kernel memory' section
2018-09-07 08:13:46 +01:00
Archana Shinde
8f5fec8064 Merge pull request #703 from egernst/1.3.0-rc0-branch-bump
# Kata Containers 1.3.0-rc0
2018-09-06 15:16:00 -07:00
Jose Carlos Venegas Munoz
ec3cab5fea Merge pull request #639 from jodh-intel/fail-if-mem-smaller-than-image
config: Detect if VM memory smaller than image
2018-09-06 16:47:41 -05:00
Jose Carlos Venegas Munoz
368f4792a9 packaging: Replace - for ~
Replace non-valid character from kata version.

This will make the version compatible with rpmbuild.

Fixes: #179

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-06 12:33:05 -05:00
Eric Ernst
3cbd21c0b9 release: Kata Containers 1.3.0-rc0
- qemu: refactor maximum vcpus supported in aarch64
- Add ref counter for devices
- versions: update kernel version 4.14.67
- network: always assign sandbox networkNS
- virtcontainers: wait until process exited before RemoveContainer
- virtcontainers: revert apply devices constraints
- vendor: update govmm to be compatible with qemu 2.8
- network: Remove CNI docs
- network: Move OCI hooks and network namespace creation out of virtcontainers
- virtcontainers: delete out-of-date TODO
- build: fix breaking 1.8.3 build
- virtcontainers: apply devices constraints
- kata-env: Fix amd64 VM container capable check
- travis: Add variable needed to run static checks
- virtcontainers: Apply memory constraints
- builtin-proxy: print guest console output to logger
- vendor: Update kata agent for gRPC tracing
- Pass qemu --share-rw option for hotplugging disks
- virtcontainers: storage: Rework resource storage
- qemu/arm64: Detect host GIC version to configure guest GIC
- virtcontainers: kata_agent: Move out a generic function
- virtcontainers: qemu: Don't shutdown QMP from hotplug
- Add virtcontainers trace support
- vfio: Add configuration to support VFIO hotplug on root bus
- vendor: update kata agent
- network: fix vhost-user net creation
- vc: Remove unused variable NumInterfaces
- cli: kata-env: show if vsocks are supported
- api: add sandbox hotplug network
- CI: bump the CI travis's go to 1.10
- cli: kata-env: add runtime path to output
- Remove unused cni code
- devices: add interface "sandbox.AddDevice"
- versions: Update the commit for qemu-lite
- tracing: Add initial opentracing support
- cli: Make message of using initrd OR rootfs clearer
- vendor: Update dep lock file for new format
- network: Error out when host-networking is requested
- virtcontainers: ppc64le: Add nvdimm to defaultQemuMachineOption
- virtcontainers: qemu: x86: Support "virt" machine type

2cd2dd0 versions: update kernel version 4.14.67
2d13c46 test: add unit test for func MaxQemuVCPUs
c4ded6e qemu: refactor maximum vcpus supported in aarch64
a5478b9 virtcontainers: wait until process exited before RemoveContainer
4307982 virtcontainers: revert apply devices constraints
c518b1e device: use devicemanager to manage rootfs block
26f912e virtcontainers: Make qdisc of hotplug nics mq
5e849f1 network: always assign sandbox networkNS
e599ef4 device: don't persist `ContainerPath` of `DeviceInfo`
affd6e3 devices: add reference count for devices.
7f4b221 devices: share genericDevice logic among devices
af0c137 build: fix breaking 1.8.3 build
9a8b45f network: Remove CNI docs
e906095 virtcontainers: delete out-of-date TODO
35d7672 kata-env: Fix amd64 VM container capable check
414ddd1 travis: Add variable needed to run static checks
137769a virtcontainers: apply devices constraints
2677a5f virtcontainers: Apply memory constraints
3940189 builtin-proxy: print guest console output to logger
f841e89 vendor: update govmm to be compatible with qemu 2.8
97d280e virtcontainers: Don't handle the network in case of a factory
9c6ed93 hook: Move OCI hooks handling to the CLI
ec0fd1b virtcontainers: sandbox: Add new getter to retrieve netns
cb351dc network: Create network namespace from the CLI
44d2ec7 virtcontainers: network: Rename CNM to DefaultNetwork
7785352 vendor: Update kata agent for gRPC tracing
8b20c3f virtcontainers: storage: Separate storage interface from implementations
26f0430 virtcontainers: storage: Add a noop version of filesystem
f0e09c8 virtcontainers: kata_agent: Move out a generic function
a1787da virtcontainers: qemu: Don't shutdown QMP from hotplug
b438590 qemu/arm64: Detect host GIC version to configure guest GIC
d0679a6 tracing: Add tracing support to virtcontainers
6ddc9b4 network: Use correct logger
90970d9 tracing: Add trace spans to virtcontainers APIs
c200b28 tracing: Add context to virtcontainers API
f0073be tracing: Create trace function
a193366 tracing: Add subsystem tag to runtime
31e2925 vfio: Add configuration to support VFIO hotplug on root bus
49690b0 vendor: update kata agent
ee1ea36 network: fix vhost-user net creation
70edc56 disk: Pass the --share-rw option for hotplugging disks
b9e0ca3 vendor: vendor latest govmm
161e3a7 vc: Remove unused variable NumInterfaces
88d79f3 cli: kata-env: show if vsocks are supported
7beb309 test: add UTs for network hotplug
72df219 cli: add network commands
1a17200 virtcontainers: add sandbox hotplug network API
6666426 vendor: update govmm and agent changes
4850579 CI: bump the CI travis's go to 1.10
6e6be98 devices: add interface "sandbox.AddDevice"
474111c tests: Add a cleanup for the CNM tests
0d7b476 network: Remove unused cni vendored code
99fa758 network: Remove unused CNI code
f6bfb85 versions: Update the commit for qemu-lite
8b69c75 cli: kata-env: add runtime path to output
3a1bbd0 tracing: Add initial opentracing support
0ede467 tests: Add cli.Context helper functions
41d1c14 tests: Move assert closer to function call
bee8d66 cli: Make message of using initrd OR rootfs clearer
d9fa73c vendor: Update dep lock file for new format
2f3f375 network: Error out when host-networking is requested
ef3a7e8 virtcontainers: ppc64le: Add nvdimm to defaultQemuMachineOption
ef74bc5 virtcontainers: qemu: x86: Support "virt" machine type

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-09-06 10:24:29 -07:00
Julio Montes
2f7a60abfb Merge pull request #585 from Pennyzct/smp
qemu: refactor maximum vcpus supported in aarch64
2018-09-06 08:43:31 -05:00
Peng Tao
a1537a5271 hypervisor: rename DefaultVCPUs and DefaultMemSz
Now that we only use hypervisor config to set them, they
are not overridden by other configs. So drop the default prefix.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-06 21:04:56 +08:00
Marco Vedovati
344a37c03c Makefile: update targets to better track build artifacts
Update Makefile so that build artifacts are actually tracked as make
targets. This is to enforce a strict prerequisite ordering and better
handle parallel builds.

Fixes: #157

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-09-06 12:35:38 +02:00
James O. D. Hunt
ed1e343b93 Merge pull request #655 from WeiZhang555/add-ref-counter-for-devices
Add ref counter for devices
2018-09-06 09:51:07 +01:00
Peng Tao
7af8e6c641 ut: fix hypervisor path
Otherwise UT fails when there is no file at defaultHypervisorPath.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-06 14:15:56 +08:00
Peng Tao
ce288652d5 virtcontainers: remove sandboxConfig.VMConfig
We can just use hyprvisor config to specify the memory size
of a guest. There is no need to maintain the extra place just
for memory size.

Fixes: #692

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-09-06 14:15:56 +08:00
Julio Montes
52aec3af15 limitations: remove 'docker run and kernel memory' section
issue https://github.com/kata-containers/runtime/issues/187 was fixed

fixes #239

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-09-05 12:15:29 -05:00
James O. D. Hunt
56ba8adc3a Merge pull request #699 from jcvenegas/kernel-4.14.67
versions: update kernel version 4.14.67
2018-09-05 08:57:16 +01:00
Archana Shinde
3594a79c49 Merge pull request #682 from bergwolf/fix-nic
network: always assign sandbox networkNS
2018-09-04 10:32:02 -07:00
Jose Carlos Venegas Munoz
2cd2dd04ed versions: update kernel version 4.14.67
Update kernel version to 4.14.67

Fixes: #698

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-04 11:44:03 -05:00
Archana Shinde
62aab2f872 Merge pull request #144 from ydjainopensource/ubuntu
OSbuilder : Add support for Ubuntu rootfs
2018-09-04 09:01:52 -07:00
Jose Carlos Venegas Munoz
4cb3083cd4 Merge pull request #177 from ydjainopensource/s390x
packaging : add support for s390x
2018-09-04 10:30:48 -05:00
Yash Jain
b7c362fbdb packaging : add support for s390x
Add kernel 4.14.x config for s390x.
This is taken from https://github.com/linuxkit/linuxkit/blob/master/kernel/config-4.14.x-s390x
commit 323043fdd843d0ef920e5348f6e1315039e1f1d3
Also a minor mod was made to this file to disable CONFIG_SERIAL_8250.

Fixes #176

Signed-off-by: Yash Jain <ydjainopensource@gmail.com>
2018-09-04 09:29:16 -04:00
root
2d13c4653d test: add unit test for func MaxQemuVCPUs
we should add unit test for func MaxQemuVCPUS in qemu_amd64_test.go

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <Wei.Chen@arm.com>
2018-09-04 15:41:41 +08:00
root
c4ded6ee5e qemu: refactor maximum vcpus supported in aarch64
on aarch64, we support different gic interrupt controllers.
The maximum number of vCPUs depends on the GIC version, or on how
many redistributors we can fit into the memory map.

Fixes: #584

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <Wei.Chen@arm.com>
2018-09-04 15:41:41 +08:00
Peng Tao
39ad9702de Merge pull request #691 from lifupan/wait_before_remove
virtcontainers: wait until process exited before RemoveContainer
2018-09-04 13:16:16 +08:00
Jose Carlos Venegas Munoz
67dba890cd Merge pull request #154 from nitkon/seccomp
rootfs: Include libseccomp support in rootfs
2018-09-03 12:47:50 -05:00
James O. D. Hunt
f4de4838f2 Merge pull request #175 from kata-containers/release-notes-fixup
Release notes fixup
2018-09-03 16:01:06 +01:00
Nitesh Konkar
f19da6360d rootfs: Include libseccomp support in rootfs
Ensure the image used on the guest does include libseccomp,
otherwise when a seccomp profile is passed by the runtime, it
will end up with boot failure on the guest.

Fixes: #153

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-09-03 11:52:15 +05:30
fupan
a5478b93e0 virtcontainers: wait until process exited before RemoveContainer
RemoveContainer is called right after SignalProcess(SIGKILL), the container
process might be still running and container Destroy() will fail, thus it's better
to wait on this process exited before to issue RemoveContainer.

Fixes: #690

Signed-off-by: fupan <lifupan@gmail.com>
2018-09-03 12:18:12 +08:00
Eric Ernst
64509a5a21 release: notes: add shortlog for reach repo
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-08-31 15:40:19 -07:00
Eric Ernst
9a14155bcd release: fix release note automation version info
Make sure we checkout the new_version tag before grabbing version
information from the runtime repository.

Fixes: #174.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-08-31 14:58:02 -07:00
Jose Carlos Venegas Munoz
c395aa9ccb obs: proxy: use DESTDIR variable.
Proxy respository now honor DESTDIR variable.

Fixes: #172

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-31 12:53:26 -07:00
Archana Shinde
a39a3f15a3 Merge pull request #686 from devimc/topic/revertDevicesCgroup
virtcontainers: revert apply devices constraints
2018-08-31 12:16:33 -07:00
Julio Montes
4307982fdf virtcontainers: revert apply devices constraints
Due to issue https://github.com/kata-containers/runtime/issues/677
commit 137769a694 must be reverted

This reverts commit 137769a694.

fixes #685

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-31 13:07:12 -05:00
Eric Ernst
9ed9792091 Merge pull request #170 from jcvenegas/release-notes
release: Add release notes automation.
2018-08-31 10:44:52 -07:00
Eric Ernst
3749be761b Merge pull request #168 from jcvenegas/check-image-sha
Check agent commit id when image is generated.
2018-08-31 08:44:53 -07:00
Jose Carlos Venegas Munoz
7d23484827 release: Add release notes automation.
Add script to generate release notes template
for runtime.

Will get the range of changes from two tags.

Get assets information from versions.yaml file.

Fixes: #169

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-31 10:21:26 -05:00
Wei Zhang
c518b1ef00 device: use devicemanager to manage rootfs block
Fixes #635

When container rootfs is block based in devicemapper use case, we can re-use
sandbox device manager to manage rootfs block plug/unplug, we don't detailed
description of block in container state file, instead we only need a Block index
referencing sandbox device.

Remove `HotpluggedDrive` and `RootfsPCIAddr` from state file because it's not
necessary any more.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-08-31 19:30:08 +08:00
James O. D. Hunt
7d5a5a7416 Merge pull request #649 from woshijpf/update-govmm-vendor
vendor: update govmm to be compatible with qemu 2.8
2018-08-31 11:41:38 +01:00
Ruidong
26f912ef86 virtcontainers: Make qdisc of hotplug nics mq
In order to avoid performance drop caused by qdisc. And align with
cold plug codes.

Fixes #650

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-08-31 22:07:12 +08:00
James O. D. Hunt
fcbe6e1f90 Merge pull request #679 from amshinde/remove-cni-docs
network: Remove CNI docs
2018-08-31 11:34:39 +01:00
Peng Tao
5e849f143b network: always assign sandbox networkNS
For vm factory, we also need netns to be set otherwise we fail to
create new VMs in `s.network.run`.

Fixes: #681

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-31 16:57:53 +08:00
Peng Tao
b982373813 Merge pull request #623 from sboeuf/move_hooks
network: Move OCI hooks and network namespace creation out of virtcontainers
2018-08-31 15:46:12 +08:00
Frank Cao
7dc1a3246c Merge pull request #675 from caoruidong/delete-comment
virtcontainers: delete out-of-date TODO
2018-08-31 15:13:37 +08:00
Peng Tao
4c5fa2d641 Merge pull request #662 from WeiZhang555/fix-golang1.8.3
build: fix breaking 1.8.3 build
2018-08-31 15:09:04 +08:00
Jose Carlos Venegas Munoz
985f88e763 obs: pkglib: dont grep if file does not exit.
When tries to get release number from a new repo, the
specfile wont exist. Dont do grep in this case.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-30 20:58:45 -05:00
Jose Carlos Venegas Munoz
3d06a83814 obs: makefile: fix clean target.
Clean target tries to remove files multiples times.

Limit find max depth to not try to remove files more than once.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-30 20:57:05 -05:00
Jose Carlos Venegas Munoz
33214c90d6 image: Make sure agent sha is correct
Fix image generation.

Instead of use agent code from the host checkout to the
agent source code in a clean GOPATH env.

Make sure that the agent `commit id` is the correct before
push to github or OBS.

Fixes: #166

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-30 20:56:50 -05:00
Wei Zhang
e599ef430a device: don't persist ContainerPath of DeviceInfo
Fixes #635

`ContainerPath` isn't meaningful in sandbox's `devices.json`, because
device is sandbox level which can be referenced by many containers, and
`ContainerPath` is per container which means nothing to a sandbox level
resource.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-08-31 09:53:01 +08:00
Wei Zhang
affd6e3216 devices: add reference count for devices.
Fixes #635

Remove `Hotplugged bool` field from device and add two new fields
instead:
* `RefCount`: how many references to this device. One device can be
referenced(`NewDevice()`) many times by same/different container(s),
two devices are regarded identical if they have same hostPath
* `AttachCount`: how many times this device has been attached. A device
can only be hotplugged once to the qemu, every new Attach command will
add the AttachCount, and real `Detach` will be done only when
`AttachCount == 0`

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-08-31 09:53:01 +08:00
Wei Zhang
7f4b221bc3 devices: share genericDevice logic among devices
Fixes #635

Shares generic device logic among all device drivers to reduce
duplicated codes.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-08-31 09:53:01 +08:00
Wei Zhang
af0c137ec3 build: fix breaking 1.8.3 build
Fixes #638.

Latest kata-runtime can't build with golang 1.8.3, fix it for backward compatibility.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-08-31 09:52:04 +08:00
Eric Ernst
9bd2edd4bc Merge pull request #235 from amshinde/remove-cni-flow
docs: Remove incorrect CNI flow
2018-08-30 15:37:50 -07:00
Archana Shinde
9a8b45fc53 network: Remove CNI docs
We need to update the network docs to reflect CNM
and CNI are handled much the same way. Start off
by removing the incorrect CNI docs first.

Fixes #678

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-30 15:31:39 -07:00
Archana Shinde
dc0c7063dd docs: Remove incorrect CNI flow
We need to update the way CNI is handled which is
mostly how CNM is taken care of. Start of by removing
the incorrect steps documented for CNI.

Fixes #236

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-30 15:25:19 -07:00
Yash Jain
3075de446f OSbuilder : Add support for Ubuntu rootfs
Fixes #32 #141

Signed-off-by: Yash Jain <ydjainopensource@gmail.com>
2018-08-30 21:06:06 +05:30
Ruidong Cao
e906095a7b virtcontainers: delete out-of-date TODO
drivers package is already removed from this file.

fixes #674

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-08-30 23:20:18 +08:00
James O. D. Hunt
7d14aea067 Merge pull request #657 from devimc/topic/applyConstraints
virtcontainers: apply devices constraints
2018-08-30 14:57:58 +01:00
James O. D. Hunt
ede60044fd Merge pull request #661 from jodh-intel/fix-amd64-kata-env
kata-env: Fix amd64 VM container capable check
2018-08-30 14:07:52 +01:00
James O. D. Hunt
35d7672d73 kata-env: Fix amd64 VM container capable check
Fix nasty bug which resulted in `kata-env` showing
`VMContainerCapable = true` even on amd64 systems without virtualisation
support (thankfully `kata-check` still showed the correct results).

Added arch-specific tests to avoid any possibility of regression.

Fixes #660.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-30 09:41:24 +01:00
James O. D. Hunt
d814bc50fb versions: Bump golang from 1.8.3 to 1.9.7
golang version 1.8.3 is old and the runtime cannot even be built with
it now it seems.

Since it is no longer considered a stable version [1], move to the
oldest official stable version (version 1.9.7).

Fixes #642.

[1] - https://golang.org/dl/

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-30 09:40:20 +01:00
James O. D. Hunt
fe2d20ee4f Merge pull request #164 from jcvenegas/fix-tag-multi-branch
release: tag: checkout to branch to tag.
2018-08-30 08:45:20 +01:00
Frank Cao
f14660f82c Merge pull request #664 from chavafg/topic/travis-static-checks
travis: Add variable needed to run static checks
2018-08-30 10:21:03 +08:00
Jose Carlos Venegas Munoz
88ce6e027d release: tag: checkout to branch to tag.
Checkout to a target branch before create a tag.

We dont checkout for repos that does not have stable branches.
We want to do is just push the tags to master branch
since we don't maintain a seperate one.

The repos are:

osbuilder
packaging
ksm-throttler

Fixes: #163

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-29 15:13:20 -05:00
Julio Montes
c2c7c1c513 Merge pull request #162 from jcvenegas/fix-qemu-vanilla-rng
obs: qemu-vanilla: point to qemu repository.
2018-08-29 13:17:36 -05:00
Salvador Fuentes
414ddd17e8 travis: Add variable needed to run static checks
Now that we support multiple branches, we changed how
static-checks.sh compares branches. We now need a
variable called $target_branch to make the correct
comparison when testing a PR.

Fixes: #663.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-08-29 11:13:37 -05:00
Julio Montes
137769a694 virtcontainers: apply devices constraints
Apply devices constraints to the container in the virtual machine

fixes #656

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-29 10:15:07 -05:00
Jose Carlos Venegas Munoz
953ec99bae obs: qemu-vanilla: point to qemu repository.
Lets point to qemu repository instead of kata fork
for qemu-vanilla.

Fixes: #161

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-29 09:44:06 -05:00
Jose Carlos Venegas Munoz
6d6d669fd2 obs: get_versions: fix qemu-vanilla sha.
The qemu vanilla sha was incorrect.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-29 09:44:06 -05:00
James O. D. Hunt
54164dd62f Merge pull request #159 from jcvenegas/release-tag-osbuilder-not-check
release: dont check osbuilder VERSION file.
2018-08-29 15:05:18 +01:00
Jose Carlos Venegas Munoz
a2a36599a0 release: dont check osbuilder VERSION file.
The osbuilder version file wont be the same if
we tag a stable branch. But we still want to tag
the HEAD of osbuilder to do reproducible builds of
a Kata branch.

Fixes: #158

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-28 13:09:58 -05:00
Julio Montes
65e57d45f3 Merge pull request #140 from jcvenegas/obs-branch-repo-creator
obs: create-repo-branch.sh: New script to create OBS repos.
2018-08-28 12:59:49 -05:00
Jose Carlos Venegas Munoz
c2e29904b3 Merge pull request #155 from nitkon/master
obs-packaging: set BUILD_ARCH, DEB_ARCH arch specific
2018-08-28 12:45:50 -05:00
Jose Carlos Venegas Munoz
65c581ed61 release: get current version before modify file.
When we get changes from one version to a newer this
is empty because we dont get the current version.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-28 11:33:45 -05:00
Jose Carlos Venegas Munoz
1a751c5214 obs: docker-build: move osc file creation.
We need to create the osc file before enter the container.
If build_all.sh is executed without a container and osc
is intalled osc will ask for setup but in the container
fails do to a missing tty.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-28 11:31:26 -05:00
Jose Carlos Venegas Munoz
dbe64e6461 obs: dont checkout repo in tmpdir.
When we genete packages file we want to see
the resulting files. This changes to now
create repos in a tmpdir.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-28 11:31:26 -05:00
Jose Carlos Venegas Munoz
b66368fbe0 obs: factor out projects array.
projects array is used in two scripts move it to
obs-pkgs.sh

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-28 11:31:26 -05:00
Jose Carlos Venegas Munoz
afe2dff5c3 obs: create-repo-branch.sh: New script to create OBS repos.
If want to create pkgs based in new branch, this script will create
all the empty repositories in OBS for each kata package.

Then we can point use the rest of scripts to push changes to this new repo.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-28 11:31:26 -05:00
James O. D. Hunt
b5ea753ff4 config: Detect if VM memory smaller than image
Add a heuristic to ensure the amount of memory allocated to the
hypervisor is bigger than the size of the image.

This catches simple configuration issues where `default_memory=` is set
to a smaller value than the size of either the `image=` or `initrd=`
files.

If the configured image type is `initrd`, fail but only warn in the
logs for `image` as although it seems a highly unlikely scenario, it is
permitted.

Update tests to ensure that created resources have `>0` bytes.

Fixes #636.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-28 16:21:36 +01:00
James O. D. Hunt
1ba4841865 config: Fix test that was using system files
The `TestMinimalRuntimeConfig` should not be using the real
resource files that might be installed on a system so make temporary
files instead to better control the test.

Split out `TestMinimalRuntimeConfigWithVsock` to reduce cyclomatic
complexity (along with dropping the config file delete at the end - not
required as the entire test-specific directory gets auto-deleted).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-28 16:21:34 +01:00
Julio Montes
a3038924fb Merge pull request #654 from devimc/topic/applyMemConstraints
virtcontainers: Apply memory constraints
2018-08-28 09:09:39 -05:00
Nitesh Konkar
3a034d9ab2 obs-packaging: set BUILD_ARCH, DEB_ARCH arch specific
pkglib.sh uses BUILD_ARCH and DEB_ARCH which are
by default not set and hence take the value of
x86_64 and amd64 respectively. Make this
architecture specific.

Fixes: #154

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-28 19:25:16 +05:30
James O. D. Hunt
dcf3229b37 Merge pull request #648 from bergwolf/vmconsole
builtin-proxy: print guest console output to logger
2018-08-28 14:46:10 +01:00
Julio Montes
12f52cdfb8 Merge pull request #641 from jodh-intel/trace-grpc-calls
vendor: Update kata agent for gRPC tracing
2018-08-28 08:09:45 -05:00
Julio Montes
2677a5fa91 virtcontainers: Apply memory constraints
Apply all supported memory constraints to the contrainer
inside the virtual machine.

fixes #653

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-28 07:36:40 -05:00
Peng Tao
3940189be0 builtin-proxy: print guest console output to logger
So daemons such as containerd shimv2 can still see it.

Fixes: #647

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-28 14:45:40 +08:00
Julio Montes
f31f50a7ea Merge pull request #153 from nitkon/qemulite
obs-packaging: Skip packaging qemu-lite for non-amd64 arch
2018-08-27 15:14:35 -05:00
Nitesh Konkar
d72fb8f397 obs-packaging: Skip packaging qemu-lite for non-amd64 arch
qemu-lite is required to be packaged only
for amd64 arch. Skip it for all other
architectures.

Fixes: #152

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-27 23:30:25 +05:30
Jose Carlos Venegas Munoz
e22b1b625f Merge pull request #151 from nitkon/patch-5
obs-packaging: scripts: make osc checkout verbose
2018-08-27 12:14:13 -05:00
Jose Carlos Venegas Munoz
7f89d0c40d Merge pull request #149 from nitkon/patch-4
obs-packaging: Build and run Dockerfile based on GOARCH
2018-08-27 12:13:14 -05:00
Salvador Fuentes
a7ec33d0ff Merge pull request #146 from nitkon/patch-3
Dockerfile: Install pcre-tools later to avoid dependency issue
2018-08-27 09:19:46 -05:00
Nitesh Konkar
1e725de8e1 obs-packaging: scripts: make osc checkout verbose
osc checkout fails silently. Make osc co
verbose as it is helpful for debugging.

Fixes: #150

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-27 19:45:10 +05:30
Salvador Fuentes
4f79231285 Merge pull request #233 from jodh-intel/dont-hardcode-golang-version
docs: Don't hardcode minimum golang version
2018-08-27 09:02:37 -05:00
Nitesh Konkar
6a755c672e obs-packaging: Build and run Dockerfile based on GOARCH
Currently, since GOARCH is not passed as build-arg
to a Dockerfile, it by default always pick's up amd64
when building it. Also pass it as --env when running it.

Fixes #148

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-27 08:27:28 +05:30
flyflypeng
f841e89dc7 vendor: update govmm to be compatible with qemu 2.8
govmm has ExecuteBlockdevAdd() function and ExecuteBlockdevDel() function
doesn't compatible with qemu 2.8,because blockdev-add and x-blockdev-del usages
are different between qemu 2.7 and qemu 2.8

shortlog:

ce070d1 govmm: modify govmm to be compatible with qemu 2.8
0286ff9 qemu/qmp: support hotplug a nic whose qdisc is mq
8515ae4 qmp: Remind users that you must first call ExecuteQMPCapabilities()
21504d3 qemu/qmp: Add netdev_add with chardev support
ed34f61 Add some negative test cases for qmp.go
17cacc7 Add negative test cases for qemu.go

fixes: #637

Signed-off-by: flyflypeng <jiangpengfei9@huawei.com>
2018-08-25 22:05:41 +08:00
Peng Tao
ee6ef0954a Merge pull request #145 from WeiZhang555/kernel-4.1-config
kernel_config: add 4.1 kernel support
2018-08-25 12:29:28 +08:00
Wei Zhang
4217dde487 kernel_config: add 4.1 kernel support
Fixes #144

Current kata containers can't run with kernel 4.1 built from current x86 config,
it will report error:

```
$ docker run -ti --runtime kata busybox sh
docker: Error response from daemon: oci runtime error: rpc error: code = Internal
 desc = Could not run process: container_linux.go:348: starting container process
 caused "process_linux.go:402: container init caused \"open /dev/ptmx: no such
file or directory\"".
```

This is caused by bogus devpts mount options. When run container with docker,
docker will assign a default devpts mount for every container which equals to
command below:

```
$ mount -t devpts -o nosuid,noexec,newinstance,ptmxmode=0666,mode=0620,gid=5 \
devpts /dev/pts
```

This requires kernel config `CONFIG_DEVPTS_MULTIPLE_INSTANCES=y` to work properly
under kernel-4.1, but this option is already removed from latest kernel.

It's better to add it back for support older kernel than current 4.14.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-08-25 09:00:05 +08:00
Sebastien Boeuf
97d280ee0c virtcontainers: Don't handle the network in case of a factory
If the sandbox has been initialized with a factory, this means the
caller should be in charge of adding any network to the VM, and
virtcontainers library cannot make any assumptions about adding
the default underlying network.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-24 15:07:29 -07:00
Sebastien Boeuf
9c6ed93f80 hook: Move OCI hooks handling to the CLI
The CLI being the implementation of the OCI specification, and the
hooks being OCI specific, it makes sense to move the handling of any
OCI hooks to the CLI level. This changes allows the Kata API to
become OCI agnostic.

Fixes #599

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-24 15:07:27 -07:00
Sebastien Boeuf
ec0fd1b67a virtcontainers: sandbox: Add new getter to retrieve netns
As we want to call the OCI hook from the CLI, we need a way for the
CLI to figure out what is the network namespace used by the sandbox.
This is needed particularly because virtcontainers creates the netns
if none was provided.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-24 14:19:25 -07:00
Sebastien Boeuf
cb351dca10 network: Create network namespace from the CLI
This commit moves the network namespace creation out of virtcontainers
in order to anticipate the move of the OCI hooks to the CLI through a
follow up commit.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-24 14:19:23 -07:00
Sebastien Boeuf
44d2ec757c virtcontainers: network: Rename CNM to DefaultNetwork
Since we removed the CNI implementation and that we agreed the network
should only be handled in a single way from virtcontainers, this patch
logically replace the "CNM" naming with "Default".

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-24 14:12:12 -07:00
Julio Montes
cc29b8d4b6 Merge pull request #607 from amshinde/pass-disk-as-shared
Pass qemu --share-rw option for hotplugging disks
2018-08-24 13:09:16 -05:00
Nitesh Konkar
17253b3bf9 Dockerfile: Install pcre-tools later to avoid dependency issue
When pcre-tools is installed before build/obs-service-tar_scm
then "build-mkbaselibs-20180629-289.1.noarch.rpm" is installed
as dependency but OBS repo does not have that rpm. So install
"pcre-tools" at the end and dockerfile builds fine on ppc64le.

Fixes:  #139

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-24 20:50:14 +05:30
James O. D. Hunt
b47d88f2a4 docs: Don't hardcode minimum golang version
The minimum golang version should be defined *once* - in [1]. Since the
developer guide already provides a link to that human-readable file,
remove the hard-coded golang version number to avoid having to maintain
that part of the devguide.

Fixes #232.

[1] - https://github.com/kata-containers/runtime/blob/master/versions.yaml

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-24 14:29:03 +01:00
Julio Montes
8b5fa32d9b Merge pull request #634 from sboeuf/add_noop_filesystem
virtcontainers: storage: Rework resource storage
2018-08-24 07:21:58 -05:00
Julio Montes
500d017c31 Merge pull request #616 from Weichen81/master
qemu/arm64: Detect host GIC version to configure guest GIC
2018-08-24 07:04:21 -05:00
James O. D. Hunt
7785352021 vendor: Update kata agent for gRPC tracing
Update the agent vendoring for the new `NewAgentClient()` API - the
agent client code will enable gRPC tracing when passed a context
containing an opentracing span.

Agent client code changes:

    6d26d61 client: Add context parameter and enable tracing support

Fixes #640.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-24 12:19:52 +01:00
James O. D. Hunt
ed6f715ae6 Merge pull request #630 from sboeuf/move_generic_function
virtcontainers: kata_agent: Move out a generic function
2018-08-24 09:40:24 +01:00
James O. D. Hunt
695244afad Merge pull request #628 from sboeuf/fix_qmp_shutdown
virtcontainers: qemu: Don't shutdown QMP from hotplug
2018-08-24 09:39:20 +01:00
Sebastien Boeuf
8b20c3f26d virtcontainers: storage: Separate storage interface from implementations
The storage implementation of filesystem was in the same file where
the resource storage interface was declared. It's more proper to
separate implementations and interface into different files.

Fixes #633

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-23 16:38:14 -07:00
Sebastien Boeuf
26f0430a7c virtcontainers: storage: Add a noop version of filesystem
This noop implementation of resourceStorage will allow for easier
unit testing of some sandbox functions.

Fixes #632

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-23 16:38:02 -07:00
Sebastien Boeuf
f0e09c887a virtcontainers: kata_agent: Move out a generic function
The specific agent implementation kata_agent was defining a very
useful generic function that is now moved to the global file
network.go.

Fixes #629

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-23 16:03:06 -07:00
Sebastien Boeuf
a1787da97c virtcontainers: qemu: Don't shutdown QMP from hotplug
The QMP shutdown is taken care of by the sandbox release, through a
call to hypervisor.disconnect(). By shutting down the QMP at the qemu
level directly, we are creating some unrecoverable errors by trying to
close an already closed channel.

This patch simply removes the faulty code, following the same design
other hotplug functions are designed.

Fixes #627

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-23 15:54:02 -07:00
Eric Ernst
3f458187a4 Merge pull request #617 from jodh-intel/add-vc-trace-support
Add virtcontainers trace support
2018-08-23 10:08:22 -07:00
GabyCT
881fac25f5 Merge pull request #227 from devimc/topic/vsocks
usecases: add vsock documentation
2018-08-23 09:47:02 -05:00
Wei Chen
b4385901da qemu/arm64: Detect host GIC version to configure guest GIC
QEMU supports GICv2, GICv3 and host parameters for guest
gic-version. The "host" parameter will let QEMU detect
GIC version by itself. This parameter will work properly
when host GIC version is GICv2 or GICv3. But the detection
will failed when host GIC is GICv4 or higher:
"Unable to determine GIC version supported by host"

In this case, we have to detect the host GIC version manually
and force QEMU to use GICv3 when host GIC is GICv4 or higher.

Fixes: #614

Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-08-23 08:33:14 +00:00
Jose Carlos Venegas Munoz
98bf3ae2be Merge pull request #143 from kata-containers/kata-deploy-1.2-update
Kata deploy 1.2 update
2018-08-22 16:07:57 -05:00
James O. D. Hunt
d3c99be063 Merge pull request #133 from stefanha/rootfs-fedora-28
rootfs-fedora: bump Fedora release to 28
2018-08-22 16:44:23 +01:00
Julio Montes
16c50aeb6b Merge pull request #229 from nitkon/patch-2
documentation:install: Fix a broken link
2018-08-22 09:30:27 -05:00
Julio Montes
9948b1892a usecases: add vsock documentation
Add vsock documentation

fixes #226

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-22 09:27:19 -05:00
Julio Montes
6a18753dfe Merge pull request #141 from jcvenegas/release-multi-branch
release: support release branches.
2018-08-22 08:07:13 -05:00
James O. D. Hunt
d0679a6fd1 tracing: Add tracing support to virtcontainers
Add additional `context.Context` parameters and `struct` fields to allow
trace spans to be created by the `virtcontainers` internal functions,
objects and sub-packages.

Note that not every function is traced; we can add more traces as
desired.

Fixes #566.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
James O. D. Hunt
6ddc9b4e8e network: Use correct logger
Use the `networkLogger()`, not the network-specific `cnmLogger()`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
James O. D. Hunt
90970d94c0 tracing: Add trace spans to virtcontainers APIs
Create spans for all `virtcontainers` API functions.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
James O. D. Hunt
c200b28dc7 tracing: Add context to virtcontainers API
Add a `context.Context` parameter to all the virtcontainers API's to
support tracing.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
James O. D. Hunt
f0073bec2f tracing: Create trace function
Simplify code slightly be creating a `trace()` function.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
James O. D. Hunt
a193366b3d tracing: Add subsystem tag to runtime
Set a tag on the root span to denote the subsystem refers to the
runtime.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-22 08:24:58 +01:00
Jose Carlos Venegas Munoz
89bca975a3 rootfs: dockerfile: Fix fedora 28 build.
Fedora 28 container already has coreutils-single package.

Also, the new fedora 28 container does not provide make by default.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-22 00:46:00 -05:00
Eric Ernst
4d95d8d9d5 kata-deploy: use latest container image
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-08-21 20:56:23 -07:00
Eric Ernst
2d07689ffe kata-deploy: changes for 1.2.0 release
1.2.0 release changed the tarball file layout for the
Kata artifacts.  Adjust scripts accordingly.

Fixes: #142

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-08-21 20:56:14 -07:00
Archana Shinde
b594fd3af9 Merge pull request #25 from egernst/vpp-use-case-doc
use-cases: add VPP directions
2018-08-21 14:22:46 -07:00
Eric Ernst
1f80ea8429 use-cases: add VPP directions
create a use-cases subdirectory and add an initial use case,
booting a kata container which makes use of vpp vhost-user interface.

Fixes: #209

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-08-21 12:04:31 -07:00
Archana Shinde
b33e91e28b Merge pull request #219 from GabyCT/topic/updatefedora
docs: Update install guide for fedora
2018-08-21 10:14:04 -07:00
Jose Carlos Venegas Munoz
b78c7f8cd5 release: tag: Add option to decide what branch will be used.
The tag_repos.sh script always check master. Now when we want
to know the version of kata we may want to choose a branch to check.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-21 11:10:53 -05:00
Julio Montes
d6a773c90c Merge pull request #595 from amshinde/use-main-bus-for-hotplug
vfio: Add configuration to support VFIO hotplug on root bus
2018-08-21 11:09:49 -05:00
Jose Carlos Venegas Munoz
d5e9beea78 relase: update-repository-version: add branch argument.
Kata is staring maintain mutiples braches. When we want to
update the project version now we need to have a target branch.

Add argument to choose kata branch we will use to create the PR.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-21 11:00:53 -05:00
nitkon
393af108b1 documentation:install: Fix a broken link
The "OpenSuse" link under "Installing Kata Containers"
is broken. Fix it.

Fixes: #228
Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-21 18:56:34 +05:30
Julio Montes
42e95dbb69 Merge pull request #217 from GabyCT/topic/removeworkaround
docs: Remove workaround on SLES install documentation
2018-08-21 07:55:11 -05:00
Graham Whaley
0c0e17f924 Merge pull request #609 from devimc/topic/vendorAgent
vendor: update kata agent
2018-08-21 11:10:26 +01:00
Julio Montes
8bbd9b5878 Merge pull request #602 from kata-containers/vhu-issue-601
network: fix vhost-user net creation
2018-08-20 14:04:52 -05:00
Archana Shinde
31e2925a9a vfio: Add configuration to support VFIO hotplug on root bus
We need this configuration due to a limitation in seabios
firmware in handling hotplug for PCI devices with large BARS.
Long term, this needs to be fixed in the firmware.

Fixes #594

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-20 11:36:21 -07:00
Julio Montes
49690b04ed vendor: update kata agent
Increase dial timeout to fix context deadline exceeded when
using vsocks

Shortlog:
93fe84e protocols: increase dial timeout
730b977 client: bypass grpc dialer backoff strategy
41c09c2 agent: enable memory hierarchical account
4f70b1c channel: remove unused functions
f6486e7 channel: support communication channel hotplug
28afabb release: Kata Containers 1.2.0

fixes #576

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-20 09:18:29 -05:00
zhangwei_cs
d748b26f40 Merge pull request #604 from jcvenegas/remove-not-Num-var
vc: Remove unused variable NumInterfaces
2018-08-20 10:06:30 +08:00
Eric Ernst
ee1ea36d0a network: fix vhost-user net creation
When creating a device structure to be added to the hypervisor, make
sure that the device includes the vhost-user type.  In particular,
for network devices, specificy VhostUserNet.

Fixes: #601

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-08-17 15:09:34 -07:00
Archana Shinde
70edc56fc1 disk: Pass the --share-rw option for hotplugging disks
With qemu 2.10, a write lock was added for qcow images that
prevents the same image to be passed more than once.
This can be over-ridden using the --share-rw option which is
desired for raw images.

This solves an issue with running Kata with devicemapper
using the privileged mode as in this case all devices on the host
are passed to the container including the block device associated
with the rootfs, causing it to be passed twice to qemu.

Fixes #606

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-17 15:08:33 -07:00
Archana Shinde
b9e0ca340d vendor: vendor latest govmm
Includes --share-rw option for hotplugging disks.

govmm Shortlog:

2706a07 qemu: Use the supplied context.Context for launching
e46092e qemu: Do not try and generate invalid RTC parameters
fcaf61d qemu/qmp: add vfio mediated device support
4461c45 disk: Add --share-rw option for hotplugging disks
6851999 qemu/qmp: add addr and bus to hotplug vsock devices

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-17 14:31:41 -07:00
Jose Carlos Venegas Munoz
161e3a771b vc: Remove unused variable NumInterfaces
Remove unsed variable, the variable is set just in one place, and
never is used again.

Fixes: #603

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-17 15:53:48 -05:00
Julio Montes
ef6a135ab3 Merge pull request #138 from jcvenegas/shfmt
format: use shfmt to format sh files.
2018-08-17 10:53:18 -05:00
Julio Montes
576c0bef88 Merge pull request #148 from jcvenegas/fail-on-not-agent-version
rootfs: Fail on non existing agent version.
2018-08-17 10:51:29 -05:00
Graham Whaley
ad75d955f2 Merge pull request #224 from GabyCT/topic/removeubuntu
docs: Remove support of ubuntu 17.10 on installation guide
2018-08-17 14:39:15 +01:00
Jose Carlos Venegas Munoz
7883b406ee bump: kernel config version.
Kernel directory modified.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-17 08:37:16 -05:00
Peng Tao
f70d6d2acb Merge pull request #590 from devimc/topic/kataEnvSupportVSocks
cli: kata-env: show if vsocks are supported
2018-08-17 15:14:49 +08:00
Gabriela Cervantes
84be074f23 docs: Remove support of ubuntu 17.10 on installation guide
Remove the support of ubuntu 17.10 as it is now end of life.

Fixes #223

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-08-17 00:13:56 -05:00
Gabriela Cervantes
e415d03214 docs: Update install guide for fedora
Update install documentation guide for fedora to include the
support for fedora 28.

Fixes #218

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-08-16 23:45:38 -05:00
Jose Carlos Venegas Munoz
5a1d946046 rootfs: Fail on non existing agent version.
Fail if we can not check out to the requested agent version.

Dont checkout to any branch by default.

Fixes: #147

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-16 17:00:04 -05:00
Jose Carlos Venegas Munoz
2590f2b91e format: use shfmt to format sh files.
Use shfmt to format all the sh file.

https://github.com/mvdan/sh

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-16 16:45:35 -05:00
Eric Ernst
fa711da0eb Merge pull request #126 from jcvenegas/static-builds
Kata 1.2.0 packaging
2018-08-16 13:55:15 -07:00
Julio Montes
88d79f3517 cli: kata-env: show if vsocks are supported
Add a new field in `HostInfo` structure to show if vsocks are
supported in the host.

fixes #589

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-16 15:36:36 -05:00
Jose Carlos Venegas Munoz
76c171b194 Merge pull request #136 from kata-containers/kata-deploy-1.2-dockerfile
Kata deploy 1.2 dockerfile
2018-08-16 14:05:00 -05:00
Archana Shinde
d4d5a28924 Merge pull request #215 from GabyCT/topic/addubuntu
docs: Update installation guide for Ubuntu.
2018-08-16 10:29:30 -07:00
Jose Carlos Venegas Munoz
8f3eb86d52 kernel: bump kernel config version.
kernel dir was modified, bump version.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-16 11:12:01 -05:00
Sebastien Boeuf
26f31071ca Merge pull request #287 from caoruidong/hotplug
api: add sandbox hotplug network
2018-08-16 08:19:37 -07:00
Peng Tao
b473dc4ac9 Merge pull request #579 from lifupan/master
CI: bump the CI travis's go to 1.10
2018-08-16 22:51:59 +08:00
Ruidong Cao
7beb309faf test: add UTs for network hotplug
add UTs for network hotplug related fuctions

Fixes #113

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-08-16 21:31:20 +08:00
Gabriela Cervantes
10f235a603 docs: Remove workaround on SLES install documentation
Now that this issue has solved kata-containers/packaging#39,
we can remove the workaround for the proxy and the shim.

Fixes #216

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-08-16 05:38:33 -05:00
Ruidong Cao
72df219306 cli: add network commands
Add update and list commands for notwork hotplug

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-08-16 16:10:29 +08:00
Ruidong Cao
1a17200cc8 virtcontainers: add sandbox hotplug network API
Add sandbox hotplug network API to meet design

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-08-16 16:10:10 +08:00
Ruidong
6666426739 vendor: update govmm and agent changes
To support tap network hotplug. Implement netdev_add, netdev_del and corresponding device_add QMP commands.
Full list in govmm:
    10efa84 qemu/qmp: add function for hotplug network by fds
    80ed88e qemu/qmp: implement function to hotplug serial ports
    ca46f21 qemu/qmp: implement function to hotplug character devices
    03f1a1c qemu/qmp: implement getfd
    84b212f qemu: add vhostfd and disable-modern to vsock hotplug
    12dfa87 qemu/qmp: implement function for hotplug network
    4ca232e qmp_test: Fix Warning and Error level logs
    430e72c qemu,qmp: Enable gas security checker
    ffc06e6 qemu,qmp: Add staticcheck to travis and fix errors

Add agent ListInterfaces and ListRoutes APIs.
Full list in agent:
    7c287c6 agent: add ListInterfaces and ListRoutes rpc

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-08-16 16:06:16 +08:00
Eric Ernst
80ce323332 kata-deploy: update Dockerfile to 1.2.0
kata-deploy container image changed format slightly as we've changed
the release tarball.  Update to 1.2.0 and make adjustments accordingly.

Fixes: #135

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-08-15 15:12:25 -07:00
Jose Carlos Venegas Munoz
b0ff304461 static: qemu: point prefix variable to /opt/kata.
We want all the static qemu is intalled in /opt/kata
use PREFIX variable to notify to configure script.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
28925a085c scripts: qemu config: add prefix ENV variable.
We were using an static prefix let allow the user choose where will be installed.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
3ca4f91a4c kernel: build: fail on missing config version file.
If the file is not found fail. We use this file
to identify what config we use to build the kernel.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
6c81bda73a obs: qemu-vanilla: point to qemu commit.
OBS fails to resolve a tag so lets provide the commit
we want to build.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
2bbdefaa90 obs: fix installation path for proxy and shim.
Installation path was not the expected in SUSE.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
438b89c9bc obs: versions: generate versions.txt
Now we can auto-generate versions.txt

lets update versions to master.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
319531788f obs: version: add gen_versions_txt script.
Based ina a branch will query the current
kata version and needed hashes.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
20a1928705 obs: docker-build: Pass OBSPROJECT variable
Pass project variable to docker run.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
5e0dc9efba obs: update version to 1.2.0
Update hashes and versions for new Kata version.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
527bd92e2b obs: image: remove unused variables.
Remove unsed variables.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
5362e22df0 versions: upadate qemu commit.
update qemu commit
Remove unsed variables.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
4cce1653a7 obs: lib: remove unused flag APIURL
Today we dont change the APIURL remove it by now.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
59e3ffcbfa obs: runtime: fix function call pkg_version.
pkg_version require 3 parameters.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
19ed81d0d0 obs: qemu set hash variable.
Needed by changelog function.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
e9ed406d0a obs: kernel: set unbound variable.
Set variable to make happy lib functions

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
b06f33bd66 obs: lib: Fix reference to not defined variable.
API variable can be empty.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
7ccf64ee09 obs: pkglib: remove unused option.
Remove unused option.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
0c7b2a82c3 obs: image: Fix to use new image tarball name.
The image name changed fix to allow obs build.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
bb889a464d obs: build-from-docker.sh: Not build image if already craeted.
Accelerate the build process by not creating image again.

Add DEBUG flag to docker run.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
9c64f571f6 obs: build_all.sh: serach scripts in own dir.
update scripts are relative to this script go to
it and then try to update.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
b8a41a8994 gitignore: Ignore tarballs and generated files.
Ignore tarballs and sha files

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Jose Carlos Venegas Munoz
0628e4de7f release: add kata-deploy-binaries.sh
Add script to generate a tarball with kata binaries install kata
whitout pkgs.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-15 16:53:48 -05:00
Archana Shinde
61bc5dfda8 Merge pull request #161 from GabyCT/topic/addopensuse
docs: Add OBS package installation guide for openSUSE
2018-08-15 10:15:24 -07:00
Archana Shinde
3424444be3 Merge pull request #578 from grahamwhaley/20180813_env_runtime_path
cli: kata-env: add runtime path to output
2018-08-15 10:13:21 -07:00
James O. D. Hunt
cd514b69fd Merge pull request #568 from amshinde/remove-unused-cni-code
Remove unused cni code
2018-08-15 16:36:48 +01:00
Salvador Fuentes
aa90d948aa Merge pull request #114 from GabyCT/topic/addsles
docs: Add installation guide for SLES
2018-08-15 08:22:17 -05:00
Gabriela Cervantes
e094f6cce0 docs: Update installation guide for Ubuntu.
Include in the document the support for ubuntu 18.04.

Fixes #214

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-08-15 07:47:47 -05:00
zhangwei_cs
e0c179d954 Merge pull request #550 from WeiZhang555/add-device-before-container-create
devices: add interface "sandbox.AddDevice"
2018-08-15 17:56:51 +08:00
fupan
4850579da3 CI: bump the CI travis's go to 1.10
Bump the CI travis's go to 1.10.x to meet
the building kata shim v2 for containerd.

Fixes: #575

Signed-off-by: fupan <lifupan@gmail.com>
2018-08-15 17:28:13 +08:00
Gabriela Cervantes
a2d83701a0 docs: Add OBS package installation guide for openSUSE
This is the installation guide for OBS packages for
openSUSE.

Fixes #160

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-08-15 03:54:15 -05:00
Wei Zhang
6e6be98b15 devices: add interface "sandbox.AddDevice"
Fixes #50 .

Add new interface sandbox.AddDevice, then for Frakti use case, a device
can be attached to sandbox before container is created.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-08-15 15:24:12 +08:00
Archana Shinde
474111c1af tests: Add a cleanup for the CNM tests
The CNM test was missing a cleanup which was handled earlier
with the CNI tests.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-14 22:56:50 -07:00
Archana Shinde
0d7b476923 network: Remove unused cni vendored code
Most of the libcni code can now be removed.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-14 22:56:50 -07:00
Archana Shinde
99fa758423 network: Remove unused CNI code
We dont really call CNI from Kata, this is done by the CRI layer.
All of the CNI code is unused.

Fixes #567

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-14 22:56:50 -07:00
Sebastien Boeuf
83008d4959 Merge pull request #583 from amshinde/update-qemu-commit
versions: Update the commit for qemu-lite
2018-08-14 22:32:50 -07:00
Archana Shinde
f6bfb857c0 versions: Update the commit for qemu-lite
The commit for qemu needs to be updated to the tip
of the qemu-lite-2.11.0 branch. The qemu packages for
1.12.0 also contain the latest commit.

Fixes #582

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-14 17:30:04 -07:00
Eric Ernst
ea91fff56b kata-deploy: pull particular version of deploy image
For 1.2.0 we are changing the format of the kata-deploy container image.
To avoid issues, pull an explicit version in our daemonset.

In a follow on PR we'll update the yaml/scripts to 1.2.0 format

Fixes: #135

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-08-14 15:49:16 -07:00
Jose Carlos Venegas Munoz
79da855b83 build-image: Dont create image in script dir.
Create in the current directory where the script is called.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-14 14:08:42 -05:00
Jose Carlos Venegas Munoz
91c7213148 relase: add script publish-kata-image.sh
Add script to publish kata image in agent repository.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-14 14:07:45 -05:00
Jose Carlos Venegas Munoz
639df2276b build-image: Pass DEBUG to osbuilder.
Pass debug flag when we use docker.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-14 14:00:36 -05:00
Jose Carlos Venegas Munoz
8c223e811c lib: get deps based in a branch.
We want to create pacakges based in different branches modify
function to get the yaml version needed to to that.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-14 14:00:36 -05:00
Jose Carlos Venegas Munoz
764ce02779 obs: build_all.sh: Add usage function (refactor)
Add usage function.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-14 14:00:36 -05:00
Jose Carlos Venegas Munoz
0d789968a4 obs: build_from_docker: Add arg to build based in a branch.
Build OBS packages based in a kata brach.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-14 14:00:36 -05:00
Jose Carlos Venegas Munoz
f7074e178a obs: : Minor bash fixes (refactor)
Remove unused variables and set default value to variables.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-14 14:00:36 -05:00
Jose Carlos Venegas Munoz
6c5c293f81 obs: scripts: Set bash options (refactor)
Add long name bash options.

Make xtrace optional when DEBUG variable is set.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-14 14:00:36 -05:00
Graham Whaley
dd2acd26eb Merge pull request #565 from jodh-intel/support-opentracing
tracing: Add initial opentracing support
2018-08-14 10:32:52 +01:00
Archana Shinde
2b7cba2253 Merge pull request #211 from nitkon/patch-1
architecture.md: Bump Kata Version to 1.2.0, add pseries info.
2018-08-13 10:27:03 -07:00
Jose Carlos Venegas Munoz
1659d4ace7 obs: pkglib: get_obs_pkg_release: Allow find release number in empty repo.
If we can not find a release number in a file this means
it is an new repository. This could happend when upload changes
for a new brach.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-13 12:21:45 -05:00
Graham Whaley
0f5e37cf9f Merge pull request #134 from nitkon/broken_link
snap: Fix broken link in README
2018-08-13 17:36:24 +01:00
Eric Ernst
f512a087f3 Merge pull request #132 from nitkon/patch-2
snap-build: Fix a typo in README
2018-08-13 07:33:55 -07:00
Graham Whaley
8b69c75144 cli: kata-env: add runtime path to output
`kata-env` did not include the path to the runtime exe itself.
Add that into the Runtime section.

Fixes: #577

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-08-13 14:08:02 +01:00
Nitesh Konkar
d30b523c9f snap: Fix broken link in README
The Integration with docker link in
README is broken. Fix it.

Fixes: #133

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-13 17:01:35 +05:30
Nitesh Konkar
25dfe4ad69 architecture.md: Bump Kata Version to 1.2.0, add pseries info.
Since there have not been any major architecture changes
in Kata Containers since 1.0 release, bump version to latest
1.2.0 release. Also, add another supported machine type
"pseries" for IBM Power Systems. A typo is also fixed in this
commit.

Fixes #210

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-13 15:07:36 +05:30
Nitesh Konkar
25278f9c64 snap-build: Refactor and fix a typo in README
The #usage part of README talks about
cross building snap images for all "supported
architectures" not "supported images".

Also fold the "Usage" part into "Cross-build
snap images" section.

Fixes: #131

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-13 14:57:00 +05:30
Graham Whaley
f23ddb7600 Merge pull request #130 from nitkon/patch-1
snap: Improve README
2018-08-13 09:59:51 +01:00
Gabriela Cervantes
2341d753e2 docs: Add installation guide for SLES
This will add the installation guide for SLES.

Fixes #85

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-08-13 02:14:52 -05:00
nitkon
35c1632c2b snap: Improve README
Improve README by pointing to a specific sub-section 
in runtime repo that actually talks about the possibility 
of having multiple configurations files.

Fixes: #129

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-11 20:14:22 +05:30
Julio Montes
6cea1e14be Merge pull request #128 from nitkon/snapcraft
snapcraft.yaml: Use the correct powerpc kernel config name
2018-08-10 13:38:19 -05:00
James O. D. Hunt
3a1bbd0271 tracing: Add initial opentracing support
Add initial support for opentracing by using the `jaeger` package.
Since opentracing uses the `context` package, add a `context.Context`
as the first parameter to all the functions that we might want to
trace. Trace "spans" (trace points) are then added by extracting the
trace details from the specified context parameter.

Notes:

- Although the tracer is created in `main()`, the "root span"
  (aka the first trace point) is not added until `beforeSubcommands()`.

  This is by design and is a compromise: by delaying the creation of the
  root span, the spans become much more readable since using the web-based
  JaegerUI, you will see traces like this:

  ```
  kata-runtime: kata-runtime create
  ------------  -------------------
       ^                ^
       |                |
  Trace name        First span name
                    (which clearly shows the CLI command that was run)
  ```

  Creating the span earlier means it is necessary to expand 'n' spans in
  the UI before you get to see the name of the CLI command that was run.
  In adding support, this became very tedious, hence my design decision to
  defer the creation of the root span until after signal handling has been
  setup and after CLI options have been parsed, but still very early in
  the code path.

  - At this stage, the tracing stops at the `virtcontainers` call
  boundary.

- Tracing is "always on" as there doesn't appear to be a way to toggle
  it. However, its resolves to a "nop" unless the tracer can talk to a
  jaeger agent.

Note that this commit required a bit of rework to `beforeSubcommands()`
to reduce the cyclomatic complexity.

Fixes #557.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-10 16:13:48 +01:00
Sebastien Boeuf
4220a7a9be Merge pull request #564 from nitkon/error_message
cli: Make message of using initrd OR rootfs clearer
2018-08-10 07:36:44 -07:00
Graham Whaley
5a500c95f0 Merge pull request #125 from nitkon/master
lib.sh: install_yq fails on ppc64le
2018-08-10 15:35:59 +01:00
James O. D. Hunt
0ede467256 tests: Add cli.Context helper functions
Created two new helper functions to create a `cli.Context` with and without a
`cli.App`.

Calling these functions simplifies a lot of test code.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-10 15:25:00 +01:00
James O. D. Hunt
41d1c14c68 tests: Move assert closer to function call
Move a test assertion which seemed to have become separated from its
correct location.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-10 15:25:00 +01:00
Sebastien Boeuf
800369d58a Merge pull request #574 from jodh-intel/update-dep-lock-file-format
vendor: Update dep lock file for new format
2018-08-10 07:17:14 -07:00
Nitesh Konkar
d009421e17 snapcraft.yaml: Use the correct powerpc kernel config name
Kernel building fails as part of "make snap" as
the kernel config file is renamed from ppc64le_kata_kvm_4.14.x
to powerpc_kata_kvm_4.14.x

Fixes:  #127

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-10 19:16:03 +05:30
Nitesh Konkar
63a9b2291e lib.sh: install_yq fails on ppc64le
install_yq() has no arch entry for
ppc64le and hence installing yq
fails on Power systems.

Fixes: #124

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-10 18:25:10 +05:30
Nitesh Konkar
bee8d66ead cli: Make message of using initrd OR rootfs clearer
When starting a kata container, if both initrd and rootfs
are provided in the configuration file then the error message
presented is "cannot specify an image and an initrd in
configuration file" which might be a bit confusing. This
fix makes the error message more explicit.

Fixes:  #563

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-10 17:38:18 +05:30
James O. D. Hunt
d9fa73c054 vendor: Update dep lock file for new format
NOP update that simply updates the file format of the `dep` `Gopkg.lock`
file to the latest format.

Note: `dep ensure` run using `dep` at commit
6b79ccc405.

Fixes #573.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-10 09:03:50 +01:00
Sebastien Boeuf
66e05e7d13 Merge pull request #507 from amshinde/error-out-host-net
network: Error out when host-networking is requested
2018-08-09 16:12:00 -07:00
Archana Shinde
2f3f375b88 network: Error out when host-networking is requested
Instead of continuing with the network setup, we should detect
if host network namespace was requested and error out early.

Fixes #499

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-09 14:50:58 -07:00
Sebastien Boeuf
aedd749168 Merge pull request #562 from nitkon/master
virtcontainers: ppc64le: Add nvdimm to defaultQemuMachineOption
2018-08-09 14:44:01 -07:00
Eric Ernst
7705d68f7d Merge pull request #99 from devimc/snap/multiArch
snap: cross-build snap images
2018-08-09 07:35:15 -07:00
Julio Montes
a8a4e15951 snap-build: implement system to cross-build snap images
Add scripts to cross-build snap images for all supported
architectures using virtual machines

fixes #98

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-09 09:14:31 -05:00
Julio Montes
f9aef172be snap: support arm and ppc architectures
Use `arch` to identify qemu architecture instead of hardcoding it.

fixes #91

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-09 09:14:06 -05:00
Graham Whaley
e863e55cdb Merge pull request #559 from sboeuf/enable_virt_machine_type
virtcontainers: qemu: x86: Support "virt" machine type
2018-08-09 09:19:26 +01:00
Graham Whaley
e2dc90c2e7 Merge pull request #122 from jcvenegas/fix-tag.sh
tag_repos.sh: fix typo
2018-08-09 09:15:03 +01:00
Nitesh Konkar
ef3a7e80c6 virtcontainers: ppc64le: Add nvdimm to defaultQemuMachineOption
nvdimm is fundamental to get rootfs approach
working for Kata Containers on ppc64le. It should
be added to the default qemu machine option list.

Fixes: #561

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-09 11:36:48 +05:30
Sebastien Boeuf
ef74bc533d virtcontainers: qemu: x86: Support "virt" machine type
In order to start playing with the "virt" machine type for Kata,
we need this new machine type to be part of the list of supported
machines for qemu on x86 architecture.

Fixes #558

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-08-08 14:30:26 -07:00
Jose Carlos Venegas Munoz
eb10d79fa8 tag_repos.sh: fix typo
Fix variable name that breaks the script when creating releases.

Fixes: #121

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-08 14:40:00 -05:00
James O. D. Hunt
6c81e212db Merge pull request #208 from nitkon/master
Dev-guide: Kernel build fails on ppc64le
2018-08-08 15:43:29 +01:00
Graham Whaley
ae14163ca2 Merge pull request #146 from jcvenegas/1.2.0-branch-bump
# Kata Containers 1.2.0
2018-08-08 14:45:18 +01:00
Graham Whaley
0bcb32f704 Merge pull request #555 from jcvenegas/1.2.0-branch-bump
# Kata Containers 1.2.0
2018-08-08 14:40:08 +01:00
Jose Carlos Venegas Munoz
bc9f09a3c0 release: Kata Containers 1.2.0
- tests: Add ability to restrict which tests run
- rootfs.sh: Add Platform-OS matrix to help page
- initrd-builder: make initrd_builder.sh idempotent
- travis: Enable travis ci for ppc64le
- docs: Add Platform-Compatibility matrix
- rootfs: docker: Reduce build time by not reinstalling go
- CI: Install make on Ubuntu

c5e2c0f tests: Add more messages
9f2da28 docs: Updated for new test options
0cd64fb build: Added targets to run tests
0ea8ef7 tests: Rename test script
c679cae tests: Add ability to restrict which tests run
80e1997 tests: Create new function to launch tests
f077e6e tests: Rename distro test functions
adb3f57 rootfs.sh: Add Platform-OS matrix link to help page
1e5e915 docs: Add Platform-Compatibility matrix
25e9f01 rootfs: docker: Reduce build time by not reinstalling go
abb559d CI: Install make on Ubuntu
22f04db travis: Enable travis ci for ppc64le
a7bafc5 initrd-builder: make initrd_builder.sh idempotent

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-07 09:43:39 -05:00
Jose Carlos Venegas Munoz
9f0c167bf9 release: Kata Containers 1.2.0
- versions: update openshift to 3.10.0
- qemu: create vm directory before launching qemu
- cli: support factory status command
- re-add: refactor device manager
- virtcontainers: fix the issue of cleanup the vm's path
- Reseed guest random number generator after booting from vm factory
- kernel: Remove initcall_debug boot option
- codecov: remove codecov.yml
- qemu: clear qmp state before wait for qemu process
- do not append sandbox is to kernel parameters
- Use VSOCK when is available in the host.
- Ensure containerID and sandboxID fields logged as early as possible
- revert: "virtcontainers: support pre-add storage for frakti"
- factory: add SetLogger API
- virtcontainers: support pre-add storage for frakti
- versions: Update docker-ce to 18.06
- agent: Increase timeout for check request.
- cli: add AMD support to kata-check
- codecov: Explicitly disable codecov/patch coverage
- virtconainers: rollback the NetNs when createNetwork failed
- sandbox: change container slice to a map
- virtcontainers: process the case that kata-agent doesn't start in VM
- virtcontainers: keep qmp connection whenever possible
- cli: create vm factory if failed to load existing one
- Ensure tests clean their tempfiles
- add vm factory support
- kata_agent: print request details
- virtcontainers: Add support for ephemeral volumes
- makefile: update PREFIX to remove redundant slash
- kata-env: Add ability to output as JSON
- versions: Update CRI-O supported version
- Fix no exit static check
- api: To stop its monitor after a sandbox paused
- virtcontainers: Set ppc64le maxmem depending on qemu version
- proxy: Pass sandbox to proxy
- hypervisor/qemu: add memory hotplug support
- ci: add specfic image-type for aarch64
- main: Pass runtime CLI command to vc logger
- qemu: Pass sandboxID to agent for logging purposes
- logging: Reset external loggers when cid+sid available
- api: To watch the vm console in FetchSandbox api

4fc3041 versions: update openshift to 3.10.0
bd50761 qemu: create vm directory before launching qemu
568b65c qemu: remove redundant code
024a38b cli: print to defaultOutputFile in factory.go
03f2459 cli: support factory status command
1586018 virtcontainers: fix the issue of cleanup the vm's path
6156341 factory: reseed guest RNG device after resuming
d43a435 vendor: update agent dependency
a8f5e2b kernel: Remove initcall_debug boot option
b200163 kata_agent: send sandbox id in CreateSandbox request
e69ebe5 vendor: update agent grpc
0541a5f cli: fix factory assignment
476f21f codecov: remove codecov.yml
3364379 virtcontainers: Use vsock if host support it
3c15bc5 virtcontainers: remove parseVSOCKAddr function
0527691 virtcontainers: implement function to cold plug vsocks
1515bd0 virtcontainers: update KataAgentConfig to support vsocks
3adc862 virtcontainers: log type of proxy started
4680e58 cli: add configuration option to enable/disable vsocks
f389b94 kata-agent: Remove GRPCSock unused variable.
9b28325 virtcontainers: Implement function to get a free context ID
2339ac3 virtcontainers/utils: Implement function to check vsocks support
8ae2888 vendor: update govmm
44a3a44 qemu: wait on disconnected channel in qmp shutdown
c8b4fab qemu: clear qmp state before wait for qemu process
44b9214 devices: fix typo
f474af1 devices: add some test cases
b746489 devices: address some comments
44c37bf devices: rename VFIODrive to VFIODev
7d9d66d devices: remove unused functions
a93e2d0 unit-tests: fix unit tests
f905c16 device-manager: refactor device manger
eec7fa3 devices: don't use drivers package directly.
5db5f42 devices: remove interface VhostUserDevice
1194154 devices: use device manager to manage all devices
763a1b6 logging: Remove unnecessary fields and use standard names
3323c08 logging: Add cid logging to update command
3d5ed66 logging: Improve cid+sid logging
58448bb logging: Allow SetLogger to be called multiple times
029e7ca api: Change logger functions to accept a log entry
dfb758a logging: Remove duplicate arch field in vc
acdd0b8 logging: Split logging source into two fields
c59394d network: Make better use of log fields
a0be57f network: Always call network logger function
927487c revert: "virtcontainers: support pre-add storage for frakti"
b3015dd devices: fix typo
da77124 versions: Update docker-ce to 18.06
9a497fe factory: add SetLogger API
198a069 devices: add some test cases
8391b20 devices: address some comments
04f4f52 devices: rename VFIODrive to VFIODev
daf5abc devices: remove unused functions
1b062b3 unit-tests: fix unit tests
7f5989f device-manager: refactor device manger
c08a263 devices: don't use drivers package directly.
b54df7e devices: remove interface VhostUserDevice
2885eb0 devices: use device manager to manage all devices
5fc7219 agent: check: Increase timeout check request.
12e1911 kata-agent: Improve error message.
4326ea8 cli: add AMD support to kata-check
0e5f6b2 codecov: Explicitly disable codecov/patch coverage
2993cb3 virtcontainers: fix kata-agent fail to start
7103c4f virtcontainers: add qemu process rollback
c2651a8 virtcontainers: add kata-proxy rollback
daebbd1 virtcontainers: add rollback to remove sandbox network
f9d5072 sandbox: change container slice to a map
c6fda44 virtconainers: rollback the NetNs when createNetwork failed
50b445c cli: tests: Clarify who cleans up tmpdir
73c8286 cli: tests: remove the tmpdir to the config.json
d6d38da cli: update_test: defer remove tmpfile
d69fbcf sandbox: add stateful sandbox config
4656a72 cli: create vm factory if failed to load existing one
7a6f205 virtcontainers: keep qmp connection when possible
c9bd12a qemu: cleanup qmp channel setup and teardown
0a11230 factory: add UTs
7cdc0fe cli: do not set ip based kernel parameter
0309e59 cli: add vm factory management subcommand
a7d888f virtconainers: add SetFactory API
bdd5c66 virtcontainers: add vm factory support
8dda2dd virtcontainers: add a vm abstraction layer
28b6104 qemu: prepare for vm templating support
057214f agent: prepare for vm factory
7f20dd8 hypervisor: cleanup valid method
18e6a6e hypervisor: decouple hypervisor from sandbox
4ac6754 qemu: remove append9PVolumes
5d6da35 kata_agent: print request details
b821a5d virtcontainers: Add support for ephemeral volumes
c72a720 makefile: update PREFIX to remove redundant slash
bb0bab2 versions: Update CRI-O supported version
bd6db30 kata-env: tests: add JSON out/in verify test
e45f591 kata-env: Do not leave temp files on test
1f8f762 kata-env: Fix test cases for kata-env JSON
031632d ci: no-exit: Do not run no-exit check on test files
63c06be kata-env: Add ability to output as JSON
62495d4 ci: no-exit: Allow path override for os.Exit check
6268ba4 ci: no-exit: Skip check if no files to check
1c453a3 ci: no-exit: Document and echo what the check is
66a3e81 hypervisor/qemu: add memory hotplug support
67de5d4 ci: reconstructure image-type and initrd for architecture-independant
114482e api: To stop its monitor after a sandbox paused
a38b251 tests: Refactor CC proxy test for Kata
23eb13f proxy: Pass sandbox to proxy
0646a39 vendor: fix dep warning and update yamux dependency
0f20b6b vendor: update govmm changes
830d50e main: Pass runtime CLI command to vc logger
64e2ca3 logging: Reset external loggers when cid+sid available
03d4d49 logging: Add function to handle external loggers
79e8da0 create: Remove redundant logging code
793a220 qemu: Pass sandboxID to agent for logging purposes
9155412 api: To watch the vm console in FetchSandbox api
d0bccab virtcontainers: Set ppc64le maxmem depending on qemu version

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-08-07 09:42:51 -05:00
Nitesh Konkar
fb6ed6961a Dev-guide: Kernel build fails on ppc64le
The kernel config file name prefix changed from
ppc64le to powerpc. This change broke the kernel
build on ppc64le. Fix the kernel build steps
accordingly.

Fixes: #207

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-07 17:55:41 +05:30
Graham Whaley
416b80cefc Merge pull request #143 from jodh-intel/allow-running-single-test
tests: Add ability to restrict which tests run
2018-08-07 10:40:32 +01:00
Graham Whaley
e35caa60ad Merge pull request #553 from chavafg/topic/update-openshift-version
versions: update openshift to 3.10.0
2018-08-07 09:54:54 +01:00
Salvador Fuentes
4fc3041a6e versions: update openshift to 3.10.0
Last week openshift origin v3.10.0 was released,
this PR updates our supported version from 3.9.0 to
3.10.0

This also updates the cri-o version that we use for
openshift, which is now cri-o 1.10.

Fixes: #552.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-08-06 13:01:11 -05:00
Stefan Hajnoczi
1ac9c07e22 rootfs-fedora: bump Fedora release to 28
Fedora 28 was released May 1st 2018.  I have tested that the rootfs
works.

Fixes: #132
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-08-06 14:14:51 +01:00
Julio Montes
dec385abd4 Merge pull request #548 from bergwolf/cleanup
qemu: create vm directory before launching qemu
2018-08-03 07:12:51 -05:00
Peng Tao
bd5076101c qemu: create vm directory before launching qemu
Right now we create it in `createsandbox` and it would
create the vm dir unnecessarily for fetchsandbox() and
it ends up leaving an empty vm dir behind even after
DeleteSandbox.

Fixes: #547

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-03 16:40:02 +08:00
Peng Tao
568b65c275 qemu: remove redundant code
It looks to be left over due to merge conflicts.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-03 16:28:56 +08:00
Archana Shinde
244917c99d Merge pull request #546 from bergwolf/status-factory
cli: support factory status command
2018-08-02 13:39:35 -07:00
Peng Tao
024a38bcb1 cli: print to defaultOutputFile in factory.go
To follow the same rule as other commands.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-03 00:41:53 +08:00
Peng Tao
03f2459388 cli: support factory status command
It checks vm factory status and prints the result.

Fixes: #545

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-03 00:26:55 +08:00
Sebastien Boeuf
16600efc1d Merge pull request #531 from WeiZhang555/bugfix
re-add: refactor device manager
2018-08-02 07:32:02 -07:00
James O. D. Hunt
b1c3c58def Merge pull request #203 from grahamwhaley/20180728_debug_console
Fix debug console socket docs
2018-08-02 13:59:07 +01:00
James O. D. Hunt
04fa125e95 Merge pull request #544 from lifupan/master
virtcontainers: fix the issue of cleanup the vm's path
2018-08-02 11:29:50 +01:00
Graham Whaley
c871a90b4d Merge pull request #539 from bergwolf/crng
Reseed guest random number generator after booting from vm factory
2018-08-02 11:18:34 +01:00
James O. D. Hunt
47a0d6affc Merge pull request #205 from jodh-intel/add-initcall-debug-to-debug-info
docs: Add initcall_debug to dev guide debug section
2018-08-02 10:05:02 +01:00
Fupan Li
15860185d9 virtcontainers: fix the issue of cleanup the vm's path
To use the filepath.Join() instead of the simple
string append method to form the file path, otherwise
it will lose the "/" between the two parts.

Fixes #543.

Signed-off-by: Fupan Li <lifupan@gmail.com>
2018-08-02 16:21:55 +08:00
Peng Tao
47835a8fd3 Merge pull request #104 from devimc/topic/fixMemConstraints
kernel/configs: enable swap extension (CONFIG_MEMCG_SWAP)
2018-08-02 10:09:15 +08:00
Peng Tao
6156341904 factory: reseed guest RNG device after resuming
So that shared memory guests can still generate different
random numbers.

Fixes: #538

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-02 09:43:10 +08:00
Peng Tao
d43a4350a6 vendor: update agent dependency
To include ReseedRandomDev grpc.

Full commits:
e398fd4 agent: add ReseedRandomDev rpc
8a51909 codecov: remove codecov.yml

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-02 09:26:04 +08:00
Julio Montes
3b18544a99 kernel/configs: enable swap extension (CONFIG_MEMCG_SWAP)
libcontainer limits the memory+swap usage by writing the limit at
/sys/fs/cgroup/memory/docker/$CONTID/memory.memsw.limit_in_bytes, this path
doesn't exist if CONFIG_MEMCG_SWAP and CONFIG_MEMCG_SWAP_ENABLED are not
enabled.

fixes #103

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-08-01 11:42:53 -05:00
Julio Montes
4af56db0ea Merge pull request #114 from nitkon/master
ppc64le: Use powerpc as prefix for kernel config file
2018-08-01 07:07:18 -05:00
James O. D. Hunt
fc0142ec8e Merge pull request #527 from jodh-intel/remove-initcall-debug-kernel-option
kernel: Remove initcall_debug boot option
2018-08-01 12:50:52 +01:00
Nitesh Konkar
65c00dc29a ppc64le: Use powerpc as prefix for kernel config file
Post Fix #111, the kernel config name is
expected is to be prefixed with powerpc instead
of ppc64le. Just rename the file to suit the scripts.

Fixes: #113

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-08-01 14:46:10 +05:30
Graham Whaley
02ef1a64ff Merge pull request #541 from bergwolf/codecov
codecov: remove codecov.yml
2018-08-01 09:55:51 +01:00
James O. D. Hunt
a8f5e2becf kernel: Remove initcall_debug boot option
Remove the `initcall_debug` boot option from the kernel command-line as
we don't need it any more and it generates a ton of boot messages that
may well be impacting performance.

Fixes #526.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-08-01 09:52:13 +01:00
James O. D. Hunt
487f9efa57 Merge pull request #536 from bergwolf/qmp_clear
qemu: clear qmp state before wait for qemu process
2018-08-01 09:51:43 +01:00
Sebastien Boeuf
1dae056012 Merge pull request #524 from bergwolf/agent_log
do not append sandbox is to kernel parameters
2018-07-31 21:52:23 -07:00
Peng Tao
b200163de9 kata_agent: send sandbox id in CreateSandbox request
And do not append sandbox id to kernel arguments since that
would fail qemu args comparison in vm factory.

Fixes: #523

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-01 11:18:44 +08:00
Peng Tao
e69ebe5add vendor: update agent grpc
To include SandboxId in CreateSandboxRequest.

Included commits:
745fa71 (origin/pr/309) agent: set sandbox id log field in CreateSandbox
a3321f4 (origin/pr/304) vendor: Revendor netlink to fix PID 1 segfault
a9ade15 (origin/pr/293) agent: Add sandbox level reference counter for sandbox storage
5f89c07 (origin/pr/263) yamux: disable yamux keep alive in server channel
815f831 (origin/pr/303) agent: do not quit on grpc serve errors
8abefd1 (origin/pr/301) protocols/client: close yamux session when closing the stream
67643cf (origin/pr/297) agent: Fix CPU tests for both initrd and rootfs image
cf8d3c8 (origin/pr/295) agent: disable yamux keep alive
ed656df (origin/pr/284) grpc: Ignore WriteStdin after the standard input has been closed
1a52204 grpc: Don't close the terminal on CloseStdin() call
04457e3 (origin/pr/292) logging: Add sandbox field
ba2a32a (origin/pr/286) create: Reduce cyclomatic complexity of CreateContainer
bce5f78 (origin/pr/289) logging: Redirect yamux warnings/errors to logger
23311ea namespace: Add check to make sure PID namespace is not received
7fe2eba (origin/pr/273) release: Kata Containers 1.1.0
4ef4971 (origin/pr/277) travis: Enable travis ci for ppc64le
57bf4e6 (origin/pr/279) namespace: do not create path using rand.
a589bdb (origin/pr/275) CI: update static-checks.sh in travis.yml
1372df2 (origin/pr/271) logging: Fix handling of non-string fields when PID 1
4018add (origin/pr/269) agent: honour CPU constraints when agent is the init process
1cff660 (origin/pr/268) mount: Remove redundant mkdir
cc74b5d (origin/pr/266) network: Setup localhost when running as init
dc06ec7 network: Add extra sanity checks
b580ae7 network: Check all function parameters
ee106e9 main: Exit(1) on error
5bf3909 network: Reduce cyclomatic complexity
cdf9bce namespace: Simplify code
0d7f36f (origin/pr/260) agent: update container cpuset cgroup parents
4cf1809 (origin/pr/258) agent: update container cpuset cgroup before setting the new configuration
d70e5bb agent: don't modify container's config
a30395a (origin/pr/253) grpc: signal frozen containers

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-01 11:18:44 +08:00
Peng Tao
0541a5fc77 cli: fix factory assignment
A stupid typo...

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-01 11:17:56 +08:00
Peng Tao
476f21f22c codecov: remove codecov.yml
Now that we have a global team yaml, let's use it.

Fixes: #540

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-08-01 11:08:13 +08:00
Peng Tao
fc45d2e3d1 Merge pull request #497 from jcvenegas/vsock-runtime5
Use VSOCK when is available in the host.
2018-08-01 09:55:05 +08:00
Julio Montes
33643797ad virtcontainers: Use vsock if host support it
When the hypervisor option `use_vsock` is true the runtime will check for vsock
support. If vsock is supported, not proxy will be used and the shims
will connect to the VM using VSOCKS. This flag is true by default, so will use
VSOCK when possible and no proxy will be started.

fixes #383

Signed-off-by: Jose Carlos Venegas Munoz jose.carlos.venegas.munoz@intel.com
Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 15:38:45 -05:00
Julio Montes
edda8cc68a Merge pull request #117 from jcvenegas/fix-ci
ci: Fix ci when tmp_dir is not set.
2018-07-31 15:37:40 -05:00
Jose Carlos Venegas Munoz
b4a6303b14 ci: Fix ci when tmp_dir is not set.
When tmp_dir is not set and lib.sh is sourced
could lead to fail.

Fix: #116

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-31 15:21:20 -05:00
Julio Montes
3c15bc50d0 virtcontainers: remove parseVSOCKAddr function
parseVSOCKAddr function is no more needed since now agent config
contains a field to identify if vsocks should be used or not.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 13:52:44 -05:00
Julio Montes
052769196d virtcontainers: implement function to cold plug vsocks
`appendVSockPCI` function can be used to cold plug vocks, vhost file descriptor
holds the context ID and it's inherit by QEMU process, ID must be unique and
disable-modern prevents qemu from relying on fast MMIO.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 13:52:44 -05:00
Julio Montes
1515bd07a1 virtcontainers: update KataAgentConfig to support vsocks
add extra field in KataAgentConfig structure to specify if the
kata agent have to use a vsock instead of serial port.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 13:52:44 -05:00
Julio Montes
3adc8626e8 virtcontainers: log type of proxy started
In order to see what proxy was started or not, we should log
its type and the URL

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 13:52:44 -05:00
Julio Montes
4680e58e08 cli: add configuration option to enable/disable vsocks
Add `use_vsock` option to enable or disable the use of vsocks
for communication between host and guest.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 13:52:43 -05:00
Jose Carlos Venegas Munoz
6e69deba7f Merge pull request #108 from jcvenegas/github-release
release: Create github release after create tag.
2018-07-31 12:30:59 -05:00
James O. D. Hunt
78c79ce138 Merge pull request #102 from nitkon/master
packaging: Get packaging for ppc64le
2018-07-31 16:56:35 +01:00
Jose Carlos Venegas Munoz
f389b94d8a kata-agent: Remove GRPCSock unused variable.
We already save the URL used to connect to the agent in the `state.URL` this
variable is the used to connect the shim to agnet independently the socket type
(VSOCK or serial)

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-31 10:30:05 -05:00
Julio Montes
9b283254c3 virtcontainers: Implement function to get a free context ID
FindContextID generates a random number between 3 and max uint32
and uses it as context ID.
Using ioctl findContextID checks if the context ID is free, if
the context ID is being used by other process, this function
iterates from over all valid context IDs until one is available.

`/dev/vhost-vsock` is used to check what context IDs are free,
we need it to ensure we are using a unique context ID to
create the vsocks.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 10:30:05 -05:00
Julio Montes
2339ac3f93 virtcontainers/utils: Implement function to check vsocks support
Implement function to check if the system has support for vsocks.
This function looks for vsock and vhost-vsock devices returning
true if those exist, otherwise false.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 10:29:11 -05:00
Jose Carlos Venegas Munoz
f65fd94583 tag_repos: Create github release.
After create a tag craete a github release.

Fixes: #107

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-31 10:23:55 -05:00
Jose Carlos Venegas Munoz
dfddde813d lib: move build_hub to lib
hub will be used by other script move it.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-31 10:22:52 -05:00
Nitesh Konkar
dae14ddefd packaging: Add packaging support for ppc64le
Fixes:  #74

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-07-31 19:58:21 +05:30
Julio Montes
8ae28888e0 vendor: update govmm
add vhostfd and disable-modern to vhost-vsock-pci

shortlog:
3830b44 qemu: add vhostfd and disable-modern to vhost-vsock-pci
f700a97 qemu/qmp: implement function to hotplug vsock-pci

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-31 08:42:50 -05:00
James O. D. Hunt
90fa9305e0 Merge pull request #112 from Weichen81/master
Kernel: Normalize target-arch for setup-kernel function
2018-07-31 13:33:31 +01:00
Peng Tao
44a3a441aa qemu: wait on disconnected channel in qmp shutdown
That is how govmm ensures us that the qmp channel has been cleaned
up entirely.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-31 18:34:37 +08:00
James O. D. Hunt
17a2fb886f Merge pull request #528 from jodh-intel/fix-log-fields
Ensure containerID and sandboxID fields logged as early as possible
2018-07-31 09:09:29 +01:00
Wei Chen
0e64f2a8c6 kernel: Update kata_config_version to trace issue#111
Signed-off-by: Wei Chen <wei.chen@arm.com>
2018-07-31 06:48:16 +00:00
Wei Chen
6f4023f6e2 kernel: Remove redundant slash of default_kernel_config_dir
Run new script in arm server to build kernel, then find a minor
typo. An extra "/" in the end of default_kernel_config_dir will
cause error:
ERROR: failed to find default config
../src/github.com/kata-containers/packaging/kernel/configs//aarch64_kata_kvm_4.14.x

Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-07-31 06:48:14 +00:00
Wei Chen
195b5744ea kernel: Normalize target-arch for setup-kernel function
As we had dicussed in issue#140:
https://github.com/kata-containers/documentation/issues/140
We have normalized output for x86_64, arm64 and ppc64. And
James had implemented a kata-arch.sh in tests/.ci :
https://github.com/kata-containers/tests/blob/master/.ci/kata-arch.sh
But in build-kernel.sh the setup-kernel function had used the
"uname -m" output as target-arch directly, this will cause the
following scripts can't find kernel config files.

Fixed #111

Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-07-31 06:48:07 +00:00
Peng Tao
c8b4fabc37 qemu: clear qmp state before wait for qemu process
So that if there is any remaining state, we do not let it interfere
with the new one. This should fix the occasional vm factory hang.

Fixes: #535

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-31 11:48:40 +08:00
z00280905
44b9214141 devices: fix typo
Fix typo.

Signed-off-by: z00280905 <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Wei Zhang
f474af1660 devices: add some test cases
Add test cases for device manager reworks.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Wei Zhang
b7464899ec devices: address some comments
Address some review comments:
* remove unnecessary rollback logics
* add vfio hot unplug handling.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Zhang Wei
44c37bf774 devices: rename VFIODrive to VFIODev
Rename VFIODrive to VFIODev, also rename device interface "GetDeviceDrive()" to
"GetDeviceInfo()".

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Zhang Wei
7d9d66d782 devices: remove unused functions
cleanup: remove ununsed device interface function "GetDeviceInfo()"

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Wei Zhang
a93e2d0421 unit-tests: fix unit tests
Fix #50

Fix unit tests

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 10:05:56 +08:00
Wei Zhang
f905c16f21 device-manager: refactor device manger
Fixes #50

This commit imports a big logic change:
* host device to be attached or appended now is sandbox level resources,
one device should bind to sandbox/hypervisor first, then container could
reference it via device's unique ID.
* attach or detach device should go through the device manager interface
instead of the device interface.
* allocate device ID in global device mapper to guarantee every device
has a uniq device ID and there won't be any ID collision.

With this change, there will some changes on data format on disk for sandbox
and container, these changes also make a breakage of backward compatibility.

New persist data format:
* every sandbox will get a new "devices.json" file under "/run/vc/sbs/<sid>/"
which saves detailed device information, this also conforms to the concept that
device should be sandbox level resource.
* every container uses a "devices.json" file but with new data format:
```
[
  {
    "ID": "b80d4736e70a471f",
    "ContainerPath": "/dev/zero"
  },
  {
    "ID": "6765a06e0aa0897d",
    "ContainerPath": "/dev/null"
  }
]
```
`ID` should reference to a device in a sandbox, `ContainerPath` indicates device
path inside a container.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-07-31 10:03:57 +08:00
Wei Zhang
eec7fa394f devices: don't use drivers package directly.
Instead of using drivers.XXXDevice directly, we should use exported
struct from device structure. package drivers should be internal struct
and other package should avoid read it's struct content directly.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 09:59:29 +08:00
Wei Zhang
5db5f42b71 devices: remove interface VhostUserDevice
The interface "VhostUserDevice" has duplicate functions and fields with
Device, so we can merge them into one interface and manage them with one
group of interfaces.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 09:59:29 +08:00
Wei Zhang
1194154309 devices: use device manager to manage all devices
Fixes #50

Previously the devices are created with device manager and laterly
attached to hypervisor with "device.Attach()", this could work, but
there's no way to remember the reference count for every device, which
means if we plug one device to hypervisor twice, it's truly inserted
twice, but actually we only need to insert once but use it in many
places.

Use device manager as a consolidated entrypoint of device management can
give us a way to handle many "references" to single device, because it
can save all devices and remember it's use count.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-31 09:59:29 +08:00
James O. D. Hunt
f0e1d9dc4d Merge pull request #110 from nitkon/build_kernel
build_image.sh: OPTIND prevent unwanted word-splitting
2018-07-30 15:42:48 +01:00
James O. D. Hunt
c5e2c0fe88 tests: Add more messages
Add a few more informational messages to help with debugging.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
9f2da28bb9 docs: Updated for new test options
Created a new README for the tests and updated the top-level README
with brief details on how to run tests.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
0cd64fb5c9 build: Added targets to run tests
Updated the `Makefile` to provide the following new targets:

```
make test              # Run all tests.
make test-image-only   # Only run image tests.
make test-initrd-only  # Only run initrd tests.
```

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
0ea8ef76f0 tests: Rename test script
Renamed the test script to provide a more meaningful one.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
c679cae92c tests: Add ability to restrict which tests run
Added options to the test script to allow:

- all tests for a specific distro (`--distro $distro`).
- all image tests (`--test-images-only`).
- all initrd tests (`--test-initrds-only`).

Any combination of the above is also permitted. By default, all tests
will be run.

Fixes #142.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
80e1997721 tests: Create new function to launch tests
Move the calls to the individual distro tests into a separate
function called from `main()`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:18 +01:00
James O. D. Hunt
f077e6efdc tests: Rename distro test functions
Give the distro test function names a better prefix.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:36:17 +01:00
James O. D. Hunt
c270496937 docs: Add initcall_debug to dev guide debug section
https://github.com/kata-containers/runtime/pull/527 Removed the
hard-coded `initcall_debug` kernel option (as it generates a lot of
kernel output at boot).

Add the `initcall_debug` option to the "Enable full debug" section to
allow users to enable these potentially useful messages when debugging.

Fixes #204.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:34:52 +01:00
James O. D. Hunt
763a1b6265 logging: Remove unnecessary fields and use standard names
Ensure the entire codebase uses `"sandbox"` and `"container"` log
fields for the sandboxID and containerID respectively.

Simplify code where fields can be dropped.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
3323c087c5 logging: Add cid logging to update command
PR #468 neglected to update the `update` command.

Fixes #519.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
3d5ed6669c logging: Improve cid+sid logging
Refine the changes made on #468 by adding the containerID log field as
soon as possible (before *any* virtcontainers calls). This requires
that `setExternalLoggers()` be called more times, but it's essential to
ensure the correct log fields are available as early as possible.

Partially fixes #519.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
58448bbcb8 logging: Allow SetLogger to be called multiple times
Now that the `SetLogger()` functions accept a `logrus.Entry`, they can
access the fields that have already been set for the logger and
re-apply them if `SetLogger()` is called multiple times.

This fixes a bug whereby the logger functions -- which are necessarily
called multiple times [1] -- previously ended up applying any new fields
the specified logger contained, but erroneously removing any additional
fields added since `SetLogger()` was last called.

Partially fixes #519.

--
[1] - https://github.com/kata-containers/runtime/pull/468

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
029e7ca680 api: Change logger functions to accept a log entry
Rather than accepting a `logrus.FieldLogger` interface type, change all
the `SetLogger()` functions to accept a `logrus.Entry`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
dfb758a82d logging: Remove duplicate arch field in vc
As of #521, the runtime now adds the `arch` log field so
`virtcontainers` doesn't need to set it too.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
acdd0b8e68 logging: Split logging source into two fields
Don't use slash-delimited values in log fields - create two separate
log fields (`source` and `subsystem`) for clarity.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
c59394d3ed network: Make better use of log fields
Add key log information as log fields rather than free-format text.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:41 +01:00
James O. D. Hunt
a0be57f64f network: Always call network logger function
Rather than using the virtcontainers logger, always call the network
logger function.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 15:32:40 +01:00
Nitesh Konkar
eedacc1572 build_image.sh: OPTIND prevent unwanted word-splitting
shift $((OPTIND-1)) can be unsafe.To prevent unwanted
word-splitting all parameter expansions should be
double-quoted. Use the safe form for the command:
shift "$((OPTIND-1))"

Fixes: #109

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-07-30 19:55:37 +05:30
James O. D. Hunt
7897760a1c Merge pull request #200 from jodh-intel/dev-guide-add-standalone-details
docs: Add standalone details to dev guide
2018-07-30 14:24:58 +01:00
James O. D. Hunt
d4f233eca7 Merge pull request #105 from Weichen81/master
configs: Update arm64 kernel config to latest 4.14.x kernel
2018-07-30 14:02:24 +01:00
James O. D. Hunt
b9c2598a63 docs: Add standalone details to dev guide
Explain how to create an OCI bundle and launch the runtime directly.

Fixes #199.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-30 10:17:11 +01:00
Graham Whaley
0b63ec0b1e Dev: debug console: minor grammatical cleanups
Minor rewords, that read better to my eyes.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-28 10:27:29 +01:00
Graham Whaley
e90eabd454 Dev: console socket: Update the path to the socket
The debug console socket path looks to have moved from
the `sbs` dir to the `vm` dir. Update the docs to reflect
this.

Fixes: #202

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-28 10:20:13 +01:00
Eric Ernst
596bf31bdf Merge pull request #195 from morph027/docker-daemon-json
docs: add kata-runtime to Docker daemon.json
2018-07-27 19:19:02 -07:00
Eric Ernst
f4a7712795 Merge pull request #530 from kata-containers/revert-301-pre-addstorage-based-devmanager
revert: "virtcontainers: support pre-add storage for frakti"
2018-07-27 13:02:57 -07:00
Sebastien Boeuf
927487c142 revert: "virtcontainers: support pre-add storage for frakti"
This PR got merged while it had some issues with some shim processes
being left behind after k8s testing. And because those issues were
real issues introduced by this PR (not some random failures), now
the master branch is broken and new pull requests cannot get the
CI passing. That's the reason why this commit revert the changes
introduced by this PR so that we can fix the master branch.

Fixes #529

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-07-27 09:39:56 -07:00
morph027
6ef28deb96 docs: add kata-runtime to Docker daemon.json
Fixes: #484

Signed-off-by: Stefan Heitmüller <morphsen@gmx.com>
2018-07-27 12:20:20 +02:00
Peng Tao
cfbc974fec Merge pull request #521 from bergwolf/log
factory: add SetLogger API
2018-07-27 15:52:24 +08:00
zhangwei_cs
2c3215c018 Merge pull request #301 from WeiZhang555/pre-addstorage-based-devmanager
virtcontainers: support pre-add storage for frakti
2018-07-27 15:19:30 +08:00
Wei Chen
65315e9eba kernel: Trace kernel change of aarch64 config file
Update kata_config_version to trace the change of aarch64
config file update.

Change-Id: Ic70cf4bf2288fe3d9113e21c1d100cd51e4cc6a6
Signed-off-by: Wei Chen <wei.chen@arm.com>
2018-07-27 03:18:19 +00:00
Wei Chen
79c8eb20ff configs: Update arm64 kernel config to latest 4.14.x kernel
After upgrading the kernel to latest 4.14.x kernel, there are new
kconfig options that need users to select in install-kata-kernel.sh.
the prompt will block the script. We update this config file to give
user a good defined default config.

The new kconfig options are about, “Meltdown” and “Spectre”. So I
selected them to yes by default in this config file:
CONFIG_ARM64_ERRATUM_1024718=y
CONFIG_QCOM_FALKOR_ERRATUM_E1041=y
CONFIG_UNMAP_KERNEL_AT_EL0=y
CONFIG_HARDEN_BRANCH_PREDICTOR=y
CONFIG_ARM64_SSBD=y

Fixed #106

Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-07-27 03:18:19 +00:00
z00280905
b3015dda26 devices: fix typo
Fix typo.

Signed-off-by: z00280905 <zhangwei555@huawei.com>
2018-07-27 09:33:50 +08:00
Eric Ernst
2a670ce022 Merge pull request #522 from chavafg/topic/update-docker-version
versions: Update docker-ce to 18.06
2018-07-26 16:15:50 -07:00
Eric Ernst
8ed7e397e1 Merge pull request #90 from jcvenegas/build-image-fixes.sh
image build: Improve image generation
2018-07-26 11:36:44 -07:00
Jose Carlos Venegas Munoz
6fa5b7945e pkgs: image: Get image version from version.yaml
Build image with agent and osbuilder with master by default.

If want to build a release tag just use -v <version> and
will use that osbuilder and agent tag.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-26 13:04:23 -05:00
Salvador Fuentes
da77124898 versions: Update docker-ce to 18.06
Docker 18.06 was released last week, update our
supported docker to this new version.

Fixes: #510

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-07-26 10:52:43 -05:00
Sebastien Boeuf
c5075d08ed Merge pull request #517 from jcvenegas/issue-516-timeout-centos
agent: Increase timeout for check request.
2018-07-26 06:59:37 -07:00
James O. D. Hunt
5d2a95b515 Merge pull request #94 from Pennyzct/qemu
ci: refine qemu-options for arm64
2018-07-26 14:58:48 +01:00
Peng Tao
9a497fedf5 factory: add SetLogger API
So that we actually use the same logger as other packages when being
invoked by CLI.

Fixes: #520

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-26 20:56:31 +08:00
James O. D. Hunt
daa65a5526 Merge pull request #514 from gkennedy12/work
cli: add AMD support to kata-check
2018-07-26 13:28:14 +01:00
Wei Zhang
198a0695ab devices: add some test cases
Add test cases for device manager reworks.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-26 14:15:52 +08:00
Wei Zhang
8391b20805 devices: address some comments
Address some review comments:
* remove unnecessary rollback logics
* add vfio hot unplug handling.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-26 14:15:52 +08:00
Zhang Wei
04f4f528f7 devices: rename VFIODrive to VFIODev
Rename VFIODrive to VFIODev, also rename device interface "GetDeviceDrive()" to
"GetDeviceInfo()".

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-07-26 14:15:52 +08:00
Zhang Wei
daf5abce2d devices: remove unused functions
cleanup: remove ununsed device interface function "GetDeviceInfo()"

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-07-26 14:14:02 +08:00
Wei Zhang
1b062b3db4 unit-tests: fix unit tests
Fix #50

Fix unit tests

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-26 14:14:02 +08:00
Wei Zhang
7f5989f06c device-manager: refactor device manger
Fixes #50

This commit imports a big logic change:
* host device to be attached or appended now is sandbox level resources,
one device should bind to sandbox/hypervisor first, then container could
reference it via device's unique ID.
* attach or detach device should go through the device manager interface
instead of the device interface.
* allocate device ID in global device mapper to guarantee every device
has a uniq device ID and there won't be any ID collision.

With this change, there will some changes on data format on disk for sandbox
and container, these changes also make a breakage of backward compatibility.

New persist data format:
* every sandbox will get a new "devices.json" file under "/run/vc/sbs/<sid>/"
which saves detailed device information, this also conforms to the concept that
device should be sandbox level resource.
* every container uses a "devices.json" file but with new data format:
```
[
  {
    "ID": "b80d4736e70a471f",
    "ContainerPath": "/dev/zero"
  },
  {
    "ID": "6765a06e0aa0897d",
    "ContainerPath": "/dev/null"
  }
]
```
`ID` should reference to a device in a sandbox, `ContainerPath` indicates device
path inside a container.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-07-26 14:09:53 +08:00
Wei Zhang
c08a26397e devices: don't use drivers package directly.
Instead of using drivers.XXXDevice directly, we should use exported
struct from device structure. package drivers should be internal struct
and other package should avoid read it's struct content directly.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-26 14:09:53 +08:00
Wei Zhang
b54df7e127 devices: remove interface VhostUserDevice
The interface "VhostUserDevice" has duplicate functions and fields with
Device, so we can merge them into one interface and manage them with one
group of interfaces.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-26 11:33:28 +08:00
Wei Zhang
2885eb0532 devices: use device manager to manage all devices
Fixes #50

Previously the devices are created with device manager and laterly
attached to hypervisor with "device.Attach()", this could work, but
there's no way to remember the reference count for every device, which
means if we plug one device to hypervisor twice, it's truly inserted
twice, but actually we only need to insert once but use it in many
places.

Use device manager as a consolidated entrypoint of device management can
give us a way to handle many "references" to single device, because it
can save all devices and remember it's use count.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
2018-07-26 11:33:28 +08:00
Jose Carlos Venegas Munoz
5fc7219315 agent: check: Increase timeout check request.
In some slow enviroments the agent is taking more than 5 seconds
to start to serve grpc request.

This was reproducible in a Centos VM with 4 cpus running 8 pods in
parallel.

Fixes: #516

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-25 21:51:32 -05:00
Jose Carlos Venegas Munoz
12e1911aab kata-agent: Improve error message.
If the grpc connection check fails we only return the grpc error.
To make more clear what failed add more information to the error.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-25 20:25:23 -05:00
Archana Shinde
4793a80c0a Merge pull request #198 from egernst/gcp
install: gce: show should be describe for image inspection
2018-07-25 11:12:44 -07:00
Eric Ernst
443d7d9160 install: gce: show should be describe for image inspection
s/show/describe

Fixes: #197

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-07-25 10:59:07 -07:00
George Kennedy
4326ea874a cli: add AMD support to kata-check
Added support for identifying AMD CPUs in the `kata-check` CLI command.

Signed-off-by: George Kennedy <george.kennedy@oracle.com>

Fixes #476.
2018-07-25 12:05:47 -04:00
James O. D. Hunt
67b5841153 Merge pull request #512 from sboeuf/disable_codecov_patch
codecov: Explicitly disable codecov/patch coverage
2018-07-25 11:12:56 +01:00
Penny Zheng
f275127791 ci: refine qemu-options for arm64
a few qemu options generated by configure-hypervisor.sh were only
suitable for amd64, leading compilation err in aarch64.

Fixes: #92

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <Wei.Chen@arm.com>
2018-07-25 08:47:11 +00:00
Sebastien Boeuf
0e5f6b27e9 codecov: Explicitly disable codecov/patch coverage
Because codecov coverage regarding the patch is very inconsistent,
this commit introduces codecov.yml config file in order to disable
this check.

Fixes #511

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-07-24 11:20:07 -07:00
Eric Ernst
66e165a2f9 Merge pull request #79 from jcvenegas/build-kernel
kernel: Add script to setup, build and install a kernel for Kata.
2018-07-24 08:17:13 -07:00
Eric Ernst
cd133dc9cb Merge pull request #509 from lifupan/kata-integration
virtconainers: rollback the NetNs when createNetwork failed
2018-07-24 08:13:16 -07:00
Eric Ernst
20066270b9 Merge pull request #503 from bergwolf/container
sandbox: change container slice to a map
2018-07-24 08:10:39 -07:00
Haomin Tsai
8939fd802f Merge pull request #351 from woshijpf/fix-no-kata-agent
virtcontainers: process the case that kata-agent doesn't start in VM
2018-07-24 19:47:08 +08:00
flyflypeng
2993cb3dd4 virtcontainers: fix kata-agent fail to start
If kata-agent doesn't start in VM, we need to do some rollback
operations to release related resources.

add grpc check() to check kata-agent is running or not

Fixes: #297

Signed-off-by: flyflypeng <jiangpengfei9@huawei.com>
2018-07-25 00:54:33 +08:00
flyflypeng
7103c4f14a virtcontainers: add qemu process rollback
If some errors occur after qemu process start, then we need to
rollback to kill qemu process

Fixes: #297

Signed-off-by: flyflypeng <jiangpengfei9@huawei.com>
2018-07-24 21:36:57 +08:00
flyflypeng
c2651a85a8 virtcontainers: add kata-proxy rollback
If some errors occur after kata-proxy start, we need to
rollback to kill kata-proxy process

Fixes: #297

Signed-off-by: flyflypeng <jiangpengfei9@huawei.com>
2018-07-24 21:36:57 +08:00
flyflypeng
daebbd1e93 virtcontainers: add rollback to remove sandbox network
If error occurs after sandbox network created successfully, we need to rollback
to remove the created sandbox network

Fixes: #297

Signed-off-by: flyflypeng <jiangpengfei9@huawei.com>
2018-07-24 21:34:58 +08:00
Peng Tao
99954d5025 Merge pull request #501 from bergwolf/qemu
virtcontainers: keep qmp connection whenever possible
2018-07-24 13:23:32 +08:00
Peng Tao
f9d50723b9 sandbox: change container slice to a map
ContainerID is supposed to be unique within a sandbox. It is better to use
a map to describe containers of a sandbox.

Fixes: #502

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-24 12:17:02 +08:00
fupan
c6fda444b7 virtconainers: rollback the NetNs when createNetwork failed
When createNetwork failed, cleanup the NetNs if it created.

Fixes: #508

Signed-off-by: fupan <lifupan@gmail.com>
2018-07-24 12:09:13 +08:00
Peng Tao
b244410443 Merge pull request #505 from bergwolf/create_factory
cli: create vm factory if failed to load existing one
2018-07-24 10:43:41 +08:00
Peng Tao
8bdceb92be Merge pull request #496 from grahamwhaley/20180713_clean_tests
Ensure tests clean their tempfiles
2018-07-24 10:38:05 +08:00
Jose Carlos Venegas Munoz
ea00f29133 config: Add missing config needed for Istio.
Istio require additional networking configuration.

Suggested-by: Sebastien Boeuf <sebastien.boeuf@intel.com>

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-23 17:03:07 -05:00
Jose Carlos Venegas Munoz
933c2031a4 ci: Test kata on new Kernel changes.
Add testing to make sure new kernel changes does not break Kata.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-23 17:02:38 -05:00
Jose Carlos Venegas Munoz
7b5d62fb74 ci: Fix kernel config version check.
Make sure kernel config version is validated on test.

Also, increse Kata Kernel config version.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-23 17:02:23 -05:00
Jose Carlos Venegas Munoz
03fc1e3e9d docs: kernel: Add README.
Add README to explain how to build kernel

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-23 17:01:58 -05:00
Eric Ernst
12d2049579 Merge pull request #188 from jodh-intel/doc-reqs-filenames
docs: Requirements for filenames and commands
2018-07-23 14:59:11 -07:00
Jose Carlos Venegas Munoz
139ed64bf3 kernel: Add script to build kernel
Today we have instructions to build the kernel
but there are a lot of manual steps to get one kernel.

This tries to automate the process to setup a kernel
for kata.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-23 16:59:05 -05:00
Eric Ernst
21b4e09ccc Merge pull request #182 from grahamwhaley/20180629_journald_setup
Dev: Document journald limitations and workarounds
2018-07-23 14:58:33 -07:00
Eric Ernst
473c450c5e Merge pull request #190 from jodh-intel/doc-reqs-images
docs: Document image requirements
2018-07-23 14:55:49 -07:00
Graham Whaley
50b445cf35 cli: tests: Clarify who cleans up tmpdir
Add a comment to clarify that the caller of
testRunContainerSetup() cleans up the tmpdir.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-23 17:32:52 +01:00
Graham Whaley
73c8286c7e cli: tests: remove the tmpdir to the config.json
We were defer removing the temporary config.json files
but not the tmpdir path we had created to store them in.
Expose that path out so we can defer removeall it.

Fixes: #480

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-23 17:32:52 +01:00
Graham Whaley
d6d38dae13 cli: update_test: defer remove tmpfile
Ensure we remove the tmpfile used for testing.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-23 17:32:52 +01:00
Peng Tao
d69fbcf17f sandbox: add stateful sandbox config
When enabled, do not release in memory sandbox resources in VC APIs,
and callers are expected to call sandbox.Release() to release the in
memory resources.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-23 09:54:02 +08:00
Peng Tao
4656a72b92 cli: create vm factory if failed to load existing one
When vm factory is enabled, create vm factory automatically
during creation.

Fixes: #504

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-23 08:46:53 +08:00
Peng Tao
7a6f205970 virtcontainers: keep qmp connection when possible
For each time a sandbox structure is created, we ensure s.Release()
is called. Then we can keep the qmp connection as long as Sandbox
pointer is alive.

All VC interfaces are still stateless as s.Release() is called before
each API returns.

OTOH, for VCSandbox APIs, FetchSandbox() must be paired with s.Release,
the same as before.

Fixes: #500

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-23 08:37:55 +08:00
Peng Tao
c9bd12aa19 qemu: cleanup qmp channel setup and teardown
Unify qmp channel setup and teardown. This also fixes the issue that
sometimes qmp pointer is not reset after qmp is shutdown.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-23 08:36:58 +08:00
Lai Jiangshan
14d25b82a4 Merge pull request #303 from bergwolf/vmfactory
add vm factory support
2018-07-22 06:47:34 +08:00
Peng Tao
0a11230bfb factory: add UTs
Add UTs to all factory components.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 12:44:58 +08:00
Peng Tao
7cdc0fe912 cli: do not set ip based kernel parameter
For one thing, it is not used by any kata components. For another thing,
it breaks vm factory hypervisor config check.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 12:44:58 +08:00
Peng Tao
0309e59cf8 cli: add vm factory management subcommand
Add enable_template option to the config file.
When it is set, enable the vm template factory.

cache factory cannot be used by kata cli directly because
it requires a running daemon to maintain the cache VMs.

`kata-runtime factory init` would initialize the vm factory and
`kata-runtime factory destroy` would destroy the vm factory.

When configured, a vm factory is loaded before creating new sandboxes.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 12:44:58 +08:00
Peng Tao
a7d888febc virtconainers: add SetFactory API
Add SetFactory to allow virtcontainers consumers to set a vm factory.
And use it to create new VMs whenever the factory is set.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 12:44:58 +08:00
Peng Tao
bdd5c66fc5 virtcontainers: add vm factory support
Add vm factory support per design in the VM Factory plugin section.
The vm factory controls how a new vm is created:

1. direct: vm is created directly
2. template: vm is created via vm template. A template vm is pre-created
   and saved. Later vm is just a clone of the template vm so that they
   readonly share a portion of initial memory (including kernel, initramfs
   and the kata agent). CPU and memory are hot plugged when necessary.
3. cache: vm is created via vm caches. A set of cached vm are pre-created
   and maintained alive. New vms are created by just picking a cached vm.
   CPU and memory are hot plugged when necessary.

Fixes: #303

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 12:44:58 +08:00
Peng Tao
8dda2dd7a5 virtcontainers: add a vm abstraction layer
As representation of a guest without actual sandbox attached to it.
This prepares for vm factory support.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 12:44:58 +08:00
Peng Tao
28b6104710 qemu: prepare for vm templating support
1. support qemu migration save operation
2. setup vm templating parameters per hypervisor config
3. create vm storage path when it does not exist. This can happen when
an empty guest is created without a sandbox.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 12:44:58 +08:00
Peng Tao
057214f0fe agent: prepare for vm factory
There are a few changes we need on kata agent to introduce vm factory
support:
1. decouple agent creation from sandbox config
2. setup agent without creating a sandbox
3. expose vm storage path and share mount point

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 12:44:55 +08:00
Peng Tao
7f20dd89a3 hypervisor: cleanup valid method
The boolean return value is not necessary.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 10:49:25 +08:00
Peng Tao
18e6a6effc hypervisor: decouple hypervisor from sandbox
A hypervisor implementation does not need to depend on a sandbox
structure. Decouple them in preparation for vm factory.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 10:49:25 +08:00
Peng Tao
4ac675453f qemu: remove append9PVolumes
It is not used and we actully cannot append multiple 9pfs volumes to
a guest.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-19 10:49:25 +08:00
Graham Whaley
e0010619fc Merge pull request #495 from bergwolf/agent_debug
kata_agent: print request details
2018-07-18 17:22:36 +01:00
Peng Tao
81c073f67d Merge pull request #458 from harche/without_devices
virtcontainers: Add support for ephemeral volumes
2018-07-18 15:06:09 +08:00
Peng Tao
5d6da3517a kata_agent: print request details
It helps tracking each request that is sent and we can match with the
one printed by kata-agent on the guest side to find out any stack
requests in the middle.

Fixes: #494

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-18 11:26:50 +08:00
Harshal Patil
b821a5df4c virtcontainers: Add support for ephemeral volumes
Ephemeral volumes should not be passed at 9pfs mounts.
They should be created inside the VM.

This patch disables ephemeral volumes from getting
mounted as 9pfs from the host and instead a corresponding
tmpfs is created inside the VM.

Fixes : #61

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-07-18 07:41:36 +05:30
Julio Montes
a9fde8201e Merge pull request #96 from nitkon/patch-1
Kata-deploy: scrub for grammar and typos in README
2018-07-17 08:20:19 -05:00
Peng Tao
545fe0c873 Merge pull request #490 from kata-containers/makefile-fix
makefile: update PREFIX to remove redundant slash
2018-07-17 17:44:21 +08:00
Archana Shinde
555a58a807 Merge pull request #101 from kata-containers/kata-deploy-container-update
kata-deploy: update to use katadocker container image
2018-07-16 16:40:41 -07:00
Eric Ernst
c72a720b97 makefile: update PREFIX to remove redundant slash
Fixes: #488

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-07-16 11:01:33 -07:00
Julio Montes
77cbea5a42 Merge pull request #475 from grahamwhaley/20180706_env_json
kata-env: Add ability to output as JSON
2018-07-16 07:38:50 -05:00
Eric Ernst
14e34ee27e kata-deploy: update to use katadocker container image
Now that initial files for kata-deploy have merged, we
have an initial image on dockerhub.  s/egernst/katadocker

Fixes: #100

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-07-13 15:32:52 +00:00
Julio Montes
1434a3c5b0 Merge pull request #89 from devimc/topic/snap
snap: improve README and Makefile
2018-07-13 09:34:10 -05:00
nitkon
11d9609ce9 Kata-deploy: scrub for grammar and typos in README
Fixes:  #95

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-07-13 13:54:48 +05:30
Archana Shinde
deb38b915e Merge pull request #65 from kata-containers/introduce-kata-deploy
kata-deploy: add support for deploying Kata on K8S
2018-07-12 14:42:04 -07:00
Archana Shinde
02056b613e Merge pull request #482 from chavafg/topic/update-cri-o
versions: Update CRI-O supported version
2018-07-12 10:30:16 -07:00
Salvador Fuentes
bb0bab2683 versions: Update CRI-O supported version
Some test fixes were introduced into the 1.9 and 1.10 branches
of cri-o. These fixes will help us minimize random failures.

Fixes #481.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-07-12 09:47:03 -05:00
Julio Montes
81a41050b8 snap: improve README and Makefile
Address code review of pr #82

fixes #88

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-12 09:16:15 -05:00
Eric Ernst
c2024c9f87 Merge pull request #192 from scooley/kube-anchor
docs: update kube anchor in distro install guides
2018-07-11 13:59:22 -07:00
Eric Ernst
976b883501 kata-deploy: cleanup, updated for 1.1.0
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-07-11 20:49:47 +00:00
Sarah
748acc6683 docs: update kube anchor in distro install guides.
Fixes: #184

Signed-off-by: Sarah <scooley@microsoft.com>
2018-07-11 12:57:00 -07:00
Graham Whaley
bd6db3031a kata-env: tests: add JSON out/in verify test
Add a test to ensure the JSON output passes the same
parameter check and write/re-read test as the TOML one.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-11 17:54:11 +01:00
Graham Whaley
e45f591219 kata-env: Do not leave temp files on test
One of the test cases was not defer removing the tmpfile
it uses. Add that defer.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-11 17:14:18 +01:00
Graham Whaley
1f8f7629a0 kata-env: Fix test cases for kata-env JSON
With the addition of the JSON kata-env output, we need
to fix up the tests:
 - add a test for the JSON flag
 - fix the format/layout of the other tests to take into
  account the change in function API and the additon of a
  flagset to the cmdline ctx.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-11 17:12:36 +01:00
Archana Shinde
8af3dd4511 Merge pull request #479 from grahamwhaley/20180710_no_exit_check
Fix no exit static check
2018-07-11 08:30:30 -07:00
Eric Ernst
0be8a5cb03 Merge pull request #86 from jcvenegas/update-repository-version
Update repository version
2018-07-10 14:43:47 -07:00
Eric Ernst
e642e32ed5 kata-deploy: add support for deploying Kata on K8S
A Dockerfile is created and reference daemonsets are also
provided for deploying Kata Containers onto a running Kubernetes
cluster. A few daemonsets are introduced:

1) runtime-labeler: This daemonset will create a label on each node in
the cluster identifying the CRI shim in use. For example,
container-runtime=crio or container-runtime=containerd.

2) crio and containerd kata installer: Assuming either CRIO or
containerd is the CRI runtime on the node (determined based on label
from (1),, either the crio or containerd variant will execute.  These daemonsets
will install the VM artifacts and host binaries required for using
Kata Containers.  Once installed, it will add a node label kata-runtime=true
and reconfigure either crio or containerd to make use of Kata for untrusted workloads.
As a final step it will restart the CRI shim and kubelet.  Upon deletion,
the daemonset will remove the kata binaries and VM artifacts and update
the label to kata-runtime=cleanup.

3) crio and containerd cleanup: Either of these two daemonsets will run,
pending the container-runtime label value and if the node has label
kata-runtime=cleanup.  This daemonset simply restarts crio/containerd as
well as kubelet. This was not feasible in a preStepHook, hence the
seperate cleanup step.

An RBAC is created to allow the daemonsets to modify labels on the node.

To deploy kata:
kubectl apply -f kata-rbac.yaml
kubectl apply -f kata-deploy.yaml

To remove kata:
kubectl delete -f kata-deploy.yaml
kubectl apply -f kata-cleanup.yaml
kubectl delete -f kata-cleanup.yaml
kubectl delete -f kata-rbac.yaml

This initial commit is based on contributions by a few folks on
github.com/egernst/kata-deploy

Also-by: Saikrishna Edupuganti <saikrishna.edupuganti@intel.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
Signed-off-by: Jon Olson <jonolson@google.com>
Signed-off-by: Ricardo Aravena <raravena@branch.io>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-07-10 18:52:05 +00:00
Graham Whaley
031632d5b0 ci: no-exit: Do not run no-exit check on test files
The test files do not have access to our app level
exit() function, and are thus OK to call os.Exit() if
they need. Skip them from the check.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-10 17:04:27 +01:00
Graham Whaley
63c06bee70 kata-env: Add ability to output as JSON
Having a direct JSON output for kata-env will help record
results in our CIs in some instances. Add that ability with
a kata-env command line extension.

Fixes: #474

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-10 16:06:53 +01:00
Graham Whaley
62495d45be ci: no-exit: Allow path override for os.Exit check
Allow the path being checked by the os-no-exit script to be
passed in, and update the Makefile to use that to check the
current code paths of the cli and virtcontainers.

Fixes: #477

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-10 15:29:34 +01:00
Graham Whaley
6268ba4aa3 ci: no-exit: Skip check if no files to check
If we find no files to check, gracefully quit the test.
Formerly, if the list was empty we ended up trying to read
from stdin, and thus hung.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-10 15:29:34 +01:00
Graham Whaley
1c453a372e ci: no-exit: Document and echo what the check is
Make it clearer why we run the check.
Make it announce itself.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-10 15:29:34 +01:00
Sebastien Boeuf
ff7b4f6ed7 Merge pull request #473 from lifupan/hyper-integration
api: To stop its monitor after a sandbox paused
2018-07-09 19:28:01 -07:00
Sebastien Boeuf
cd842afca4 Merge pull request #417 from nitkon/maxmem
virtcontainers: Set ppc64le maxmem depending on qemu version
2018-07-09 12:07:12 -07:00
Jose Carlos Venegas Munoz
4eb3a3dcd1 test: Add test update-repository-version.sh
Add some basic test to verify the script works.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-09 13:14:47 -05:00
Jose Carlos Venegas Munoz
d9736af0ba docs: Add information about new release tool.
Add docs about the version bump script.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-09 13:14:47 -05:00
Jose Carlos Venegas Munoz
4fef836ffd release: Add make target to bump repos.
Add a target to bump all repos in one command.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-09 13:14:47 -05:00
Jose Carlos Venegas Munoz
e12f1df807 release: add script to bump repositories
Add script that will help to bump versions for all the projects.

Fixes: #49

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-09 13:14:47 -05:00
Sebastien Boeuf
5e17044c23 Merge pull request #464 from jodh-intel/pass-sandbox-to-proxy
proxy: Pass sandbox to proxy
2018-07-09 10:13:52 -07:00
Sebastien Boeuf
a8952fb79b Merge pull request #470 from bergwolf/memory-hotplug
hypervisor/qemu: add memory hotplug support
2018-07-09 09:56:19 -07:00
Sebastien Boeuf
f084384501 Merge pull request #462 from Pennyzct/versions
ci: add specfic image-type for aarch64
2018-07-09 09:24:04 -07:00
Graham Whaley
2540bb9569 Dev: Document journald limitations and workarounds
Journald, by default on some systems, will rate limit log messages,
and in the case of our 'enable full debug', will likely drop some
of our debug.
Document how to identify if this is happening, and how to configure
`systemd-journald` appropriately.

Fixes: #181

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-09 10:52:53 +01:00
Peng Tao
66a3e812f2 hypervisor/qemu: add memory hotplug support
So that we can add more memory to an existing guest.

Fixes: #469

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-09 15:29:50 +08:00
Penny Zheng
67de5d4347 ci: reconstructure image-type and initrd for architecture-independant
as default image-type and initrd weren't for non-x86_64 arch,
reconstructuring them to be architecture-specific.

Fixes: #461

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-09 02:27:01 +00:00
fupan
114482ed99 api: To stop its monitor after a sandbox paused
After the sandbox is paused, it's needed to stop its monitor,
Otherwise, its monitors will receive timeout errors if it is
paused for a long time, thus its monitor will not tell it's a
crash caused timeout or just a paused timeout.

Fixes: #472

Signed-off-by: fupan <lifupan@gmail.com>
2018-07-06 19:40:43 +08:00
James O. D. Hunt
a38b251120 tests: Refactor CC proxy test for Kata
Reworked `TestCCProxyStart` to create a generic `testProxyStart()` that
is now used for testing both CC and Kata proxies.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-06 11:52:22 +01:00
James O. D. Hunt
23eb13f23a proxy: Pass sandbox to proxy
Add the `-sandbox` option when launching the proxy. This isn't strictly
required by the proxy, but is extremely useful for log analysis to allow
log entries to be matched to sandboxes as the proxy will add a
`sandbox` field in each log entry.

Fixes #463.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-06 11:52:22 +01:00
James O. D. Hunt
86cde89809 docs: Requirements for filenames and commands
Explain how to handle filenames and command names in documentation.

Fixes #187.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-06 09:35:55 +01:00
James O. D. Hunt
1344bc5f84 docs: Document image requirements
Update the documentation requirements on the topic of images.

Fixes #189.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-06 07:48:08 +01:00
Jose Carlos Venegas Munoz
540d3a26be Merge pull request #82 from devimc/topic/snap
snap: add yaml to build snap image
2018-07-05 10:19:54 -05:00
Peng Tao
0646a39ff0 vendor: fix dep warning and update yamux dependency
I got following warning after upgrading dep tool:

Warning: the following project(s) have [[constraint]] stanzas in Gopkg.toml:

  ✗  github.com/hashicorp/yamux

However, these projects are not direct dependencies of the current project:
they are not imported in any .go files, nor are they in the 'required' list in
Gopkg.toml. Dep only applies [[constraint]] rules to direct dependencies, so
these rules will have no effect.

Either import/require packages from these projects so that they become direct
dependencies, or convert each [[constraint]] to an [[override]] to enforce rules
on these projects, if they happen to be transitive dependencies,

So let's convert constraint to override over yamux. In the meanwhile,
update the yamux vendor. Full commit list:

4c2fe0d (origin/b-consul-3040) Dont output keepalive error when the session is closed
f21aae5 Make sure to drain the timer channel on defer, and a clarifying comment
601ccd8 Make receive window update logic a bit cleaner
02d320c Uses timer pool in sendNoWait, like in waitForSendErr
cf433c5 window update unit test for partial read; benchmark large buffer
ca8dfd0 improve memory utilization in receive buffer, fix flow control
683f491 Fix race around read and write deadlines in Stream (#52)
40b86b2 Add public session CloseChan method (#44)

Note that commit 4c2fe0d might also help kata-containers/agent/issues/231.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-05 15:31:53 +08:00
Peng Tao
0f20b6b81b vendor: update govmm changes
To include vm factory related commits. Full list:
54caf78 (mine/templating, templating) qmp: add hotplug memory
e66a9b4 qemu: add appendMemoryKnobs helper
8aeca15 qmp: add migrate set arguments
a03d496 qmp: add set migration capabilities
0ace417 qemu: allow to set migration incoming
723bc5f qemu: allow to create a stopped guest
283d7df qemu: add file backed memory device support

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-07-05 15:25:19 +08:00
James O. D. Hunt
b2bec3362b Merge pull request #449 from jodh-intel/add-runtime-cli-cmd-to-vc-log
main: Pass runtime CLI command to vc logger
2018-07-05 08:17:54 +01:00
James O. D. Hunt
830d50e9c5 main: Pass runtime CLI command to vc logger
Add the runtime CLI command name to the virtcontainers logger so that it
is clear when reading virtcontainers log entries which runtime command
they refer to.

Fixes #448.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-05 07:08:02 +01:00
James O. D. Hunt
47dfb7d6da Merge pull request #466 from jodh-intel/pass-sandbox-id-to-agent
qemu: Pass sandboxID to agent for logging purposes
2018-07-05 06:49:12 +01:00
James O. D. Hunt
2865dc21aa Merge pull request #468 from jodh-intel/improve-cid+sid-logging
logging: Reset external loggers when cid+sid available
2018-07-05 06:47:26 +01:00
Julio Montes
38a82d725e snap: add yaml to build snap image
the yaml file is the recipe to build a snap image
with all Kata Containers components inside.

fixes #81

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-07-04 15:59:33 -05:00
Julio Montes
ce470dc8af Merge pull request #87 from jcvenegas/kata-1.1.0
Kata 1.1.0
2018-07-04 15:52:04 -05:00
Jose Carlos Venegas Munoz
ad6faf0d59 ci: Skip pkgs test on CI.
The zypper still hangs in the CI.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 15:26:17 -05:00
Jose Carlos Venegas Munoz
9e93b510e2 Makefile: fix test path.
obs scripts are now in a new directory.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:32:07 -05:00
Jose Carlos Venegas Munoz
122a8cc198 pkgs: build add flag to do local builds.
Add PUSH flag to to do a local build.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
8e558bed75 pkgs: pkglib: Clean OBS repository.
We populate all the conent of a OBS project.
Lets remove after we checkout to the OBS project.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
2d0c9cc4f7 scripts: Fix qemu build.
Fix build when we are not building as static qemu.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
4eae71e4b3 pkgs: kernel: add symlink to patches.
Packaging scripts search for patches in a directory
called 'patches'. We store the kernel patches in a diferent place
to make easy to mantain them.

Lets do a symlink to allow the automation find the patches.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
5dfc0c1f23 kata: 1.1.0 hashes
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
69e4f93358 pkgs: sort versions variables.
Make easy to identify variables.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
a4355a7104 pkgs: Make constent variables names for versions.
Add `kata` prefix to versions variables.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
1a8fd811db versions: Update to 1.1.0
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
a26187069c versions: Update to master
update packages to master

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
6396e7c6d6 pkgs: Add commit to build.
We dont have commit when we build the pkg.
Lets define the COMMIT variable to kwnow the commit from each project.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
90c62f8da1 pkgs: runtime: use DESTDIR variable.
Use DESTDIR to install kata-runtime.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
2a55deb30d pkgs: runtime: Allow to build any commit.
Allow to build any commit instead of a tag.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
24ff32d833 pkgs: ksm-throttler: allow to build any commit
Build any commit not only a tag.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
37864534cf pkgs: shim: Allow build any commit
Allow to build any commit

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
8552b5cca9 dockerfile: pkgs: Installation vebose
the installation takes a long time without print anything
add verbose to know is doing something.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
51a3c71dc1 proxy: Allow build any commit
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Jose Carlos Venegas Munoz
749b749924 pkglib: Make default alpha
We should point to alpha to allow test scripts.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 14:30:41 -05:00
Julio Montes
dfed5a5a6d Merge pull request #442 from lifupan/hyper-integration
api: To watch the vm console in FetchSandbox api
2018-07-04 13:37:47 -05:00
Jose Carlos Venegas Munoz
5bdad695b2 Merge pull request #83 from jcvenegas/kernel-tag
release: tag: tag kernel build
2018-07-04 12:52:03 -05:00
Jose Carlos Venegas Munoz
db567a00f3 Merge pull request #140 from nitkon/os-platform-matrix
rootfs.sh: Add Platform-OS matrix to help page
2018-07-04 12:16:29 -05:00
James O. D. Hunt
0e966255d1 Merge pull request #174 from jodh-intel/gce-tweaks
GCE tweaks
2018-07-04 17:38:06 +01:00
Jose Carlos Venegas Munoz
ae1db5650c Merge pull request #131 from stefanha/initrd-builder-idempotency
initrd-builder: make initrd_builder.sh idempotent
2018-07-04 10:54:37 -05:00
Nitesh Konkar
adb3f57a6b rootfs.sh: Add Platform-OS matrix link to help page
Fixes: #139

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-07-04 20:54:45 +05:30
Jose Carlos Venegas Munoz
381951ea9d release: tag: tag kernel build
On each release we want to know the kernel config what was used.
Lets create a tag ${kata_verson}-kernel-config.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-04 10:08:27 -05:00
Graham Whaley
86d2ab1938 Merge pull request #129 from nitkon/master
travis: Enable travis ci for ppc64le
2018-07-04 15:47:25 +01:00
James O. D. Hunt
64e2ca35dd logging: Reset external loggers when cid+sid available
Once `containerID` and `sandboxID` fields are available, re-register
the logger with the external packages to ensure they too display these
important fields.

Fixes #467.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-04 14:49:58 +01:00
James O. D. Hunt
03d4d4937c logging: Add function to handle external loggers
Created a new `setExternalLogger()` which sets (or resets) the logger
used by the external packages which allow a logger to be specified.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-04 14:48:43 +01:00
James O. D. Hunt
79e8da0675 create: Remove redundant logging code
Don't add the container ID as a log fields as it is already a field
(added on #453).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-04 14:47:19 +01:00
James O. D. Hunt
793a22083c qemu: Pass sandboxID to agent for logging purposes
Add a kernel command-line option that the agent can read to determine
the sandbox ID of the VM. It can use this to create a `sandbox=` log
field for improved log analysis.

Fixes #465.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-04 13:50:06 +01:00
James O. D. Hunt
c556f1853f Merge pull request #186 from nitkon/master
dev-guide: Mention distro support for ppc64le for rootfs creation
2018-07-04 13:45:22 +01:00
Nitesh Konkar
26d747fba9 dev-guide: Add note for rootfs platform-distro matrix
Fixes: #185

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-07-04 17:45:15 +05:30
Graham Whaley
49ac33ec5c Merge pull request #137 from nitkon/comp-matrix
docs: Add Platform-Compatibility matrix
2018-07-04 13:11:07 +01:00
Nitesh Konkar
1e5e915f5a docs: Add Platform-Compatibility matrix
Fixes: #136

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-07-04 15:51:07 +05:30
Graham Whaley
94508c5af4 Merge pull request #80 from jcvenegas/os-builder-tag
tag_repos: Make sure osbuilder is updated.
2018-07-04 09:30:55 +01:00
Graham Whaley
67e7ba3584 Merge pull request #126 from jcvenegas/run-not-add-go
rootfs: docker: Reduce build time by not reinstalling go
2018-07-04 09:17:08 +01:00
Jose Carlos Venegas Munoz
25e9f01fb2 rootfs: docker: Reduce build time by not reinstalling go
Using docker we always add (ADD) the go tarball. But we can avoid do it
all the time if we install Go using RUN dockerfile instruction.

Use RUN to avoid repeat steps already done in dockerfile.

Fixes: #125

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-03 13:30:04 -05:00
Jose Carlos Venegas Munoz
b9b9410b83 Merge pull request #135 from jodh-intel/ci-add-make-for-ubuntu
CI: Install make on Ubuntu
2018-07-03 10:38:42 -05:00
James O. D. Hunt
abb559d52c CI: Install make on Ubuntu
Fix CI build failures on Ubuntu 16.04 due to `make` not being installed
before the static check script runs by:

- Installing make explicitly on Ubuntu.
- Moving the static-check script after the package install setup phase.

Fixes #134.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-07-03 14:30:52 +01:00
Julio Montes
7a88a7c887 Merge pull request #119 from jcvenegas/1.1.0-branch-bump
# Kata Containers 1.1.0
2018-07-02 11:05:16 -05:00
Julio Montes
bf1cf684f5 Merge pull request #437 from jcvenegas/1.1.0-branch-bump
# Kata Containers 1.1.0
2018-07-02 11:04:53 -05:00
Jose Carlos Venegas Munoz
36cc400656 release: Kata Containers 1.1.0
- versions: Update cri-o to fix race condition test.
- network: Add test for VhostUserEndpoint Attach()
- logging: Add containerID and sandboxID to all log calls
- versions: Update kernel to version 4.14.51
- network: Use pointer for VhostUserNetDevice for Attach
- [RFC] makefile: honor DESTDIR flag.
- cli: kata-check if SMT is off on POWER8 systems
- virtcontainer : sconstification of constifiable vars
- ci: Fix static checks call.
- kata_agent: fix connection race
- test: supplement test cases for kata-check and kata-env in Arm64
- qemu: clean up qmp channel
- sandbox: expose share sandbox pidns setting
- versions: update supported docker version
- cli: add no-pivot flag to be compatible with docker in ramdisk
- virtcontainers : fix shared dir resource remaining
- docs: update debug runtime link
- Versions: Add CNI plugins version
- network: Always bind back physical interfaces
- subsystem: cli
- docs: fix invalid urls
- shm: Create shared /dev/shm
- docs: Fix invalid URLs
- CI: Enable Travis-CI for linux-ppc64le
- Fix golint ppc64le issues and eventually Travis-CI
- cpuinfo/arm64: Refine CPUInfo in Arm64
- docs: Update README with Power Support
- ppc64le: Restrict maxmem to avoid HTAB allocation failure
- make sure kataAgent/createContainer can decode old specs.Spec
- arch/arm64: Fix ARM64 build
- virtcontainers: Remove unnecessary kernel parameters for ppc64le
- Enable Kata container on ppc64le arch
- unittest: tiny fix for incorrect parameters
- Update the README.md so showing that containerd is supported
- Fix pause-remove container
- virtcontainers/api: use RW lock to update containers
- Share pid namespace
- config: Show which config file loaded

150bcaf network: Add test for VhostUserEndpoint Attach()
aeea3f6 versions: Update cri-o to fix racy test.
a3ce121 logging: Add containerID and sandboxID to all log calls
510b333 network: Use pointer for VhostUserNetDevice for Attach
44c8901 versions: Update kernel to version 4.14.51
f890ffd cli: kata-check if SMT is off on POWER8 systems
9d709cd ci: Fix static checks call.
ee33245 kata_agent: fix connection race
f2096f1 test: supplement test cases for kata-check and kata-env in Arm64
39bc5ab makefile: honor DESTDIR flag.
2b94252 sandbox: expose share sandbox pidns setting
8f329db qemu: clean up qmp channel
2d65499 virtcontainer: sconstification of constifiable vars
6b496e4 cli: add no-pivot flag to be compatible with docker in ramdisk
59adb6e versions: update supported docker version
8a6d383 virtcontainers : fix shared dir resource remaining
deaf1e3 docs: update debug runtime link
50579d0 Versions: Add CNI plugins version
a31dd49 cni: Use the vendored version of CNI plugins to install binaries
0806dcc network: Drop mounted parameter in call to deleteNetNS
f2d9632 network: Always bind back physical interfaces
45d0816 docs: fix invalid urls
7069045 subsystem: cli
c2397a0 CI: Enable Travis-CI for x86 linux and linux-ppc64le
d6b956a cli: Add kata-check_ppc64le_test file
4824669 cli: Fix TestCheckCLIFunctionFail failure on ppc64le
bb0488e virtcontainers: Fix comment causing golint issue
4d470e5 shm: Create shared /dev/shm
92470fb docs: Fix invalid URLs
44b9950 docs: Update README with Power Support
7757dce cpuinfo/arm64: Refine CPUInfo in Arm64
3b20aeb ppc64le: Restrict maxmem to avoid HTAB allocation failure
2796b19 virtcontainers: Remove unnecessary kernel parameters for ppc64le
6e161a2 arch/arm64: Fix ARM64 build
9a0434d virtcontainers: make kataAgent/createContainer can decode old specs.Spec
c10db01 unittest: tiny fix for incorrect parameters
ca9f571 subsystem: docs
df05b2c cli: fix pause-remove container
b99cadb virtcontainers: add pause and resume container to the API
e14eab0 runtime: Add testcases for ppc64le and arm64
12e4dbe cli: Leverage the new support for ppc64le
baa553d virtcontainers: Get qemu suppport for ppc64le
4276c0c virtcontainers/cli: refactor code
7d435b8 virtcontainers/api: use RW lock to update containers
704d713 test: Fix tests to include pause/resume api changes
d885782 namespace: Check if pid namespaces need to be shared
6d391c4 vendor: Vendor in agent protocol changes.
054a8ce config: Show which config file loaded

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-02 09:38:04 -05:00
Jose Carlos Venegas Munoz
e31149077f release: Kata Containers 1.1.0
- image-builder: require root earlier for better error messages
- builder: support proxy in distros based on yum or dnf
- tests: Update kata-manager command
- CI: Fix static-checks script invocation
- Support building centos-rootfs on Arm64
- rootfs: add '-rm' to delete intermediate container
- Update README: Fix a minor space issue
- rootfs: correct rootfs script deference var value
- CI: use yum for resolving centos dependencies
- tests: Test generated images and initrd's (+ cleanups)
- rootfs: Default to host architecture
- Image require systemd
- rootfs: copy kernel modules to correct location
- rootfs: Add extra packages to summary file
- rootfs.sh: Add "${AGENT_VERSION}"/"-a" functionality
- kata/osbuilder: Add support for multiple GOPATH directories
- image-builder: fix "paratition" typo
- docs: Add a Usage section
- refactor and create a summary file inside the image

7b1bbac image-builder: require root earlier for better error messages
52d015e builder: support proxy in distros based on yum or dnf
43a2ea4 tests: Run EulerOS tests last
7b581c2 tests: Convert bats test to shell script
5b9b69a tests: Update kata-manager command
547c477 CI: Fix static-checks script invocation
0451db9 rootfs-builder: Support building centos-rootfs on Arm64
e86380a rootfs: add '-rm' to delete intermediate container
11d1d07 docs: Update README, Fix a minor space issue
7015535 CI: Install epel-repositories for centos
9f84cc8 CI: Install bats from sources
6c8c60d CI: use yum for resolving centos dependencies
a81e771 rootfs: correct rootfs script deference var value
4ae6d31 tests: Test generated images and initrd's
340d7b2 tests: Rename function for brevity
3a8da5f tests: Pass parameters to functions
c8e7f42 tests: Remove stale rootfs tree
1c251bd tests: Move osbuilder metadata var to top
c69eb00 tests: Make all globals readonly
aeb5947 tests: Don't pass size option to image builder
60e1e7b tests: cleanup bats tests
c1d22f9 rootfs: Default to host architecture
aca45c5 image: Require systemd
171eceb image: Use variable for referring to init
fd8d9bd rootfs: copy kernel modules to correct location
7732e04 rootfs: Fix incorrect getopts call
f7f2672 rootfs:  Add "${AGENT_VERSION}"/"-a" functionality
3151f35 rootfs: Add extra packages to summary file
c3ac718 rootfs: Add support for multiple GOPATH directories
32aee00 image-builder: fix "paratition" typo
3c19ea4 docs: Add a Usage section
3e0e112 docs: Move TOC to top
f90f652 rootfs: Create a summary file inside the image
93b632c lib: Check rootfs parameter
b14d117 image-builder: Fix incorrect error message
ddb71e8 initrd: Remove mention of USE_DOCKER
f17b5c2 scripts/lib: Fix whitespace
5b6ced5 rootfs/clearlinux: Resolve version
a2a6562 rootfs: Simplify code
b8f1a68 rootfs: Simplify code
f09d4c4 rootfs: Check function parameters
2751de0 rootfs: Reformat functions
48b1dda rootfs: Fix comments
019a80f refactor: Move more functions to script library
a18753b refactor: Remove duplicate variable
f3e89d3 refactor: Simplify enabling debug

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-07-02 09:37:19 -05:00
Salvador Fuentes
91cb94eff8 Merge pull request #454 from jcvenegas/crio-update
versions: Update cri-o to fix race condition test.
2018-07-02 08:18:39 -05:00
Graham Whaley
9f649c4979 Merge pull request #456 from amshinde/test-vhost-user-attach
network: Add test for VhostUserEndpoint Attach()
2018-07-02 10:07:08 +01:00
Archana Shinde
150bcafc20 network: Add test for VhostUserEndpoint Attach()
Fixes #455

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-06-29 17:57:31 -07:00
Jose Carlos Venegas Munoz
aeea3f6fa4 versions: Update cri-o to fix racy test.
Some test were CI test were failing due to a race condition.

Update cri-o repository to have a stable CI.

Update K8s to latest stable version

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

Fixes: #435

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-29 15:35:06 -05:00
Archana Shinde
b7e3997bc1 Merge pull request #453 from jodh-intel/logger-add-cid+sid
logging: Add containerID and sandboxID to all log calls
2018-06-29 08:47:44 -07:00
Nitesh Konkar
22f04db80d travis: Enable travis ci for ppc64le
Fixes: #122

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-29 21:15:43 +05:30
Stefan Hajnoczi
a7bafc53c9 initrd-builder: make initrd_builder.sh idempotent
If initrd_builder.sh fails partway through it may not be possible to run
it again without creating a new rootfs.

This happens because initrd_builder.sh checks for the presence of
/sbin/init and refuses to run if it is missing.  Later on, the script
moves /sbin/init to /init, where the kernel expects to find it in an
initramfs.  After this step initrd_builder.sh will refuse to run again
since /sbin/init is now missing.

Create a symlink from /init to /sbin/init instead of moving the file.
This allows initrd_builder.sh to be run repeatedly on the same rootfs.

Fixes: #130
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-06-29 15:08:56 +01:00
James O. D. Hunt
4064a4ccb7 Merge pull request #128 from stefanha/image-builder-early-root-check
image-builder: require root earlier for better error messages
2018-06-29 08:38:17 +01:00
Jose Carlos Venegas Munoz
89f7b5eca0 tag_repos: Make sure osbuilder is updated.
Make sure the osbuilder VERSION file is updated before tag

Also, sort repos alphabetically.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-28 20:37:47 -05:00
Stefan Hajnoczi
7b1bbac600 image-builder: require root earlier for better error messages
The image_builder.sh script must be run as root.  The following check is
performed before the script checks for root:

  [ "${AGENT_INIT}" == "yes" ] || [ -x "${ROOTFS}/usr/bin/${AGENT_BIN}" ] || \
      die "/usr/bin/${AGENT_BIN} is not installed in ${ROOTFS}
      use AGENT_BIN env variable to change the expected agent binary name"

The -x test is "True if the file is executable by you".  It may evaluate
to true as root and false as non-root, depending on the file
permissions.

The permissions for kata-agent given in the Developer Guide are 0550
(https://github.com/kata-containers/documentation/blob/master/Developer-Guide.md#add-a-custom-agent-to-the-image---optional).

Therefore image_builder.sh fails with "/usr/bin/${AGENT_BIN} is not
installed" when run as non-root.  This is confusing since the agent
binary is really installed!

Move the root check to the beginning of the script.  This solves the
confusing error and prevents similar problems where the script doesn't
take into account that the user may be non-root.

Fixes: #127
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-06-28 14:16:26 +01:00
James O. D. Hunt
a3ce12179f logging: Add containerID and sandboxID to all log calls
Adding cid+sid fields to the log entries generated by most of the CLI
commands will make debugging across the system easier.

Fixes #452.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-28 10:37:51 +01:00
Sebastien Boeuf
93775487c8 Merge pull request #421 from jcvenegas/kernel-4.14.50
versions: Update kernel to version 4.14.51
2018-06-27 11:00:14 -07:00
James O. D. Hunt
4f1519ec64 Merge pull request #447 from amshinde/use-pointer-vhost-user-net
network: Use pointer for VhostUserNetDevice for Attach
2018-06-27 10:01:38 +01:00
Archana Shinde
510b3338d4 network: Use pointer for VhostUserNetDevice for Attach
Use pointer here since api.VhostUserDevice interface is implemented
by VhostUserNetDevice pointer.

Fixes #446

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-06-26 23:39:53 -07:00
Archana Shinde
2b27ddc738 Merge pull request #402 from jcvenegas/destdir
[RFC] makefile: honor DESTDIR flag.
2018-06-26 15:45:27 -07:00
Jose Carlos Venegas Munoz
44c890176c versions: Update kernel to version 4.14.51
Update to kernel to get latest fixes.

Depends-on: github.com/kata-containers/agent#279

Fixes: #420

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-26 16:14:46 -05:00
Jose Carlos Venegas Munoz
ac0c29012f Merge pull request #124 from devimc/dockerfile/supportProxy
builder: support proxy in distros based on yum or dnf
2018-06-26 10:52:43 -05:00
Julio Montes
52d015e283 builder: support proxy in distros based on yum or dnf
proxy server must be specified in configuration file
of the package manager, /etc/yum.conf for yum or
/etc/dnf/dnf.conf for dnf

fixes #123

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-06-26 10:17:07 -05:00
Graham Whaley
5a6b541caf Merge pull request #398 from nitkon/master
cli: kata-check if SMT is off on POWER8 systems
2018-06-26 09:05:30 +01:00
zhangwei_cs
2f1bf58b08 Merge pull request #424 from jiulongzaitian/const
virtcontainer : sconstification of constifiable vars
2018-06-26 15:30:38 +08:00
fupan
9155412b24 api: To watch the vm console in FetchSandbox api
When do sandbox release, the kataBuiltInProxy will
be closed, and it will stop the watch of vm's console;
Thus it needs to restart the proxy to monitor the vm
console once to restore the sandbox.

Fixes: #441

Signed-off-by: fupan <lifupan@gmail.com>
2018-06-26 08:04:33 +08:00
Salvador Fuentes
ae5b40ab88 Merge pull request #114 from jodh-intel/kata-manager-update
tests: Update kata-manager command
2018-06-25 17:49:58 -05:00
Nitesh Konkar
f890ffdaf7 cli: kata-check if SMT is off on POWER8 systems
SMT must be turned off on Power8 for KVM to work. Put
this as a check for kata-runtime kata-check.

Fixes: #397

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-25 19:40:05 +05:30
James O. D. Hunt
43a2ea4155 tests: Run EulerOS tests last
The EulerOS repository servers can be a little slower to respond than
others. This can lead to timeout issues so move the EulerOS tests to
the end to give the other tests a chance to run.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-25 15:06:52 +01:00
James O. D. Hunt
7b581c25d8 tests: Convert bats test to shell script
The tests perform a lot of configuration and call other commands. Since
the tests are running under BATS, any "stdout pollution" results in the
test failing. This is too rigid for current purposes so convert the
BATS test into a `set -e` test. This will still fail if any command
fails, but does not impose the output pollution restriction. It also
makes debugging easier.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-25 15:06:49 +01:00
James O. D. Hunt
5b9b69a4b7 tests: Update kata-manager command
The `kata-manger.sh` utility is changing its behaviour so that
`install-packages` *only* installs packages (no container manager).
Update the command to both install Docker and the packages.

Fixes #113.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-25 14:03:56 +01:00
Graham Whaley
8e577c19d6 Merge pull request #121 from jodh-intel/fix-static-checks
CI: Fix static-checks script invocation
2018-06-25 13:56:03 +01:00
James O. D. Hunt
547c477f4e CI: Fix static-checks script invocation
The `static-checks.sh` script now requires the repo as an argument.

Fixes #120.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-25 11:51:02 +01:00
Sebastien Boeuf
e0c6702790 Merge pull request #172 from sboeuf/update_docs
docs: svc-mesh: Create some documentation about service mesh
2018-06-22 16:06:05 -07:00
Salvador Fuentes
47caba8370 Merge pull request #439 from jcvenegas/ci-static-fix
ci: Fix static checks call.
2018-06-22 17:41:37 -05:00
Sebastien Boeuf
daac13b1d5 docs: svc-mesh: Create some documentation about service mesh
This commit introduces the instructions to be able to run trendy
service mesh Istio and Conduit with Kata Containers. It provides
a bit of feedback on how they actually work to give the reader a
quick overview. After this introduction, it provides restrictions
and instructions to enable them with Kata Containers.

Fixes #171

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-06-22 15:41:01 -07:00
GabyCT
2f2be68d1e Merge pull request #180 from chavafg/topic/static-checks
CI: update static-checks.sh call
2018-06-22 15:47:20 -05:00
Jose Carlos Venegas Munoz
9d709cd726 ci: Fix static checks call.
The script now has new options.

Add options to make CI work.

Fixes: #438

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-22 15:42:10 -05:00
Salvador Fuentes
7adbfa935e CI: update static-checks.sh call
Now static-checks.sh needs to have the
repository name as arguments.

Fixes #179.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-06-22 15:20:27 -05:00
James O. D. Hunt
bc6d9970f6 Merge pull request #164 from nitkon/patch-2
docs: Add relevant URLs and fix grammar
2018-06-22 10:31:41 +01:00
James O. D. Hunt
baf66c743d docs: Remove double "the" in README
Excised an extraneous definite article in the install README.

How did we miss this in the review phase I wonder?

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-21 15:22:24 +01:00
James O. D. Hunt
84e2622f94 docs: Add TOC to GCE guide
Add a table of contents to the Google Compute Engine install guide.

Fixes #173.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-21 15:22:24 +01:00
James O. D. Hunt
062fef460d docs: Add GCE install guide to install README
Add the new Google Compute Engine installation guide to the
installation README, reworking this doc to add in a table of contents
and a new "Cloud services" section.

Fixes #173.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-21 15:22:22 +01:00
James O. D. Hunt
f96f7ea2d3 docs: Use relative links in install README
Simplify the installation README by using relative URLs - let github
expand them automatically for readers.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-21 15:22:22 +01:00
James O. D. Hunt
b50b512872 Merge pull request #176 from jodh-intel/docker-rm-terminal-option
docs: Remove "-ti" from docker invocations
2018-06-21 15:21:43 +01:00
James O. D. Hunt
81c7f9ec01 docs: Remove "-ti" from docker invocations
The docker install guides end with a call to `docker run`. However, they
all specify `-ti` which is causing our CI to fail.

Remove the `-ti` so that the command works both under the CI and as
expected for the user.

Fixes #175.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-21 14:44:21 +01:00
James O. D. Hunt
9e09f54e7c CI: Make install guide check less specific
Simplify the CI check that looks for modified install guides to catch
any modified document below `install/`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-21 14:44:20 +01:00
Nitesh Konkar
62800fa271 docs: Add relevant URLs and fix grammar
Fixes:  #163

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-21 17:59:14 +05:30
zhangwei_cs
62d819c907 Merge pull request #432 from bergwolf/connection
kata_agent: fix connection race
2018-06-21 17:48:49 +08:00
James O. D. Hunt
b67e3c3e01 Merge pull request #154 from jon/master
docs: Add GCE installation guide.
2018-06-21 10:02:29 +01:00
Peng Tao
ee33245d95 kata_agent: fix connection race
If we send multiple grpcs at once before a client is created, we end up
creating multiple connections to the agent and that breaks when using builtin
proxy since only one connection is allowed.

Fixes: #431

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-06-21 16:34:49 +08:00
James O. D. Hunt
8e581f4d72 Merge pull request #414 from Pennyzct/kata-test
test: supplement test cases for kata-check and kata-env in Arm64
2018-06-21 09:28:04 +01:00
Penny Zheng
f2096f1f4e test: supplement test cases for kata-check and kata-env in Arm64
There were missing test cases in Arm64 for platform-dependent
kata-check and kata-env, leading to 'make test' failure under
kata-containers/runtime

Fixes: #403

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-06-21 07:16:17 +00:00
Sebastien Boeuf
fca7eb822d Merge pull request #429 from bergwolf/qmp
qemu: clean up qmp channel
2018-06-20 10:36:43 -07:00
James O. D. Hunt
8f6e20d43d Merge pull request #52 from kata-containers/sriov-use-case
sriov: Add instructions on using SR-IOV with Kata
2018-06-20 17:42:28 +01:00
Archana Shinde
d02babdf81 Merge pull request #427 from bergwolf/sandbox_ns
sandbox: expose share sandbox pidns setting
2018-06-20 09:27:13 -07:00
Archana Shinde
4c9bee580a sriov: Add instructions on using SR-IOV with Kata
Add instructions for using SR-IOV enabled nic with Kata.

Fixes #168

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-06-20 09:21:53 -07:00
James O. D. Hunt
590ce0cf25 Merge pull request #67 from jcvenegas/static-qemu
pkg: Build an static qemu for kata
2018-06-20 16:29:18 +01:00
Jose Carlos Venegas Munoz
39bc5ab3ee makefile: honor DESTDIR flag.
1. Fix config installation not exec permission is needed.

2. Makefile install all in DESTDIR.

make install DESTDIR=/tmp/dest/

Before:
$tree /tmp/dest/
/tmp/dest/
└── usr
    ├── bin
    │   └── kata-collect-data.sh
    └── share
        └── defaults
            └── kata-containers
                └── configuration.toml

5 directories, 2 files

Now:
$tree /tmp/dest/
/tmp/dest/
└── usr
    ├── local
    │   └── bin
    │       ├── kata-collect-data.sh
    │       └── kata-runtime
    └── share
        ├── bash-completion
        │   └── completions
        │       └── kata-runtime
        └── defaults
            └── kata-containers
                └── configuration.toml

Fixes: #401

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-20 10:18:53 -05:00
Jose Carlos Venegas Munoz
05fd9d2131 ci: Add test for static qemu
Build qemu if there is any change in static-build.

Do the same with the rest of projects in this repositoy.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-20 09:35:24 -05:00
Jose Carlos Venegas Munoz
f1bfbe62a3 qemu: add scripts to build static qemu.
Use a dockerfile to build an static qemu.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-20 09:35:24 -05:00
Salvador Fuentes
ad587e5783 Merge pull request #419 from chavafg/topic/update-docker-version
versions: update supported docker version
2018-06-20 08:57:16 -05:00
Peng Tao
2b942524a2 sandbox: expose share sandbox pidns setting
So that we let callers decide if kata-agent should let all containers in
a sandbox share the same pid namespace.

This will be first used only by frakti. And kata cli can possibly use it
as well when cri-o and containerd-cri stop creating pause containers
and just pass the CreateSandbox CRI requests to kata.

Fixes: #426

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-06-20 20:51:22 +08:00
Peng Tao
8f329dbf48 qemu: clean up qmp channel
We only need one qmp channel and it is qemu internal detail thus
sandbox.go does not need to be aware of it.

Fixes: #428

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-06-20 17:58:54 +08:00
zhangjie
2d65499d03 virtcontainer: sconstification of constifiable vars
Fixes #142

Signed-off-by: zhangjie <iamkadisi@163.com>
2018-06-20 16:02:10 +08:00
Xu Wang
c324b55255 Merge pull request #423 from wwq19920405/master
cli: add no-pivot flag to be compatible with docker in ramdisk
2018-06-20 14:51:35 +08:00
wangwenqi
6b496e4bf0 cli: add no-pivot flag to be compatible with docker in ramdisk
This commit add a no-pivot flag (just a warning tip) in kata-runtime create and run cmd.

Fixes: #409 , #134

Signed-off-by: wenqi wang wangwenqi01@baidu.com
2018-06-20 13:12:56 +08:00
Salvador Fuentes
59adb6e0aa versions: update supported docker version
update from v17.12 to v18.03.
18.03 is the version installed in the CI VMs
and when using v17.12 some hotplug cpu tests
fail. then we need to make v18.03 our official
supported version.

Fixes: #418.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-06-19 14:23:47 -05:00
Jon Olson
04dfaece9b docs: Add GCE installation guide.
This covers the GCP portion of #130.

Introduces a guide to configuring a VM image with nested virtualization. The
primary focus of the guide is the set of commands required for creating and
managing nested VMX GCE images. For Kata installation itself the guide defers
to the distribution-specific Kata documentation for actually installing Kata.
The upside is that it needn't be updated every time the instructions for a
given distribution change. The downside is that it is not a standalone
artifact.

Fixes: #155.

Signed-off-by: Jon Olson <jonolson@google.com>
2018-06-19 10:42:07 -07:00
Sebastien Boeuf
4f102f8e8f Merge pull request #292 from jshachm/remove-host-shared
virtcontainers : fix shared dir resource remaining
2018-06-19 08:44:05 -07:00
Jose Carlos Venegas Munoz
d5438ea131 lib: common functions.
Add functions to be used across the repository.

- get kata version deps
- die
- info

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-19 10:17:45 -05:00
Jose Carlos Venegas Munoz
eebe067a50 configure-hypervisor: Add option to build static qemu.
Add option to get configuration for an static qemu.

Fixes: #66

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-19 10:17:45 -05:00
Jose Carlos Venegas Munoz
3dab5aabfc hypervisor-config: Allow show help.
Do checks after run options check, allows to show help.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-19 10:17:45 -05:00
Julio Montes
0caf4c37fa Merge pull request #76 from jcvenegas/obs-refactor
pkgs: move obs scripts to is own directory
2018-06-19 10:05:38 -05:00
Nitesh Konkar
d0bccabbe1 virtcontainers: Set ppc64le maxmem depending on qemu version
The "Failed to allocate HTAB of requested size,
try with smaller maxmem" error in ppc64le occurs
when maxmem allocated is very high. This got fixed
in qemu 2.10 and kernel 4.11. Hence put a maxmem
restriction of 32GB per kata-container if qemu
version less than 2.10

Fixes: #415

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-19 19:48:18 +05:30
c00416947
8a6d383715 virtcontainers : fix shared dir resource remaining
Before this patch shared dir will reamin when sandox
has already removed, espacilly for kata-agent mod.

Do clean up shared dirs after all mounts are umounted.

Fixes: #291

Signed-off-by: Haomin <caihaomin@huawei.com>
2018-06-19 20:32:07 +08:00
zhangwei_cs
6f409b9528 Merge pull request #410 from kata-containers/fix-debug-link
docs: update debug runtime link
2018-06-19 15:59:30 +08:00
Eric Ernst
deaf1e3780 docs: update debug runtime link
It pointed to how to enable logs, which is only a small portion of the
debug options for Kata  Containers.  Let's instead point to the
troubleshooting section, which includes pointers to adding logs and to
debug the guest vm.

Fixes #411

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-06-19 14:26:49 +08:00
Jose Carlos Venegas Munoz
ea6eed47d7 Merge pull request #408 from chavafg/topic/cni-version
Versions: Add CNI plugins version
2018-06-18 16:13:09 -05:00
Jose Carlos Venegas Munoz
ec6babadfb pkgs: dockerfile: Add go to path.
Make sure we can use docker inside docker image.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-18 15:23:04 -05:00
Jose Carlos Venegas Munoz
a8bb712430 pkgs: fix path to build pkgs with docker.
Point to new obs-scripts paths.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-18 15:00:49 -05:00
Jose Carlos Venegas Munoz
e708c679e8 pkgs: update kernel paths.
Point to correct kernel config and patches paths.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-18 15:00:49 -05:00
Jose Carlos Venegas Munoz
30f784c9a3 pkgs: fix hypervisor-config path.
Now that scripts are in different directory need to update paths.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-18 15:00:49 -05:00
Jose Carlos Venegas Munoz
c07d11c967 pkgs: move obs scripts to its own directory
This repository is growing is due to different projects are living
here, kernel config and patches, obs scripts, kata-deploy, release tools.

Lets move the obs scripts to its own directory.

Fixes: #75

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-18 15:00:49 -05:00
Salvador Fuentes
50579d043f Versions: Add CNI plugins version
The cni-plugins commit will be used to build that specific
version on the CI, instead of using master.

Fixes #407.

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

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-06-18 11:49:56 -05:00
Sebastien Boeuf
593bd44f20 Merge pull request #385 from amshinde/always-bind-back-physical-interfaces
network: Always bind back physical interfaces
2018-06-18 09:24:58 -07:00
Archana Shinde
a31dd496eb cni: Use the vendored version of CNI plugins to install binaries
Out CI is failing because of a recent change introduced in the
CNI plugins repo(github.com/containernetworking/plugins) that vendors in
CNI v0.7.0-alpha0. Refer to commit #e4fdb6cd1883b7b.

However, it looks like the the plugins themselves have not been
updated yet, causing failures in CI. This was verified by vendoring
in the latest CNI and CNI plugins in our repo.

Till the plugin binaries our fixed, use older version of CNI plugins
for testing virtcontainers. See this:
https://github.com/containernetworking/plugins/commit/68b4efb4056c

In any case we should keep this version
in sync with what we vendor in, in our runtime and not use the
latest commit.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-06-16 22:57:43 -07:00
Archana Shinde
0806dcc19c network: Drop mounted parameter in call to deleteNetNS
All calls to deleteNetNS were passing the "mounted" parameter as
true. So drop this parameter.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-06-16 22:56:28 -07:00
Archana Shinde
f2d9632bc0 network: Always bind back physical interfaces
In case of physical network interfaces, we explicitly
pass through them to the VM. We need to bind them back to
the host driver when the sandbox is stopped, irrespective if
the network namespace has been created by virtcontainers or not.

Fixes #384

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-06-16 22:55:15 -07:00
Graham Whaley
9858c98a69 Merge pull request #54 from Weichen81/master
configs: Add arm64 kernel config file for kata kvm guest
2018-06-15 18:06:48 +01:00
Wei Chen
a9be035f9e configs: Add arm64 kernel config file for kata kvm guest
As the Developer-Guide[1] mentioned, the progress of installing
guest kernel images need a default kernel config file. But for
Arm64 architecture, this config file is missing.
In this patch, we provide a default Arm64 kernel config file for
Linux kernel 4.14.x.

Notes:
[1] https://github.com/kata-containers/documentation/blob/master/Developer-Guide.md

Signed-off-by: Wei Chen <Wei.Chen@arm.com>
2018-06-15 15:57:56 +00:00
Graham Whaley
bf68be0c05 Merge pull request #159 from nitkon/patch-1
developer-guide: use the correct kernel config file name
2018-06-15 13:53:19 +01:00
James O. D. Hunt
971fa5a900 Merge pull request #58 from nitkon/master
kernel: Rename x86 config and add kernel config for ppc64le
2018-06-15 12:02:10 +01:00
James O. D. Hunt
0de5e4741c Merge pull request #153 from GabyCT/topic/addrhel
docs: Add RHEL installation guide.
2018-06-15 08:41:48 +01:00
Jose Carlos Venegas Munoz
439f6ad524 Merge pull request #63 from raravena80/master
pkg: Add bash completion
2018-06-14 22:09:11 -05:00
Nitesh Konkar
d7527c4f0e pkg: kernel: Get kernel config name from a script
Get kernel config name from tests/.ci/kata-arch.sh
script.

Fixes: #70

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-14 21:48:19 +05:30
nitkon
90c4d75c6c developer-guide: use the correct kernel config file name
kernel_arch was being set to amd64 instead of x86_64
on intel. The kernel config file name starts with
x86_64 and hence this needs to be fixed.

Fixes:  #158

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-14 20:30:22 +05:30
James O. D. Hunt
cc42623c0a Merge pull request #69 from jcvenegas/skip-test-pkgs
ci: Skip non working test.
2018-06-14 15:49:00 +01:00
Gabriela Cervantes
8bc69ec8cf docs: Add RHEL installation guide.
This will add the RHEL installation guide for the OBS packages for
kata runtime.

Fixes #86

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-06-14 05:40:11 -05:00
Jose Carlos Venegas Munoz
38a20d49a8 ci: Skip non working test.
Skip non working tests.

Fixes: #68

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-13 17:35:18 -05:00
Jose Carlos Venegas Munoz
72dca93263 Merge pull request #112 from Pennyzct/centos-rootfs
Support building centos-rootfs on Arm64
2018-06-13 09:48:11 -05:00
James O. D. Hunt
42821b7c0a Merge pull request #378 from raravena80/master
subsystem: cli
2018-06-13 15:30:06 +01:00
Nitesh Konkar
50faaf7e78 kernel: add config file for ppc64le
Add config file for ppc64le.

Fixes: #60

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-13 19:30:01 +05:30
James O. D. Hunt
3f31643452 Merge pull request #395 from WeiZhang555/fix-url
docs: fix invalid urls
2018-06-13 14:10:28 +01:00
Zhang Wei
45d0816623 docs: fix invalid urls
Fixes: #391

Replace invalid urls with new legal ones.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-06-13 20:35:30 +08:00
James O. D. Hunt
a0a0a7b4ac Merge pull request #145 from jodh-intel/install-guides-move-docker
docs: Split docker install into separate docs
2018-06-13 10:50:29 +01:00
James O. D. Hunt
ce077f0b96 docs: Split docker install into separate docs
The install guides assumed that users wanted to install Docker. Since
there are other container managers, split the Docker-specific
instructions into separate documents (with backlinks) and allow the
user to choose between Docker or Kubernetes from the install guides.

Fixes #144.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-13 10:47:30 +01:00
James O. D. Hunt
967f03aa01 docs: Properly format distro names
Ensure the first mention of all the distro names in the install guides:

- Have the required asterisk after the name.
- Have a link to the website.

Also folded the overly long lines.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-13 10:47:30 +01:00
James O. D. Hunt
26b67468dd Merge pull request #152 from nitkon/master
docs: Make "Install guest kernel images" arch-sensitive
2018-06-13 09:20:37 +01:00
Penny Zheng
0451db9f4e rootfs-builder: Support building centos-rootfs on Arm64
For now, mirrorlist doesn't support non-x86_64 arch, so we need
create baseurl for arm64. Furthermore, we also need to offer
arm64-specific gpg keys along with the regular key.

Fixes: #111

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-06-13 07:21:17 +00:00
Ricardo Aravena
8f2a3d5a17 pkg: Add bash completion
Fixes #59

Signed-off-by: Ricardo Aravena <raravena@branch.io>
2018-06-12 09:37:49 -07:00
Nitesh Konkar
a47e243e10 docs: Make "Install guest kernel images" arch-sensitive
Make "Install guest kernel images" in Developer-Guide
arch specific.

Fixes: #140

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-12 16:15:09 +05:30
James O. D. Hunt
b71e2f389d Merge pull request #147 from grahamwhaley/20180806_move_zun
Zun: Move to subdir and add to README
2018-06-12 10:57:16 +01:00
Graham Whaley
5d413bc5ac limitations: update URL for CPU constraints
We have new CPU constraints docs, now in this repo. Update the
Limitations document to reflect that.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-06-12 10:38:47 +01:00
Graham Whaley
e600be9646 Zun: Move to subdir and add to README
Move all the Zun docs into their own subdir, and add a
Zun reference and link to the top level README index.

Fixes: #131

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-06-12 10:36:45 +01:00
Graham Whaley
8120500b0c Merge pull request #64 from devimc/doc/cpu
constraints: document CPU constraints
2018-06-12 10:36:15 +01:00
James O. D. Hunt
3375e736c9 Merge pull request #117 from Pennyzct/rm
rootfs: add '-rm' to delete intermediate container
2018-06-12 09:55:59 +01:00
Penny Zheng
e86380aab7 rootfs: add '-rm' to delete intermediate container
If we set env USE_DOCKER true, we will use container as development
environment. After docker run command, this temporary container
would be no use. we could add -rm flag to automatically delete
intermediate container.

Fixes: #115

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-06-12 08:16:56 +00:00
Ricardo Aravena
706904524a subsystem: cli
Add kata command line bash completion

Fixes #110

Signed-off-by: Ricardo Aravena <raravena@branch.io>
2018-06-11 18:29:30 -07:00
Archana Shinde
bcc282b4a1 Merge pull request #148 from grahamwhaley/20180806_arch_index
README: Update documentation indexes
2018-06-11 17:58:10 -07:00
Eric Ernst
ca9f7abba9 Merge pull request #357 from amshinde/handle-shared-shm
shm: Create shared /dev/shm
2018-06-11 16:12:58 -07:00
Eric Ernst
1aff702a38 Merge pull request #377 from jodh-intel/fix-doc-urls
docs: Fix invalid URLs
2018-06-11 10:13:42 -07:00
Eric Ernst
46947cb4e2 Merge pull request #150 from jodh-intel/fix-doc-urls
docs: Fix invalid URLs
2018-06-11 09:32:31 -07:00
James O. D. Hunt
2ac74ae8b5 Merge pull request #367 from nitkon/travis
CI: Enable Travis-CI for linux-ppc64le
2018-06-11 11:30:15 +01:00
Nitesh Konkar
c2397a0981 CI: Enable Travis-CI for x86 linux and linux-ppc64le
Fixes: #365

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-11 14:26:24 +05:30
Graham Whaley
ec16627eb5 Merge pull request #381 from nitkon/golint
Fix golint ppc64le issues and eventually Travis-CI
2018-06-11 09:53:05 +01:00
Nitesh Konkar
d6b956a1aa cli: Add kata-check_ppc64le_test file
Fixes: #380

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-11 02:51:43 +05:30
Nitesh Konkar
4824669a8d cli: Fix TestCheckCLIFunctionFail failure on ppc64le
Fixes: #380

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-11 02:40:43 +05:30
Nitesh Konkar
bb0488e70a virtcontainers: Fix comment causing golint issue
Fixes: #380

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-11 01:29:05 +05:30
Archana Shinde
4d470e513b shm: Create shared /dev/shm
This commit checks the size of "/dev/shm" for the sandbox container
which is then used to create the shared memory inside the guest.
kata agent then uses this size to set up a sandbox level ephemeral
storage for shm. The containers then simply bind mount this sandbox level
shm.

With this, we will now be able to support docker --shm-size option
as well have a shared shm within containers in a pod, since they are
supposed to be in the same IPC namespace.

Fixes #356

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-06-10 01:54:51 -07:00
Eric Ernst
3fc23640d1 Merge pull request #151 from annabellebertooch/add-hardware-reqs-to-install-guide
docs: Adds hardware requirements to Install Guide
2018-06-08 15:52:46 -07:00
Anne Bertucio
9515de77ae docs: Adds hardware requirements to Install Guide
Puts the nested virt/bare metal requirement in the top line
of the Install Guide and references the Kata hardware
check.

Signed-off-by: Anne Bertucio <anne@openstack.org>
2018-06-08 15:27:06 -07:00
James O. D. Hunt
640e4e6eb4 docs: Fix invalid URLs
Correct invalid document URLs.

Fixes #149.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-08 17:02:39 +01:00
James O. D. Hunt
92470fbf31 docs: Fix invalid URLs
Correct the document URLs which have gone stale.

The virtcontainers build status links have been moved to the top-level
README.

Fixes #376.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-08 16:02:14 +01:00
Graham Whaley
86b33afb7c design: Update the index and add some links
The design subdir README index was a little slim and
potentially out of date, and was missing hotlinks to
some documents that did exist.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-06-08 11:43:33 +01:00
Graham Whaley
1dd26540bc README: Add all docs to the index
The top level README.md index for the repository was a bit
slim on entries.
Add all the other docs in this repo to the index, and sort them
alphabetically by symbolic name (which may be slightly different
from the filename itself).

Fixes: #146

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-06-08 11:34:26 +01:00
Nitesh Konkar
2a8d5017f3 kernel: Rename x86 config to match arch from tests/.ci/kata-arch script
Fixes: #57

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-08 15:33:11 +05:30
Jose Carlos Venegas Munoz
bdb776d073 Merge pull request #109 from nitkon/patch-1
Update README: Fix a minor space issue
2018-06-07 14:22:14 -05:00
Nitesh Konkar
11d1d07c04 docs: Update README, Fix a minor space issue
Fixes: #108

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-07 19:45:08 +05:30
Julio Montes
6e3ed1b649 Merge pull request #103 from JerryOpenix/develop
rootfs: correct rootfs script deference var value
2018-06-07 09:11:14 -05:00
James O. D. Hunt
08a0316c08 Merge pull request #141 from jodh-intel/ci-test-install-guides
CI: test installation guides
2018-06-07 07:55:32 +01:00
Salvador Fuentes
15a5b3c3f7 Merge pull request #105 from chavafg/topic/fix-centos-setup
CI: use yum for resolving centos dependencies
2018-06-06 14:00:21 -05:00
Eric Ernst
837481215f Merge pull request #135 from sboeuf/update_docs
docs: Update documentation to provide Kubernetes alternative to Docker
2018-06-06 09:25:12 -07:00
Sebastien Boeuf
7536f77546 docs: Add a disclaimer about Kubernetes installation
This commit updates all 3 installation instructions related to
Ubuntu, Fedora and Centos, providing a disclaimer about the k8s
installation. Particularly, it says that those docs are only
explaining how to run Kata Containers with Docker, and that the
user should refer to the developer documentation to read how
to install Kata for k8s.

Fixes #134

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-06-06 09:09:56 -07:00
Sebastien Boeuf
31243dfade docs: Update developer documentation to run k8s on Kata Containers
This documentation update purpose is to propose an alternative to the
default Docker usage that was described. The developer wanting to
interact with Kubernetes will have the proper information to start.

Fixes #134

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-06-06 09:05:03 -07:00
Sebastien Boeuf
e77389dfb9 docs: Fix a few details in developer documentation
A few assumption were made, making the steps not working directly on
a clean system.

Fixes #134

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-06-06 09:03:57 -07:00
Salvador Fuentes
70155353a1 CI: Install epel-repositories for centos
yamllint and moreutils packages are available in the
epel repositories from centos.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-06-06 10:42:10 -05:00
James O. D. Hunt
4e843139ec CI: test installation guides
Moved static tests to CI setup script and added a new CI test to
execute all install guides if any one changes.

Fixes #132.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-06 15:59:03 +01:00
Salvador Fuentes
9f84cc8f1c CI: Install bats from sources
CentOS and some versions of Ubuntu do not provide
bats in their default repository. This change installs
bats from sources.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-06-06 09:30:19 -05:00
Salvador Fuentes
6c8c60db8a CI: use yum for resolving centos dependencies
`.ci/setup.sh` is using dnf instead of yum to install
centos dependencies. This fixes it to use yum.

Fixes: #104.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-06-06 08:00:02 -05:00
Liu Changcheng
a81e771573 rootfs: correct rootfs script deference var value
shell usage function use wrong way to get AGENT_BIN value

Fixes #103

Signed-off-by: Liu Changcheng <changcheng.liu@intel.com>
2018-06-06 14:05:03 +08:00
Jose Carlos Venegas Munoz
343c0b4299 Merge pull request #102 from jodh-intel/test-create-container
tests: Test generated images and initrd's (+ cleanups)
2018-06-05 12:12:55 -05:00
James O. D. Hunt
1b7a9e3dca Merge pull request #137 from JerryOpenix/master
Ubunut/Kata: upgrade from clear container to kata container
2018-06-05 15:12:52 +01:00
Liu Changcheng
1feace892f docs: Remove throttler in upgrading doc
Updated the `Upgrading.md` document to ensure users remove the Clear
Containers throttler package to avoid conflicts with the Kata Container
equivalent.

Fixes #138.

Signed-off-by: Liu Changcheng <changcheng.liu@intel.com>
2018-06-05 17:21:03 +08:00
Archana Shinde
dd2bf15ebc Merge pull request #369 from Pennyzct/kata-check-arm64
cpuinfo/arm64: Refine CPUInfo in Arm64
2018-06-04 11:14:41 -07:00
Julio Montes
5775b735cb Merge pull request #371 from nitkon/ArchSupport
docs: Update README with Power Support
2018-06-04 10:18:49 -05:00
Julio Montes
6a316fe5d5 constraints: document CPU constraints
Add CPU constraints documentation

fixes #136

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-06-04 09:51:19 -05:00
Sebastien Boeuf
b285989b20 Merge pull request #364 from nitkon/master
ppc64le: Restrict maxmem to avoid HTAB allocation failure
2018-06-04 06:58:02 -07:00
Nitesh Konkar
44b995078e docs: Update README with Power Support
Fixes: #370

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-04 17:16:10 +05:30
James O. D. Hunt
4ae6d31d3e tests: Test generated images and initrd's
After building the images, perform a very basic test by configuring
the runtime to use them and creating a container.

Fixes #97.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-04 10:04:30 +01:00
Penny Zheng
7757dceab3 cpuinfo/arm64: Refine CPUInfo in Arm64
The CPUinfo need to be refined in Arm architecture, because the
vendor and model of CPU may refer to different meaning in Arm architecture.
Besides, relevant contents extracted from /proc/cpuinfo may need to be
normalized for human-readability.

Fixes: #368

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Signed-off-by: Wei Chen <wei.chen@arm.com>
2018-06-04 08:09:59 +00:00
zhangwei_cs
813c8c3b56 Merge pull request #334 from keloyang/spec-compatibility
make sure kataAgent/createContainer can decode old specs.Spec
2018-06-04 11:29:39 +08:00
Julio Montes
fdb6d957c8 Merge pull request #362 from jodh-intel/fix-arm64-build
arch/arm64: Fix ARM64 build
2018-06-01 14:35:34 -05:00
Nitesh Konkar
3b20aebd5b ppc64le: Restrict maxmem to avoid HTAB allocation failure
Fixes: #363

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-01 20:41:27 +05:30
Sebastien Boeuf
329f70463a Merge pull request #361 from nitkon/master
virtcontainers: Remove unnecessary kernel parameters for ppc64le
2018-06-01 08:03:01 -07:00
Nitesh Konkar
2796b19668 virtcontainers: Remove unnecessary kernel parameters for ppc64le
Fixes: #360

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-06-01 19:07:34 +05:30
James O. D. Hunt
6e161a248e arch/arm64: Fix ARM64 build
Fix ARM64 build which silently broken (as we still don't have an ARM CI).

Fixes #349.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-06-01 14:04:26 +01:00
James O. D. Hunt
2400978f6a Merge pull request #286 from nitkon/master
Enable Kata container on ppc64le arch
2018-06-01 09:58:37 +01:00
James O. D. Hunt
42765bf64a Merge pull request #348 from keloyang/pull-everytime
unittest: tiny fix for incorrect parameters
2018-06-01 08:53:09 +01:00
y00316549
9a0434d6bf virtcontainers: make kataAgent/createContainer can decode old specs.Spec
in old specs.Spec, Capabilities is [] string, but we don't use CompatOCISpec
for compatibility in kataAgent/createContainer.

fixes #333

Signed-off-by: y00316549 <yangshukui@huawei.com>
2018-06-01 14:48:43 +08:00
y00316549
c10db01599 unittest: tiny fix for incorrect parameters
Fixes #347

Signed-off-by: y00316549 <yangshukui@huawei.com>
2018-06-01 10:39:13 +08:00
Eric Ernst
5f5f619dfc Merge pull request #355 from raravena80/master
Update the README.md so showing that containerd is supported
2018-05-31 13:40:56 -07:00
Ricardo Aravena
ca9f571c87 subsystem: docs
Update the README.md so showing that containerd is supported

Fixes #354

Signed-off-by: Ricardo Aravena <raravena@branch.io>
2018-05-31 13:38:27 -07:00
Sebastien Boeuf
b3b0612fbe Merge pull request #328 from devimc/fix/pauseRemove
Fix pause-remove container
2018-05-31 08:54:53 -07:00
Julio Montes
df05b2c5bd cli: fix pause-remove container
Instead of pausing the sanbox, this patch just pauses the container
allowing the communication with the agent. The communication with the agent
should be still possible even if all containers are paused, because of we don't
know when a new container can be created in the same sandbox.

Depends-on: github.com/kata-containers/agent#246

fixes #317

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-31 09:38:13 -05:00
Julio Montes
b99cadb553 virtcontainers: add pause and resume container to the API
Pause and resume container functions allow us to just pause/resume a
specific container not all the sanbox, in that way different containers
can be paused or running in the same sanbox.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-31 09:38:13 -05:00
Nitesh Konkar
e14eab084e runtime: Add testcases for ppc64le and arm64
Fixes #302

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-05-31 18:53:37 +05:30
Nitesh Konkar
12e4dbe4ca cli: Leverage the new support for ppc64le
Fixes #302

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-05-31 18:41:54 +05:30
Nitesh Konkar
baa553da07 virtcontainers: Get qemu suppport for ppc64le
Fixes #302

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-05-31 18:40:43 +05:30
Nitesh Konkar
4276c0c38e virtcontainers/cli: refactor code
Fixes #302

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-05-31 17:58:35 +05:30
Archana Shinde
44b65e1d52 Merge pull request #353 from devimc/virtcontainers/updateUseRWLock
virtcontainers/api: use RW lock to update containers
2018-05-30 15:37:13 -07:00
Sebastien Boeuf
3ba9a2472f Merge pull request #298 from amshinde/share-pid-namespace
Share pid namespace
2018-05-30 15:20:12 -07:00
Julio Montes
7d435b84f0 virtcontainers/api: use RW lock to update containers
When a container is updated, those modifications are stored, to
avoid race conditions with other operations, a RW lock should be used.

fixes #346

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-30 16:04:11 -05:00
Archana Shinde
704d713571 test: Fix tests to include pause/resume api changes
Since the vendoring included changes introducing PauseContainer
and ResumeContainer changes, fix the tests to satisfy the grpc api.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-05-30 13:34:24 -07:00
Archana Shinde
d885782df1 namespace: Check if pid namespaces need to be shared
k8s provides a configuration for sharing PID namespace
among containers. In case of crio and cri plugin, an infra
container is started first. All following containers are
supposed to share the pid namespace of this container.

In case a non-empty pid namespace path is provided for a container,
we check for the above condition while creating a container
and pass this out to the kata agent in the CreatContainer
request as SandboxPidNs flag. We clear out the PID namespaces
in the configuration passed to the kata agent.

Fixes #343

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-05-30 13:34:24 -07:00
James O. D. Hunt
340d7b2ad5 tests: Rename function for brevity
Renamed the `build_rootfs_image_initrd` function to `create_images`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-30 16:29:10 +01:00
James O. D. Hunt
3a8da5f108 tests: Pass parameters to functions
Try to minimise the use of globals by passing parameters to the
remaining functions.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-30 16:29:09 +01:00
James O. D. Hunt
c8e7f4253e tests: Remove stale rootfs tree
Remove the rootfs tree before attempting to generate one to avoid
picking up any stale information if the function is run multiple times.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-30 16:29:09 +01:00
James O. D. Hunt
1c251bdf05 tests: Move osbuilder metadata var to top
Moved the variable specifying the path to the osbuilder metadata file
to the top of the script and made it readonly.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-30 16:29:09 +01:00
James O. D. Hunt
c69eb00f9b tests: Make all globals readonly
Some of the globals were set as read-only variables whilst others
weren't. However, they can all be read-only.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-30 16:29:09 +01:00
James O. D. Hunt
aeb59479cb tests: Don't pass size option to image builder
As the comment in the code showed, now that
https://github.com/kata-containers/osbuilder/issues/25 is fixed, it is
no longer necessary to specify an image size to the image builder as it
will auto-calculate it.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-30 16:29:09 +01:00
James O. D. Hunt
60e1e7bc31 tests: cleanup bats tests
Removed redundant `function` keyword and extraneous blank lines.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-30 16:29:08 +01:00
Archana Shinde
8e3bc751c9 Merge pull request #126 from jodh-intel/more-doc-requirements
docs: Add notes to doc requirements
2018-05-29 13:53:29 -07:00
Salvador Fuentes
456b7c2062 Merge pull request #46 from jcvenegas/kernel-config-version-pgs
pkg: kernel: Add kernel config version to pkg version.
2018-05-29 15:39:58 -05:00
Archana Shinde
6d391c4355 vendor: Vendor in agent protocol changes.
This includes the addition of "SandboxPidNs" in the
CreateContainerRequest api.

Shortlog:
a30395a grpc: signal frozen containers
08674c0 agent: Add support for ephemeral volumes
c517125 ci: Refactor to pass metalinter checks
ad9c33d tests: Modify tests to take into account if pid ns needs to be
shared
e334596 namespace: Share pid namespace of containers
1e72fbb agent: Get cgroup mounts info from /proc/cgroups
ab6c4ff namespaces: Create persistent UTS and IPC namespaces
be3993e release: Kata Containers 1.0.0
75c6fc0 grpc: implement pause and resume commands
9da1fea release: Kata Containers 0.3.0
4bad43e grpc: honour CPU constraints in Kubernetes
11d5c56 grpc: log errors in async commands
7b47559 channel: Support Epoll on Arm64
a7033a7 release: update version to 0.2.0
5c3c000 signal: Backtrace on SIGUSR1
a0880aa signal: Switch to standard signal handling
f8081ca main: Improve logging in signal handling loop
075ad56 main: Rename signal functions for clarity
899bc6d main: Log errors on failure
6689db0 agent: Fix typo

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-05-29 11:32:07 -07:00
Jose Carlos Venegas Munoz
028f8e8e49 pkg: kernel: Add kernel config version to pkg version.
Add the version of config and patches we are using in a package.

Kernel version before:

4.14.22-128

Now:

4.14.22.1-128

Fixes: #45

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-29 11:28:57 -05:00
James O. D. Hunt
f73782bdb5 Merge pull request #44 from chavafg/topic/kernel_config_version
kernel: Add config version file
2018-05-29 08:45:14 +01:00
Salvador Fuentes
8b19c32875 kernel: Add config version file
In order to track the changes that we add to the kernel, lets
add a kata_config_version file that should be bumped whenever
a change is added to the kernel directory

Fixes #43.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-05-28 12:09:56 -05:00
Graham Whaley
2569cfa34c Merge pull request #101 from jodh-intel/default-to-host-arch
rootfs: Default to host architecture
2018-05-25 11:26:50 +01:00
James O. D. Hunt
c1d22f98f6 rootfs: Default to host architecture
Don't default to a hard-coded Intel architecture - default to the host
architecture.

This requires the `coreutils` package to be installed both inside each
docker image (for `USE_DOCKER=true`) and in the host environments.

Added missing SPDX headers to `Dockerfile` templates to pacify the CI checks.

Fixes #100.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-25 10:09:28 +01:00
James O. D. Hunt
3af75af484 docs: Add notes to doc requirements
Add details to documentation requirements document explaining how we use
and format notes.

Fixes #125.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-25 09:28:42 +01:00
James O. D. Hunt
82b65945c4 Merge pull request #31 from jcvenegas/ccloudvm-templates
wip: ccloudvm: Add templates for kata containers.
2018-05-24 16:15:47 +01:00
James O. D. Hunt
9664caf7f4 Merge pull request #120 from jodh-intel/add-links-to-upgrade-doc
Add links to upgrade doc
2018-05-24 16:14:38 +01:00
James O. D. Hunt
ef3b0e5f9d Merge pull request #98 from bergwolf/runv-upgrade
upgrade: add runv upgrade guide
2018-05-24 16:13:19 +01:00
Jose Carlos Venegas Munoz
2e572f587e docs: Add ccloudvm README.
Add information how to use workloads for ccloudvm.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-23 11:02:43 -05:00
Jose Carlos Venegas Munoz
b4be018068 ccloudvm: Add worklaod to tests packages in VM.
create a template based in docker-xenial.yaml

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-23 10:49:32 -05:00
Peng Tao
ca460f39ce upgrade: add runv upgrade guide
runV and Kata Containers can live together but we need to make it clear
in the doc.

Fixes: #97

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-05-23 23:13:57 +08:00
James O. D. Hunt
28b94b72bf docs: Add missing periods
Add fullstops at the of bullets in install README.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-23 15:52:48 +01:00
James O. D. Hunt
3e50bfc9eb docs: Add links to upgrade doc
Update the install README and the install guides to point to the
upgrading document.

Fixes #119.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-23 15:52:48 +01:00
James O. D. Hunt
62459fe591 docs: Explain packages are x86_only currently
Update the install guides to explain that packages are currently only
available on x86_64.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-23 15:52:48 +01:00
James O. D. Hunt
2ac2f41c22 docs: Apply standard formatting for Note
Make the leading Note in the install guides use the standard
note formatting.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-23 15:52:45 +01:00
Julio Montes
9fb0b337ef Merge pull request #336 from jodh-intel/show-config-file-name
config: Show which config file loaded
2018-05-23 07:28:42 -05:00
James O. D. Hunt
169f7d7965 Merge pull request #100 from jodh-intel/add-doc-requirements
docs: Add a doc requirements doc
2018-05-23 11:18:44 +01:00
James O. D. Hunt
928640fe37 docs: Add a doc requirements doc
Add a document that explains the expectations for project
documentation.

Fixes #99.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-23 11:15:49 +01:00
James O. D. Hunt
054a8ce3b7 config: Show which config file loaded
Since the runtime can load its configuration from multiple locations,
add a log field to show which location was used.

Change log level from Debug to Info as this is generally useful
information.

Fixes #335.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-23 10:12:24 +01:00
Jose Carlos Venegas Munoz
68f91f3f59 Merge pull request #88 from jcvenegas/k8s-cri-contaienrd
how-to: Use K8s "cri"  containerd  plugin and kata.
2018-05-22 13:25:16 -05:00
Jose Carlos Venegas Munoz
093243a4bc how-to: Use k8s + cri + kata.
Add document to describe to to setup kubernetes and "cri" containerd

Fixes: #87

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-22 13:21:01 -05:00
James O. D. Hunt
f313ac18a9 Merge pull request #115 from jodh-intel/fix-centos-install-doc
docs: Fix CentOS install guide
2018-05-22 17:50:12 +01:00
James O. D. Hunt
1089b85b35 Merge pull request #118 from jodh-intel/dev-guide-refer-to-install-readme
docs: Make devguide refer to install README
2018-05-22 17:49:58 +01:00
James O. D. Hunt
b2867914f8 docs: Make devguide refer to install README
Now that we have a README for the installation guides, update the
developer guide to refer to that page, to avoid hard-coding links to
(some of) the installation guides.

Fixes #117.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-22 17:01:24 +01:00
James O. D. Hunt
49a64c3c46 Merge pull request #41 from jcvenegas/pkgs1.0.0
versions: Move packages to 1.0.0
2018-05-22 13:07:31 +01:00
James O. D. Hunt
d89d199cdf docs: Fix CentOS install guide
The CentOS install guide was referencing an invalid package
(`dnf-plugins-core`) so update for the yum equivalent.

Fixes #329.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-22 09:59:20 +01:00
Jose Carlos Venegas Munoz
62ebdddb5c versions: Update to kata 1.0.0
Move packages to 1.0.0

Fixes: #40

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-21 21:46:05 -05:00
Eric Ernst
086d197f2c Merge pull request #329 from jcvenegas/1.0.0-branch
# Kata Containers 1.0.0
2018-05-21 18:57:49 -07:00
Sebastien Boeuf
ade2da86ca Merge pull request #20 from eadamsintel/zun
Add POC documentation of Kata working with OpenStack Zun
2018-05-21 17:47:38 -07:00
Eric Adams
ef9e72319f Add POC documentation of Kata working with OpenStack Zun
Signed-off-by: Eric Adams <eric.adams@intel.com>
2018-05-21 17:39:40 -07:00
Jose Carlos Venegas Munoz
5a51563a98 release: Kata Containers 1.0.0
Version bump no changes

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-21 18:03:21 -05:00
Eric Ernst
c7523884f1 Merge pull request #113 from chavafg/topic/fix-centos-url
install: Fix centos obs url
2018-05-21 14:28:29 -07:00
Eric Ernst
79dd45a39c Merge pull request #110 from jodh-intel/undo-create-container-bash-block
docs: Ensure install doc bash commands are non-interactive
2018-05-21 14:27:50 -07:00
Salvador Fuentes
b667ac0ec7 install: Fix centos obs url
Remove backslash from centos url that was
preventing the $VERSION_ID to take its correct value.

Fixes: #112.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-05-21 13:51:04 -05:00
Eric Ernst
5d23a93a28 Merge pull request #111 from GabyCT/topic/addcentos
docs: Add CentOS installation guide
2018-05-21 10:10:47 -07:00
Eric Ernst
fdacf89a41 Merge pull request #106 from jodh-intel/update-install-README
Update install readme
2018-05-21 08:45:10 -07:00
James O. D. Hunt
08288d9808 docs: Add further links to install README
Add developer guide and runtime repo links to the installation README.

Fixes #105.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-21 16:26:03 +01:00
James O. D. Hunt
9d37c48088 docs: Add detail to install README
Add a sentence introducing the install guides in the installation
README.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-21 16:26:03 +01:00
James O. D. Hunt
54be6c69d1 docs: Add bullets to install README
Format the list of install guides as a bullet list in the installation
README.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-21 16:26:03 +01:00
Eric Ernst
28a7921664 Merge pull request #104 from jshachm/events-limit
doc: change limitation doc for cli events
2018-05-21 08:15:55 -07:00
James O. D. Hunt
6e83bdbd75 docs: Ensure install doc bash commands are non-interactive
Remove the `bash` tag from the last command in the install guides where
we show the user how to create a container with a busybox shell. This
doesn't change the content of the document but it ensures that all bash
blocks can be run non-interactively (by the `kata-doc-to-script.sh`
script in the tests repo).

Fixes #109.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-21 16:13:02 +01:00
Eric Ernst
9c88bdf0d2 Merge pull request #108 from jodh-intel/make-ubuntu-install-idempotent
docs: Make Ubuntu install idempotent
2018-05-21 07:53:52 -07:00
Eric Ernst
fce60cd1b6 Merge pull request #102 from jodh-intel/add-ci-scripts
CI: Add CI scripts
2018-05-21 07:44:44 -07:00
Frank Cao
92ec15d774 Merge pull request #326 from jshachm/fix-pod-to-sandbox
virtcontainers: fix codes misunderstanding in virtcontainers
2018-05-21 21:55:16 +08:00
Julio Montes
8347f4d5ca Merge pull request #319 from jodh-intel/error-on-image+initrd
config: Error if image+initrd specified
2018-05-21 08:23:20 -05:00
c00416947
b5e23cea51 doc: change limitation doc for cli events
cli events is now partly supported.It returns
the stats of a certain container.

OOM notification and Intel RDT stats are not supproted
as what runc does

Fixes: #103

Signed-off-by: Haomin <caihaomin@huawei.com>
2018-05-21 18:57:27 +08:00
James O. D. Hunt
ce5c2bbc8c docs: Make Ubuntu install idempotent
Don't append to Kata-specific apt sources file to avoid apt warnings
and make the install idempotent.

Fixes #107.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-21 11:41:08 +01:00
Samuel Ortiz
41492d5bd9 Merge pull request #323 from jodh-intel/add-more-details-to-readme
docs: Add more details to the README
2018-05-21 11:38:33 +02:00
Samuel Ortiz
216aa53974 Merge pull request #321 from jodh-intel/fix-README-toc
docs: Fix README TOC
2018-05-21 11:34:58 +02:00
Gabriela Cervantes
7c895cdfaf docs: Add CentOS installation guide
This will add the installation guide for CentOS.

Fixes #84

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-05-21 03:25:25 -05:00
c00416947
7abb8fe326 virtcontainers: fix codes misunderstanding in virtcontainers
Still there are some codes left which
will cause some misunderstanding

Change `p` in short of `pod` into `s` or `sandbox`

Fixes: #325

Signed-off-by: Haomin <caihaomin@huawei.com>
2018-05-21 11:11:27 +08:00
Eric Ernst
a01957472e Merge pull request #83 from jcvenegas/fix-ubuntu-docs
install: Fix kata installation steps.
2018-05-18 21:45:32 -07:00
Julio Montes
2245e67f93 Merge pull request #324 from jcvenegas/0.3.0-branch
# Kata Containers 0.3.0
2018-05-18 15:01:45 -05:00
Jose Carlos Venegas Munoz
f39dc40b5d install: fix ubuntu docs.
obs provides ubuntu packages by http not https.

Fixes: #81

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-18 14:30:11 -05:00
Jose Carlos Venegas Munoz
6ebda37d88 release: Kata Containers 0.3.0
- cli :Implement events command
- docs: update README to include links to user guides
- versions: Update versions file.
- build: default to using qemu-lite-x86_64
- versions: Add gometalinter to versions database
- kata-env: Remove static agent version
- virtcontainers/qemu: reduce memory footprint

1205e34 cli: implement events command
f1f534c vendor: update agent
b9c9ad9 docs: update README to include links to user guides
5b4ab7d versions: Update cri-containerd version.
4bfa8f8 versions: Add default initrd information
646e752 versions: Change kernel data.
1382662 build: default to using qemu-lite-x86_64
a0b1083 versions: Add gometalinter to versions database
80bedb0 kata-env: Remove static agent version
4527a80 virtcontainers/qemu: honour CPU constrains
07db945 virtcontainers/qemu: reduce memory footprint

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-18 12:35:43 -05:00
James O. D. Hunt
811a5437a4 CI: Add CI scripts
Create a basic set of CI scripts that just run the static checks for
now.

Fixes #101.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-18 15:59:58 +01:00
James O. D. Hunt
a12618811d Merge pull request #99 from jodh-intel/image-require-systemd
Image require systemd
2018-05-18 15:54:55 +01:00
James O. D. Hunt
aca45c5820 image: Require systemd
Building an image requires systemd to be installed in the rootfs as the
init daemon, so assert that systemd is available.

Updated tests so that alpine is only tested as an initrd (it cannot be
an image as it doesn't use systemd).

Added warning note about alpine to the docs.

Fixes #98.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-18 13:01:08 +01:00
James O. D. Hunt
ce5dda8249 docs: Add more details to the README
Add brief entries to the README for the following:

- Limitations
- Contact details
- Further information

Fixes #322.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-18 11:21:35 +01:00
James O. D. Hunt
171eceb426 image: Use variable for referring to init
Use a variable rather than hard-coding the expected init daemon path.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-18 11:04:14 +01:00
James O. D. Hunt
5b194b6144 docs: Fix README TOC
Updated `README` table of contents as PR #316 forgot to do so.

Fixes #320.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-18 10:01:09 +01:00
James O. D. Hunt
8b56573cc7 config: Error if image+initrd specified
If you build and install the runtime, the config file will contain an
entry for both an `initrd=` and an `image=` entry.

The Developer Guide explains that the user must disable one but it is
easy to forget.

Modified the runtime to fail if both an image and an initrd are
specified. Also added a new test for this scenario.

Fixes #318.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-18 09:55:38 +01:00
Peng Tao
be82c7fc6f Merge pull request #299 from jshachm/implement-events-command
cli :Implement events command
2018-05-18 15:35:52 +08:00
c00416947
1205e347f2 cli: implement events command
Events cli display container events such as cpu,
memory, and IO usage statistics.

By now OOM notifications and intel RDT are not fully supproted.

Fixes: #186

Signed-off-by: Haomin <caihaomin@huawei.com>
2018-05-18 09:17:49 +08:00
Eric Ernst
207ceaba8b Merge pull request #316 from kata-containers/readme-updates
docs: update README to include links to user guides
2018-05-17 17:12:50 -07:00
Eric Ernst
b9c9ad94cf docs: update README to include links to user guides
Added links to the installation guides, as well as a
pointer to the kata containers architecutre document.

Fixes: #315

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-05-17 12:43:20 -07:00
Sebastien Boeuf
1ca427d2ea Merge pull request #96 from kata-containers/readme-updates
install: add installation readme
2018-05-17 12:39:35 -07:00
Eric Ernst
e462e2c157 install: add installation readme
Fixes: #95

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-05-17 11:43:02 -07:00
Salvador Fuentes
d0c17a8206 Merge pull request #314 from jcvenegas/versions-update
versions: Update versions file.
2018-05-17 13:02:12 -05:00
Eric Ernst
552b442059 Merge pull request #312 from kata-containers/qemu-lite-default
build: default to using qemu-lite-x86_64
2018-05-17 10:37:50 -07:00
Jose Carlos Venegas Munoz
5b4ab7dfaa versions: Update cri-containerd version.
Update last supported cri-contaienrd version.

Fixes: #313

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-17 11:35:56 -05:00
James O. D. Hunt
07626c6b3a Merge pull request #93 from jodh-intel/convert-cmds-to-bash-blocks
docs: Change install guides to use bash code blocks
2018-05-17 17:28:54 +01:00
James O. D. Hunt
c823f3cdb0 Merge pull request #79 from jodh-intel/add-upgrade-doc
docs: Add upgrading doc
2018-05-17 17:12:46 +01:00
Jose Carlos Venegas Munoz
4bfa8f8c22 versions: Add default initrd information
Add information about the default initrd.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-17 10:53:24 -05:00
Eric Ernst
1382662c1b build: default to using qemu-lite-x86_64
Update the runtime to use qemu-lite by default. After a
build this will be observed as the default in configuration.toml

Fixes: #293
Depends-on: github.com/kata-containers/tests#308

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-05-17 08:50:32 -07:00
Julio Montes
ff7349b7fe Merge pull request #38 from jcvenegas/rhel-qemu
qemu: rhel: Remove librados to allow build.
2018-05-17 10:46:04 -05:00
Jose Carlos Venegas Munoz
646e752c38 versions: Change kernel data.
Kernel data is not used in CI or packagin.
Add more information to be useful for automation.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-17 10:24:02 -05:00
Eric Ernst
561fead334 Merge pull request #74 from jodh-intel/dev-guide-debug-console
docs: Add debug console to dev guide
2018-05-17 07:33:56 -07:00
Eric Ernst
86cf9cab8f Merge pull request #82 from jodh-intel/dev-guide-initial-setup-section
docs: Update dev guide for OBS packages
2018-05-17 07:32:05 -07:00
James O. D. Hunt
f3e454560e docs: Change install guides to use bash code blocks
Change the installation guides so that all commands the user must type
use an explicit bash code block rather than a standard code block.

This adds meaning to the documents and will then allow us to extract
the commands and run them for testing purposes.

Fixes #92.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-17 15:21:06 +01:00
James O. D. Hunt
3347bd769c docs: Mention versions database for golang in dev guide
Provide a pointer to the versions database to allow developers
to see the range of golang versions known to work.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-17 14:06:24 +01:00
James O. D. Hunt
244e50e3e4 docs: Update dev guide for OBS packages
Add details of how to install the packaged components to start off with
a working system. This involved splitting out part of the "Assumptions"
section into a new "Initial setup" section.

Fixes #80.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-17 14:06:20 +01:00
James O. D. Hunt
d4006d8ddd docs: Make dev guide warning clearer
Add some extra words to make the warning about the dev guide audience
clearer.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-17 13:59:44 +01:00
James O. D. Hunt
36e974b3e2 docs: Add debug console to dev guide
Add an appendix explaining how to setup a debug console to login to the
virtual machine for debugging.

Fixes #72.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-17 11:36:22 +01:00
James O. D. Hunt
b94fbf706f docs: Use sudo to remove old rootfs in dev guide
You cannot remove an existing rootfs directory without being `root`,
so use `sudo(8)` in the developer guide.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-17 07:51:35 +01:00
James O. D. Hunt
603a40a826 docs: Add upgrading doc
Add a document explaining how to upgrade a system:

- Running Clear Containers.
- Already installed with Kata Containers binaries.

Also, include details of assets and how and when the are updated.

Fixes #69, fixes #78.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-17 07:40:36 +01:00
James O. D. Hunt
b8bd68b77b Merge pull request #35 from jcvenegas/fix-fedora-28
pkgs: Fix build for fedora 28.
2018-05-17 07:15:09 +01:00
James O. D. Hunt
6ae6e1ee1e Merge pull request #66 from devimc/update/developer
developer-guide: update guest kernel image section
2018-05-17 07:12:38 +01:00
James O. D. Hunt
dd3e2e3f2c Merge pull request #76 from raravena80/patch-1
Added more details to the Containerd CRI Plugin
2018-05-17 07:10:23 +01:00
James O. D. Hunt
d25a591def Merge pull request #95 from stefanha/fix-copy_kernel_modules-dest_dir
rootfs: copy kernel modules to correct location
2018-05-17 07:08:46 +01:00
Jose Carlos Venegas Munoz
a6d77fddaf qemu: rhel: Remove librados to allow build.
Build qemu without librados. This allows build qemu in OBS.

Fixes: #37

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-16 18:23:22 -05:00
Jose Carlos Venegas Munoz
f7cb9988e7 linux: fedora: fix build.
Allow kernel builds in fedora 28.

Ignore new warnings from gcc 8.

Fixes: #30

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-16 16:51:10 -05:00
Ricardo Aravena
ad4be60209 docs: Update arch doc for containerd
Added more details to the Containerd CRI Plugin.

Fixes #77

Signed-off-by: Ricardo Aravena <raravena@branch.io>
2018-05-16 11:01:52 -07:00
Eric Ernst
8876d423df Merge pull request #71 from jodh-intel/add-sigusr1-to-dev-guide
docs: Explain SIGUSR1 usage in dev guide
2018-05-16 10:45:59 -07:00
Stefan Hajnoczi
fd8d9bdc2c rootfs: copy kernel modules to correct location
Commit b8f1a68834 ("rootfs: Simplify
code") introduced a variable called destdir but accidentally used
dest_dir with cp(1) instead.  This causes kernel modules to be copied to
the wrong location.

Rename the variable to dest_dir to be consistent with module_dir and
rootfs_dir variables used in this function.

Fixes: #94
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-05-16 17:41:29 +01:00
Julio Montes
0cb0eb4dda Merge pull request #34 from jcvenegas/fix-qemu-build
Fix qemu build in distros with new glibc versions.
2018-05-16 10:42:49 -05:00
Julio Montes
8de92c03c9 Merge pull request #93 from jodh-intel/add-extra-pkgs-to-summary
rootfs: Add extra packages to summary file
2018-05-16 10:28:11 -05:00
Peng Tao
be77118243 Merge pull request #91 from Pennyzct/agent_version
rootfs.sh: Add "${AGENT_VERSION}"/"-a" functionality
2018-05-16 16:05:24 +08:00
Penny Zheng
7732e0407a rootfs: Fix incorrect getopts call
The `getopts` call in the rootfs builder was incorrect
meaning the `-a $agent_version` option would never have worked.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-05-16 03:14:35 +00:00
Penny Zheng
f7f267213c rootfs: Add "${AGENT_VERSION}"/"-a" functionality
For now, the flag "-a" or relevant shell variant "${AGENT_VERSION}"
hasn't been used, only defined. Using 'git checkout' command to go
into requested branch.

Fixes: #90

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-05-16 03:14:25 +00:00
Eric Ernst
d1bfd7ea17 Merge pull request #33 from chavafg/topic/qemu-config-centos
qemu: disable fno-semantic-interposition for old gcc
2018-05-15 15:50:31 -07:00
Jose Carlos Venegas Munoz
ab868b1648 gitignore: Ignore debian.series file.
This is an autogenerated file.

Fixes: #61

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-15 17:29:24 -05:00
Salvador Fuentes
b78ecea3a2 qemu: disable fno-semantic-interposition for old gcc
We can only set disable fno-semantic-interposition if the
gcc used to build qemu is 5.3 or newer.
CentOS provides an older gcc, then we need to not enable this
option if it is the case.

Fixes #32.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-05-15 16:28:20 -05:00
Jose Carlos Venegas Munoz
793a47a790 qemu: fix build for fedora 28 and ubuntu 18.
This patch fix build for distros with new glib versions.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-15 11:41:00 -05:00
Jose Carlos Venegas Munoz
17d48e366f pkglib: Add debian.series to generated files.
If patches are found add debian.series to generated files.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-15 11:41:00 -05:00
Frank Cao
32c734e10b Merge pull request #305 from jodh-intel/add-gometalinter-to-versions-db
versions: Add gometalinter to versions database
2018-05-16 00:15:12 +08:00
Julio Montes
7916e21edd developer-guide: update guest kernel image section
add steps to build kata kernel from source

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-15 09:08:23 -05:00
Peng Tao
dfdad13e45 Merge pull request #311 from jodh-intel/env-remove-agent-version
kata-env: Remove static agent version
2018-05-15 21:22:36 +08:00
James O. D. Hunt
80bedb005e kata-env: Remove static agent version
Remove the agent version from the output of `kata-env`. The value was
always a static string (`<<unknown>>`) because the runtime cannot
determine the agent version without creating a container.

Note that agent details, including the version, *are* displayed when
the user runs `kata-collect-data.sh`.

Fixes #310.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-15 10:27:06 +01:00
James O. D. Hunt
317b701499 docs: Explain SIGUSR1 usage in dev guide
Add details to the developer guide of how to obtain a backtrace by
sending a `SIGUSR1` signal to the component.

Fixes #70.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-15 09:32:21 +01:00
James O. D. Hunt
1a966503e5 docs: More log-parser detail in dev guide
Add brief details to the developer guide explaining that the
log parser can convert the format of the logs.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-15 09:32:18 +01:00
Eric Ernst
be388761a7 Merge pull request #75 from jodh-intel/fix-release-checklist-link
docs: Fix release checklist link in releases doc
2018-05-14 21:13:19 -07:00
Eric Ernst
90fc7e6d85 Merge pull request #296 from devimc/cpu/fixMemFootprint
virtcontainers/qemu: reduce memory footprint
2018-05-14 18:55:25 -07:00
Julio Montes
4527a8066a virtcontainers/qemu: honour CPU constrains
Don't fail if a new container with a CPU constraint was added to
a POD and no more vCPUs are available, instead apply the constraint
and let kernel balance the resources.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-14 17:33:31 -05:00
Julio Montes
07db945b09 virtcontainers/qemu: reduce memory footprint
There is a relation between the maximum number of vCPUs and the
memory footprint, if QEMU maxcpus option and kernel nr_cpus
cmdline argument are big, then memory footprint is big, this
issue only occurs if CPU hotplug support is enabled in the kernel,
might be because of kernel needs to allocate resources to watch all
sockets waiting for a CPU to be connected (ACPI event).

For example

```
+---------------+-------------------------+
|               | Memory Footprint (KB)   |
+---------------+-------------------------+
| NR_CPUS=240   | 186501                  |
+---------------+-------------------------+
| NR_CPUS=8     | 110684                  |
+---------------+-------------------------+
```

In order to do not affect CPU hotplug and allow to users to have containers
with the same number of physical CPUs, this patch tries to mitigate the
big memory footprint by using the actual number of physical CPUs as the
maximum number of vCPUs for each container if `default_maxvcpus` is <= 0 in
the runtime configuration file,  otherwise `default_maxvcpus` is used as the
maximum number of vCPUs.

Before this patch a container with 256MB of RAM

```
              total        used        free      shared  buff/cache   available
Mem:           195M         40M        113M         26M         41M        112M
Swap:            0B          0B          0B
```

With this patch

```
              total        used        free      shared  buff/cache   available
Mem:           236M         11M        188M         26M         36M        186M
Swap:            0B          0B          0B
```

fixes #295

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-14 17:33:31 -05:00
Jose Carlos Venegas Munoz
3295f8a5db Merge pull request #20 from erick0z/packaging_scripts
packages: Add spec files and update scripts
2018-05-14 16:15:52 -05:00
Erick Cardona
235276fbff packages: Add spec files and update scripts
This commit adds the necessary spec files and scripts in order to be able to create
packages in OBS (Open Build System) and locally.

Fixes #15

Signed-off-by: Erick Cardona <erick.cardona.ruiz@intel.com>
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-14 16:13:59 -05:00
Sebastien Boeuf
8638297cae Merge pull request #65 from egernst/architecture-docs
add initial kata architecture docs
2018-05-14 11:52:30 -07:00
Eric Ernst
4144a4ceea Merge pull request #61 from GabyCT/topic/ubuntuinstall
docs: Add ubuntu installation guide
2018-05-14 11:25:24 -07:00
Eric Ernst
a7018665a7 Adding OCI created images, some minor cleanup
Will refactor history, but looking to have this as
a starting baseline to merge.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-05-14 10:15:26 -07:00
James O. D. Hunt
3b1eed3460 Merge pull request #63 from GabyCT/topic/fedorainstall
docs: Add fedora installation guide.
2018-05-14 18:01:07 +01:00
James O. D. Hunt
9a945c68b5 docs: Fix release checklist link in releases doc
The link to the release checklist in the Releases document was linking
to the parent document, not the separate checklist document.

Fixes #73.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-14 16:27:43 +01:00
James O. D. Hunt
a0b10838ee versions: Add gometalinter to versions database
Our tests CI is dependent on `gometalinter` which are run by the static
checks script. However, `gometalinter` changes a lot
and when it does, it breaks (what were) valid PRs.

Add `gometalinter` to the versions database so we can pin the version
we use to a known good one.

Fixes #304.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-14 15:39:45 +01:00
James O. D. Hunt
3151f35c86 rootfs: Add extra packages to summary file
Added the extra packages the user requested to the summary file as
previously only the default packages were listed.

Fixes #92.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-14 14:39:49 +01:00
Eric Ernst
90e3ba6027 Merge pull request #300 from kata-containers/version-0.2.0-update
build: update to version 0.2.0
2018-05-11 13:05:17 -07:00
Eric Ernst
8ce6cd53b0 release: update to version 0.2.0
bump version

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-05-11 10:45:33 -07:00
c00416947
f1f534c6ae vendor: update agent
This new version of kata-agent brings support for
stats of a certain container

Short logs:
077e6f9 grpc : Add the StatsContainer api for `events cli`
d29bf53 block: Get rid of device prediction for Storage as well
3b565ad block: Use PCI address to determine block device name

Signed-off-by: Haomin <caihaomin@huawei.com>
2018-05-11 19:19:57 +08:00
James O. D. Hunt
6227fa96c7 Merge pull request #278 from jcvenegas/k8s1.10
versions: Move to k8s 1.10
2018-05-11 07:59:53 +01:00
Gabriela Cervantes
872fe597a2 docs: Add ubuntu installation guide
Add ubuntu installation guide for kata containers packages.

Fixes #60

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-05-11 01:59:36 -05:00
Eric Ernst
91e9ed0898 Merge pull request #294 from jodh-intel/vc-reduce-path-lengths
virtcontainers: Reduce path lengths
2018-05-09 20:40:59 -07:00
Eric Ernst
03e93cd55a cleanup per jodh's feedback
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-05-09 15:00:22 -07:00
Eric Ernst
0c489d322c Merge pull request #289 from amshinde/accept-empty-env-val
oci: Allow environment values to be empty
2018-05-09 11:45:10 -07:00
James O. D. Hunt
48e949476e Merge pull request #269 from jodh-intel/enforce-socket-path-len
socket: Enforce socket length
2018-05-09 13:49:20 +01:00
Salvador Fuentes
5b9cebd25a versions: Add cri-o version for openshift v3.9.0
Since we want to test under kubernetes 1.10 and we also
want to supoort latest version of Openshift, which is v3.9.0,
we need to test with with different versions of CRI-O.

K8s 1.10 should use cri-o 1.10, while openshift v3.9.0
should use v1.9

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

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-05-09 07:39:39 -05:00
James O. D. Hunt
6a47808580 virtcontainers: Reduce path lengths
Reduce the virtcontainers prefix path to avoid hitting the 107 byte
Unix domain socket path limit.

Related #268.

Fixes #290.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-09 11:37:15 +01:00
James O. D. Hunt
bce9edd277 socket: Enforce socket length
A Unix domain socket is limited to 107 usable bytes on Linux. However,
not all code creating socket paths was checking for this limits.

Created a new `utils.BuildSocketPath()` function (with tests) to
encapsulate the logic and updated all code creating sockets to use it.

Fixes #268.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-09 11:36:24 +01:00
Gabriela Cervantes
bdb1b2d44f docs: Add fedora installation guide.
This will add fedora installation guide for kata containers packages.

Fixes #62

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-05-09 03:10:19 -05:00
Archana Shinde
b7674de3cf oci: Allow environment values to be empty
An empty string for an environment variable simply means that the
variable is unset. Do not error out if the env value is empty.

Fixes #288

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-05-08 09:27:35 -07:00
Eric Ernst
f6544a3524 Merge pull request #270 from devimc/command/update
cli: implement update command
2018-05-08 08:12:03 -07:00
Julio Montes
2b2aeabd89 vendor: update agent
This new version of kata-agent brings support for
updating resources and cpuset cgroups

Shortlog:
28cf91a grpc: implement update command
d96b8e1 grpc: update cpuset cgroup
4bcacdc network: Don't remove network routes or DNS when destroying sandbox
1f5cf20 network: Don't store the network info as pointers if slices used
8f828bb uevent: Fix netlink error while assigning pid in netlink client
093f61b agent: add grpc tracer UT
33bd601 agent: add server interceptor to log grpc requests
134d5d5 test: add start/stop grpc server UT
7e94246 agent: track grpc server
9fb8024 UT: add tests for channel
bea6183 agent: wait serial channel to be ready before reading
f8c8c4c agent: accept grpc connections multiple times

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-08 07:26:38 -05:00
Julio Montes
81f376920e cli: implement update command
Update command is used to update container's resources at run time.
All constraints are applied inside the VM to each container cgroup.
By now only CPU constraints are fully supported, vCPU are hot added
or removed depending of the new constraint.

fixes #189

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-08 07:26:38 -05:00
Julio Montes
0cea861f93 vendor: add docker/go-units
go-units package is used to convert integers to memory
units, for example 1024 -> 1G

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-08 07:13:23 -05:00
Eric Ernst
fa848ba436 Merge pull request #282 from WeiZhang555/device-manager
virtcontainers: refactor device.go to device manager
2018-05-07 21:06:28 -07:00
Eric Ernst
eb035e167f architecture: add OCI cmd diagrams
Create docker example UML flows.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-05-07 20:44:05 -07:00
Zhang Wei
f4a453b86c virtcontainers: address some comments
* Move makeNameID() func to virtcontainers/utils file as it's a generic
function for making name and ID.
* Move bindDevicetoVFIO() and bindDevicetoHost() to vfio driver package.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-05-08 10:24:26 +08:00
Zhang Wei
28de16a450 virtcontainers: fix typo
Fix typo.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-05-08 10:24:26 +08:00
Zhang Wei
9acbcba967 virtcontainers: make CreateDevice func private
CreateDevice() is only used by `NewDevices()` so we can make it private and
there's no need to export it.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-05-08 10:24:26 +08:00
Zhang Wei
366558ad5b virtcontainers: refactor device.go to device manager
Fixes #50

This is done for decoupling device management part from other parts.
It seperate device.go to several dirs and files:

```
virtcontainers/device
├── api
│   └── interface.go
├── config
│   └── config.go
├── drivers
│   ├── block.go
│   ├── generic.go
│   ├── utils.go
│   ├── vfio.go
│   ├── vhost_user_blk.go
│   ├── vhost_user.go
│   ├── vhost_user_net.go
│   └── vhost_user_scsi.go
└── manager
    ├── manager.go
    └── utils.go
```

* `api` contains interface definition of device management, so upper level caller
should import and use the interface, and lower level should implement the interface.
it's bridge to device drivers and callers.
* `config` contains structed exported data.
* `drivers` contains specific device drivers including block, vfio and vhost user
devices.
* `manager` exposes an external management package with a `DeviceManager`.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-05-08 10:24:26 +08:00
Archana Shinde
81503d7c69 Merge pull request #259 from bergwolf/sandbox_api_2
add sandbox process operation relay API support
2018-05-07 10:01:50 -07:00
Eric Ernst
4602ef5a60 Clean up architecture .md
Remove more references to Clear in the images as well as text.

Reworked some sections for grammar/flow.

Immediate next steps:
1. At least the delete/kill command section needs to be cleaned
 up/clarified
2. Move CRI-O UML flow example to its own section, or subection of CRI-O
3. Carve up UML diagram for basic docker example case.
4. Add section describing initrd configuration
5. Add section detailing the gRPC protocol
6. Agent section needs cleaning around gRPC description.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-05-07 07:35:09 -07:00
Eric Ernst
e04609b1cf initial architecture documentation
There is still a lot in progress, but sharing a first pass.

To do includes:
-need updated pngs (s/cc/kata)
-'signifcant' cmd section could use (simple) UML
-Need better location, and possible split up the CRI UML example
-need description of CRI-containerd
-Missing API extensions and description

Should likely carve this up into smaller .mds, as no one should read
that much text, and I don't want to get more than 200 review comments.

Contributed to by: Julio Montes, Archana Shinde, Sebastien Boeuf, and
the original CC-3.0 doc.

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-05-07 07:33:04 -07:00
Peng Tao
410e5e6abb hyperstart_agent: fix comments
As @egernst pointed out, it should be hyperstart_agent instead of
cc-agent.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-05-05 09:23:46 +08:00
Peng Tao
1bb6ab9e22 api: add sandbox iostream API
It returns stdin, stdout and stderr stream of the specified process in
the container.

Fixes: #258

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-05-04 15:38:32 +08:00
Peng Tao
bf4ef4324e API: add sandbox winsizeprocess api
It sends tty resize request to the agent to resize a process's tty
window.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-05-04 15:38:32 +08:00
Peng Tao
55dc0b2995 API: add sandbox signalprocess api
It sends the signal to a process of a container, or all processes
inside a container.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-05-04 15:38:32 +08:00
Peng Tao
45970ba796 API: add sandbox waitprocess api
It waits a process inside the container of a sandbox.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-05-04 15:38:32 +08:00
Eric Ernst
992c895eaa Merge pull request #267 from amshinde/pass-pci-addr
Determine and pass PCI addresses for block devices
2018-05-03 16:20:47 -07:00
Archana Shinde
717bc4cd26 virtcontainers: Pass the PCI address for block based rootfs
Store the PCI address of rootfs in case the rootfs is block
based and passed using virtio-block.
This helps up get rid of prdicting the device name inside the
container for the block device. The agent will determine the device
node name using the PCI address.

Fixes #266

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-05-03 10:59:09 -07:00
Archana Shinde
da08a65de3 device: Assign pci address to block device for kata_agent
Store PCI address for a block device on hotplugging it via
virtio-blk. This address will be passed by kata agent in the
device "Id" field. The agent within the guest can then use this
to identify the PCI slot in the guest and create the device node
based on it.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-05-03 10:59:09 -07:00
Archana Shinde
85865f1a2c bridge: Store the bridge address to state
We need to store the bridge address to state to use it
for assigning addresses to devices attached to teh bridge.
So we need to make sure that the bridge pointer is assigned
the address.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-05-03 10:59:09 -07:00
Archana Shinde
718dbd2a71 device: Assign pci address for block devices
Introduce a new field in Drive to store the PCI address if the drive is
attached using virtio-blk.
Assign PCI address in the format bridge-addr/device-addr.
Since we need to assign the address while hotplugging, pass Drive
by address.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-05-03 10:59:09 -07:00
Archana Shinde
dd927921c1 qemu: Return bridge itself with addDeviceToBridge instead of bridge bus
Change the function to return the bridge itself that the
device is attached to. This will allow bridge address to be used
for determining the PCI slot of the device within the guest.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-05-03 10:59:08 -07:00
Salvador Fuentes
7bd63d59e5 versions: update openshift to v3.9.0
Update our supported openshift version
from v3.7.1 to v3.9.0

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-05-03 10:16:36 -05:00
Peng Tao
3d1b4a1595 Merge pull request #284 from stefanha/Makefile-add-install-dependency
Makefile: add missing dependencies to install targets
2018-05-03 12:18:25 +08:00
Stefan Hajnoczi
c032061bf7 Makefile: add missing dependencies to install targets
"make install" fails on a clean working directory:

  $ make install
  install: cannot stat ‘data/kata-collect-data.sh’: No such file or directory

This happens because install and install-scripts do not depend on the
runtime.  Make doesn't know it needs to build the runtime before it can
be installed.

Add the missing dependencies to the install targets so that "make
install" works on a clean working directory and rebuilds when source
files have been modified.

Note that SCRIPTS contains the generated kata-collect-data.sh script.
That file needs to be generated before it can be installed, so make
SCRIPTS a dependency of install-scripts.

Fixes: #283
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-05-02 15:23:39 +01:00
Sebastien Boeuf
87aa1d77ed Merge pull request #252 from bergwolf/sandbox_api_1
API: support sandbox monitor operation
2018-05-01 10:01:17 -07:00
Peng Tao
9d1311d0ee kata_agent: refactor sendReq
CI complains about cyclomatic complexity in sendReq.

warning: cyclomatic complexity 16 of function (*kataAgent).sendReq() is
high (> 15) (gocyclo)

Refactor it a bit to avoid such error. I'm not a big fan of the new code
but it is done so because golang does not support generics.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-05-01 22:42:39 +08:00
Peng Tao
35ebadcedc api: add sandbox Monitor API
It monitors the sandbox status and returns an error channel to let
caller watch it.

Fixes: #251

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-05-01 22:42:33 +08:00
Eric Ernst
70b3c774f8 Merge pull request #263 from bergwolf/sandbox_pointer
virtcontainers: always pass sandbox as a pointer
2018-05-01 07:33:33 -07:00
Peng Tao
5fb4768f83 virtcontainers: always pass sandbox as a pointer
Currently we sometimes pass it as a pointer and other times not. As
a result, the view of sandbox across virtcontainers may not be the same
and it costs extra memory copy each time we pass it by value. Fix it
by ensuring sandbox is always passed by pointers.

Fixes: #262

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-05-01 20:50:07 +08:00
Jose Carlos Venegas Munoz
4d73637829 versions: Move to k8s 1.10
Move to k8s 1.10

Fixes: #277

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-05-01 02:15:11 -05:00
Sebastien Boeuf
8d897f407f Merge pull request #238 from jodh-intel/collect-script-support-initrd+osbuilder-file
Tidy up and add support for initrd and osbuilder metadata file
2018-04-30 16:00:15 -07:00
Eric Ernst
ff9b2bd04e Merge pull request #256 from sboeuf/improve_container_search_CLI
cli: Optimize container research
2018-04-30 14:41:40 -07:00
Sebastien Boeuf
e6f066b828 cli: Optimize container research
This commit will allow for better performance regarding the time spent
to retrieve the sandbox ID related to a container ID.

The way it works is by relying on a specific mapping between container
IDs and sanbox IDs, meaning it allows to retrieve directly the sandbox
ID related to a container ID from the CLI. This lowers complexity from
O(n²) to O(1), because we don't need to call into ListPod() which was
parsing all the pods and all the containers on the system everytime
the CLI need to retrieve this mapping.

This commit also updates the whole unit tests as a consequence. This
is involving most of them since they were all relying on ListPod()
before.

Fixes #212

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-30 10:53:08 -07:00
Graham Whaley
f92d7dd1c1 Merge pull request #275 from sboeuf/fix_k8s_shim_killed
virtcontainers: Properly remove the container when shim gets killed
2018-04-30 16:51:34 +01:00
Sebastien Boeuf
e78941e3e5 Merge pull request #272 from amshinde/pass-bundle-in-hooks
hooks: Send the bundle path in the state that is sent with hooks
2018-04-30 07:28:27 -07:00
Sebastien Boeuf
789dbca6d6 virtcontainers: Properly remove the container when shim gets killed
Here is an interesting case I have been debugging. I was trying to
understand why a "kubeadm reset" was not working for kata-runtime
compared to runc. In this case, the only pod started with Kata is
the kube-dns pod. For some reasons, when this pod is stopped and
removed, its containers receive some signals, 2 of them being SIGTERM
signals, which seems the way to properly stop them, but the third
container receives a SIGCONT. Obviously, nothing happens in this
case, but apparently CRI-O considers this should be the end of the
container and after a few seconds, it kills the container process
(being the shim in Kata case). Because it is using a SIGKILL, the
signal does not get forwarded to the agent because the shim itself
is killed right away. After this happened, CRI-O calls into
"kata-runtime state", we detect the shim is not running anymore
and we try to stop the container. The code will eventually call
into agent.RemoveContainer(), but this will fail and return an
error because inside the agent, the container is still running.

The approach to solve this issue here is to send a SIGKILL signal
to the container after the shim has been waited for. This call does
not check for the error returned because most of the cases, regular
use cases, will end up returning an error because the shim itself
not being there actually represents the container inside the VM has
already terminated.
And in case the shim has been killed without the possibility to
forward the signal (like described in first paragraph), the SIGKILL
will work and will allow the following call to agent.stopContainer()
to proceed to the removal of the container inside the agent.

Fixes #274

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-27 18:36:27 -07:00
Archana Shinde
a301a9e641 hooks: Send the bundle path in the state that is sent with hooks
We currently just send the pid in the state. While OCI specifies
a few other fields as well, this commit just adds the bundle path
and the container id to the state. This should fix the errors seen
with hooks that rely on the bundle path.

Other fields like running "state" string have been left out. As this
would need sending the strings that OCI recognises. Hooks have been
implemented in virtcontainers and sending the state string would
require calling into OCI specific code in virtcontainers.

The bundle path again is OCI specific, but this can be accessed
using annotations. Hooks really need to be moved to the cli as they
are OCI specific. This however needs network hotplug to be implemented
first so that the hooks can be called from the cli after the
VM has been created.

Fixes #271

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-27 15:48:58 -07:00
James O. D. Hunt
d4225ede2f Merge pull request #260 from jcvenegas/go1.10
versions: move to go 1.10
2018-04-27 14:50:24 +01:00
Peng Tao
49e3f814bc Merge pull request #86 from Pennyzct/gopath
kata/osbuilder: Add support for multiple GOPATH directories
2018-04-27 19:11:23 +08:00
Penny Zheng
c3ac7180f8 rootfs: Add support for multiple GOPATH directories
Current rootfs.sh fails when GOPATH is a set of directories.We
simply choose the first one as the working directory, as go get
only works against the first item in the GOPATH.

Fixes: #87

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-04-27 02:44:43 +00:00
Jose Carlos Venegas Munoz
20432dd99f versions: ci: Move to go 1.10
Change the latest working go version for kata.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-04-26 21:26:51 -05:00
Eric Ernst
ff3518e3ec Merge pull request #232 from sboeuf/fix_openshift_k8s
cli: Don't wait for OCI delete to stop the sandbox
2018-04-26 15:38:48 -07:00
Peng Tao
ec6628ef6b Merge pull request #25 from bergwolf/cgroups
kernel-config: enable proper cgroups support
2018-04-27 01:22:53 +08:00
Jose Carlos Venegas Munoz
9830810684 vendor: update covertool.
Update covertool to allow run tests with go 1.10

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-04-26 11:38:15 -05:00
Sebastien Boeuf
644489b6e7 virtcontainers: Fix gofmt issues for Go 1.10
Now that our CI has moved to Go 1.10, we need to update one file
that is not formatted as the new gofmt (1.10) expects it to be
formatted.

Fixes #249

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-26 11:38:15 -05:00
Peng Tao
2d94e24c87 kernel-config: enable proper cgroups support
The kata-agent requires at least the blk/pids/net_prio cgroups.

Fixes: #24

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-26 23:53:22 +08:00
Julio Montes
902b1d32e5 Merge pull request #23 from jcvenegas/init-ci
ci: Add initial CI scripts
2018-04-26 09:56:04 -05:00
Jose Carlos Venegas Munoz
6f560c1c4d tag_repos: Clone using https
If ssh keys are not set ssh clone wont work.

Clone using https and push using ssh.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-04-26 09:42:46 -05:00
Jose Carlos Venegas Munoz
8ba7e3c72e release: Add tests for tag_repos.sh
- Add tests for release tool tag_repos.sh
- Toplevel makefile
- Add make test target for CI

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-04-26 09:42:46 -05:00
Jose Carlos Venegas Munoz
191089fa8f ci: Add scripts needed by CI
Add required files to execute CI.

Fixes: #21

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-04-26 09:42:46 -05:00
Julio Montes
31eb51ee7d Merge pull request #244 from jodh-intel/backtrace-on-sigusr1
cli: Backtrace on SIGUSR1
2018-04-26 07:49:10 -05:00
James O. D. Hunt
6191ddffb3 cli: Backtrace on SIGUSR1
Rework the signal handling code so that if debug is enabled and a
`SIGUSR1` signal is received, backtrace to the system log but continue
to run.

Added some basic tests for the signal handling code.

Fixes #241.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-26 11:39:20 +01:00
Graham Whaley
35269d2db4 Merge pull request #88 from stefanha/fix-paratition-typo
image-builder: fix "paratition" typo
2018-04-26 11:15:36 +01:00
Stefan Hajnoczi
32aee00673 image-builder: fix "paratition" typo
Fixes: #89
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-04-26 10:26:06 +01:00
James O. D. Hunt
cc33986bef Merge pull request #85 from jodh-intel/improve-top-README
docs: Add a Usage section
2018-04-26 08:52:28 +01:00
James O. D. Hunt
3c19ea413e docs: Add a Usage section
Add a new Usage section with basic examples of how to run the
builders from the `Makefile`.

Fixes #84.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-26 08:06:44 +01:00
Peng Tao
449dd27385 Merge pull request #18 from devimc/kernel/initial
kernel: add patch and config
2018-04-26 10:00:38 +08:00
Julio Montes
33195f8abd kernel: add patch and config
Add config file for x86 KVM.
Add 9p patch to always use cached inode.

fixes #17

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-25 12:11:39 -05:00
Sebastien Boeuf
07af4edea9 cli: Stop the sandbox on a KILL
The same way a caller of "kata-runtime kill 12345" expects
the container 12345 to be killed, the same call to a container
representing a sandbox should actually kill the sandbox, meaning
it would be stopped after the container has been killed.

This way, the caller knows the VM is stopped after kill returns.
This is an issue raised by Openshift and Kubernetes tests. They
call into delete way after the call to kill has been submitted,
and in the meantime they kill all processes related to the container,
meaning they do kill the VM before we could do it ourselves. In this
case, the delete responsible of stopping the VM comes too late and it
returns an error when trying to destroy the sandbox while trying to
communicate with the agent since the VM is not here anymore.

This commit addresses this issue by letting "kill" call into
StopSandbox() if the command relates to a sandbox instead of
a simple container.

Fixes #246

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-25 09:07:34 -07:00
Sebastien Boeuf
163a081776 cli: Check sandbox state before to issue a StopSandbox
The way a delete works, it was always trying to stop the sandbox, even
when the force flag was not enabled. Because we want to be able to stop
the sandbox from a kill command, this means a sandbox stop might be
called twice, and we don't want the second stop to fail, leading to the
failure of the delete command.

That's why this commit checks for the sandbox status before to try
stopping the sandbox.

Fixes #246

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-25 09:01:53 -07:00
James O. D. Hunt
fc8d913713 cli: Whitespace fix
Remove blank line.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-25 16:53:46 +01:00
James O. D. Hunt
7c6856f2a9 cli: Rename fatal.go to signals.go
The fatal file is going to also deal with non-fatal signals so rename
it.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-25 16:53:46 +01:00
Sebastien Boeuf
45e3f858f0 Merge pull request #255 from chavafg/topic/downgrade-go-version
versions: change newest supported go version
2018-04-24 14:39:56 -07:00
Salvador Fuentes
cf7491665b versions: change newest supported go version
change from go1.10 to 1.9.2.
Our static checks and unit tests fail when using
go 1.10. Since we use go 1.9.2 to test in our CI,
reflect this version in versions.yaml

By doing this, we will be able to remove the hardcoded version
from the jenkins scripts and instead install golang using
`.ci/install_go.sh` from the tests repository. And when moving
to go1.10 using a PR, the CI will test that the static checks
and unit tests pass correctly.

Fixes: #254.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-04-24 12:48:55 -05:00
Jose Carlos Venegas Munoz
7bb4e0470c Merge pull request #240 from jcvenegas/versions-cri
versions: Add cri-containerd to versions file.
2018-04-24 10:32:34 -05:00
Eric Ernst
2b47961105 Merge pull request #56 from jodh-intel/add-release-process
docs: Add Release process docs
2018-04-24 08:14:37 -07:00
Sebastien Boeuf
d931d2902d Merge pull request #218 from bergwolf/sandbox_api
api: add sandbox operation APIs
2018-04-24 07:21:36 -07:00
Peng Tao
29ce01fd11 api: add sandbox EnterContainer API
And make VC EnterContainer a wrapper of it.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:33:51 +08:00
Peng Tao
488c3ee353 api: add sandbox Status API
It returns the status of current sandbox.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:33:47 +08:00
Peng Tao
b3d9683743 api: add sandbox StatusContainer API
It retrieves container status from sandbox.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:32:54 +08:00
Peng Tao
4b30446217 api: add sandbox startcontainer API
And make VC.StartContainer a wrapper of it.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:30:53 +08:00
Peng Tao
d9144c8514 api: add sandbox DeleteContainer API
DeleteContainer in api.go is now a wrapper of it.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:30:53 +08:00
Peng Tao
f6aa8a23fc api: add sandbox CreateContainer API
And make CreateContainer in api.go a wrapper of it.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:30:53 +08:00
Peng Tao
ef89131b85 api: add sandbox Delete API
By exporting the existing sandbox delete() function.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:30:53 +08:00
Peng Tao
5165de0d76 api: add sandbox pause and resume API
By exporting the existing sandbox operations.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:30:53 +08:00
Peng Tao
eb23771d5a api: add sandbox release API
It disconnects the agent connection and removes the sandbox
from global sandbox list.

A new option `LongLiveConn` is also added to kata
agent's configuration. When set, the API caller is expected
to call sandbox.Release() to drop the agent connection explicitly.

`proxyBuiltIn` is moved out of agent state because we can always
retrieve it from sandbox config instead.

Fixes: #217

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:30:53 +08:00
Peng Tao
d189be8579 api: add FetchSandbox
It finds out and existing sandbox and returns it.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-24 15:30:53 +08:00
Jose Carlos Venegas Munoz
336aa93e6c versions: Add cri-containerd to versions file.
- Add latest release from cri-containerd.

Fixes: #239

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-04-23 20:06:54 -05:00
Sebastien Boeuf
76af465724 Merge pull request #243 from jodh-intel/fix-TestIsHostDevice-test
virtcontainers: Fix TestIsHostDevice test as non-root
2018-04-23 11:27:55 -07:00
James O. D. Hunt
53d73e56e0 virtcontainers: Fix TestIsHostDevice test as non-root
Don't Attempt to create file below `/dev` when running as non-`root`.

Move the logic into a new `TestIsHostDeviceCreateFile` test and skip
unless `root.`

Fixes #242.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-23 14:29:13 +01:00
James O. D. Hunt
3e0e112e2b docs: Move TOC to top
Move the table of contents to the top of the page.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-23 09:16:16 +01:00
James O. D. Hunt
a070f18c2e docs: Add Release process docs
Add a document providing an overview of releases along with the
all-important release checklist.

Fixes #32.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-23 09:04:03 +01:00
Eric Ernst
d3e8d9c0e4 Merge pull request #16 from jcvenegas/tag_repos
release: Add script to tag repos
2018-04-22 21:04:10 -07:00
Sebastien Boeuf
de32be7eed Merge pull request #211 from amshinde/assign-bridge-addr
Assign address to a pci bridge while appending it
2018-04-20 14:52:31 -07:00
Jose Carlos Venegas Munoz
a099eafc60 Merge pull request #83 from jodh-intel/create-summary-file
refactor and create a summary file inside the image
2018-04-20 13:57:57 -05:00
Archana Shinde
c7ff8ccac7 Merge pull request #59 from jodh-intel/add-licensing-doc
docs: Add license strategy doc
2018-04-20 09:39:36 -07:00
Eric Ernst
9b36fa3cf5 Merge pull request #48 from jodh-intel/add-limitations-doc
Add limitations doc
2018-04-20 09:08:55 -07:00
James O. D. Hunt
9dceb3eed1 scripts: Added initrd support to collect script
The collect script is now able to extract the osbuilder metadata
from an initrd image.

Fixes #237.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 16:55:10 +01:00
James O. D. Hunt
72056eb89b scripts: Collect script now shows osbuilder file
Changed the collect script to display the contents of the
osbuilder metadata file which provides details of the image.

Partially fixes #237.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 16:55:01 +01:00
James O. D. Hunt
4281bc3543 scripts: Make collect script variable local
Added a missing `local` in `get_image_file()`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 16:46:45 +01:00
James O. D. Hunt
fbd28085d3 scripts: Make more collect script variables read only
Changed some important global variables to be read-only.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 16:44:00 +01:00
James O. D. Hunt
f90f65247e rootfs: Create a summary file inside the image
Create a YAML metadata file inside the rootfs image
containing information about the environment:

```
/var/lib/osbuilder/osbuilder.yaml
```

Example contents:

```
---
osbuilder:
  url: "https://github.com/kata-containers/osbuilder"
  version: "unknown"
rootfs-creation-time: "2018-04-19T16:19:30.254610305+0000Z"
description: "osbuilder rootfs"
file-format-version: "0.0.1"
architecture: "x86_64"
base-distro:
  name: "Centos"
  version: "7"
  packages:
    - "iptables"
    - "systemd"
agent:
  url: "https://github.com/kata-containers/agent"
  name: "kata-agent"
  version: "0.0.1-2ec0b9593845b9a5e0eab5a85b20d74c35a2ca52-dirty"
  agent-is-init-daemon: "no"
```

This change adds a new `-o` option to `rootfs.sh` for
specifying the version of osbuilder to the rootfs builder.

Fixes #35.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 11:46:55 +01:00
James O. D. Hunt
93b632c328 lib: Check rootfs parameter
Add a check on the rootfs parameter in `build_rootfs()`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 11:17:55 +01:00
James O. D. Hunt
b14d117a89 image-builder: Fix incorrect error message
Fixed an error message which was referring to an incorrect rootfs
variable name.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 11:17:15 +01:00
James O. D. Hunt
ddb71e8ef5 initrd: Remove mention of USE_DOCKER
Removed `USE_DOCKER` from the initrd builder usage statement as that
builder does not use Docker.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 11:17:02 +01:00
Sebastien Boeuf
dec01c1ec0 Merge pull request #236 from devimc/cpu/cpuset
virtcontainers: kata_agent: enable cpus and mem sets
2018-04-20 00:43:43 -07:00
James O. D. Hunt
f17b5c29f3 scripts/lib: Fix whitespace
Make whitespace consistent.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
5b6ced536b rootfs/clearlinux: Resolve version
If the Clear Linux `OS_VERSION` is specified as `latest`,
resolve to an actual release number.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
a2a65621a1 rootfs: Simplify code
Use more variables to avoid duplication and make the code cleaner.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
b8f1a68834 rootfs: Simplify code
Use a variable in `copy_kernel_modules()` to avoid the duplicated
string.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
f09d4c4626 rootfs: Check function parameters
Add some checks to ensure function parameters are set.

This fixes a bug `copy_kernel_modules()` where a test would never
fail due to missing dollars.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
2751de0768 rootfs: Reformat functions
For consistency with the rest of the code, put the opening brace on the
line below the function name.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
48b1ddabed rootfs: Fix comments
Improve a few comments and fix a typo.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
019a80f304 refactor: Move more functions to script library
Moved the display functions to the script library to avoid duplication.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:23 +01:00
Sebastien Boeuf
397decb051 Merge pull request #220 from amshinde/revert-dev-mount
Handle device nodes and regular files in /dev
2018-04-19 15:00:02 -07:00
Jose Carlos Venegas Munoz
23cf4f6221 release: Add script to tag repos
Add helper script to tag repos.

- Check all repos are in the same version
- Create annotated tags
- Push tags to the repos

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-04-19 14:44:35 -05:00
Julio Montes
e9404cc9e0 virtcontainers: kata_agent: enable cpus and mem sets
this patch is to honour docker `--cpuset-cpus` and
`--cpuset-mems` options.

fixes #221

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-19 13:16:46 -05:00
Archana Shinde
71c7a9c13e virtcontainers: Handle regular files in /dev
The k8s test creates a log file in /dev under
/dev/termination-log, which is not the right place to create
logs, but we need to handle this. With this commit, we handle
regular files under /dev by passing them as 9p shares. All other
special files including device files and directories
are not passed as 9p shares as these are specific to the host.
Any operations on these in the guest would fail anyways.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-19 10:59:26 -07:00
Archana Shinde
70c3fe9dcd virtcontainers: Remove /dev from the ignored system mounts
Since we want to handle certain files in /dev for k8s case,
remove /dev from the mounts list that we ignore.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-19 10:59:26 -07:00
Archana Shinde
10c596a4ff dev: Revert "Don't ignore container mounts based on their path"
This reverts commit 08909b2213.

We should not be passing any bind-mounts from /dev, /sys and /proc.
Mounting these from the host inside the container does not make
sense as these files are relevant to the host OS.

Fixes #219

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-19 10:46:10 -07:00
Archana Shinde
05c4ea39d0 qemu: Pass the pci/e address for qemu bridge
Pass the slot address while attaching bridges. This is needed
to determine the pci/e address of devices that are attached
to the bridge.

Fixes #210

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-19 10:42:19 -07:00
Archana Shinde
ee2e15c724 vendor: Vendor github.com/intel/govmm
This pulls in the following change to allow assigning
address to a bridge.

30aeacb qemu: Add qemu parameter for PCI address for a bridge.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-19 10:42:17 -07:00
James O. D. Hunt
d35843d190 docs: Add license strategy doc
Add a brief document explaining that the project uses SPDX license
identifiers.

Fixes #58.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-19 17:40:03 +01:00
Julio Montes
1c7a02e73d Merge pull request #130 from devimc/virtcontainers/ImplProcessList
virtcontainers: agent: implement kata agent processListContainer
2018-04-19 11:31:09 -05:00
James O. D. Hunt
a18753b2ff refactor: Remove duplicate variable
Some of the scripts had two variables to refer to the program name.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-19 16:00:37 +01:00
James O. D. Hunt
f3e89d38a9 refactor: Simplify enabling debug
Simplify the logic to enable debug and also enable debug as early as
possible.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-19 15:55:34 +01:00
zhangwei_cs
9dea2f835b Merge pull request #235 from jodh-intel/add-spdx-header-to-config
config: Add SPDX license header to config file
2018-04-19 17:41:01 +08:00
James O. D. Hunt
e415efb0dd config: Add SPDX license header to config file
The config file is in TOML format which supports comments, so add the
license header to it.

Fixes #234.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-19 08:13:59 +01:00
Sebastien Boeuf
ea789dbab9 Merge pull request #207 from amshinde/msize-9p
Add configuration for 9p msize
2018-04-18 11:20:44 -07:00
Julio Montes
01f3f712ac virtcontainers: kata_agent: fix unit tests
add ListProcesses to gRPCProxy to make it compatible with AgentServiceServer.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-18 10:40:39 -05:00
Julio Montes
11a0718b78 vendor: update kata agent
This new version of kata agent contains changes
to list the processes that are running inside the VM

Shortlog:
ff7eaa1 grpc: add unit test for ListProcesses
c394b63 mockcontainer: implement mockContainer
d208929 mockreaper: add unit tests
01bc953 grpc: implement ListProcesses

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-18 10:40:39 -05:00
Julio Montes
4fc974055d virtcontainers: agent: implement kata agent processListContainer
processListContainer is called by the ps command implementation to
list the processes running inside a containers, this patch implements
this function in the kata agent

fixes #129

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-18 10:40:39 -05:00
James O. D. Hunt
a85656b355 Merge pull request #231 from grahamwhaley/20180418_bc_SPDX
license: SPDX: update all vc files to use SPDX style
2018-04-18 15:06:04 +01:00
James O. D. Hunt
30663685ea Merge pull request #226 from grahamwhaley/20180417_update_spdx
SPDX: update cli and arch files to use SPDX
2018-04-18 14:52:21 +01:00
Graham whaley
d6c3ec864b license: SPDX: update all vc files to use SPDX style
When imported, the vc files carried in the 'full style' apache
license text, but the standard for kata is to use SPDX style.
Update the relevant files to SPDX.

Fixes: #227

Signed-off-by: Graham whaley <graham.whaley@intel.com>
2018-04-18 13:43:15 +01:00
James O. D. Hunt
3e8400eee9 docs: Remove spec command limitation
Update the limitations document to remove the `spec` command limitation
(implemented on https://github.com/kata-containers/runtime/pull/196).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-18 11:49:04 +01:00
James O. D. Hunt
4aa57d2e2c docs: Add links to README
Add links for the dev guide and limitations doc to the `README`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-18 11:49:04 +01:00
James O. D. Hunt
6200d14e4a docs: Add limitations doc
Add the list of known limitations.

Fixes #31.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-18 11:49:01 +01:00
zhangwei_cs
fdadb041aa Merge pull request #229 from jshachm/fix-pod-to-sandbox
runtime: fix codes misunderstanding after rename pod to sandbox
2018-04-18 16:16:17 +08:00
c00416947
a050c155b6 runtime: fix codes misunderstanding after rename pod to sandbox
After we rename pod to sandbox, still there are some codes left which
will cause some misunderstanding.Such as,`p` in short of `pod` left in
`sandbox.go`.So we need to channge it into `s` in short of `sandbox`.

Fixes:#230
Related: #200

Signed-off-by: Haomin Tsai <caihaomin@huawei.com>
2018-04-18 14:36:45 +08:00
Archana Shinde
5070fcf74d env: Add 9p msize to kata-env
Adding msize option for 9p as part of the hypervisor
info.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-17 12:15:23 -07:00
Archana Shinde
c06af5f5cd linter: make maligned linter happy
maligned linter was complaining about the size of the
struct. So move fields around to pack the struct better.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-17 12:15:23 -07:00
Archana Shinde
cc61ccf9e9 cli: 9p: Add toml configuration for 9p msize
Allows msize for 9p to be configured in the toml file.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-17 12:15:23 -07:00
Archana Shinde
3187a98188 9p: Add hypervisor configuration for 9p msize
This allows msize option for 9p to be configured and tuned.

Fixes #206

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-17 12:15:23 -07:00
James O. D. Hunt
a4b7e20457 Merge pull request #196 from caoruidong/add-spec
cli: implement spec command
2018-04-17 18:07:42 +01:00
Graham whaley
e757a592c1 SPDX: update cli and arch files to use SPDX
Many cli and arch files were using the 'older style' fairly full
Apache license text. The project standard is the shorter SPDX style.
Convert them over.

Fixes: #225

Signed-off-by: Graham whaley <graham.whaley@intel.com>
2018-04-17 17:30:44 +01:00
Ruidong Cao
b528ef292d cli: implement spec command
Add spec command that generates a basic config.json for kata.

fixes #188

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
Signed-off-by: Ruidong <caoruidong@huawei.com>
2018-04-17 14:38:00 +00:00
James O. D. Hunt
427b97c6f5 Merge pull request #224 from jcvenegas/fix-version
version: 0.0.1
2018-04-17 09:29:46 +01:00
Peng Tao
be6ef03407 Merge pull request #222 from chavafg/topic/cpu-resources
virtcontainers: Disable cpuset and cpumem
2018-04-17 08:16:17 +08:00
Jose Carlos Venegas Munoz
df74729c8c version: 0.0.1
Fix version to be the same to all kata projects.

Fixes: #223

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-04-16 18:53:47 -05:00
Salvador Fuentes
a608ff0e7d virtcontainers: Disable cpuset and cpumem
Disable cpuset and cpumem constraints as this is not properly
supported yet.

If we add "cpuset_cpus" and "cpuset_mems" to the container.json,
kata-runtime failed to start, so we need to disable them.

Fixes: #221.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-04-16 16:52:37 -05:00
James O. D. Hunt
37ab12bcb4 Merge pull request #54 from nitkon/patch-3
dev-guide: Fix minor typos
2018-04-16 18:46:43 +01:00
Eric Ernst
ccc949f086 Merge pull request #50 from nitkon/patch-2
dev-guide: Conditionally add kata-runtime as suffix
2018-04-16 08:35:14 -07:00
Nitesh Konkar
727a16d468 dev-guide: Fix minor typos
Fix minor typos in the development guide.

Fixes #53.

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-04-16 20:58:22 +05:30
Eric Ernst
8088a62805 Merge pull request #209 from sboeuf/fix_unit_tests
virtcontainers: Fix unit tests
2018-04-16 07:24:40 -07:00
Eric Ernst
d03837fc9f Merge pull request #45 from bergwolf/initrd
dev-guide: add guide to build and setup initrd image
2018-04-16 07:12:29 -07:00
Sebastien Boeuf
92577c635f virtcontainers: Properly end up go routines using channels
Those different files were all calling into a go routine that was
eventually reporting some result through a go channel. The problem
was the way those routine were implemented, as they were hanging
around forever. Indeed, nothing was actually listening to the channel
in some cases, and those routines never ended.

This was one of the problem detected by the fact that our unit tests
needed more time to pass because when they were all run in parallel,
the resources consumed by those routines were increasing the time
for other tests to complete.

Fixes #208

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-13 16:01:00 -07:00
Sebastien Boeuf
2c3cfed608 virtcontainers: mock: Properly end cc_proxy_mock goroutines
Because of the bad design of the cc_proxy_mock go routine, we were
leaving an infinite loop running into this go routine behind. This
was consuming a lot of resources and it was obviously slowing down
the tests being run in parallel. That's one of the reason we were
hitting the 10 seconds timeout when running go tests.

Fixes #208

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-13 15:58:08 -07:00
Sebastien Boeuf
feade98473 virtcontainers: Fix unit tests relying on noopShim
When using noopShim type from the unit tests, we were ending up
getting a PID 1000, and when checking if the shim was around, we
were always expecting the shim to be "not running", based on the
fact that the process was not there anymore. Unfortunately, this
was a very wrong assumption because we cannot control which PIDs
are running or not on the system. The way to simplify this is to
return a PID 0 in case of noopShim, processed as a special case
by the function waitForShim().

Fixes #208

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-13 15:22:22 -07:00
Jose Carlos Venegas Munoz
d0085e8edf Merge pull request #14 from jodh-intel/fix-config-hypervisor-script
scripts: Re-add tags for hypervisor config script
2018-04-13 12:03:34 -05:00
Eric Ernst
ad5669f781 Merge pull request #205 from devimc/constraints/CPU
virtcontainers: kata_agent: apply CPU constraints
2018-04-13 09:03:19 -07:00
Julio Montes
0f9defd6e2 Merge pull request #91 from devimc/cpu/fixRaceCondition
virtcontainers: agent: fix CPU hot plug race condition
2018-04-13 10:04:33 -05:00
Julio Montes
f88086fcfa Merge pull request #183 from chavafg/topic/update-crio-version
versions: Update CRI-O version
2018-04-13 09:55:38 -05:00
Salvador Fuentes
0ae16176a4 versions: Update CRI-O version
This change updates to latest version from CRI-O
of the 1.9 branch.
This will allow us to unskip a test from the
CRI-O ctr.bats test file.

Fixes: #182.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-04-13 07:48:07 -05:00
Julio Montes
da6d284fbb vendor: update kata-containers agent
This new version of kata-containers agent includes
the fix for CPU hotplug race condition

Shortlog:
131554d network: specify netlink protocol
49f01ed protocols/grpc: fix CPU hotplug race condition
ee7850d mockreaper: implement mock reaper
9f60034 reaper: implement reaper interface

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-13 07:05:23 -05:00
Julio Montes
8c9c7ddef8 virtcontainers: agent: fix CPU hot plug race condition
Communicate to the agent the number of vCPUs that were hot added,
allowing to the agent wait for the creation of all vCPUs.

fixes #90

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-13 07:05:23 -05:00
Sebastien Boeuf
9db9b286e3 Merge pull request #200 from bergwolf/rename
runtime: rename pod to sandbox
2018-04-13 01:11:13 -07:00
Peng Tao
6107694930 runtime: rename pod to sandbox
As agreed in [the kata containers API
design](https://github.com/kata-containers/documentation/blob/master/design/kata-api-design.md),
we need to rename pod notion to sandbox. The patch is a bit big but the
actual change is done through the script:
```
sed -i -e 's/pod/sandbox/g' -e 's/Pod/Sandbox/g' -e 's/POD/SB/g'
```

The only expections are `pod_sandbox` and `pod_container` annotations,
since we already pushed them to cri shims, we have to use them unchanged.

Fixes: #199

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-13 09:32:51 +08:00
Julio Montes
a4c0827bea virtcontainers: kata_agent: apply CPU constraints
The runtime already hot added the number of vCPUs needed by each container,
in order to have a better control over those resources, CPU constraints
must be applied.

fixes #203

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-12 16:05:10 -05:00
Sebastien Boeuf
ca25177ac1 Merge pull request #138 from amshinde/block-volumes
volumes: Attach volumes that are block device files as block devices
2018-04-12 13:01:00 -07:00
Archana Shinde
ed1078c800 volumes: Attach volumes that are block device files as block devices
Check if a volume passed to the container with -v is a block device
file, and if so pass the block device by hotplugging it to the VM
instead of passing this as a 9pfs volume. This would give us
better performance.

Add block device associated with a volume to the list of
container devices, so that it is detached with all other devices
when the container is stopped with detachDevices()

Fixes #137

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-11 12:24:12 -07:00
Sebastien Boeuf
f74f61e8d1 Merge pull request #191 from amshinde/handle-shm-mount
virtcontainers: Do not pass /dev/shm as 9p mount
2018-04-10 14:38:41 -07:00
Archana Shinde
e96d3ef0d3 virtcontainers: Do not pass /dev/shm as 9p mount
All bind mounts are now passed to the guest with 9p.
We need to exclude /dev/shm, as this is passed as a bind mount
in the spec. We handle /dev/shm in the guest by allocating
memory for it on the guest side. Passing /dev/shm as a 9p mount
was causing it to be mounted twice.

Fixes #190

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-10 10:46:35 -07:00
Eric Ernst
be151cb589 Merge pull request #173 from bergwolf/proxy
runtime: add builtin proxy and shim capability
2018-04-10 08:08:01 -07:00
Peng Tao
b353e36373 test: delete pod in test cleanup
Otherwise there might be cached pod alive even if we remove
all the config dirs etc.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-10 17:27:57 +08:00
Peng Tao
81bb561467 proxy/shim: add unit tests
To test built-in proxy and shim types.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-10 13:17:19 +08:00
Peng Tao
f483d6f8da shim: add kata builtin shim type
When set, the kata shim will not be created.

Fixes: #172

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-10 13:17:19 +08:00
Peng Tao
1d291fc105 pod: add a in-memory pod list
It tracks all existing pods in the current runtime. If the runtime
calls multiple APIs, it can reuse existing pod data structure instead
of re-construct it in every API call.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-10 13:17:19 +08:00
Peng Tao
8ead054e25 vendor: udpate agent dependency
To include the grpc yamux dialer.

Included kata agent git log:
e37feac protocol: client: enable builtin yamux client support
a862fea agent: Fix container creation rollback
9602e11 vendor: Update libcontainer vendoring
92f87a1 agent: Rollback properly when container creation fails
128f87d mount: Correct error message with mount failure.
7a182a4 device: VmPath can be empty if an Id is provided
0275654 ci: lib: allow override of tests_repo
205a4d7 github: Add issue template
103aacd announce: Add total memory
e277ec6 announce: Add device and storage handlers
5d7463f announce: Add standard fields when running as PID 1
4655950 agent: Add announce function
5e6c385 CI: Require pullapprove ack for protocol changes
5d40027 tests: Skip more tests if non-root
4ba8499 tests: Use root skip function
9a2da30 tests: Move helper function
ae2be84 device: Add validation and debug
9e7b27c mount: Log params and validate

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-10 13:17:19 +08:00
Peng Tao
5a9ff3c235 proxy: add kataProxyBuiltin
When specified, it does not spawn a new process to proxy kata grpc
connections. Instead, the yamux multiplexing functionality is builtin
in the kata agent dialer.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-10 13:17:19 +08:00
Nitesh Konkar
d99af8fbe3 dev-guide: Conditionally add kata-runtime as suffix
If kata-runtime is already added as a runtime to
kata-containers.conf then you need not add it again.

Fixes: #49

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-04-10 09:26:58 +05:30
Sebastien Boeuf
5932803088 Merge pull request #193 from devimc/virtcontainers/fixUnitTests
virtcontainers: fix unit tests
2018-04-09 15:36:23 -07:00
Julio Montes
dacc175536 virtcontainers: mockcontainer: return a valid process
in order to make log-parser happy, mockcontainer must return
always a valid process with a fake PID, since log-parser checks
that PID value in the logs and it must be different to zero

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

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-09 15:49:33 -05:00
Archana Shinde
50fd76eb9a virtcontainers: block: Factorize checks for evaluating block support
Factorize configuration and hardware support for hotplugging block
devices into a single function and use that.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-09 15:49:17 -05:00
Peng Tao
988bbdec59 dev-guide: fix rootfs image rootfs dir notion
Set ROOTFS_DIR so that we do not create distro-specific dir names.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-09 22:13:01 +08:00
Peng Tao
d87be6c94a dev-guide: add guide to build and setup initrd image
Optionaly, one can build an initrd image and configure kata runtime
to use it.

Fixes: #44

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-04-09 22:12:58 +08:00
Julio Montes
cde11c36db virtcontainers: fix unit tests
Use noopAgent in unit tests to add online fake resources.
Fix unit tests according with new changes introduced recently.

fixes #192

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-04-05 14:11:50 -05:00
Eric Ernst
2b2b68d6fa Merge pull request #63 from erick0z/erick0z/refactor_rootfs_script
rootfs-builder: Refactor rootfs.sh
2018-04-04 07:39:11 -07:00
James O. D. Hunt
1c45f4f666 Merge pull request #79 from nitkon/patch-1
initrd-builder: fix initrd image name
2018-04-04 13:51:15 +01:00
Nitesh Konkar
6930c24d14 initrd-builder: fix initrd image name
The initrd image name should be kata-containers-initrd.img,
as its referenced by this name later on.

Fixes #14

Signed-off-by: Nitesh Konkar <niteshkonkar@in.ibm.com>
2018-04-04 17:55:32 +05:30
James O. D. Hunt
bc83bf052d Merge pull request #180 from caoruidong/delete-comment
cli: delete out-of-date comment
2018-04-04 09:25:27 +01:00
Ruidong
7b6d80adf7 cli: delete out-of-date comment
Function getContainerInfo dosen't expand container id from prefix now

Fixes #139

Signed-off-by: Ruidong Cao <caoruidong@huawei.com>
2018-04-04 21:43:33 +08:00
Peng Tao
0e8b6dc049 Merge pull request #133 from amshinde/scsi-data-plane
iothread support for virtio-scsi
2018-04-04 15:39:07 +08:00
Peng Tao
dda4a4494a Merge pull request #179 from sboeuf/fix_rollback
virtcontainers: Fix container creation rollback
2018-04-04 13:37:46 +08:00
Sebastien Boeuf
1404928c05 virtcontainers: Fix container creation rollback
The rollback does not work as expected because the error has to be
checked from the defer itself.

Fixes #178

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-03 16:13:45 -07:00
Sebastien Boeuf
e75713fffb Merge pull request #136 from sboeuf/fix_rollback
virtcontainers: Properly rollback mounts and hotplugs when container creation failed
2018-04-03 12:52:38 -07:00
Sebastien Boeuf
e98f9305ad virtcontainers: kata_agent: Rollback when createContainer fails
In case the container creation fails, we need a proper rollback
regarding the mounts previously performed.

Fixes #135

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-03 11:41:45 -07:00
James O. D. Hunt
dcfc74471c scripts: Quote variables in hypervisor script
Double-quote the qemu version variables in the hypervisor configuration
script.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-03 17:35:51 +01:00
James O. D. Hunt
90ce6d888a scripts: Add extra hypervisor config script option check
Add a check on the element (configure option).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-03 17:35:51 +01:00
James O. D. Hunt
491780d6c2 scripts: extra hypervisor config script entry checks
Add more checks for each entry.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-03 17:35:49 +01:00
Sebastien Boeuf
788664809f virtcontainers: container: Rollback when createContainer fails
In case the container creation fails, we need a proper rollback
regarding the mounts and hotplugs previously performed.

This patch also rework the hotplugDrive() function in order to
prevent createContainer() function complexity to exceed 15.

Fixes #135

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-04-03 09:28:34 -07:00
James O. D. Hunt
8cd0d9f0db scripts: Add hypervisor config script comment
Add an explanatory comment to the hypervisor configuration script.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-03 15:35:39 +01:00
James O. D. Hunt
a082b9ee24 scripts: Add extra check to hypervisor config script
Check the specified tag in `check_tag()` to ensure it is not blank
(which is invalid).

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-03 15:35:39 +01:00
James O. D. Hunt
ef16fd26e0 scripts: Re-add tags for hypervisor config script
PR #12 inadvertently removed the required tags for two of the qemu
config options.

Fixes #13.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-03 15:35:36 +01:00
James O. D. Hunt
99a97f74ca scripts: Add qemu version details to hypervisor script
Set the qemu major and minor version variables in the hypervisor
configuration script.

Partially fixes #13.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-03 15:35:30 +01:00
Eric Ernst
75235a8ae4 Merge pull request #141 from WeiZhang555/remove-legacy-go-imports
virtcontainers: remove legacy dependencies
2018-04-02 10:47:13 -07:00
Archana Shinde
204e40297c cli: Add configuration option for io-threads.
Add option to configure if IO needs to be in a separate IO thread.
Add tests to verify option is correctly parsed. The default value
is set to false for now.
This should be considered to be enabled by default in the future.

Fixes #132

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-02 10:14:04 -07:00
Zhang Wei
f0690e4c70 virtcontainers: remove legacy dependencies
Fixes #140

`virtcontainers` had been moved from `github.com/containers/virtcontainers` to
`github.com/kata-containers/runtime/virtcontainers`, so we should remove legacy dependencies
of `github.com/containers/virtcontainers` from go imports and vendors.

Also some documents need to be modified.

Note: vendor is updated with `dep` tool with following command:
`$ dep ensure -update github.com/containers/virtcontainers`

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2018-04-02 18:58:06 +08:00
Archana Shinde
82e42b5dc5 qemu: iothreads: Add iothread support for scsi
Add a hypervisor configuration to specify if IO should
be handled in a separate thread. Add support for iothreads for
virtio-scsi for now. Since we attach all scsi drives to the
same scsi controller, all the drives will be handled in a separate
IO thread which would still give better performance.

Going forward we need to assess if adding more controllers and
attaching iothreasds to each of them with distributing drives
among teh scsi controllers should be done, based on more performance
analysis.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-03-30 17:52:20 -07:00
Archana Shinde
09c5bbd2dc vendor: Vendor github.com/intel/govmm
Vendor package for pulling in changes related to support
for iothreads with virtio-scsi.

Shortlog for govmm:

9130f37 scsi: Allow scsi controller to associate with an IO thread.
a54de18 iothread: Add ability to configure iothreads

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-03-29 10:47:56 -07:00
Graham Whaley
6ac1958c90 Merge pull request #121 from sboeuf/exec_process
exec: Allow to exec a process on a ready container
2018-03-29 17:56:59 +01:00
Sebastien Boeuf
aa469f4573 exec: Allow to exec a process on a ready container
If a container is not running, but created/ready instead, this means
a container process exists and that we can actually exec another
process inside this container. The container does not have to be
in running state.

Fixes #120

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-29 08:40:44 -07:00
Eric Ernst
9a7813e9ea Merge pull request #126 from jodh-intel/run-central-go-test-script
CI: Use central go test script
2018-03-29 08:37:01 -07:00
Eric Ernst
a69c49398a Merge pull request #131 from sboeuf/fix_crio_err
virtcontainers: Do not rollback by deleting container or pod
2018-03-29 08:36:05 -07:00
Graham Whaley
d2835557a1 Merge pull request #119 from chavafg/topic/qemu2-11
qemu: Move to qemu 2.11
2018-03-29 09:42:09 +01:00
Sebastien Boeuf
5a57b52c64 virtcontainers: Do not rollback by deleting container or pod
In case a consumer of virtcontainers tries to start/stop a container,
or stop a pod, and for some reasons, this fails, virtcontainers always
tries to delete everything related to the container or the pod before
it returns the error.

The caller of the runtime is the one responsible for cleaning things
up if something goes wrong, that's why this cleanup call is never
needed.

A real example of that is the case of cc-runtime and CRI-O, where this
cleanup prevented CRI-O from retrieving proper state of the container
after the failure, leading to the inability to stop and remove the
container and the VM afterwards.

Fixes #87

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-28 17:12:12 -07:00
Salvador Fuentes
10c38aeebf qemu: Move to qemu 2.11
This commit modifies version.yaml to now point to the qemu
2.11 stable version.
It modifies the default QEMU_CMD to be qemu-system-x86_64
instead of qemu-lite-system-x86_64.
And modifies virtcontainers unit tests to now point to the
correct QEMU_CMD.

Fixes: #118.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-03-28 17:23:05 -06:00
Julio Montes
2079f90290 Merge pull request #12 from chavafg/topic/remove-static-option
qemu: does not use --disable-static for qemu 2.11
2018-03-28 17:28:47 -05:00
Salvador Fuentes
fb59a2b966 qemu: does not use unsupported flags for qemu 2.11
Qemu 2.11 does not support --disable-static flag and
--enable-strip flag, this patch adds a condition
to only use it for qemu 2.7 or older.

Fixes: #11.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-03-28 16:23:38 -06:00
Salvador Fuentes
c4f922dc2c Merge pull request #123 from sboeuf/fix_k8s
virtcontainers: Don't ignore container mounts based on their path
2018-03-28 13:20:11 -06:00
Sebastien Boeuf
2118e5f74b Merge pull request #10 from chavafg/topic/qemu-config
qemu: Add script to generate hypervisor configure options.
2018-03-28 12:05:56 -07:00
Eric Ernst
2ac900f2d8 Merge pull request #41 from jodh-intel/fix-dev-guide-runtime-link
docs: Fix runtime link in dev guide
2018-03-28 11:07:39 -07:00
James O. D. Hunt
f44248c67c Merge pull request #43 from jodh-intel/dev-guide-disable-initrd
docs: Disable initrd in dev guide
2018-03-28 17:40:08 +01:00
James O. D. Hunt
117cb58609 docs: Disable initrd in dev guide
Add details on how to disable the `initrd` config option to ensure the
base system as documented is functional.

Fixes #42.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-28 17:35:41 +01:00
Salvador Fuentes
d7dd8b623e qemu: Add script to generate hypervisor configure options.
This script will ensure we use a single source of qemu build
options for the Kata Containers project.

Fixes: #7.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-03-28 10:05:27 -06:00
Sebastien Boeuf
80996b3b40 virtcontainers: kata_agent: Handle several /dev/shm
The kata_agent.go code breaks after the first /dev/shm. But in case
several are defined, the agent will crash since other /dev/shm will
be wrongly configured in the OCI spec mounts.

Fixes #127

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-28 08:55:40 -07:00
Sebastien Boeuf
08909b2213 virtcontainers: Don't ignore container mounts based on their path
Instead of ignoring containers based on their path, this commit
relies on the type of mount being "bind" to choose if this mount
should be ignored or not.

For instance, we have some use cases where k8s expects the path
"/dev/container-log" to be bind mounted inside the container, but
the code ignores it because it has the prefix "/dev" which is a
system prefix mount.

Fixes #122

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-28 08:55:40 -07:00
James O. D. Hunt
53698c166b CI: Use central go test script
Don't use a copy of the go test script, use the central version for
consistency with the other repos.

Fixes #125.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-28 16:53:13 +01:00
Eric Ernst
a6de7edc53 Merge pull request #39 from jodh-intel/dev-guide-improve-agent-debug
docs: Improve command to enable agent debug
2018-03-28 08:41:02 -07:00
Eric Ernst
4d8e58e5da Merge pull request #35 from jodh-intel/dev-guide-mention-collect-script
docs: Mention collect script in dev guide
2018-03-28 08:37:50 -07:00
Eric Ernst
5643232ce3 Merge pull request #37 from jodh-intel/improve-readme
docs: Embellish README
2018-03-28 08:06:26 -07:00
Peng Tao
01f7e46984 Merge pull request #98 from bergwolf/initrd
support to boot guest with an initrd image
2018-03-28 19:04:14 +08:00
James O. D. Hunt
00ed3a249d docs: Fix runtime link in dev guide
The table of contents showed an incorrect link for building and
installing the runtime.

Fixes #40.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-28 10:26:35 +01:00
James O. D. Hunt
4ac5a6ad4d Merge pull request #112 from jodh-intel/improve-readme
docs: Improve the README
2018-03-28 08:47:22 +01:00
James O. D. Hunt
3b71b57286 docs: Improve command to enable agent debug
Change the command to enable agent debug slightly so that even if the
config file specifies kernel parameters, the command will successfully
enable the agent debug.

Fixes #38.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-27 17:55:47 +01:00
James O. D. Hunt
d9a77b3de2 docs: dev guide whitespace fix
Add a blank line to the dev guide.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-27 17:55:25 +01:00
James O. D. Hunt
7111e03021 docs: Mention collect script in dev guide
Add details of the collect script in under the "Troubleshoot" section.

Fixes #34.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-27 17:32:48 +01:00
James O. D. Hunt
85865d4c4f docs: Improve the README
Add in details to the `README`.

Fixes #111.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-27 17:24:35 +01:00
James O. D. Hunt
2b40a280b5 docs: Embellish README
Add some brief explanatory text and a few pointers.

Fixes #36.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-27 16:08:36 +01:00
Eric Ernst
33ade410f3 Merge pull request #27 from bergwolf/api-design
design: add api design doc
2018-03-27 07:06:25 -07:00
James O. D. Hunt
4d6e9c9f68 Merge pull request #114 from jodh-intel/add-version-database
versions: Add versions database
2018-03-27 15:04:02 +01:00
James O. D. Hunt
a7c7f92103 versions: Add versions database
Add a YAML format database that is the equivalent of the Clear
Containers `versions.txt` file [1].

The file defines the versions of important non-golang dependencies used
by this and other Kata repositories particularly for testing and packaging.

Defining all version details centrally in this file avoids duplication
and "bit-rot" when versions need to be changed.

[1] - https://github.com/clearcontainers/runtime/blob/master/versions.txt

Fixes #11.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-27 11:36:23 +01:00
Peng Tao
423e86405e qemu: refector createPod()
To fix CI complains:
virtcontainers/qemu.go:248:⚠️ cyclomatic complexity 18 of
function (*qemu).createPod() is high (> 15) (gocyclo)

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-27 15:58:41 +08:00
Peng Tao
8c5fb45f99 qemu: only set systemd related kernel parameters when needed
When we use initrd based booting, there is no systemd to be configured.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-27 15:58:41 +08:00
Peng Tao
38af66ca39 cli: only set systemd related kernel parameters when needed
When we install agent as init process in initrd based boot,
there is no systemd to be configured.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-27 15:58:41 +08:00
Peng Tao
463e6dee0b qemu: append kernel root parameters iff root image is provided
For initrd based boot, we do not need the root parameters.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-27 15:58:41 +08:00
Peng Tao
21343d7d71 cli: add initrd info to kata-env
Show the configured hypervisor initrd setting.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-27 15:58:41 +08:00
Peng Tao
19c3555412 cli: add hypervisor initrd config option
Add `initrd=[path]` option to configuration.toml and use it to set
the HypervisorConfig.InitrdPath option.

The default value of hypervisor image option is removed since we want
to allow it to be unset. For the same reason, there is no default value
for hypervisor initrd option either.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-27 15:58:41 +08:00
Peng Tao
4f57b65147 hypervisor: add initrd image support
If an initrd image is configured in HypervisorConfig or passed in by
annotations, append it to qemu command line arguments.

Fixes: #97

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-27 15:58:41 +08:00
Peng Tao
991fe81dff vendor: update govmm package
To include support for qemu initrd config.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-27 15:58:41 +08:00
James O. D. Hunt
7b0c2d1670 Merge pull request #117 from devimc/vfio/hotplug
virtcontainers: vfio: add support for hot plugging VFIO devices
2018-03-27 08:28:47 +01:00
Erick Cardona
52022701db rootfs-builder: Refactor rootfs.sh
This patch introduces a bash library (scripts/lib.sh) that concentrates
common functions. This also enhances future additions of other OSes, making
it more simple. Also, new variables were introduced in each distro config.sh
in order to parameterise the creation of package manager config (dnf/yum, in this case).
A fix to the resulting rootfs directory name (include OS name) is also fixed in this
patch.

Fixes #39
Fixes #34

Signed-off-by: Erick Cardona <erick.cardona.ruiz@intel.com>
2018-03-26 16:34:11 -06:00
Julio Montes
249945f749 virtcontainers: pod: remove cold plug support
All devices are hot plugged in the VM, hence cold plug
support is no more needed.

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-03-26 15:32:01 -06:00
Julio Montes
47edcb3fec virtcontainers: vfio: add support for hot plugging VFIO devices
With this patch VFIO devices are hot plugged in the VM, that means
no more cold plug in kata containers.

fixes #85

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-03-26 15:32:01 -06:00
Peng Tao
184662416d Merge pull request #109 from bergwolf/githooks
Makefile: remove git hooks
2018-03-24 11:34:37 +08:00
Peng Tao
ce755056f3 Merge pull request #107 from bergwolf/gitignore
gitignore: merge gitignore files
2018-03-24 11:32:56 +08:00
Peng Tao
fa9a5b8d9e design: add api design doc
To fulfill the kata design requirements, and based on the disscusion on
Virtcontainers API extentions, runtime API early sketch and runtime API
comparison, this commit added the high level design of the kata runtime
library API.

fixes: #26

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-24 11:30:35 +08:00
Salvador Fuentes
ae8a849b32 Merge pull request #76 from grahamwhaley/20180323_tests_repo
ci: lib: allow override of tests_repo
2018-03-23 08:51:19 -06:00
Julio Montes
d469cffc7a Merge pull request #75 from harche/env_args_docker
Pass EXTRA_PKGS var to docker to build rootfs
2018-03-23 08:40:13 -05:00
Graham whaley
93146d91dc ci: lib: allow override of tests_repo
Only set the tests_repo url to the default if it is not
set already.

Fixes: #71

Signed-off-by: Graham whaley <graham.whaley@intel.com>
2018-03-23 09:54:59 +00:00
James O. D. Hunt
057bbf0dc4 Merge pull request #105 from bergwolf/ci
CI: add go_import_path
2018-03-23 09:47:38 +00:00
Peng Tao
003313c0f1 Merge pull request #102 from jodh-intel/update-data-collection-script
Update data collection script based on review feedback
2018-03-23 17:41:56 +08:00
Graham Whaley
ee4a91a60a Merge pull request #73 from harche/golang_fix
Install the right golang binaries for ppc64le
2018-03-23 09:35:49 +00:00
Peng Tao
16b30c2838 CI: add go_import_path
So that we can test in personal travis setup.

Fixes: #104

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-23 17:31:42 +08:00
Peng Tao
4bca929ea7 gitignore: merge gitignore files
Move cli/.gitignore and virtcontainers/.gitignore to top dir.

Fixes: #106

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-23 17:09:54 +08:00
Peng Tao
a679fe9540 Makefile: remove git hooks
They only exist to remove the generated file `cli/generated.go` but the
removal is unnecessary because:
1. it is ignored in .gitignore
2. it get rebuilt every time when we run `make`

Fixes: #108

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-23 16:50:54 +08:00
Harshal Patil
2972a33535 rootfs: Install the right golang binaries for ppc64le
On ppc64le golang binaries should be pulled correctly

Fixes #72

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-03-23 14:06:11 +05:30
Harshal Patil
7043e19671 rootfs: Pass EXTRA_PKGS var to docker to build rootfs
When docker is used for building rootfs the
EXTRA_PKGS should be passed as env var

Fixes #74

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-03-23 14:02:13 +05:30
Julio Montes
53441e967a Merge pull request #100 from jodh-intel/pullapprove-add-doc-team
CI: Add doc team to pullapprove config
2018-03-22 12:21:05 -05:00
James O. D. Hunt
d0b3cf6d36 Merge pull request #70 from bergwolf/build
allow to build image and initrd based on existing rootfs
2018-03-22 16:39:16 +00:00
James O. D. Hunt
a938045d1c scripts: Make collect script hypervisor architecture agnostic
Don't hard-code the architecture when looking for hypervisor packages.

Fixes #101.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 16:05:12 +00:00
James O. D. Hunt
a20b8d2175 scripts: Collect script should consider Kata images only
Fix bug where collect script was looking for Clear Containers images
rather than Kata Containers ones.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 16:05:11 +00:00
James O. D. Hunt
a363ed8b6e scripts: Make collect script consider other runtimes
Look for other runtime packages (Clear Containers and `runv`-based) in
data collection script.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 16:05:09 +00:00
James O. D. Hunt
adf7b536cb Merge pull request #93 from jodh-intel/add-data-collection-script
scripts: Add data collection script
2018-03-22 15:52:55 +00:00
James O. D. Hunt
2d53b792b6 CI: Add doc team to pullapprove config
Add the standard doc team config to the pullapprove config file.

Fixes #99.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 15:49:27 +00:00
Sebastien Boeuf
4d5dde9b6a Merge pull request #96 from grahamwhaley/20180322_ci_overridable
ci: allow path to tests repo to be over-wridden
2018-03-22 08:24:52 -07:00
Peng Tao
6e1f2e063d Makefile: allow to build image and initrd based on existing rootfs
Just so that we do not have to re-build rootfs every time for local
build/testing.

Fixes: #69

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-22 23:20:53 +08:00
Peng Tao
56ab8c99fe initrd-builder: fix ROOTFS_DIR typo
It should be just ROOTFS.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-22 23:18:07 +08:00
Graham whaley
4a47a1ba50 ci: allow path to tests repo to be over-wridden
The github path to the tests repo is hard wired in lib.sh.
This makes it difficult to test any test repo WIP, as it ends
up calling back to the main repo.
Fix by using any value already set, and only setting to the main
repo if unset.

Fixes: #95

Signed-off-by: Graham whaley <graham.whaley@intel.com>
2018-03-22 14:38:45 +00:00
James O. D. Hunt
f93b6d2dd1 github: Add issue template
Add a template that will offer guidance for when users visit the
following URL:

- https://github.com/clearcontainers/runtime/issues/new

Crucially, the template asks the users to run the
`kata-collect-data.sh` script and paste the output direct into the
issue.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 13:56:43 +00:00
James O. D. Hunt
a521c33537 scripts: Add data collection script
Add a data collection script that can be run by users and its output
pasted directly into a github issue.

The script is designed to make diagnosing issues as easy as possible
and its output provides a summary of a Kata Containers system
including:

- Versions of all components.
- Details of container managers.
- Errors found in the system journal.

Fixes #80.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 13:56:40 +00:00
Peng Tao
1961d724cf Merge pull request #89 from jodh-intel/restructure-build-system
build: Move CLI makefile to top level
2018-03-22 20:19:22 +08:00
James O. D. Hunt
ea4050ee2d git: Add runtime to gitignore
Hide `kata-runtime` from `git status` by adding to `.gitignore`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 11:16:08 +00:00
James O. D. Hunt
3c7318dbbd build: Move CLI makefile to top level
Merge `cli/Makefile` with the top level `Makefile`.

Also includes a Travis config update.

Fixes #88.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 11:16:06 +00:00
Lai Jiangshan
1923361bcd Merge pull request #65 from sboeuf/remove_submodules
submodules: Remove cc-runtime and runv
2018-03-22 11:04:38 +08:00
Sebastien Boeuf
1a9ceb1278 submodules: Remove cc-runtime and runv
Both cc-runtime and runv git submodules can now be removed since
the new folder cli defines the OCI wrapper, and the kata API is
defined and implemented through the virtcontainers package in this
same repository.

Fixes #64

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-21 12:10:15 -07:00
Eric Ernst
893d9d1bb1 Merge pull request #30 from jodh-intel/add-dev-guide
docs: Add developer guide
2018-03-21 09:59:40 -07:00
James O. D. Hunt
2ab1a3f260 docs: Add developer guide
Move the developer guide from the wiki "in-tree".

Fixes #29.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-21 16:57:51 +00:00
Peng Tao
6d05197625 Merge pull request #68 from devimc/agent/onlineCPUs
virtcontainers: agent: use onlineCPUMem to online vCPUs
2018-03-21 10:42:25 +08:00
Julio Montes
397905f4ca Merge pull request #83 from amshinde/remove-device-from-bridge
virtcontainers: qemu: Call removeDeviceFromBridge for virtio-blk
2018-03-20 13:38:39 -05:00
Sebastien Boeuf
0619b0e110 Merge pull request #79 from jodh-intel/simplify-toplevel-makefile
Simplify toplevel makefile
2018-03-20 11:03:45 -07:00
Archana Shinde
5f1bc49263 virtcontainers: qemu: Call removeDeviceFromBridge for virtio-blk
In case of virtio-block, we hotplug devices to a bridge.
We need to remove device from bridge while stopping a
container.

Fixes #82

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-03-20 10:47:02 -07:00
Sebastien Boeuf
c8e0c2cc85 Merge pull request #72 from jodh-intel/fix-lint-errors
Fix lint errors & get virtcontainers tests running
2018-03-20 10:38:04 -07:00
Sebastien Boeuf
4e86f5886b Merge pull request #77 from jodh-intel/simplify-cli-makefile
build: Simplify CLI makefile
2018-03-20 08:35:47 -07:00
Julio Montes
0916bb6fe3 virtcontainers: agent: use onlineCPUMem to online vCPUs
After hot adding vCPUs in the POD, agent's funtion `onlineCPUMem`
must be called to request the agent to online the vCPUs

fixes #67

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-03-20 09:05:25 -06:00
Julio Montes
0736e06193 Merge pull request #66 from jodh-intel/ci-fix-setup
CI: Make setup script fail on error
2018-03-20 09:36:13 -05:00
James O. D. Hunt
2a564c4f4b build: Add a clean rule
Add missing `clean` rule.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 11:23:08 +00:00
James O. D. Hunt
661a6ae85a build: Simplify top-level makefile
Use `make -C $dir` for simplicity.

Fixes #78.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 11:21:21 +00:00
James O. D. Hunt
81795a9879 build: Fix whitespace
Remove extraneous whitespace and format `Makefile` more consistently.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 11:20:35 +00:00
James O. D. Hunt
092940ee8b build: Simplify CLI makefile
Now that the only build project is Kata, remove the remaining code to
support other projects and simplify.

Fixes #76.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 09:17:50 +00:00
James O. D. Hunt
734c387f4e CI: Add virtcontainers setup
Update the CI setup script to handle virtcontainers CI setup too.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:31:41 +00:00
James O. D. Hunt
bfd497fdf9 virtcontainers/tests: Disable selected tests for uid != 0
Skip a number of virtcontainers tests if not running as `root.`

Fixes #70.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:16 +00:00
James O. D. Hunt
ce37ac146d lint: Rename vcMock to vcmock
As recommended by `golint`, renamed the `vcMock` package to `vcmock`.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:16 +00:00
James O. D. Hunt
b1628639e8 lint: Fix virtcontainers staticcheck errors
Correct `staticcheck` linter issues.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:16 +00:00
James O. D. Hunt
d51a5e303d lint: Fix virtcontainers unused errors
Remove unused variables and functions identified by the `varcheck` and
`unused` linters.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:16 +00:00
James O. D. Hunt
97d2ef2712 lint: Annotate unused virtcontainers iota consts
Added magic tags for `gometalinter` to ignore two unused `const`s that
form part of an `iota` sequence.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:16 +00:00
James O. D. Hunt
9b98c26a80 lint: Fix virtcontainers maligned errors
Correct `maligned` linter issues.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:16 +00:00
James O. D. Hunt
cc09b01ab2 lint: Fix virtcontainers structcheck errors
Correct `structcheck` linter issues.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:16 +00:00
James O. D. Hunt
c4e85905db lint: Fix virtcontainers unconvert errors
Correct `unconvert` linter issues.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:14 +00:00
James O. D. Hunt
bd8b585c79 lint: Fix virtcontainers golint errors
Correct `golint` linter issues.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:05 +00:00
James O. D. Hunt
3aad4f40c6 lint: Fix virtcontainers gofmt errors
Correct `gofmt` formatting for virtcontainers files.

Partially fixes #70.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:05 +00:00
James O. D. Hunt
7464e97a57 CI: Use central static checks script
Remove the duplicate static checker script and use the central script
defined in the `tests` repo like all the other components.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 08:28:05 +00:00
Eric Ernst
cd146dfeed Merge pull request #73 from amshinde/vendor-upstream-ethtool
vendor: Vendor github.com/safchain/ethtool
2018-03-19 15:10:11 -07:00
Archana Shinde
d5b066152b vendor: Vendor github.com/safchain/ethtool
We were using code copied from github.com/safchain/ethtool.
Vendor in upstream package instead to use additional
functionality added in.

Fixes #71

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-03-19 14:30:29 -07:00
Sebastien Boeuf
65012d08b4 Merge pull request #62 from markdryan/gopath-setup
utils: Use go env to discover the GOPATH
2018-03-16 10:35:10 -07:00
Sebastien Boeuf
d1bdf80f56 Merge pull request #57 from amshinde/skip-ipv6-gateway
Skip routes with ipv6 gateway
2018-03-16 10:33:55 -07:00
Mark Ryan
96c49775c0 utils: Use go env to discover the GOPATH
Since Go 1.8 users no longer need to have GOPATH set in their environment
for the Go tool chain to work.  If GOPATH is set, Go will use it.  Otherwise
it defaults to ~/go on linux.  As most users store their code in ~/go, they
don't bother setting GOPATH any more.  virtcontainers-setup.sh, in its
current form, fails for those users, as it requires GOPATH to be set.
This commit fixes the issue by calling go env "GOPATH" to determine the
correct location of the user's go code.  go env "GOPATH" will always
return the correct location, whether GOPATH is set, or not.

Fixes: #63

Signed-off-by: Mark Ryan <mark.d.ryan@intel.com>
2018-03-16 09:39:58 +00:00
Archana Shinde
b6e6924a75 hyperstart_agent: ipv6: Skip ipv6 gateway for hyperstart agent
We ignore routes that have an ipv6 destination, since hyperstart agent
does not have support for ipv6 currently. We should do the same
for default route that has an ipv6 gateway address.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-03-15 13:47:14 -07:00
Archana Shinde
9f44729bd3 kata_agent: ipv6: Skip ipv6 gateway for kata agent
We ignore routes that have an ipv6 destination, since kata agent
does not have support for ipv6 currently. We should do the same
for default route that has an ipv6 gateway address. We need to
revisit this once we start adding support for ipv6.

Fixes #58

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-03-15 13:47:13 -07:00
Eric Ernst
de8506d8e5 Merge pull request #55 from sboeuf/scsi_support
virtcontainers: kata_agent: Add virtio-scsi support
2018-03-15 13:41:32 -07:00
Sebastien Boeuf
21f8911960 virtcontainers: kata_agent: Add virtio-scsi support
This commit enables the support of virtio-scsi for block devices
used as root filesystem or as devices passed through the VM to be
used directly from the container.

Fixes #56

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-15 12:20:32 -07:00
Sebastien Boeuf
7e85032aa7 virtcontainers: kata_agent: Use 9p2000.L version for 9p
There is a shared directory shared through virtio-9p between the
host and guest OS. The version of the driver used matters as it
may improve a few things. In this case, using the specific version
9p2000.L does not result in any regression, and it fixes failures
related to symlinks being passed through 9p.

Fixes #56

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-15 12:20:32 -07:00
Sebastien Boeuf
8152e15a61 virtcontainers: kata_agent: Factorize appending devices
This commit factorizes the code appending devices to the device list
provided to the Kata agent, in order to reduce the complexity of the
function createContainer().

Fixes #56

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-15 12:20:32 -07:00
Sebastien Boeuf
c2e9801a97 virtcontainers: kata_agent: Rely on Storage instead of Device for rootfs
The Kata agent has been reworked regarding Storage and Device
structures recently. It now expect that Storage is going to be
used for both volumes/mounts and rootfs, while Device will be
exclusive to devices passed through the VM that should appear
inside the container.

This commit implements this new way of handling volumes and
devices.

Fixes #56

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-15 12:20:32 -07:00
Sebastien Boeuf
b111403c00 Merge pull request #59 from jcvenegas/cli-runtime
cli: Initial runtime cli implementation.
2018-03-15 12:09:06 -07:00
Jose Carlos Venegas Munoz
4e370a5c72 vendor: re-vendor agent to fix mount error
The agent gRPC protocol has changed meaning the order of the gRPC
`Storage` message members has changed. This manifested itself with the
following error:

```
"OCI runtime create failed: rpc error: code = Internal desc = Could not
resolve symlink for source 9p: unknown."
```

This was caused by the agent attempting to mount a 9p FS with a blank
mountpoint - in fact due to the change in ordering, the mountpoint was
in the mount options!

Changes:

9760c10 device: Add SCSI block device support
15e851f storage: Rework the way Storage and Device are handled
4683745 lint: Remove unnecessary conversions
058182d lint: Fix vet error
ebcb3af reaper: removed unused type
902b82c device: Use standard functions to get device Major and Minor
6e262da main: Display full stacktrace on internal error

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-03-15 12:13:22 -06:00
Jose Carlos Venegas Munoz
6dde7b8548 Makefile: Update makefile to build runtime
Change default runtime to build cli.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-03-15 12:10:52 -06:00
Jose Carlos Venegas Munoz
3e4fdbbe6f travis: fix runtime build
Runtime command now is built on cli directory.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-03-15 12:10:52 -06:00
Julio Montes
e84a9a70b0 cli: Add initial cli implementation.
- Add kata-runtime
- Add unit test
- Add Makefile to build cli

Fixes: #33

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-03-15 12:10:52 -06:00
Jose Carlos Venegas Munoz
65b9936798 vendor: update vendor with new cli dependencies
Add need packages need by cli.

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-03-15 01:13:04 -06:00
Jose Carlos Venegas Munoz
dad59fe092 vendor: Move virtcontainers to project's root directory
Lets have a global vendor base on virtcontainers.

Signed-off-by: Julio Montes <julio.montes@intel.com>
Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-03-14 11:42:02 -06:00
Lai Jiangshan
167d54a5ce Merge pull request #41 from sameo/topic/virtcontainers
virtcontainers: Initial import
2018-03-13 11:28:08 +08:00
Samuel Ortiz
c446b0ef46 virtcontainers: Remove redundant files
We will move the CI part into the top level .ci directory.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2018-03-13 01:00:54 +01:00
Samuel Ortiz
be72b6bd31 virtcontainers: Change all import paths
Some virtcontainers pieces of code are importing virtcontainers
packages. We need to change those paths to point at
kata-containers/runtime/virtcontainers

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2018-03-13 01:00:52 +01:00
Samuel Ortiz
24eff72d82 virtcontainers: Initial import
This is a virtcontainers 1.0.8 import into Kata Containers runtime.

virtcontainers is a Go library designed to manage hardware virtualized
pods and containers. It is the core Clear Containers framework and will
become the core Kata Containers framework, as discussed at
https://github.com/kata-containers/runtime/issues/33

Some more more pointers:

virtcontainers README, including some design and architecure notes:
https://github.com/containers/virtcontainers/blob/master/README.md

virtcontainers 1.0 API:
https://github.com/containers/virtcontainers/blob/master/documentation/api/1.0/api.md

Fixes #40

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2018-03-13 00:49:46 +01:00
Sebastien Boeuf
f43d4f665c Merge pull request #17 from egernst/reqts
requirements: add initial document
2018-03-09 10:02:28 -08:00
Eric Ernst
ad9cef49c6 Merge pull request #47 from chavafg/topic/update-cc-runtime
cc-runtime: Update to 3.0.21
2018-03-08 13:12:33 -08:00
Eric Ernst
3839bf4e71 requirements: add initial document
Adding initial kata requirements list, based off of discussion from
kata-containers/runtime issue #31.

Fixes: #18

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-03-08 13:01:26 -08:00
Salvador Fuentes
a31c416529 cc-runtime: Update to 3.0.21
Update `cc-runtime` to release 3.0.21 which has the necessary
fixes for the new agent.

Shortlog:

	5e27776 vendor: Update virtcontainers vendoring
	dc15173 cc-env: Include hypervisor block storage driver in cc-env output
	1768dd5 config: Add configuration option for hypervisor block storage driver
	accaa9d vendor: Vendor virtcontainers for SCSI support

Fixes: #44.

Signed-off-by: Salvador Fuentes <salvador.fuentes@intel.com>
2018-03-08 08:19:53 -06:00
Eric Ernst
3bb70f65a9 Merge pull request #14 from gnawux/desgin
create directory for design documents
2018-03-06 14:57:31 -08:00
Graham Whaley
05b6979592 Merge pull request #43 from jodh-intel/update-cc-runtime
cc-runtime: Update to 3.0.20
2018-03-01 18:15:20 +00:00
James O. D. Hunt
90d7b4dad6 CI: Make setup script fail on error
Run the `.ci/setup.sh` script with `set -e` to ensure all failures are
fatal.

Fixes #65.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-01 17:44:12 +00:00
James O. D. Hunt
6899dec884 Merge pull request #64 from nirmoy/fix_template_make
makefile: fix makefile to find Dockerfile.template
2018-03-01 17:41:12 +00:00
James O. D. Hunt
56eb88b8dd Merge pull request #56 from liangchenye/time
skip euleros build due to timeout reason
2018-03-01 16:04:11 +00:00
James O. D. Hunt
d9222448bc cc-runtime: Update to 3.0.20
Update `cc-runtime` to release 3.0.20 to pull in SCSI support and vCPU and
logging fixes.

Shortlog:

    0ea75e1 versions: Update kernel version to latest.
    14439ef release: Clear Containers 3.0.20
    e703f15 fedora-installation-guide: update Fedora versions supported
    b03c4a5 logging: Add name to all log calls
    055c688 logging: Add PID field to logs
    f6da537 config: don't exceed the number of physical cores
    cc84544 versions: Update agent version to pull in SCSI support
    54f87f5 logging: Add CLI command to logs
    befbdb1 config: Add comments for the DisableBlockDeviceUse flag

Fixes #42.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-01 13:57:57 +00:00
Eric Ernst
fc28cdc28d Merge pull request #12 from jodh-intel/add-coc-doc
docs: Add code of conduct doc
2018-02-27 08:34:37 -08:00
Wang Xu
fd579088db create directory for design documents
Fixes #13

Signed-off-by: Wang Xu <gnawux@gmail.com>
2018-02-26 18:24:55 +08:00
Nirmoy Das
b21db8fc79 makefile: fix makefile to find Dockerfile.template
template rootfs creation fails:

$make -f template/Makefile ROOTFS_BASE_NAME=opensuse
<....>
sed: can't read Dockerfile.template: No such file or directory

make is unable to find Dockerfile.template, this patch fixes this.

Fixes #67.

Signed-off-by: Nirmoy Das <ndas@suse.de>
2018-02-26 11:24:49 +01:00
zhangwei_cs
c2a36f0b20 Merge pull request #38 from sameo/topic/cc
cc-runtime: Update to 3.0.19
2018-02-23 10:14:07 +08:00
Samuel Ortiz
74732c6443 cc-runtime: Update to 3.0.19
Add ARM architecture framework
Fix CRI-O kill race condition
Support configurable inter networking models (bridge, macvlan)

Shortlog:

5d80cae release: Clear Containers 3.0.19
702ee56 logger: Fix nanosecond timestamp test
e4ec67c vendor: Re-vendor virtcontainers to bring ARM support.
f90b33b logger: Fix nanosecond timestamps
84104b8 build: Add 'show-arches' target
3642602 build: Add variable for arch file suffix
c17c1f0 build: Add missing periods
db9f440 vendor: Re-vendor virtcontainers to include changes in govmm.
db882f3 build: Add architecture framework for ARM
26ce77d versions: Upade openshift, kubernetes, runc and CRI-O
f6d0b73 release: Clear Containers 3.0.18
7a280ef vendor: Update virtcontainers vendoring
ec11564 kill: Fix CRI-O race condition
786610f vendor: Update virtcontainers
1c84bef config: Add configuration option to define InterNetworkModel
8f3d397 cc-check: Isolate architecture specific code
755da14 versions: Update agent version
fa76660 cc-env: Add architecture to output
d51f214 release: Clear Containers 3.0.17
9e1712f CI: Run extra go linters
d1e7e3a lint: Remove unused variables
8ce6dd4 tests: Remove unused assignment
f3b8e73 list: Use interface explicitly
b0926d4 versions: agent: image: update agent
66f41d6 versions: image: Update base os to version 20640
1c45133 build: Don't install git hooks when running under a CI

Fixes #39

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2018-02-23 01:05:09 +01:00
Samuel Ortiz
b97f8ad710 Merge pull request #37 from GabyCT/topic/addrun
ci: Add run.sh and setup.sh in order to run the tests.
2018-02-23 01:05:00 +01:00
Gabriela Cervantes
f0503ba54a ci: Add run.sh and setup.sh in order to run the tests.
The setup script will be in charge of clone the test repository, meanwhile,
the run script will be in charge of execute for example the docker
integration tests.

Fixes #36

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2018-02-22 01:00:55 -06:00
Liang Chenye
55f0324878 skip euleros build due to timeout reason
Fixes #46.

Signed-off-by: Liang Chenye <liangchenye@huawei.com>
2018-02-22 10:02:44 +08:00
James O. D. Hunt
ec738d46c1 Merge pull request #61 from devimc/rootfs/arm
rootfs-builder: ARM64 support
2018-02-19 09:35:14 +00:00
Jose Carlos Venegas Munoz
eb3712a075 Merge pull request #62 from erick0z/erick0z/image_size
image-builder: Allow to specify root partition free space
2018-02-15 21:41:21 -06:00
Erick Cardona
ea4063095d image-builder: Allow to specify root partition free space
There is no way to specify the remaining free space of the root partition.
It can vary depending on the upper bound size of the image aligned to 128MB
and the size of the root filesystem.
The following patch allow the user to specify that at least a certain amount
of space (defined in MB) will be kept in the root partition.

Fixes: #45

Signed-off-by: Erick Cardona <erick.cardona.ruiz@intel.com>
2018-02-14 14:52:25 -06:00
Xu Wang
64bb90cb92 Merge pull request #30 from jodh-intel/add-docs
docs: Add missing standard docs
2018-02-09 22:56:33 +08:00
Samuel Ortiz
3adb1793eb Merge pull request #28 from jodh-intel/update-cc-runtime
cc-runtime: Fix kernel param handling & update collect script
2018-02-09 15:56:23 +01:00
James O. D. Hunt
e2e0cfb5bb docs: Add missing standard docs
Add a README, along with the standard code of conduct and contributing
docs.

Fixes #29.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-02-09 14:45:14 +00:00
Jose Carlos Venegas Munoz
9699fe43a7 Merge pull request #58 from harche/bound_cond
scripts : handle 0 and negative root disk sizes
2018-02-09 07:50:05 -06:00
Julio Montes
cd3fbcf864 rootfs-builder: ARM64 support
Install the right version of golang depending of the host architecture

fixes #60

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-02-08 19:35:58 -06:00
James O. D. Hunt
32d86f1863 Merge pull request #4 from jodh-intel/bootstrap-repo
Bootstrap repo
2018-02-07 17:10:16 +00:00
James O. D. Hunt
c08294fa0d docs: Add code of conduct doc
Add the standard code of conduct document.

Fixes #11.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-02-06 10:39:00 +00:00
James O. D. Hunt
de5a62942e CI: Add pullapprove config
Add the pullapprove configuration file.

Fixes #3.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-02-05 15:33:31 +00:00
James O. D. Hunt
d12122c8e3 docs: Add CoC and contributing doc
Add the standard Code of Conduct and contributing docs.

Partly fixes #3.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-02-05 15:33:30 +00:00
Harshal Patil
132e812fe4 scripts : handle 0 and negative root disk sizes
When user manually specifies root disk image
size the value should be greater than 0.

Fixes : #57

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-02-05 15:43:26 +05:30
James O. D. Hunt
916fe973e2 Merge pull request #53 from bergwolf/alpine
alpine rootfs support
2018-02-05 09:42:22 +00:00
Peng Tao
58d8f0b2b5 tests: add alpine image build tests
Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-05 17:18:52 +08:00
Peng Tao
c8403836c0 rootfs: add alpine rootfs support
Fixes: #52
Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-05 17:18:52 +08:00
Peng Tao
de6e4dc93f builder: fix agent binary path
kata agent is installed in `${ROOTFS}/usr/bin/` rather than `${ROOTFS}/bin/`.
It just happended to work because `bin` is a symlink to `usr/bin`, which
might not be true in some distros. So do not rely on it.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-05 17:18:52 +08:00
James O. D. Hunt
17e01fd32f Merge pull request #49 from bergwolf/agent_init
Allow to use agent as init process and create initrd image based on rootfs
2018-02-05 09:11:17 +00:00
Jose Carlos Venegas Munoz
4ccd771de7 Merge pull request #30 from harche/image_size
scripts: Add an "auto-size" feature
2018-02-02 10:42:14 -06:00
James O. D. Hunt
bf1201bdfd cc-runtime: Fix kernel param handling & update collect script
Update `cc-runtime` submodule for two main reasons:

-  config: Allow user-specified kernel params to take priority
   feed1be89e

- Update data collection script to work with Kata.

Changes:

    a63895e versions: Update kernel version
    7bf93e2 release: Clear Containers 3.0.16
    1412ff8 cc-env: Remove "CC" from output.
    5e7d03c vendor: Update virtcontainers vendoring
    f515c21 vendor: Update Gopkg.toml for new prune syntax
    ef63d36 vendor: Remove constraints from packages not directly vendored
    ab1a9f1 build: Add bug URL to help output
    719f523 scripts: Fix collect script bug URL
    93c71c9 cc-check: Document "unrestricted_guest" requirement
    0f8b25d scripts: Ignore qemu startup message
    7310433 scripts: Update collect script for Kata
    feed1be config: Allow user-specified kernel params to take priority
    e7de45d usage: Show project URL in help output
    b45d46c release: Clear Containers 3.0.15
    e65682c docs: remove references to Clear Containers proxy service

Fixes #27.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-02-02 16:09:39 +00:00
zhangwei_cs
6b5620d1cb Merge pull request #24 from jodh-intel/ci-add-checkcommits
CI: Enable checkcommits
2018-02-02 23:06:49 +08:00
James O. D. Hunt
83148b18c2 Update README.md 2018-02-02 09:30:21 +00:00
James O. D. Hunt
f09756ee81 Initial commit 2018-02-02 09:27:48 +00:00
Harshal Patil
5fe3f4ae0b scripts: Add an "auto-size" feature
Changed image-builder/image_builder.sh to
automatically calculate the size of the root disk

Fixes #25.

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-02-02 14:32:09 +05:30
James O. D. Hunt
7f53e41fd8 Merge pull request #5 from jodh-intel/docs-require-doc-team-signoff
CI: Require doc team signoff for doc changes
2018-02-02 07:11:40 +00:00
Peng Tao
f503e66dd7 doc: add initd term to top level readme
Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-02 10:01:22 +08:00
Peng Tao
9680f08ebf rootfs: support adding optional kernel modules
Caller of rootfs.sh can define `KERNEL_MODULES_DIR` as a kernel
module directory and then the directory will be copied to
`/lib/modules/` of the created rootfs. This allows additional
kernel modules to be put into rootfs image and initrd image.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 23:27:40 +08:00
Peng Tao
7245b21206 rootfs: document about AGENT_INIT
Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 23:27:40 +08:00
Peng Tao
85a9a4a7be CI: enable agent as init process and kata initrd tests
1. let travis build w/ and w/o agent as init process
2. test building kata initrd images

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 23:27:40 +08:00
Peng Tao
2a2a79aa87 centos: clean up yum caches after installing packages
So that we can get smaller rootfs.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 23:27:40 +08:00
Peng Tao
82759dac14 initrd: add script to build kata initrd image
Build a kata initrd image based on rootfs created by rootfs.sh.

Fixes: #5

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 23:27:36 +08:00
Peng Tao
97c7e4b7bf config.sh: do not install systemd if agent is init
When agent is used as init process, there is no need to install
systemd.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 22:58:57 +08:00
Jose Carlos Venegas Munoz
0532e91d4b Merge pull request #55 from liangchenye/master
add travis build status to README.md
2018-02-01 08:11:37 -06:00
Liang Chenye
33c48db758 add travis build status to README.md
Fixes:#54.
Signed-off-by: Liang Chenye <liangchenye@huawei.com>
2018-02-01 18:47:25 +08:00
James O. D. Hunt
1c488951e0 CI: Enable checkcommits
Run the central static check script to enable `checkcommits`.

Fixes #8.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-31 12:30:02 +00:00
Jose Carlos Venegas Munoz
1c504c7746 Merge pull request #51 from ydjainopensource/minimalContributing
Docs : Add minimal contribution guidelines
2018-01-30 12:48:08 -06:00
James O. D. Hunt
645b4cf64d Merge pull request #9 from ydjainopensource/minimalContributing
Docs : Add minimal contribution guidelines
2018-01-30 17:38:53 +00:00
Peng Tao
94e7b1da4f rootfs: allow to use agent as init process
Add AGENT_INIT env to make it configurable.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-01-31 00:59:29 +08:00
Yash Jain
48048056da cs : Add minimal contribution guidelines
Fixes : #8

See : kata-containers/community#5

Signed-off-by: Yash Jain <ydjainopensource@gmail.com>
2018-01-30 22:14:52 +05:30
Yash Jain
3e48c306c4 Docs : Add minimal contribution guidelines
Fixes : #50

See : kata-containers/community#5

Signed-off-by: Yash Jain <ydjainopensource@gmail.com>
2018-01-30 22:01:48 +05:30
James O. D. Hunt
71f5b11b9a Merge pull request #23 from bergwolf/runv-repo
runv: modify GOPATH to build
2018-01-30 09:32:26 +00:00
Peng Tao
e0f4c52836 runv: modify GOPATH to build
So that we can use runv repo as git submodule without splitting it.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-01-30 10:00:05 +08:00
Jose Carlos Venegas Munoz
058cf5bfca Merge pull request #13 from jodh-intel/ci-add-checkcommits
CI: Enable checkcommits
2018-01-29 09:52:30 -06:00
James O. D. Hunt
895aad108e CI: Enable checkcommits
Require all PRs to contain a "Fixes #XXX" comment and a
"Signed-off-by:" comment by running the central static checks script.

Note that the static checks script will detect if the repository
contains golang code and only run those checks if it does.

Fixes #12.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-29 08:50:55 +00:00
Peng Tao
1295bd50f7 Merge pull request #40 from jcvenegas/fixes
CI: Fix tests
2018-01-27 11:10:04 +08:00
Jose Carlos Venegas Munoz
45d4e5fb62 travis: Wait more than 10 min
Use travis configuration to wait more than 10 min

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-26 11:04:57 -06:00
Peng Tao
275c683ce5 Merge pull request #16 from jodh-intel/add-makefile
build: Add minimal Makefile
2018-01-27 00:36:09 +08:00
James O. D. Hunt
086ac7428d Merge pull request #18 from bergwolf/runvcli
runv: update submodule repo
2018-01-26 16:22:22 +00:00
Peng Tao
40e1cdc5d8 runv: update submodule repo
Use a standalone cli repo so that it can be built inside the
kata runtime directory.

fixes: #17

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-01-27 00:16:53 +08:00
James O. D. Hunt
6faabd290c build: Add minimal Makefile
Add a basic `Makefile` to allow a runtime to be built:

- Clear Containers-based Kata runtime:
  ```
  $ make KATA_RUNTIME=cc [install]
  ```

- `runv`-based Kata runtime:
  ```
  $ make KATA_RUNTIME=runv [install]
  ```

Fixes #15.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-26 13:55:56 +00:00
James O. D. Hunt
00d26de0d5 Merge pull request #37 from jodh-intel/fix-image-builder-instructions
docs: Fix image builder instructions.
2018-01-25 17:04:12 +00:00
Jose Carlos Venegas Munoz
612754fd20 rootfs: Add support to create dockerfiles based on templates
To simplify maintaince, create dockerfiles based on templates.

This way when golang version is updated it will be done in one place
versions.txt.

This also allow to allways intall the same version of golang in any
dockerfile.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-25 09:02:51 -06:00
Jose Carlos Venegas Munoz
b7dc0f148c Merge pull request #42 from jodh-intel/docs-require-doc-team-signoff
CI: Require doc team signoff for doc changes
2018-01-24 21:54:37 -06:00
Xu Wang
ff8f8ab512 Merge pull request #14 from sameo/topic/cc
cc-runtime: Fix default systemd target
2018-01-25 07:32:50 +08:00
Samuel Ortiz
2c4e950a50 cc-runtime: Fix default systemd target
The cc-runtime code base was hard coding a Clear Containers
specific systemd unit target in the default kernel parameters.
This commit includes a fix for that.

Shortlog:

9be4882 build: Set systemd unit name based on project
512cd59 config: Clean up hypervisor debug comments

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2018-01-24 18:42:29 +01:00
James O. D. Hunt
f822e0f80b CI: Require doc team signoff for doc changes
Require an additional approval from a `documentation` team member for
PRs containing documentation changes.

Fixes #4.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-24 13:42:26 +00:00
James O. D. Hunt
fd16a96237 Merge pull request #3 from jodh-intel/enable-pullapprove
CI: Enable pullapprove
2018-01-24 13:40:03 +00:00
James O. D. Hunt
30b47ddea1 CI: Require doc team signoff for doc changes
Require an additional approval from a `documentation` team member for
PRs containing documentation changes.

Fixes #41.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-24 12:11:48 +00:00
Xu Wang
bec23a9388 Merge pull request #13 from sameo/topic/cc
runtime: Add Clear Containers runtime
2018-01-24 19:57:01 +08:00
Samuel Ortiz
2f6e538e79 runtime: Add Clear Containers runtime
This adds Clear Containers as a Kata Containers runtime, under
runtime/cc-runtime

The Docker `create`, `start`, `run`, `exec` and `ps` commands
work when using the cc-runtime code together with the vanilla
Kata shim, proxy and agent components. Shortly we will also
document how to build and install all of those together.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2018-01-24 12:45:24 +01:00
James O. D. Hunt
1ca1b71f9c docs: Fix image builder instructions.
The `image_builder.sh` script must be run as `root`.

Fixes #36.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-23 14:29:54 +00:00
Jose Carlos Venegas Munoz
6dcaef7cf8 fedora: use OS_VERSION instead of host version
Use OS_VERSION provided by user configuration and not use host version.

Also add retries before fail on a request.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-22 14:58:10 -06:00
Jose Carlos Venegas Munoz
a617dd892a dockerfiles: Add golang to centos anda euleros
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-22 14:58:10 -06:00
Jose Carlos Venegas Munoz
b946770c74 test: Fix tests - run test for all distros
Not all the distros were executed due to typo

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-22 14:56:54 -06:00
Jose Carlos Venegas Munoz
18d25ca005 Merge pull request #22 from harche/repo_url
scripts: Arch dependent repo url for fedora
2018-01-22 14:36:16 -06:00
Harshal Patil
525ae6aee7 scripts: Arch dependant repo url for fedora
Changed rootfs-builder/fedora/rootfs_lib.sh to select
repo URL based on arch.

Fixes #21.

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-01-22 10:15:33 +05:30
Jose Carlos Venegas Munoz
052b8af497 Merge pull request #29 from jcvenegas/travis
ci: Add travis basic testing
2018-01-19 13:00:07 -06:00
Jose Carlos Venegas Munoz
a9fef80feb image_builder: Allow build in a docker container
In case host not has requried programs allow build image
in a container when USE_DOCKER is set.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-19 12:51:07 -06:00
Jose Carlos Venegas Munoz
853ef22eef rootfs: Change realpath for readlink
readlink  is more common than realpath

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-19 12:51:07 -06:00
Jose Carlos Venegas Munoz
be3266fb00 ci: Add travis basic testing
Add basic a few tests to be run by travis.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-19 12:51:07 -06:00
Jose Carlos Venegas Munoz
25d6ed98a7 Merge pull request #27 from jodh-intel/doc-fixes
docs: General cleanup
2018-01-18 23:45:04 -06:00
James O. D. Hunt
57617ea4af docs: General cleanup
Rework the docs to make them simpler and more consistent. Also added of
contents and corrected a few mistakes.

Fixes #26.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-18 09:36:47 +00:00
James O. D. Hunt
5484928ac6 Merge pull request #19 from harche/gopath_fix
Exit if GOPATH is not set
2018-01-16 11:36:57 +00:00
James O. D. Hunt
3644d49950 Merge pull request #15 from liangchenye/master
rootfs: Add rootfs based on EulerOS 2
2018-01-15 13:37:07 +00:00
Liang Chenye
d46348a348 rootfs: Add rootfs based on EulerOS 2
Fixes #17.

Signed-off-by: Liang Chenye <liangchenye@huawei.com>
2018-01-15 20:58:50 +08:00
Harshal Patil
8086e5b7a6 scripts: Exit if GOPATH is not set
Changed the `rootfs.sh` script to exit with an error if `GOPATH` isn't set
in the environment.

Fixes #20.

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-01-15 15:47:49 +05:30
Samuel Ortiz
0e2b6c741a Merge pull request #10 from gnawux/import_runv
import runV runtime as a submodule
2018-01-08 17:27:50 +01:00
James O. D. Hunt
a0e6eccbaf Merge pull request #7 from jodh-intel/enable-pullapprove
CI: Add pullapprove and require two acks / PR
2018-01-08 16:12:33 +00:00
James O. D. Hunt
72e41a0722 CI: Enable pullapprove
Require two approvals from documentation team members before a PR
can land.

The configuration file is the same as those used for the other repos,
except for the approval team name.

Fixes #2.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-02 17:34:46 +00:00
Wang Xu
98227974e7 import runV runtime as a submodule
this importing resolves #9 together with CC import

Signed-off-by: Wang Xu <gnawux@gmail.com>
2017-12-24 09:17:45 +08:00
James O. D. Hunt
2c002c8a92 CI: Add pullapprove and require two acks / PR
Add a `pullapprove.yml` that requires each PR to be approved
by two members of the `runtime` team.

Fixes #5.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2017-12-21 17:23:35 +00:00
James O. D. Hunt
20fbb5a721 Initial commit 2017-12-21 13:41:45 +00:00
Peng Tao
eb19154a60 Merge pull request #11 from jodh-intel/require-2-pullapprove-acks
Require 2 pullapprove acks
2017-12-19 12:26:19 +08:00
James O. D. Hunt
c0d3ef8c1b CI: Add rfc logic to pullapprove config
For parity with the agent, disallow merging of RFC branches.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2017-12-18 21:53:23 +00:00
James O. D. Hunt
5c7a685f96 CI: Require 2 approvals for pullapprove
Change the pullapprove configuration to require two acks before a PR
can be approved (for parity with the agent).

Fixes #10.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2017-12-18 21:52:55 +00:00
Peng Tao
8f0d7f6acb Merge pull request #1 from jcvenegas/image-creation-support
Image creation support
2017-12-11 10:20:42 +08:00
Jose Carlos Venegas Munoz
d2f31dfbf7 Merge pull request #4 from sameo/topic/coc
Code Of Conduct and pullapprove support
2017-12-07 10:05:14 -06:00
Jose Carlos Venegas Munoz
48820425eb Makefile: Add image target
Use as default base OS centos

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:32:03 -06:00
Jose Carlos Venegas Munoz
0e1b500fec docs: Add README
- Overview
- Terms

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:32:03 -06:00
Jose Carlos Venegas Munoz
d9fe322a5f image: Add README
Add readme do document how to use ./image-builder/image_builder.sh

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:32:03 -06:00
Jose Carlos Venegas Munoz
52d6b044b7 image: Add script to build image
Add script to build image based on a rootfs directory.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:32:03 -06:00
Jose Carlos Venegas Munoz
b284e42aef rootfs: Add docker support
Allow users build a rootfs using docker, this will make easy if they
dont have dependencies need to pull packages from a distro.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:32:01 -06:00
Jose Carlos Venegas Munoz
48992d3fdf rootfs: Add README
Add docs about how rootfs generation.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:24 -06:00
Jose Carlos Venegas Munoz
206db3d585 rootfs: Add template files for new distros
Add template to add new distros.

Added a Makefile to initialize new environment.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:24 -06:00
Jose Carlos Venegas Munoz
75a9d5eab7 rootfs: Add rootfs based on CentOS 7
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:24 -06:00
Jose Carlos Venegas Munoz
5b8478c4cf rootfs: Add script for Fedora base OS
Add scirpts to build a rootfs based on Fedora.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:24 -06:00
Jose Carlos Venegas Munoz
91bf410118 rootfs: Add script for Clear Linux base OS
Add script and config to build a rootfs based
in Clear Linux OS.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:24 -06:00
Jose Carlos Venegas Munoz
f1b8da340e rootfs: Add rootfs.sh script
Add script that will use helper bash
scripts that provide a way to build a rootfs
based in a OS.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:15 -06:00
Samuel Ortiz
5a3115e965 pullapprove: Let the builder team approve PRs
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2017-12-04 23:36:49 +01:00
Samuel Ortiz
6a0d61363a CoC: Add Code of Conduct
We follow the OpenStack Foundation CoC.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2017-12-04 23:35:38 +01:00
Wang Xu
53901abe10 Initial commit 2017-11-21 17:03:45 +08:00
Samuel Ortiz
6d07e2cddb Initial commit 2017-11-13 12:24:56 +01:00
3803 changed files with 1159086 additions and 36311 deletions

View File

@@ -1,17 +0,0 @@
# Description of problem
(replace this text with the list of steps you followed)
# Expected result
(replace this text with an explanation of what you thought would happen)
# Actual result
(replace this text with details of what actually happened)
---
(replace this text with the output of the `kata-collect-data.sh` script, after
you have reviewed its content to ensure it does not contain any private
information).

21
.github/workflows/PR-wip-checks.yaml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Pull request WIP checks
on:
pull_request:
types:
- opened
- synchronize
- reopened
- edited
- labeled
- unlabeled
jobs:
pr_wip_check:
runs-on: ubuntu-latest
name: WIP Check
steps:
- name: WIP Check
uses: tim-actions/wip-check@1c2a1ca6c110026b3e2297bb2ef39e1747b5a755
with:
labels: '["do-not-merge", "wip", "rfc"]'
keywords: '["WIP", "wip", "RFC", "rfc", "dnm", "DNM", "do-not-merge"]'

View File

@@ -0,0 +1,55 @@
# Copyright (c) 2020 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
name: Add newly created issues to the backlog project
on:
issues:
types:
- opened
- reopened
jobs:
add-new-issues-to-backlog:
runs-on: ubuntu-latest
steps:
- name: Install hub
run: |
HUB_ARCH="amd64"
HUB_VER=$(curl -sL "https://api.github.com/repos/github/hub/releases/latest" |\
jq -r .tag_name | sed 's/^v//')
curl -sL \
"https://github.com/github/hub/releases/download/v${HUB_VER}/hub-linux-${HUB_ARCH}-${HUB_VER}.tgz" |\
tar xz --strip-components=2 --wildcards '*/bin/hub' && \
sudo install hub /usr/local/bin
- name: Install hub extension script
run: |
# Clone into a temporary directory to avoid overwriting
# any existing github directory.
pushd $(mktemp -d) &>/dev/null
git clone --single-branch --depth 1 "https://github.com/kata-containers/.github" && cd .github/scripts
sudo install hub-util.sh /usr/local/bin
popd &>/dev/null
- name: Checkout code to allow hub to communicate with the project
uses: actions/checkout@v2
- name: Add issue to issue backlog
env:
GITHUB_TOKEN: ${{ secrets.KATA_GITHUB_ACTIONS_TOKEN }}
run: |
issue=${{ github.event.issue.number }}
project_name="Issue backlog"
project_type="org"
project_column="To do"
hub-util.sh \
add-issue \
"$issue" \
"$project_name" \
"$project_type" \
"$project_column"

View File

@@ -0,0 +1,91 @@
name: Commit Message Check
on:
pull_request:
types:
- opened
- reopened
- synchronize
env:
error_msg: |+
See the document below for help on formatting commits for the project.
https://github.com/kata-containers/community/blob/master/CONTRIBUTING.md#patch-format
jobs:
commit-message-check:
runs-on: ubuntu-latest
name: Commit Message Check
steps:
- name: Get PR Commits
id: 'get-pr-commits'
uses: tim-actions/get-pr-commits@v1.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: DCO Check
uses: tim-actions/dco@2fd0504dc0d27b33f542867c300c60840c6dcb20
with:
commits: ${{ steps.get-pr-commits.outputs.commits }}
- name: Commit Body Missing Check
if: ${{ success() || failure() }}
uses: tim-actions/commit-body-check@v1.0.2
with:
commits: ${{ steps.get-pr-commits.outputs.commits }}
- name: Check Subject Line Length
if: ${{ success() || failure() }}
uses: tim-actions/commit-message-checker-with-regex@v0.3.1
with:
commits: ${{ steps.get-pr-commits.outputs.commits }}
pattern: '^.{0,75}(\n.*)*$'
error: 'Subject too long (max 75)'
post_error: ${{ env.error_msg }}
- name: Check Body Line Length
if: ${{ success() || failure() }}
uses: tim-actions/commit-message-checker-with-regex@v0.3.1
with:
commits: ${{ steps.get-pr-commits.outputs.commits }}
# Notes:
#
# - The subject line is not enforced here (see other check), but has
# to be specified at the start of the regex as the action is passed
# the entire commit message.
#
# - Body lines *can* be longer than the maximum if they start
# with a non-alphabetic character.
#
# This allows stack traces, log files snippets, emails, long URLs,
# etc to be specified. Some of these naturally "work" as they start
# with numeric timestamps or addresses. Emails can but quoted using
# the normal ">" character, markdown bullets ("-", "*") are also
# useful for lists of URLs, but it is always possible to override
# the check by simply space indenting the content you need to add.
#
# - A SoB comment can be any length (as it is unreasonable to penalise
# people with long names/email addresses :)
pattern: '^.+(\n([a-zA-Z].{0,149}|[^a-zA-Z\n].*|Signed-off-by:.*|))+$'
error: 'Body line too long (max 72)'
post_error: ${{ env.error_msg }}
- name: Check Fixes
if: ${{ success() || failure() }}
uses: tim-actions/commit-message-checker-with-regex@v0.3.1
with:
commits: ${{ steps.get-pr-commits.outputs.commits }}
pattern: '\s*Fixes\s*:?\s*(#\d+|github\.com\/kata-containers\/[a-z-.]*#\d+)|^\s*release\s*:'
flags: 'i'
error: 'No "Fixes" found'
post_error: ${{ env.error_msg }}
one_pass_all_pass: 'true'
- name: Check Subsystem
if: ${{ success() || failure() }}
uses: tim-actions/commit-message-checker-with-regex@v0.3.1
with:
commits: ${{ steps.get-pr-commits.outputs.commits }}
pattern: '^[\s\t]*[^:\s\t]+[\s\t]*:'
error: 'Failed to find subsystem in subject'
post_error: ${{ env.error_msg }}

View File

@@ -14,5 +14,5 @@ do
tar -xvf $c
done
tar cfJ ../kata-static.tar.xz ./opt
tar cvfJ ../kata-static.tar.xz ./opt
popd >>/dev/null

View File

@@ -0,0 +1,34 @@
#!/bin/bash
# Copyright (c) 2019 Intel Corporation
# Copyright (c) 2020 Ant Group
#
# SPDX-License-Identifier: Apache-2.0
#
set -o errexit
set -o pipefail
main() {
artifact_stage=${1:-}
artifact=$(echo ${artifact_stage} | sed -n -e 's/^install_//p' | sed -r 's/_/-/g')
if [ -z "${artifact}" ]; then
"Scripts needs artifact name to build"
exit 1
fi
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
pushd $GITHUB_WORKSPACE/tools/packaging
git checkout $tag
./scripts/gen_versions_txt.sh $tag
popd
pushd $GITHUB_WORKSPACE/tools/packaging/release
source ./kata-deploy-binaries.sh
${artifact_stage} $tag
popd
mv $GITHUB_WORKSPACE/tools/packaging/release/kata-static-${artifact}.tar.gz .
}
main $@

55
.github/workflows/kata-deploy-test.yaml vendored Normal file
View File

@@ -0,0 +1,55 @@
on: issue_comment
name: test-kata-deploy
jobs:
check_comments:
if: ${{ github.event.issue.pull_request }}
types: [created, edited]
runs-on: ubuntu-latest
steps:
- name: Check for Command
id: command
uses: kata-containers/slash-command-action@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
command: "test-kata-deploy"
reaction: "true"
reaction-type: "eyes"
allow-edits: "false"
permission-level: admin
- name: verify command arg is kata-deploy
run: |
echo "The command was '${{ steps.command.outputs.command-name }}' with arguments '${{ steps.command.outputs.command-arguments }}'"
create-and-test-container:
needs: check_comments
runs-on: ubuntu-latest
steps:
- name: get-PR-ref
id: get-PR-ref
run: |
ref=$(cat $GITHUB_EVENT_PATH | jq -r '.issue.pull_request.url' | sed 's#^.*\/pulls#refs\/pull#' | sed 's#$#\/merge#')
echo "reference for PR: " ${ref}
echo "##[set-output name=pr-ref;]${ref}"
- uses: actions/checkout@v2-beta
with:
ref: ${{ steps.get-PR-ref.outputs.pr-ref }}
- name: build-container-image
id: build-container-image
run: |
PR_SHA=$(git log --format=format:%H -n1)
VERSION=$(curl https://raw.githubusercontent.com/kata-containers/kata-containers/main/VERSION)
ARTIFACT_URL="https://github.com/kata-containers/kata-containers/releases/download/${VERSION}/kata-static-${VERSION}-x86_64.tar.xz"
wget "${ARTIFACT_URL}" -O ./kata-deploy/kata-static.tar.xz
docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t katadocker/kata-deploy-ci:${PR_SHA} ./kata-deploy
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker push katadocker/kata-deploy-ci:$PR_SHA
echo "##[set-output name=pr-sha;]${PR_SHA}"
- name: test-kata-deploy-ci-in-aks
uses: ./kata-deploy/action
with:
packaging-sha: ${{ steps.build-container-image.outputs.pr-sha }}
env:
PKG_SHA: ${{ steps.build-container-image.outputs.pr-sha }}
AZ_APPID: ${{ secrets.AZ_APPID }}
AZ_PASSWORD: ${{ secrets.AZ_PASSWORD }}
AZ_SUBSCRIPTION_ID: ${{ secrets.AZ_SUBSCRIPTION_ID }}
AZ_TENANT_ID: ${{ secrets.AZ_TENANT_ID }}

View File

@@ -1,7 +1,8 @@
name: Publish release tarball
on:
push:
tags:
- '*'
- '1.*'
jobs:
get-artifact-list:
@@ -9,12 +10,11 @@ jobs:
steps:
- name: get the list
run: |
git clone https://github.com/kata-containers/packaging
pushd packaging
pushd $GITHUB_WORKSPACE
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
git checkout $tag
popd
./packaging/artifact-list.sh > artifact-list.txt
$GITHUB_WORKSPACE/tools/packaging/artifact-list.sh > artifact-list.txt
- name: save-artifact-list
uses: actions/upload-artifact@master
with:
@@ -38,12 +38,12 @@ jobs:
run: |
if grep -q $buildstr ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr
echo ::set-env name=artifact-built::true
echo "artifact-built=true" >> $GITHUB_ENV
else
echo ::set-env name=artifact-built::false
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: env.artifact-built == 'true'
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
@@ -66,12 +66,12 @@ jobs:
run: |
if grep -q $buildstr ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr
echo ::set-env name=artifact-built::true
echo "artifact-built=true" >> $GITHUB_ENV
else
echo ::set-env name=artifact-built::false
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: env.artifact-built == 'true'
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
@@ -92,70 +92,17 @@ jobs:
run: |
if grep -q $buildstr ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr
echo ::set-env name=artifact-built::true
echo "artifact-built=true" >> $GITHUB_ENV
else
echo ::set-env name=artifact-built::false
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: env.artifact-built == 'true'
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-static-qemu.tar.gz
build-nemu:
runs-on: ubuntu-16.04
needs: get-artifact-list
env:
buildstr: "install_nemu"
steps:
- uses: actions/checkout@v1
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- name: build-nemu
run: |
if grep -q $buildstr ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr
echo ::set-env name=artifact-built::true
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-static-nemu.tar.gz
# Job for building the QEMU binaries with virtiofs support
build-qemu-virtiofsd:
runs-on: ubuntu-16.04
needs: get-artifact-list
env:
buildstr: "install_qemu_virtiofsd"
steps:
- uses: actions/checkout@v1
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- name: build-qemu-virtiofsd
run: |
if grep -q $buildstr ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr
echo ::set-env name=artifact-built::true
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-static-qemu-virtiofsd.tar.gz
# Job for building the image
build-image:
runs-on: ubuntu-16.04
@@ -172,12 +119,12 @@ jobs:
run: |
if grep -q $buildstr ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr
echo ::set-env name=artifact-built::true
echo "artifact-built=true" >> $GITHUB_ENV
else
echo ::set-env name=artifact-built::false
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: env.artifact-built == 'true'
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
@@ -199,12 +146,12 @@ jobs:
run: |
if grep -q $buildstr ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr
echo ::set-env name=artifact-built::true
echo "artifact-built=true" >> $GITHUB_ENV
else
echo ::set-env name=artifact-built::false
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: env.artifact-built == 'true'
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
@@ -226,12 +173,12 @@ jobs:
run: |
if grep -q $buildstr ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr
echo ::set-env name=artifact-built::true
echo "artifact-built=true" >> $GITHUB_ENV
else
echo ::set-env name=artifact-built::false
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: env.artifact-built == 'true'
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
@@ -253,12 +200,12 @@ jobs:
run: |
if grep -q $buildstr ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr
echo ::set-env name=artifact-built::true
echo "artifact-built=true" >> $GITHUB_ENV
else
echo ::set-env name=artifact-built::false
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: env.artifact-built == 'true'
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
@@ -266,7 +213,7 @@ jobs:
gather-artifacts:
runs-on: ubuntu-16.04
needs: [build-experimental-kernel, build-kernel, build-qemu, build-qemu-virtiofsd, build-image, build-firecracker, build-kata-components, build-nemu, build-clh]
needs: [build-experimental-kernel, build-kernel, build-qemu, build-image, build-firecracker, build-kata-components, build-clh]
steps:
- uses: actions/checkout@v1
- name: get-artifacts
@@ -303,9 +250,7 @@ jobs:
docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t katadocker/kata-deploy-ci:$pkg_sha ./packaging/kata-deploy
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker push katadocker/kata-deploy-ci:$pkg_sha
echo "##[set-output name=PKG_SHA;]${pkg_sha}"
echo ::set-env name=TAG::$tag
echo "::set-output name=PKG_SHA::${pkg_sha}"
- name: test-kata-deploy-ci-in-aks
uses: ./packaging/kata-deploy/action
with:
@@ -339,7 +284,10 @@ jobs:
- name: push static tarball to github
run: |
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
mv release-candidate/kata-static.tar.xz release-candidate/kata-static-$tag-x86_64.tar.xz
git clone https://github.com/kata-containers/runtime.git
tarball="kata-static-$tag-x86_64.tar.xz"
repo="https://github.com/kata-containers/runtime.git"
mv release-candidate/kata-static.tar.xz "release-candidate/${tarball}"
git clone "${repo}"
cd runtime
GITHUB_TOKEN=${{ secrets.GIT_UPLOAD_TOKEN }} hub release edit -m "" -a ../release-candidate/kata-static-${tag}-x86_64.tar.xz "${tag}"
echo "uploading asset '${tarball}' to '${repo}' tag: ${tag}"
GITHUB_TOKEN=${{ secrets.GIT_UPLOAD_TOKEN }} hub release edit -m "" -a "../release-candidate/${tarball}" "${tag}"

View File

@@ -0,0 +1,78 @@
# Copyright (c) 2020 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
name: Move issues to "In progress" in backlog project when referenced by a PR
on:
pull_request_target:
types:
- opened
- reopened
jobs:
move-linked-issues-to-in-progress:
runs-on: ubuntu-latest
steps:
- name: Install hub
run: |
HUB_ARCH="amd64"
HUB_VER=$(curl -sL "https://api.github.com/repos/github/hub/releases/latest" |\
jq -r .tag_name | sed 's/^v//')
curl -sL \
"https://github.com/github/hub/releases/download/v${HUB_VER}/hub-linux-${HUB_ARCH}-${HUB_VER}.tgz" |\
tar xz --strip-components=2 --wildcards '*/bin/hub' && \
sudo install hub /usr/local/bin
- name: Install hub extension script
run: |
# Clone into a temporary directory to avoid overwriting
# any existing github directory.
pushd $(mktemp -d) &>/dev/null
git clone --single-branch --depth 1 "https://github.com/kata-containers/.github" && cd .github/scripts
sudo install hub-util.sh /usr/local/bin
popd &>/dev/null
- name: Checkout code to allow hub to communicate with the project
uses: actions/checkout@v2
- name: Move issue to "In progress"
env:
GITHUB_TOKEN: ${{ secrets.KATA_GITHUB_ACTIONS_TOKEN }}
run: |
pr=${{ github.event.pull_request.number }}
linked_issue_urls=$(hub-util.sh \
list-issues-for-pr "$pr" |\
grep -v "^\#" |\
cut -d';' -f3 || true)
# PR doesn't have any linked issues
# (it should, but maybe a new user forgot to add a "Fixes: #XXX" commit).
[ -z "$linked_issue_urls" ] && {
echo "::error::No linked issues for PR $pr"
exit 1
}
project_name="Issue backlog"
project_type="org"
project_column="In progress"
for issue_url in $(echo "$linked_issue_urls")
do
issue=$(echo "$issue_url"| awk -F\/ '{print $NF}' || true)
[ -z "$issue" ] && {
echo "::error::Cannot determine issue number from $issue_url for PR $pr"
exit 1
}
# Move the issue to the correct column on the project board
hub-util.sh \
move-issue \
"$issue" \
"$project_name" \
"$project_type" \
"$project_column"
done

293
.github/workflows/release.yaml vendored Normal file
View File

@@ -0,0 +1,293 @@
name: Publish Kata 2.x release artifacts
on:
push:
tags:
- '2.*'
jobs:
get-artifact-list:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: get the list
run: |
pushd $GITHUB_WORKSPACE
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
git checkout $tag
popd
$GITHUB_WORKSPACE/tools/packaging/artifact-list.sh > artifact-list.txt
- name: save-artifact-list
uses: actions/upload-artifact@v2
with:
name: artifact-list
path: artifact-list.txt
build-kernel:
runs-on: ubuntu-16.04
needs: get-artifact-list
env:
buildstr: "install_kernel"
steps:
- uses: actions/checkout@v2
- name: get-artifact-list
uses: actions/download-artifact@v2
with:
name: artifact-list
- run: |
sudo apt-get update && sudo apt install -y flex bison libelf-dev bc iptables
- name: build-kernel
run: |
if grep -q $buildstr artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr
echo "artifact-built=true" >> $GITHUB_ENV
else
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@v2
with:
name: kata-artifacts
path: kata-static-kernel.tar.gz
build-experimental-kernel:
runs-on: ubuntu-16.04
needs: get-artifact-list
env:
buildstr: "install_experimental_kernel"
steps:
- uses: actions/checkout@v2
- name: get-artifact-list
uses: actions/download-artifact@v2
with:
name: artifact-list
- run: |
sudo apt-get update && sudo apt install -y flex bison libelf-dev bc iptables
- name: build-experimental-kernel
run: |
if grep -q $buildstr artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr
echo "artifact-built=true" >> $GITHUB_ENV
else
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@v2
with:
name: kata-artifacts
path: kata-static-experimental-kernel.tar.gz
build-qemu:
runs-on: ubuntu-16.04
needs: get-artifact-list
env:
buildstr: "install_qemu"
steps:
- uses: actions/checkout@v2
- name: get-artifact-list
uses: actions/download-artifact@v2
with:
name: artifact-list
- name: build-qemu
run: |
if grep -q $buildstr artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr
echo "artifact-built=true" >> $GITHUB_ENV
else
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@v2
with:
name: kata-artifacts
path: kata-static-qemu.tar.gz
build-image:
runs-on: ubuntu-16.04
needs: get-artifact-list
env:
buildstr: "install_image"
steps:
- uses: actions/checkout@v2
- name: get-artifact-list
uses: actions/download-artifact@v2
with:
name: artifact-list
- name: build-image
run: |
if grep -q $buildstr artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr
echo "artifact-built=true" >> $GITHUB_ENV
else
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@v2
with:
name: kata-artifacts
path: kata-static-image.tar.gz
build-firecracker:
runs-on: ubuntu-16.04
needs: get-artifact-list
env:
buildstr: "install_firecracker"
steps:
- uses: actions/checkout@v2
- name: get-artifact-list
uses: actions/download-artifact@v2
with:
name: artifact-list
- name: build-firecracker
run: |
if grep -q $buildstr artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr
echo "artifact-built=true" >> $GITHUB_ENV
else
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@v2
with:
name: kata-artifacts
path: kata-static-firecracker.tar.gz
build-clh:
runs-on: ubuntu-16.04
needs: get-artifact-list
env:
buildstr: "install_clh"
steps:
- uses: actions/checkout@v2
- name: get-artifact-list
uses: actions/download-artifact@v2
with:
name: artifact-list
- name: build-clh
run: |
if grep -q $buildstr artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr
echo "artifact-built=true" >> $GITHUB_ENV
else
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@v2
with:
name: kata-artifacts
path: kata-static-clh.tar.gz
build-kata-components:
runs-on: ubuntu-16.04
needs: get-artifact-list
env:
buildstr: "install_kata_components"
steps:
- uses: actions/checkout@v2
- name: get-artifact-list
uses: actions/download-artifact@v2
with:
name: artifact-list
- name: build-kata-components
run: |
if grep -q $buildstr artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr
echo "artifact-built=true" >> $GITHUB_ENV
else
echo "artifact-built=false" >> $GITHUB_ENV
fi
- name: store-artifacts
if: ${{ env.artifact-built }} == 'true'
uses: actions/upload-artifact@v2
with:
name: kata-artifacts
path: kata-static-kata-components.tar.gz
gather-artifacts:
runs-on: ubuntu-16.04
needs: [build-experimental-kernel, build-kernel, build-qemu, build-image, build-firecracker, build-kata-components, build-clh]
steps:
- uses: actions/checkout@v2
- name: get-artifacts
uses: actions/download-artifact@v2
with:
name: kata-artifacts
path: kata-artifacts
- name: colate-artifacts
run: |
$GITHUB_WORKSPACE/.github/workflows/gather-artifacts.sh
- name: store-artifacts
uses: actions/upload-artifact@v2
with:
name: release-candidate
path: kata-static.tar.xz
kata-deploy:
needs: gather-artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: get-artifacts
uses: actions/download-artifact@v2
with:
name: release-candidate
- name: build-and-push-kata-deploy-ci
id: build-and-push-kata-deploy-ci
run: |
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
pushd $GITHUB_WORKSPACE
git checkout $tag
pkg_sha=$(git rev-parse HEAD)
popd
mv kata-static.tar.xz $GITHUB_WORKSPACE/tools/packaging/kata-deploy/kata-static.tar.xz
docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t katadocker/kata-deploy-ci:$pkg_sha $GITHUB_WORKSPACE/tools/packaging/kata-deploy
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker push katadocker/kata-deploy-ci:$pkg_sha
mkdir -p packaging/kata-deploy
ln -s $GITHUB_WORKSPACE/tools/packaging/kata-deploy/action packaging/kata-deploy/action
echo "::set-output name=PKG_SHA::${pkg_sha}"
- name: test-kata-deploy-ci-in-aks
uses: ./packaging/kata-deploy/action
with:
packaging-sha: ${{steps.build-and-push-kata-deploy-ci.outputs.PKG_SHA}}
env:
PKG_SHA: ${{steps.build-and-push-kata-deploy-ci.outputs.PKG_SHA}}
AZ_APPID: ${{ secrets.AZ_APPID }}
AZ_PASSWORD: ${{ secrets.AZ_PASSWORD }}
AZ_SUBSCRIPTION_ID: ${{ secrets.AZ_SUBSCRIPTION_ID }}
AZ_TENANT_ID: ${{ secrets.AZ_TENANT_ID }}
- name: push-tarball
run: |
# tag the container image we created and push to DockerHub
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
docker tag katadocker/kata-deploy-ci:${{steps.build-and-push-kata-deploy-ci.outputs.PKG_SHA}} katadocker/kata-deploy:${tag}
docker push katadocker/kata-deploy:${tag}
upload-static-tarball:
needs: kata-deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: download-artifacts
uses: actions/download-artifact@v2
with:
name: release-candidate
- name: install hub
run: |
HUB_VER=$(curl -s "https://api.github.com/repos/github/hub/releases/latest" | jq -r .tag_name | sed 's/^v//')
wget -q -O- https://github.com/github/hub/releases/download/v$HUB_VER/hub-linux-amd64-$HUB_VER.tgz | \
tar xz --strip-components=2 --wildcards '*/bin/hub' && sudo mv hub /usr/local/bin/hub
- name: push static tarball to github
run: |
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
tarball="kata-static-$tag-x86_64.tar.xz"
mv kata-static.tar.xz "$GITHUB_WORKSPACE/${tarball}"
pushd $GITHUB_WORKSPACE
echo "uploading asset '${tarball}' for tag: ${tag}"
GITHUB_TOKEN=${{ secrets.GIT_UPLOAD_TOKEN }} hub release edit -m "" -a "${tarball}" "${tag}"

View File

@@ -0,0 +1,51 @@
# Copyright (c) 2020 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
name: Ensure PR has required porting labels
on:
pull_request_target:
types:
- opened
- reopened
- labeled
- unlabeled
jobs:
check-pr-porting-labels:
runs-on: ubuntu-latest
steps:
- name: Install hub
run: |
HUB_ARCH="amd64"
HUB_VER=$(curl -sL "https://api.github.com/repos/github/hub/releases/latest" |\
jq -r .tag_name | sed 's/^v//')
curl -sL \
"https://github.com/github/hub/releases/download/v${HUB_VER}/hub-linux-${HUB_ARCH}-${HUB_VER}.tgz" |\
tar xz --strip-components=2 --wildcards '*/bin/hub' && \
sudo install hub /usr/local/bin
- name: Checkout code to allow hub to communicate with the project
uses: actions/checkout@v2
with:
token: ${{ secrets.KATA_GITHUB_ACTIONS_TOKEN }}
- name: Install porting checker script
run: |
# Clone into a temporary directory to avoid overwriting
# any existing github directory.
pushd $(mktemp -d) &>/dev/null
git clone --single-branch --depth 1 "https://github.com/kata-containers/.github" && cd .github/scripts
sudo install pr-porting-checks.sh /usr/local/bin
popd &>/dev/null
- name: Stop PR being merged unless it has a correct set of porting labels
env:
GITHUB_TOKEN: ${{ secrets.KATA_GITHUB_ACTIONS_TOKEN }}
run: |
pr=${{ github.event.number }}
repo=${{ github.repository }}
pr-porting-checks.sh "$pr" "$repo"

37
.github/workflows/snap-release.yaml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: Release Kata 2.x in snapcraft store
on:
push:
tags:
- '2.*'
jobs:
release-snap:
runs-on: ubuntu-20.04
steps:
- name: Check out Git repository
uses: actions/checkout@v2
- name: Install Snapcraft
uses: samuelmeuli/action-snapcraft@v1
with:
snapcraft_token: ${{ secrets.snapcraft_token }}
- name: Build snap
run: |
sudo apt-get install -y git git-extras
kata_url="https://github.com/kata-containers/kata-containers"
latest_version=$(git ls-remote --tags ${kata_url} | egrep -o "refs.*" | egrep -v "\-alpha|\-rc|{}" | egrep -o "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" | sort -V -r | head -1)
current_version="$(echo ${GITHUB_REF} | cut -d/ -f3)"
# Check semantic versioning format (x.y.z) and if the current tag is the latest tag
if echo "${current_version}" | grep -q "^[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+$" && echo -e "$latest_version\n$current_version" | sort -C -V; then
# Current version is the latest version, build it
snapcraft -d snap --destructive-mode
fi
- name: Upload snap
run: |
snap_version="$(echo ${GITHUB_REF} | cut -d/ -f3)"
snap_file="kata-containers_${snap_version}_amd64.snap"
# Upload the snap if it exists
if [ -f ${snap_file} ]; then
snapcraft upload --release=candidate ${snap_file}
fi

15
.github/workflows/snap.yaml vendored Normal file
View File

@@ -0,0 +1,15 @@
name: snap CI
on: ["pull_request"]
jobs:
test:
runs-on: ubuntu-20.04
steps:
- name: Check out
uses: actions/checkout@v2
- name: Install Snapcraft
uses: samuelmeuli/action-snapcraft@v1
- name: Build snap
run: |
snapcraft -d snap --destructive-mode

66
.github/workflows/static-checks.yaml vendored Normal file
View File

@@ -0,0 +1,66 @@
on: ["pull_request"]
name: Static checks
jobs:
test:
strategy:
matrix:
go-version: [1.13.x, 1.14.x, 1.15.x]
os: [ubuntu-20.04]
runs-on: ${{ matrix.os }}
env:
TRAVIS: "true"
TRAVIS_BRANCH: ${{ github.base_ref }}
TRAVIS_PULL_REQUEST_BRANCH: ${{ github.head_ref }}
TRAVIS_PULL_REQUEST_SHA : ${{ github.event.pull_request.head.sha }}
RUST_BACKTRACE: "1"
target_branch: ${TRAVIS_BRANCH}
steps:
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go-version }}
env:
GOPATH: ${{ runner.workspace }}/kata-containers
- name: Setup GOPATH
run: |
echo "TRAVIS_BRANCH: ${TRAVIS_BRANCH}"
echo "TRAVIS_PULL_REQUEST_BRANCH: ${TRAVIS_PULL_REQUEST_BRANCH}"
echo "TRAVIS_PULL_REQUEST_SHA: ${TRAVIS_PULL_REQUEST_SHA}"
echo "TRAVIS: ${TRAVIS}"
- name: Set env
run: |
echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0
path: ./src/github.com/${{ github.repository }}
- name: Setup travis references
run: |
echo "TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = \"/\" } ; { print $3 }')}"
target_branch=${TRAVIS_BRANCH}
- name: Setup
run: |
cd ${GOPATH}/src/github.com/${{ github.repository }} && ./ci/setup.sh
env:
GOPATH: ${{ runner.workspace }}/kata-containers
- name: Building rust
run: |
cd ${GOPATH}/src/github.com/${{ github.repository }} && ./ci/install_rust.sh
PATH=$PATH:"$HOME/.cargo/bin"
rustup target add x86_64-unknown-linux-musl
rustup component add rustfmt clippy
# Must build before static checks as we depend on some generated code in runtime and agent
- name: Build
run: |
cd ${GOPATH}/src/github.com/${{ github.repository }} && make
- name: Static Checks
run: |
cd ${GOPATH}/src/github.com/${{ github.repository }} && ./ci/static-checks.sh
- name: Run Compiler Checks
run: |
cd ${GOPATH}/src/github.com/${{ github.repository }} && make check
- name: Run Unit Tests
run: |
cd ${GOPATH}/src/github.com/${{ github.repository }} && make test

15
.gitignore vendored
View File

@@ -1,5 +1,12 @@
/target
**/*.rs.bk
**/*.bk
**/*~
**/*.orig
**/*.rej
**/target
Cargo.lock
**/Cargo.lock
**/.vscode
pkg/logging/Cargo.lock
src/agent/src/version.rs
src/agent/kata-agent.service
src/agent/protocols/src/*.rs
!src/agent/protocols/src/lib.rs

View File

@@ -1,33 +0,0 @@
# Copyright (c) 2019 Ant Financial
#
# SPDX-License-Identifier: Apache-2.0
#
sudo: required
dist: bionic
os:
- linux
language: rust
rust:
- stable
env:
- target_branch=$TRAVIS_BRANCH RUST_AGENT=yes
before_install:
- "ci/setup.sh"
- "ci/install_go.sh"
- "ci/install_rust.sh"
- "ci/static-checks.sh"
# need to install rust from scratch?
# still need go to download github.com/kata-containers/tests
# which is already installed?
install:
- cd ${TRAVIS_BUILD_DIR}/src/agent && make
script:
- cd ${TRAVIS_BUILD_DIR}/src/agent && make check

12
CODEOWNERS Normal file
View File

@@ -0,0 +1,12 @@
# Copyright (c) 2019 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
# Define any code owners for this repository.
# The code owners lists are used to help automatically enforce
# reviews and acks of the right groups on the right PRs.
# Order in this file is important. Only the last match will be
# used. See https://help.github.com/articles/about-code-owners/
*.md @kata-containers/documentation

View File

@@ -3,5 +3,30 @@
# SPDX-License-Identifier: Apache-2.0
#
test:
bash ci/go-test.sh
# List of available components
COMPONENTS =
COMPONENTS += agent
COMPONENTS += runtime
COMPONENTS += trace-forwarder
# List of available tools
TOOLS =
TOOLS += agent-ctl
STANDARD_TARGETS = build check clean install test
include utils.mk
all: build
# Create the rules
$(eval $(call create_all_rules,$(COMPONENTS),$(TOOLS),$(STANDARD_TARGETS)))
# Non-standard rules
generate-protocols:
make -C src/agent generate-protocols
.PHONY: all default

214
README.md
View File

@@ -2,143 +2,143 @@
# Kata Containers
* [Raising issues](#raising-issues)
* [Kata Containers repositories](#kata-containers-repositories)
* [Code Repositories](#code-repositories)
* [Kata Containers-developed components](#kata-containers-developed-components)
* [Agent](#agent)
* [KSM throttler](#ksm-throttler)
* [Proxy](#proxy)
* [Runtime](#runtime)
* [Shim](#shim)
* [Additional](#additional)
* [Hypervisor](#hypervisor)
* [Kernel](#kernel)
* [CI](#ci)
* [Community](#community)
* [Kata Containers](#kata-containers)
* [Introduction](#introduction)
* [Getting started](#getting-started)
* [Documentation](#documentation)
* [Packaging](#packaging)
* [Test code](#test-code)
* [Utilities](#utilities)
* [OS builder](#os-builder)
* [Web content](#web-content)
* [Community](#community)
* [Getting help](#getting-help)
* [Raising issues](#raising-issues)
* [Kata Containers 1.x versions](#kata-containers-1x-versions)
* [Developers](#developers)
* [Components](#components)
* [Kata Containers 1.x components](#kata-containers-1x-components)
* [Common repositories](#common-repositories)
* [Packaging and releases](#packaging-and-releases)
---
Welcome to Kata Containers!
The purpose of this repository is to act as a "top level" site for the project. Specifically it is used:
This repository is the home of the Kata Containers code for the 2.0 and newer
releases.
- To provide a list of the various *other* [Kata Containers repositories](#kata-containers-repositories),
along with a brief explanation of their purpose.
If you want to learn about Kata Containers, visit the main
[Kata Containers website](https://katacontainers.io).
- To provide a general area for [Raising Issues](#raising-issues).
For further details on the older (first generation) Kata Containers 1.x
versions, see the
[Kata Containers 1.x components](#kata-containers-1x-components)
section.
## Raising issues
## Introduction
This repository is used for [raising
issues](https://github.com/kata-containers/kata-containers/issues/new):
Kata Containers is an open source project and community working to build a
standard implementation of lightweight Virtual Machines (VMs) that feel and
perform like containers, but provide the workload isolation and security
advantages of VMs.
- That might affect multiple code repositories.
## Getting started
- Where the raiser is unsure which repositories are affected.
See the [installation documentation](docs/install).
## Documentation
See the [official documentation](docs)
(including [installation guides](docs/install),
[the developer guide](docs/Developer-Guide.md),
[design documents](docs/design) and more).
## Community
To learn more about the project, its community and governance, see the
[community repository](https://github.com/kata-containers/community). This is
the first place to go if you wish to contribute to the project.
## Getting help
See the [community](#community) section for ways to contact us.
### Raising issues
Please raise an issue
[in this repository](https://github.com/kata-containers/kata-containers/issues).
> **Note:**
>
> - If an issue affects only a single component, it should be raised in that
> components repository.
> If you are reporting a security issue, please follow the [vulnerability reporting process](https://github.com/kata-containers/community#vulnerability-handling)
## Kata Containers repositories
#### Kata Containers 1.x versions
### CI
For older Kata Containers 1.x releases, please raise an issue in the
[Kata Containers 1.x component repository](#kata-containers-1x-components)
that seems most appropriate.
The [CI](https://github.com/kata-containers/ci) repository stores the Continuous
Integration (CI) system configuration information.
If in doubt, raise an issue
[in the Kata Containers 1.x runtime repository](https://github.com/kata-containers/runtime/issues).
### Community
## Developers
The [Community](https://github.com/kata-containers/community) repository is
the first place to go if you want to use or contribute to the project.
### Components
### Code Repositories
| Component | Type | Description |
|-|-|-|
| [agent-ctl](tools/agent-ctl) | utility | Tool that provides low-level access for testing the agent. |
| [agent](src/agent) | core | Management process running inside the virtual machine / POD that sets up the container environment. |
| [documentation](docs) | documentation | Documentation common to all components (such as design and install documentation). |
| [osbuilder](tools/osbuilder) | infrastructure | Tool to create "mini O/S" rootfs and initrd images for the hypervisor. |
| [packaging](tools/packaging) | infrastructure | Scripts and metadata for producing packaged binaries<br/>(components, hypervisors, kernel and rootfs). |
| [runtime](src/runtime) | core | Main component run by a container manager and providing a containerd shimv2 runtime implementation. |
| [trace-forwarder](src/trace-forwarder) | utility | Agent tracing helper. |
#### Kata Containers-developed components
#### Kata Containers 1.x components
##### Agent
For the first generation of Kata Containers (1.x versions), each component was
kept in a separate repository.
The [`kata-agent`](https://github.com/kata-containers/agent) runs inside the
virtual machine and sets up the container environment.
For information on the Kata Containers 1.x releases, see the
[Kata Containers 1.x releases page](https://github.com/kata-containers/runtime/releases).
##### KSM throttler
For further information on particular Kata Containers 1.x components, see the
individual component repositories:
The [`kata-ksm-throttler`](https://github.com/kata-containers/ksm-throttler)
is an optional utility that monitors containers and deduplicates memory to
maximize container density on a host.
| Component | Type | Description |
|-|-|-|
| [agent](https://github.com/kata-containers/agent) | core | See [components](#components). |
| [documentation](https://github.com/kata-containers/documentation) | documentation | |
| [KSM throttler](https://github.com/kata-containers/ksm-throttler) | optional core | Daemon that monitors containers and deduplicates memory to maximize container density on the host. |
| [osbuilder](https://github.com/kata-containers/osbuilder) | infrastructure | See [components](#components). |
| [packaging](https://github.com/kata-containers/packaging) | infrastructure | See [components](#components). |
| [proxy](https://github.com/kata-containers/proxy) | core | Multiplexes communications between the shims, agent and runtime. |
| [runtime](https://github.com/kata-containers/runtime) | core | See [components](#components). |
| [shim](https://github.com/kata-containers/shim) | core | Handles standard I/O and signals on behalf of the container process. |
##### Proxy
> **Note:**
>
> - There are more components for the original Kata Containers 1.x implementation.
> - The current implementation simplifies the design significantly:
> compare the [current](docs/design/architecture.md) and
> [previous generation](https://github.com/kata-containers/documentation/blob/master/design/architecture.md)
> designs.
The [`kata-proxy`](https://github.com/kata-containers/proxy) is a process that
runs on the host and co-ordinates access to the agent running inside the
virtual machine.
### Common repositories
##### Runtime
The following repositories are used by both the current and first generation Kata Containers implementations:
The [`kata-runtime`](https://github.com/kata-containers/runtime) is usually
invoked by a container manager and provides high-level verbs to manage
containers.
| Component | Description | Current | First generation | Notes |
|-|-|-|-|-|
| CI | Continuous Integration configuration files and scripts. | [Kata 2.x](https://github.com/kata-containers/ci/tree/main) | [Kata 1.x](https://github.com/kata-containers/ci/tree/master) | |
| kernel | The Linux kernel used by the hypervisor to boot the guest image. | [Kata 2.x][kernel] | [Kata 1.x][kernel] | Patches are stored in the packaging component. |
| tests | Test code. | [Kata 2.x](https://github.com/kata-containers/tests/tree/main) | [Kata 1.x](https://github.com/kata-containers/tests/tree/master) | Excludes unit tests which live with the main code. |
| www.katacontainers.io | Contains the source for the [main web site](https://www.katacontainers.io). | [Kata 2.x][github-katacontainers.io] | [Kata 1.x][github-katacontainers.io] | | |
##### Shim
### Packaging and releases
The [`kata-shim`](https://github.com/kata-containers/shim) is a process that
runs on the host. It acts as though it is the workload (which actually runs
inside the virtual machine). This shim is required to be compliant with the
expectations of the [OCI runtime
specification](https://github.com/opencontainers/runtime-spec).
Kata Containers is now
[available natively for most distributions](docs/install/README.md#packaged-installation-methods).
However, packaging scripts and metadata are still used to generate snap and GitHub releases. See
the [components](#components) section for further details.
#### Additional
---
##### Hypervisor
The [`qemu`](https://github.com/kata-containers/qemu) hypervisor is used to
create virtual machines for hosting the containers.
##### Kernel
The hypervisor uses a [Linux\* kernel](https://github.com/kata-containers/linux) to boot the guest image.
### Documentation
The [documentation](https://github.com/kata-containers/documentation)
repository hosts documentation common to all code components.
### Packaging
We use the [packaging](https://github.com/kata-containers/packaging)
repository to create packages for the [system
components](#kata-containers-developed-components) including
[rootfs](#os-builder) and [kernel](#kernel) images.
### Test code
The [tests](https://github.com/kata-containers/tests) repository hosts all
test code except the unit testing code (which is kept in the same repository
as the component it tests).
### Utilities
#### OS builder
The [osbuilder](https://github.com/kata-containers/osbuilder) tool can create
a rootfs and a "mini O/S" image. This image is used by the hypervisor to setup
the environment before switching to the workload.
### Web content
The
[www.katacontainers.io](https://github.com/kata-containers/www.katacontainers.io)
repository contains all sources for the https://www.katacontainers.io site.
## Credits
Kata Containers uses [packagecloud](https://packagecloud.io) for package
hosting.
[kernel]: https://www.kernel.org
[github-katacontainers.io]: https://github.com/kata-containers/www.katacontainers.io

View File

@@ -1 +1 @@
1.10.0-rc0
2.1-alpha1

30
ci/go-no-os-exit.sh Executable file
View File

@@ -0,0 +1,30 @@
#!/bin/bash
# Copyright (c) 2018 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
# Check there are no os.Exit() calls creeping into the code
# We don't use that exit path in the Kata codebase.
# Allow the path to check to be over-ridden.
# Default to the current directory.
go_packages=${1:-.}
echo "Checking for no os.Exit() calls for package [${go_packages}]"
candidates=`go list -f '{{.Dir}}/*.go' $go_packages`
for f in $candidates; do
filename=`basename $f`
# skip all go test files
[[ $filename == *_test.go ]] && continue
# skip exit.go where, the only file we should call os.Exit() from.
[[ $filename == "exit.go" ]] && continue
files="$f $files"
done
[ -z "$files" ] && echo "No files to check, skipping" && exit 0
if egrep -n '\<os\.Exit\>' $files; then
echo "Direct calls to os.Exit() are forbidden, please use exit() so atexit() works"
exit 1
fi

24
ci/install_musl.sh Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
# Copyright (c) 2020 Ant Group
#
# SPDX-License-Identifier: Apache-2.0
#
set -e
install_aarch64_musl() {
local arch=$(uname -m)
if [ "${arch}" == "aarch64" ]; then
local musl_tar="${arch}-linux-musl-native.tgz"
local musl_dir="${arch}-linux-musl-native"
pushd /tmp
if curl -sLO --fail https://musl.cc/${musl_tar}; then
tar -zxf ${musl_tar}
mkdir -p /usr/local/musl/
cp -r ${musl_dir}/* /usr/local/musl/
fi
popd
fi
}
install_aarch64_musl

19
ci/install_vc.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
#
# Copyright (c) 2018 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
set -e
cidir=$(dirname "$0")
vcdir="${cidir}/../src/runtime/virtcontainers/"
source "${cidir}/lib.sh"
export CI_JOB="${CI_JOB:-default}"
clone_tests_repo
if [ "${CI_JOB}" != "PODMAN" ]; then
echo "Install virtcontainers"
make -C "${vcdir}" && chronic sudo make -C "${vcdir}" install
fi

72
ci/install_yq.sh Executable file
View File

@@ -0,0 +1,72 @@
#!/usr/bin/env bash
#
# Copyright (c) 2019 IBM
#
# SPDX-License-Identifier: Apache-2.0
#
# If we fail for any reason a message will be displayed
die() {
msg="$*"
echo "ERROR: $msg" >&2
exit 1
}
# Install the yq yaml query package from the mikefarah github repo
# Install via binary download, as we may not have golang installed at this point
function install_yq() {
GOPATH=${GOPATH:-${HOME}/go}
local yq_path="${GOPATH}/bin/yq"
local yq_pkg="github.com/mikefarah/yq"
[ -x "${GOPATH}/bin/yq" ] && return
read -r -a sysInfo <<< "$(uname -sm)"
case "${sysInfo[0]}" in
"Linux" | "Darwin")
goos="${sysInfo[0],}"
;;
"*")
die "OS ${sysInfo[0]} not supported"
;;
esac
case "${sysInfo[1]}" in
"aarch64")
goarch=arm64
;;
"ppc64le")
goarch=ppc64le
;;
"x86_64")
goarch=amd64
;;
"s390x")
goarch=s390x
;;
"*")
die "Arch ${sysInfo[1]} not supported"
;;
esac
mkdir -p "${GOPATH}/bin"
# Check curl
if ! command -v "curl" >/dev/null; then
die "Please install curl"
fi
local yq_version=3.4.1
## NOTE: ${var,,} => gives lowercase value of var
local yq_url="https://${yq_pkg}/releases/download/${yq_version}/yq_${goos,,}_${goarch}"
curl -o "${yq_path}" -LSsf "${yq_url}"
[ $? -ne 0 ] && die "Download ${yq_url} failed"
chmod +x "${yq_path}"
if ! command -v "${yq_path}" >/dev/null; then
die "Cannot not get ${yq_path} executable"
fi
}
install_yq

View File

@@ -5,35 +5,29 @@
export tests_repo="${tests_repo:-github.com/kata-containers/tests}"
export tests_repo_dir="$GOPATH/src/$tests_repo"
export branch="${branch:-main}"
clone_tests_repo()
{
# KATA_CI_NO_NETWORK is (has to be) ignored if there is
# no existing clone.
if [ -d "$tests_repo_dir" -a -n "$KATA_CI_NO_NETWORK" ]
if [ -d "$tests_repo_dir" -a -n "$CI" ]
then
return
fi
go get -d -u "$tests_repo" || true
if [ -n "${TRAVIS_BRANCH:-}" ]; then
( cd "${tests_repo_dir}" && git checkout "${TRAVIS_BRANCH}" )
fi
pushd "${tests_repo_dir}" && git checkout "${branch}" && popd
}
run_static_checks()
{
clone_tests_repo
# Make sure we have the targeting branch
git remote set-branches --add origin "${branch}"
git fetch -a
bash "$tests_repo_dir/.ci/static-checks.sh" "github.com/kata-containers/kata-containers"
}
run_rust_test()
{
clone_tests_repo
bash "$tests_repo_dir/.ci/rust-test.sh"
}
run_go_test()
{
clone_tests_repo

675
docs/Developer-Guide.md Normal file
View File

@@ -0,0 +1,675 @@
* [Warning](#warning)
* [Assumptions](#assumptions)
* [Initial setup](#initial-setup)
* [Requirements to build individual components](#requirements-to-build-individual-components)
* [Build and install the Kata Containers runtime](#build-and-install-the-kata-containers-runtime)
* [Check hardware requirements](#check-hardware-requirements)
* [Configure to use initrd or rootfs image](#configure-to-use-initrd-or-rootfs-image)
* [Enable full debug](#enable-full-debug)
* [debug logs and shimv2](#debug-logs-and-shimv2)
* [Enabling full `containerd` debug](#enabling-full-containerd-debug)
* [Enabling just `containerd shim` debug](#enabling-just-containerd-shim-debug)
* [Enabling `CRI-O` and `shimv2` debug](#enabling-cri-o-and-shimv2-debug)
* [journald rate limiting](#journald-rate-limiting)
* [`systemd-journald` suppressing messages](#systemd-journald-suppressing-messages)
* [Disabling `systemd-journald` rate limiting](#disabling-systemd-journald-rate-limiting)
* [Create and install rootfs and initrd image](#create-and-install-rootfs-and-initrd-image)
* [Build a custom Kata agent - OPTIONAL](#build-a-custom-kata-agent---optional)
* [Get the osbuilder](#get-the-osbuilder)
* [Create a rootfs image](#create-a-rootfs-image)
* [Create a local rootfs](#create-a-local-rootfs)
* [Add a custom agent to the image - OPTIONAL](#add-a-custom-agent-to-the-image---optional)
* [Build a rootfs image](#build-a-rootfs-image)
* [Install the rootfs image](#install-the-rootfs-image)
* [Create an initrd image - OPTIONAL](#create-an-initrd-image---optional)
* [Create a local rootfs for initrd image](#create-a-local-rootfs-for-initrd-image)
* [Build an initrd image](#build-an-initrd-image)
* [Install the initrd image](#install-the-initrd-image)
* [Install guest kernel images](#install-guest-kernel-images)
* [Install a hypervisor](#install-a-hypervisor)
* [Build a custom QEMU](#build-a-custom-qemu)
* [Build a custom QEMU for aarch64/arm64 - REQUIRED](#build-a-custom-qemu-for-aarch64arm64---required)
* [Run Kata Containers with Containerd](#run-kata-containers-with-containerd)
* [Run Kata Containers with Kubernetes](#run-kata-containers-with-kubernetes)
* [Troubleshoot Kata Containers](#troubleshoot-kata-containers)
* [Appendices](#appendices)
* [Checking Docker default runtime](#checking-docker-default-runtime)
* [Set up a debug console](#set-up-a-debug-console)
* [Simple debug console setup](#simple-debug-console-setup)
* [Enable agent debug console](#enable-agent-debug-console)
* [Connect to debug console](#connect-to-debug-console)
* [Traditional debug console setup](#traditional-debug-console-setup)
* [Create a custom image containing a shell](#create-a-custom-image-containing-a-shell)
* [Build the debug image](#build-the-debug-image)
* [Configure runtime for custom debug image](#configure-runtime-for-custom-debug-image)
* [Connect to the virtual machine using the debug console](#connect-to-the-virtual-machine-using-the-debug-console)
* [Enabling debug console for QEMU](#enabling-debug-console-for-qemu)
* [Enabling debug console for cloud-hypervisor / firecracker](#enabling-debug-console-for-cloud-hypervisor--firecracker)
* [Create a container](#create-a-container)
* [Connect to the virtual machine using the debug console](#connect-to-the-virtual-machine-using-the-debug-console)
* [Obtain details of the image](#obtain-details-of-the-image)
* [Capturing kernel boot logs](#capturing-kernel-boot-logs)
# Warning
This document is written **specifically for developers**: it is not intended for end users.
# Assumptions
- You are working on a non-critical test or development system.
# Initial setup
The recommended way to create a development environment is to first
[install the packaged versions of the Kata Containers components](install/README.md)
to create a working system.
The installation guide instructions will install all required Kata Containers
components, plus *Docker*, the hypervisor, and the Kata Containers image and
guest kernel.
# Requirements to build individual components
You need to install the following to build Kata Containers components:
- [golang](https://golang.org/dl)
To view the versions of go known to work, see the `golang` entry in the
[versions database](../versions.yaml).
- [rust](https://www.rust-lang.org/tools/install)
To view the versions of rust known to work, see the `rust` entry in the
[versions database](../versions.yaml).
- `make`.
- `gcc` (required for building the shim and runtime).
# Build and install the Kata Containers runtime
```
$ go get -d -u github.com/kata-containers/kata-containers
$ cd $GOPATH/src/github.com/kata-containers/kata-containers/src/runtime
$ make && sudo -E PATH=$PATH make install
```
The build will create the following:
- runtime binary: `/usr/local/bin/kata-runtime` and `/usr/local/bin/containerd-shim-kata-v2`
- configuration file: `/usr/share/defaults/kata-containers/configuration.toml`
# Check hardware requirements
You can check if your system is capable of creating a Kata Container by running the following:
```
$ sudo kata-runtime check
```
If your system is *not* able to run Kata Containers, the previous command will error out and explain why.
## Configure to use initrd or rootfs image
Kata containers can run with either an initrd image or a rootfs image.
If you want to test with `initrd`, make sure you have `initrd = /usr/share/kata-containers/kata-containers-initrd.img`
in your configuration file, commenting out the `image` line:
`/usr/share/defaults/kata-containers/configuration.toml` and comment out the `image` line with the following. For example:
```
$ sudo mkdir -p /etc/kata-containers/
$ sudo install -o root -g root -m 0640 /usr/share/defaults/kata-containers/configuration.toml /etc/kata-containers
$ sudo sed -i 's/^\(image =.*\)/# \1/g' /etc/kata-containers/configuration.toml
```
You can create the initrd image as shown in the [create an initrd image](#create-an-initrd-image---optional) section.
If you want to test with a rootfs `image`, make sure you have `image = /usr/share/kata-containers/kata-containers.img`
in your configuration file, commenting out the `initrd` line. For example:
```
$ sudo mkdir -p /etc/kata-containers/
$ sudo install -o root -g root -m 0640 /usr/share/defaults/kata-containers/configuration.toml /etc/kata-containers
$ sudo sed -i 's/^\(initrd =.*\)/# \1/g' /etc/kata-containers/configuration.toml
```
The rootfs image is created as shown in the [create a rootfs image](#create-a-rootfs-image) section.
One of the `initrd` and `image` options in Kata runtime config file **MUST** be set but **not both**.
The main difference between the options is that the size of `initrd`(10MB+) is significantly smaller than
rootfs `image`(100MB+).
## Enable full debug
Enable full debug as follows:
```
$ sudo mkdir -p /etc/kata-containers/
$ sudo install -o root -g root -m 0640 /usr/share/defaults/kata-containers/configuration.toml /etc/kata-containers
$ sudo sed -i -e 's/^# *\(enable_debug\).*=.*$/\1 = true/g' /etc/kata-containers/configuration.toml
$ sudo sed -i -e 's/^kernel_params = "\(.*\)"/kernel_params = "\1 agent.log=debug initcall_debug"/g' /etc/kata-containers/configuration.toml
```
### debug logs and shimv2
If you are using `containerd` and the Kata `containerd-shimv2` to launch Kata Containers, and wish
to enable Kata debug logging, there are two ways this can be enabled via the `containerd` configuration file,
detailed below.
The Kata logs appear in the `containerd` log files, along with logs from `containerd` itself.
For more information about `containerd` debug, please see the
[`containerd` documentation](https://github.com/containerd/containerd/blob/master/docs/getting-started.md).
#### Enabling full `containerd` debug
Enabling full `containerd` debug also enables the shimv2 debug. Edit the `containerd` configuration file
to include the top level debug option such as:
```toml
[debug]
level = "debug"
```
#### Enabling just `containerd shim` debug
If you only wish to enable debug for the `containerd` shims themselves, just enable the debug
option in the `plugins.linux` section of the `containerd` configuration file, such as:
```toml
[plugins.linux]
shim_debug = true
```
#### Enabling `CRI-O` and `shimv2` debug
Depending on the CRI-O version being used one of the following configuration files can
be found: `/etc/crio/crio.conf` or `/etc/crio/crio.conf.d/00-default`.
If the latter is found, the change must be done there as it'll take precedence, overriding
`/etc/crio/crio.conf`.
```toml
# Changes the verbosity of the logs based on the level it is set to. Options
# are fatal, panic, error, warn, info, debug and trace. This option supports
# live configuration reload.
log_level = "info"
```
Switching the default `log_level` from `info` to `debug` enables shimv2 debug logs.
CRI-O logs can be found by using the `crio` identifier, and Kata specific logs can
be found by using the `kata` identifier.
### journald rate limiting
Enabling [full debug](#enable-full-debug) results in the Kata components generating
large amounts of logging, which by default is stored in the system log. Depending on
your system configuration, it is possible that some events might be discarded by the
system logging daemon. The following shows how to determine this for `systemd-journald`,
and offers possible workarounds and fixes.
> **Note** The method of implementation can vary between Operating System installations.
> Amend these instructions as necessary to your system implementation,
> and consult with your system administrator for the appropriate configuration.
#### `systemd-journald` suppressing messages
`systemd-journald` can be configured to rate limit the number of journal entries
it stores. When messages are suppressed, it is noted in the logs. This can be checked
for by looking for those notifications, such as:
```sh
$ sudo journalctl --since today | fgrep Suppressed
Jun 29 14:51:17 mymachine systemd-journald[346]: Suppressed 4150 messages from /system.slice/docker.service
```
This message indicates that a number of log messages from the `docker.service` slice were
suppressed. In such a case, you can expect to have incomplete logging information
stored from the Kata Containers components.
#### Disabling `systemd-journald` rate limiting
In order to capture complete logs from the Kata Containers components, you
need to reduce or disable the `systemd-journald` rate limit. Configure
this at the global `systemd-journald` level, and it will apply to all system slices.
To disable `systemd-journald` rate limiting at the global level, edit the file
`/etc/systemd/journald.conf`, and add/uncomment the following lines:
```
RateLimitInterval=0s
RateLimitBurst=0
```
Restart `systemd-journald` for the changes to take effect:
```sh
$ sudo systemctl restart systemd-journald
```
# Create and install rootfs and initrd image
## Build a custom Kata agent - OPTIONAL
> **Note:**
>
> - You should only do this step if you are testing with the latest version of the agent.
The rust-agent is built with a static linked `musl.` To configure this:
```
rustup target add x86_64-unknown-linux-musl
sudo ln -s /usr/bin/g++ /bin/musl-g++
```
To build the agent:
```
$ go get -d -u github.com/kata-containers/kata-containers
$ cd $GOPATH/src/github.com/kata-containers/kata-containers/src/agent && make
```
## Get the osbuilder
```
$ go get -d -u github.com/kata-containers/kata-containers
$ cd $GOPATH/src/github.com/kata-containers/kata-containers/tools/osbuilder
```
## Create a rootfs image
### Create a local rootfs
As a prerequisite, you need to install Docker. Otherwise, you will not be
able to run the `rootfs.sh` script with `USE_DOCKER=true` as expected in
the following example.
```
$ export ROOTFS_DIR=${GOPATH}/src/github.com/kata-containers/kata-containers/tools/osbuilder/rootfs-builder/rootfs
$ sudo rm -rf ${ROOTFS_DIR}
$ cd $GOPATH/src/github.com/kata-containers/kata-containers/tools/osbuilder/rootfs-builder
$ script -fec 'sudo -E GOPATH=$GOPATH USE_DOCKER=true SECCOMP=no ./rootfs.sh ${distro}'
```
You MUST choose one of `alpine`, `centos`, `clearlinux`, `debian`, `euleros`, `fedora`, `suse`, and `ubuntu` for `${distro}`. By default `seccomp` packages are not included in the rootfs image. Set `SECCOMP` to `yes` to include them.
> **Note:**
>
> - Check the [compatibility matrix](../tools/osbuilder/README.md#platform-distro-compatibility-matrix) before creating rootfs.
> - You must ensure that the *default Docker runtime* is `runc` to make use of
> the `USE_DOCKER` variable. If that is not the case, remove the variable
> from the previous command. See [Checking Docker default runtime](#checking-docker-default-runtime).
### Add a custom agent to the image - OPTIONAL
> **Note:**
>
> - You should only do this step if you are testing with the latest version of the agent.
```
$ sudo install -o root -g root -m 0550 -t ${ROOTFS_DIR}/bin ../../../src/agent/target/x86_64-unknown-linux-musl/release/kata-agent
$ sudo install -o root -g root -m 0440 ../../../src/agent/kata-agent.service ${ROOTFS_DIR}/usr/lib/systemd/system/
$ sudo install -o root -g root -m 0440 ../../../src/agent/kata-containers.target ${ROOTFS_DIR}/usr/lib/systemd/system/
```
### Build a rootfs image
```
$ cd $GOPATH/src/github.com/kata-containers/kata-containers/tools/osbuilder/image-builder
$ script -fec 'sudo -E USE_DOCKER=true ./image_builder.sh ${ROOTFS_DIR}'
```
> **Notes:**
>
> - You must ensure that the *default Docker runtime* is `runc` to make use of
> the `USE_DOCKER` variable. If that is not the case, remove the variable
> from the previous command. See [Checking Docker default runtime](#checking-docker-default-runtime).
> - If you do *not* wish to build under Docker, remove the `USE_DOCKER`
> variable in the previous command and ensure the `qemu-img` command is
> available on your system.
### Install the rootfs image
```
$ commit=$(git log --format=%h -1 HEAD)
$ date=$(date +%Y-%m-%d-%T.%N%z)
$ image="kata-containers-${date}-${commit}"
$ sudo install -o root -g root -m 0640 -D kata-containers.img "/usr/share/kata-containers/${image}"
$ (cd /usr/share/kata-containers && sudo ln -sf "$image" kata-containers.img)
```
## Create an initrd image - OPTIONAL
### Create a local rootfs for initrd image
```
$ export ROOTFS_DIR="${GOPATH}/src/github.com/kata-containers/kata-containers/tools/osbuilder/rootfs-builder/rootfs"
$ sudo rm -rf ${ROOTFS_DIR}
$ cd $GOPATH/src/github.com/kata-containers/kata-containers/tools/osbuilder/rootfs-builder
$ script -fec 'sudo -E GOPATH=$GOPATH AGENT_INIT=yes USE_DOCKER=true SECCOMP=no ./rootfs.sh ${distro}'
```
`AGENT_INIT` controls if the guest image uses the Kata agent as the guest `init` process. When you create an initrd image,
always set `AGENT_INIT` to `yes`. By default `seccomp` packages are not included in the initrd image. Set `SECCOMP` to `yes` to include them.
You MUST choose one of `alpine`, `centos`, `clearlinux`, `euleros`, and `fedora` for `${distro}`.
> **Note:**
>
> - Check the [compatibility matrix](../tools/osbuilder/README.md#platform-distro-compatibility-matrix) before creating rootfs.
Optionally, add your custom agent binary to the rootfs with the following, `LIBC` default is `musl`, if `ARCH` is `ppc64le`, should set the `LIBC=gnu` and `ARCH=powerpc64le`:
```
$ export ARCH=$(shell uname -m)
$ [ ${ARCH} == "ppc64le" ] && export LIBC=gnu || export LIBC=musl
$ [ ${ARCH} == "ppc64le" ] && export ARCH=powerpc64le
$ sudo install -o root -g root -m 0550 -T ../../../src/agent/target/$(ARCH)-unknown-linux-$(LIBC)/release/kata-agent ${ROOTFS_DIR}/sbin/init
```
### Build an initrd image
```
$ cd $GOPATH/src/github.com/kata-containers/kata-containers/tools/osbuilder/initrd-builder
$ script -fec 'sudo -E AGENT_INIT=yes USE_DOCKER=true ./initrd_builder.sh ${ROOTFS_DIR}'
```
### Install the initrd image
```
$ commit=$(git log --format=%h -1 HEAD)
$ date=$(date +%Y-%m-%d-%T.%N%z)
$ image="kata-containers-initrd-${date}-${commit}"
$ sudo install -o root -g root -m 0640 -D kata-containers-initrd.img "/usr/share/kata-containers/${image}"
$ (cd /usr/share/kata-containers && sudo ln -sf "$image" kata-containers-initrd.img)
```
# Install guest kernel images
You can build and install the guest kernel image as shown [here](../tools/packaging/kernel/README.md#build-kata-containers-kernel).
# Install a hypervisor
When setting up Kata using a [packaged installation method](install/README.md#installing-on-a-linux-system), the `qemu-lite` hypervisor is installed automatically. For other installation methods, you will need to manually install a suitable hypervisor.
## Build a custom QEMU
Your QEMU directory need to be prepared with source code. Alternatively, you can use the [Kata containers QEMU](https://github.com/kata-containers/qemu/tree/master) and checkout the recommended branch:
```
$ go get -d github.com/kata-containers/qemu
$ qemu_branch=$(grep qemu-lite- ${GOPATH}/src/github.com/kata-containers/kata-containers/versions.yaml | cut -d '"' -f2)
$ cd ${GOPATH}/src/github.com/kata-containers/qemu
$ git checkout -b $qemu_branch remotes/origin/$qemu_branch
$ your_qemu_directory=${GOPATH}/src/github.com/kata-containers/qemu
```
To build a version of QEMU using the same options as the default `qemu-lite` version , you could use the `configure-hypervisor.sh` script:
```
$ go get -d github.com/kata-containers/kata-containers/tools/packaging
$ cd $your_qemu_directory
$ ${GOPATH}/src/github.com/kata-containers/kata-containers/tools/packaging/scripts/configure-hypervisor.sh kata-qemu > kata.cfg
$ eval ./configure "$(cat kata.cfg)"
$ make -j $(nproc)
$ sudo -E make install
```
### Build a custom QEMU for aarch64/arm64 - REQUIRED
> **Note:**
>
> - You should only do this step if you are on aarch64/arm64.
> - You should include [Eric Auger's latest PCDIMM/NVDIMM patches](https://patchwork.kernel.org/cover/10647305/) which are
> under upstream review for supporting NVDIMM on aarch64.
>
You could build the custom `qemu-system-aarch64` as required with the following command:
```
$ go get -d github.com/kata-containers/tests
$ script -fec 'sudo -E ${GOPATH}/src/github.com/kata-containers/tests/.ci/install_qemu.sh'
```
# Run Kata Containers with Containerd
Refer to the [How to use Kata Containers and Containerd](how-to/containerd-kata.md) how-to guide.
# Run Kata Containers with Kubernetes
Refer to the [Run Kata Containers with Kubernetes](how-to/run-kata-with-k8s.md) how-to guide.
# Troubleshoot Kata Containers
If you are unable to create a Kata Container first ensure you have
[enabled full debug](#enable-full-debug)
before attempting to create a container. Then run the
[`kata-collect-data.sh`](../src/runtime/data/kata-collect-data.sh.in)
script and paste its output directly into a
[GitHub issue](https://github.com/kata-containers/kata-containers/issues/new).
> **Note:**
>
> The `kata-collect-data.sh` script is built from the
> [runtime](../src/runtime) repository.
To perform analysis on Kata logs, use the
[`kata-log-parser`](https://github.com/kata-containers/tests/tree/master/cmd/log-parser)
tool, which can convert the logs into formats (e.g. JSON, TOML, XML, and YAML).
See [Set up a debug console](#set-up-a-debug-console).
# Appendices
## Checking Docker default runtime
```
$ sudo docker info 2>/dev/null | grep -i "default runtime" | cut -d: -f2- | grep -q runc && echo "SUCCESS" || echo "ERROR: Incorrect default Docker runtime"
```
## Set up a debug console
Kata containers provides two ways to connect to the guest. One is using traditional login service, which needs additional works. In contrast the simple debug console is easy to setup.
### Simple debug console setup
Kata Containers 2.0 supports a shell simulated *console* for quick debug purpose. This approach uses VSOCK to
connect to the shell running inside the guest which the agent starts. This method only requires the guest image to
contain either `/bin/sh` or `/bin/bash`.
#### Enable agent debug console
Enable debug_console_enabled in the `configuration.toml` configuration file:
```
[agent.kata]
debug_console_enabled = true
```
This will pass `agent.debug_console agent.debug_console_vport=1026` to agent as kernel parameters, and sandboxes created using this parameters will start a shell in guest if new connection is accept from VSOCK.
#### Connect to debug console
Command `kata-runtime exec` is used to connect to the debug console.
```
$ kata-runtime exec 1a9ab65be63b8b03dfd0c75036d27f0ed09eab38abb45337fea83acd3cd7bacd
bash-4.2# id
uid=0(root) gid=0(root) groups=0(root)
bash-4.2# pwd
/
bash-4.2# exit
exit
```
`kata-runtime exec` has a command-line option `runtime-namespace`, which is used to specify under which [runtime namespace](https://github.com/containerd/containerd/blob/master/docs/namespaces.md) the particular pod was created. By default, it is set to `k8s.io` and works for containerd when configured
with Kubernetes. For CRI-O, the namespace should set to `default` explicitly. This should not be confused with [Kubernetes namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/).
For other CRI-runtimes and configurations, you may need to set the namespace utilizing the `runtime-namespace` option.
If you want to access guest OS through a traditional way, see [Traditional debug console setup)](#traditional-debug-console-setup).
### Traditional debug console setup
By default you cannot login to a virtual machine, since this can be sensitive
from a security perspective. Also, allowing logins would require additional
packages in the rootfs, which would increase the size of the image used to
boot the virtual machine.
If you want to login to a virtual machine that hosts your containers, complete
the following steps (using rootfs or initrd image).
> **Note:** The following debug console instructions assume a systemd-based guest
> O/S image. This means you must create a rootfs for a distro that supports systemd.
> Currently, all distros supported by [osbuilder](../tools/osbuilder) support systemd
> except for Alpine Linux.
>
> Look for `INIT_PROCESS=systemd` in the `config.sh` osbuilder rootfs config file
> to verify an osbuilder distro supports systemd for the distro you want to build rootfs for.
> For an example, see the [Clear Linux config.sh file](../tools/osbuilder/rootfs-builder/clearlinux/config.sh).
>
> For a non-systemd-based distro, create an equivalent system
> service using that distros init system syntax. Alternatively, you can build a distro
> that contains a shell (e.g. `bash(1)`). In this circumstance it is likely you need to install
> additional packages in the rootfs and add “agent.debug_console” to kernel parameters in the runtime
> config file. This tells the Kata agent to launch the console directly.
>
> Once these steps are taken you can connect to the virtual machine using the [debug console](Developer-Guide.md#connect-to-the-virtual-machine-using-the-debug-console).
#### Create a custom image containing a shell
To login to a virtual machine, you must
[create a custom rootfs](#create-a-rootfs-image) or [custom initrd](#create-an-initrd-image---optional)
containing a shell such as `bash(1)`. For Clear Linux, you will need
an additional `coreutils` package.
For example using CentOS:
```
$ cd $GOPATH/src/github.com/kata-containers/kata-containers/tools/osbuilder/rootfs-builder
$ export ROOTFS_DIR=${GOPATH}/src/github.com/kata-containers/kata-containers/tools/osbuilder/rootfs-builder/rootfs
$ script -fec 'sudo -E GOPATH=$GOPATH USE_DOCKER=true EXTRA_PKGS="bash coreutils" ./rootfs.sh centos'
```
#### Build the debug image
Follow the instructions in the [Build a rootfs image](#build-a-rootfs-image)
section when using rootfs, or when using initrd, complete the steps in the [Build an initrd image](#build-an-initrd-image) section.
#### Configure runtime for custom debug image
Install the image:
>**Note**: When using an initrd image, replace the below rootfs image name `kata-containers.img`
>with the initrd image name `kata-containers-initrd.img`.
```
$ name="kata-containers-centos-with-debug-console.img"
$ sudo install -o root -g root -m 0640 kata-containers.img "/usr/share/kata-containers/${name}"
```
Next, modify the `image=` values in the `[hypervisor.qemu]` section of the
[configuration file](../src/runtime/README.md#configuration)
to specify the full path to the image name specified in the previous code
section. Alternatively, recreate the symbolic link so it points to
the new debug image:
```
$ (cd /usr/share/kata-containers && sudo ln -sf "$name" kata-containers.img)
```
**Note**: You should take care to undo this change after you finish debugging
to avoid all subsequently created containers from using the debug image.
#### Create a container
Create a container as normal. For example using `crictl`:
```
$ sudo crictl run -r kata container.yaml pod.yaml
```
#### Connect to the virtual machine using the debug console
The steps required to enable debug console for QEMU slightly differ with
those for firecracker / cloud-hypervisor.
##### Enabling debug console for QEMU
Add `agent.debug_console` to the guest kernel command line to allow the agent process to start a debug console.
```
$ sudo sed -i -e 's/^kernel_params = "\(.*\)"/kernel_params = "\1 agent.debug_console"/g' "${kata_configuration_file}"
```
Here `kata_configuration_file` could point to `/etc/kata-containers/configuration.toml`
or `/usr/share/defaults/kata-containers/configuration.toml`
or `/opt/kata/share/defaults/kata-containers/configuration-{hypervisor}.toml`, if
you installed Kata Containers using `kata-deploy`.
##### Enabling debug console for cloud-hypervisor / firecracker
Slightly different configuration is required in case of firecracker and cloud hypervisor.
Firecracker and cloud-hypervisor don't have a UNIX socket connected to `/dev/console`.
Hence, the kernel command line option `agent.debug_console` will not work for them.
These hypervisors support `hybrid vsocks`, which can be used for communication
between the host and the guest. The kernel command line option `agent.debug_console_vport`
was added to allow developers specify on which `vsock` port the debugging console should be connected.
Add the parameter `agent.debug_console_vport=1026` to the kernel command line
as shown below:
```
sudo sed -i -e 's/^kernel_params = "\(.*\)"/kernel_params = "\1 agent.debug_console_vport=1026"/g' "${kata_configuration_file}"
```
> **Note** Ports 1024 and 1025 are reserved for communication with the agent
> and gathering of agent logs respectively.
Next, connect to the debug console. The VSOCKS paths vary slightly between
cloud-hypervisor and firecracker.
In case of cloud-hypervisor, connect to the `vsock` as shown:
```
$ sudo su -c 'cd /var/run/vc/vm/{sandbox_id}/root/ && socat stdin unix-connect:clh.sock'
CONNECT 1026
```
**Note**: You need to type `CONNECT 1026` and press `RETURN` key after entering the `socat` command.
For firecracker, connect to the `hvsock` as shown:
```
$ sudo su -c 'cd /var/run/vc/firecracker/{sandbox_id}/root/ && socat stdin unix-connect:kata.hvsock'
CONNECT 1026
```
**Note**: You need to press the `RETURN` key to see the shell prompt.
To disconnect from the virtual machine, type `CONTROL+q` (hold down the
`CONTROL` key and press `q`).
## Obtain details of the image
If the image is created using
[osbuilder](../tools/osbuilder), the following YAML
file exists and contains details of the image and how it was created:
```
$ cat /var/lib/osbuilder/osbuilder.yaml
```
## Capturing kernel boot logs
Sometimes it is useful to capture the kernel boot messages from a Kata Container
launch. If the container launches to the point whereby you can `exec` into it, and
if the container has the necessary components installed, often you can execute the `dmesg`
command inside the container to view the kernel boot logs.
If however you are unable to `exec` into the container, you can enable some debug
options to have the kernel boot messages logged into the system journal.
- Set `enable_debug = true` in the `[hypervisor.qemu]` and `[runtime]` sections
For generic information on enabling debug in the configuration file, see the
[Enable full debug](#enable-full-debug) section.
The kernel boot messages will appear in the `containerd` or `CRI-O` log appropriately,
such as:
```bash
$ sudo journalctl -t containerd
-- Logs begin at Thu 2020-02-13 16:20:40 UTC, end at Thu 2020-02-13 16:30:23 UTC. --
...
time="2020-09-15T14:56:23.095113803+08:00" level=debug msg="reading guest console" console-protocol=unix console-url=/run/vc/vm/ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791/console.sock pid=107642 sandbox=ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791 source=virtcontainers subsystem=sandbox vmconsole="[ 0.395399] brd: module loaded"
time="2020-09-15T14:56:23.102633107+08:00" level=debug msg="reading guest console" console-protocol=unix console-url=/run/vc/vm/ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791/console.sock pid=107642 sandbox=ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791 source=virtcontainers subsystem=sandbox vmconsole="[ 0.402845] random: fast init done"
time="2020-09-15T14:56:23.103125469+08:00" level=debug msg="reading guest console" console-protocol=unix console-url=/run/vc/vm/ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791/console.sock pid=107642 sandbox=ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791 source=virtcontainers subsystem=sandbox vmconsole="[ 0.403544] random: crng init done"
time="2020-09-15T14:56:23.105268162+08:00" level=debug msg="reading guest console" console-protocol=unix console-url=/run/vc/vm/ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791/console.sock pid=107642 sandbox=ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791 source=virtcontainers subsystem=sandbox vmconsole="[ 0.405599] loop: module loaded"
time="2020-09-15T14:56:23.121121598+08:00" level=debug msg="reading guest console" console-protocol=unix console-url=/run/vc/vm/ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791/console.sock pid=107642 sandbox=ab9f633385d4987828d342e47554fc6442445b32039023eeddaa971c1bb56791 source=virtcontainers subsystem=sandbox vmconsole="[ 0.421324] memmap_init_zone_device initialised 32768 pages in 12ms"
...
```

View File

@@ -0,0 +1,237 @@
* [Introduction](#introduction)
* [General requirements](#general-requirements)
* [Linking advice](#linking-advice)
* [Notes](#notes)
* [Warnings and other admonitions](#warnings-and-other-admonitions)
* [Files and command names](#files-and-command-names)
* [Code blocks](#code-blocks)
* [Images](#images)
* [Spelling](#spelling)
* [Names](#names)
* [Version numbers](#version-numbers)
* [The apostrophe](#the-apostrophe)
# Introduction
This document outlines the requirements for all documentation in the [Kata
Containers](https://github.com/kata-containers) project.
# General requirements
All documents must:
- Be written in simple English.
- Be written in [GitHub Flavored Markdown](https://github.github.com/gfm) format.
- Have a `.md` file extension.
- Include a TOC (table of contents) at the top of the document with links to
all heading sections. We recommend using the
[`kata-check-markdown`](https://github.com/kata-containers/tests/tree/master/cmd/check-markdown)
tool to generate the TOC.
- Be linked to from another document in the same repository.
Although GitHub allows navigation of the entire repository, it should be
possible to access all documentation purely by navigating links inside the
documents, starting from the repositories top-level `README`.
If you are adding a new document, ensure you add a link to it in the
"closest" `README` above the directory where you created your document.
- If the document needs to tell the user to manipulate files or commands, use a
[code block](#code-blocks) to specify the commands.
If at all possible, ensure that every command in the code blocks can be run
non-interactively. If this is possible, the document can be tested by the CI
which can then execute the commands specified to ensure the instructions are
correct. This avoids documents becoming out of date over time.
# Linking advice
Linking between documents is strongly encouraged to help users and developers
navigate the material more easily. Linking also avoids repetition - if a
document needs to refer to a concept already well described in another section
or document, do not repeat it, link to it
(the [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) principle).
Another advantage of this approach is that changes only need to be applied in
one place: where the concept is defined (not the potentially many places where
the concept is referred to using a link).
# Notes
Important information that is not part of the main document flow should be
added as a Note in bold with all content contained within a block quote:
> **Note:** This is a really important point!
>
> This particular note also spans multiple lines. The entire note should be
> included inside the quoted block.
If there are multiple notes, bullets should be used:
> **Notes:**
>
> - I am important point 1.
>
> - I am important point 2.
>
> - I am important point *n*.
# Warnings and other admonitions
Use the same approach as for [notes](#notes). For example:
> **Warning:** Running this command assumes you understand the risks of doing so.
Other examples:
> **Warnings:**
>
> - Do not unplug your computer!
> - Always read the label.
> - Do not pass go. Do not collect $200.
> **Tip:** Read the manual page for further information on available options.
> **Hint:** Look behind you!
# Files and command names
All filenames and command names should be rendered in a fixed-format font
using backticks:
> Run the `foo` command to make it work.
> Modify the `bar` option in file `/etc/baz/baz.conf`.
Render any options that need to be specified to the command in the same manner:
> Run `bar -axz --apply foo.yaml` to make the changes.
For standard system commands, it is also acceptable to specify the name along
with the manual page section that documents the command in brackets:
> The command to list files in a directory is called `ls(1)`.
# Code blocks
This section lists requirements for displaying commands and command output.
The requirements must be adhered to since documentation containing code blocks
is validated by the CI system, which executes the command blocks with the help
of the
[doc-to-script](https://github.com/kata-containers/tests/tree/master/.ci/kata-doc-to-script.sh)
utility.
- If a document includes commands the user should run, they **MUST** be shown
in a *bash code block* with every command line prefixed with `$ ` to denote
a shell prompt:
<pre>
```bash
$ echo "Hi - I am some bash code"
$ sudo docker run -ti busybox true
$ [ $? -eq 0 ] && echo "success"
```
<pre>
- If a command needs to be run as the `root` user, it must be run using
`sudo(8)`.
```bash
$ sudo echo "I'm running as root"
```
- All lines beginning `# ` should be comment lines, *NOT* commands to run as
the `root` user.
- Try to avoid showing the *output* of commands.
The reasons for this:
- Command output can change, leading to confusion when the output the user
sees does not match the output in the documentation.
- There is the risk the user will get confused between what parts of the
block refer to the commands they should type and the output that they
should not.
- It can make the document look overly "busy" or complex.
In the unusual case that you need to display command *output*, use an
unadorned code block (\`\`\`):
<pre>
The output of the `ls(1)` command is expected to be:
```
ls: cannot access '/foo': No such file or directory
```
<pre>
- Long lines should not span across multiple lines by using the `\`
continuation character.
GitHub automatically renders such blocks with scrollbars. Consequently,
backslash continuation characters are not necessary and are a visual
distraction. These characters also mess up a user's shell history when
commands are pasted into a terminal.
# Images
All binary image files must be in a standard and well-supported format such as
PNG. This format is preferred for vector graphics such as diagrams because the
information is stored more efficiently, leading to smaller file sizes. JPEG
images are acceptable, but this format is more appropriate to store
photographic images.
When possible, generate images using freely available software.
Every binary image file **MUST** be accompanied by the "source" file used to
generate it. This guarantees that the image can be modified by updating the
source file and re-generating the binary format image file.
Ideally, the format of all image source files is an open standard, non-binary
one such as SVG. Text formats are highly preferable because you can manipulate
and compare them with standard tools (e.g. `diff(1)`).
# Spelling
Since this project uses a number of terms not found in conventional
dictionaries, we have a
[spell checking tool](https://github.com/kata-containers/tests/tree/master/cmd/check-spelling)
that checks both dictionary words and the additional terms we use.
Run the spell checking tool on your document before raising a PR to ensure it
is free of mistakes.
If your document introduces new terms, you need to update the custom
dictionary used by the spell checking tool to incorporate the new words.
# Names
Occasionally documents need to specify the name of people. Write such names in
backticks. The main reason for this is to keep the [spell checker](#spelling) happy (since
it cannot manage all possible names). However, since backticks render in a
fixed-width font, this makes the names clearer:
> Welcome to `Clark Kent`, the newest member of the Kata Containers Architecture Committee.
# Version numbers
Write version number in backticks. This keeps the [spell checker](#spelling)
happy and since backticks render in a fixed-width font, it also makes the
numbers clearer:
> Ensure you are using at least version `1.2.3-alpha3.wibble.1` of the tool.
# The apostrophe
The apostrophe character (`'`) must **only** be used for showing possession
("Peter's book") and for standard contractions (such as "don't").
Use double-quotes ("...") in all other circumstances you use quotes outside of
[code blocks](#code-blocks).

201
docs/LICENSE Normal file
View File

@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -0,0 +1,25 @@
# Licensing strategy
* [Project License](#project-license)
* [License file](#license-file)
* [License for individual files](#license-for-individual-files)
## Project License
The license for the [Kata Containers](https://github.com/kata-containers)
project is [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0).
## License file
All repositories in the project have a top level file called `LICENSE`. This
file lists full details of all licences used by the repository.
## License for individual files
Where possible all files in all repositories also contain a
[SPDX](https://spdx.org) license identifier. This provides fine-grained
licensing and allows automated tooling to check the license of individual
files.
This SPDX licence identifier requirement is enforced by the
[CI (Continuous Integration) system](https://github.com/kata-containers/tests/blob/main/.ci/static-checks.sh).

275
docs/Limitations.md Normal file
View File

@@ -0,0 +1,275 @@
* [Overview](#overview)
* [Definition of a limitation](#definition-of-a-limitation)
* [Scope](#scope)
* [Contributing](#contributing)
* [Pending items](#pending-items)
* [Runtime commands](#runtime-commands)
* [checkpoint and restore](#checkpoint-and-restore)
* [events command](#events-command)
* [update command](#update-command)
* [Networking](#networking)
* [Docker swarm and compose support](#docker-swarm-and-compose-support)
* [Resource management](#resource-management)
* [docker run and shared memory](#docker-run-and-shared-memory)
* [docker run and sysctl](#docker-run-and-sysctl)
* [Docker daemon features](#docker-daemon-features)
* [SELinux support](#selinux-support)
* [Architectural limitations](#architectural-limitations)
* [Networking limitations](#networking-limitations)
* [Support for joining an existing VM network](#support-for-joining-an-existing-vm-network)
* [docker --net=host](#docker---nethost)
* [docker run --link](#docker-run---link)
* [Host resource sharing](#host-resource-sharing)
* [docker run --privileged](#docker-run---privileged)
* [Miscellaneous](#miscellaneous)
* [Docker --security-opt option partially supported](#docker---security-opt-option-partially-supported)
* [Appendices](#appendices)
* [The constraints challenge](#the-constraints-challenge)
---
# Overview
A [Kata Container](https://github.com/kata-containers) utilizes a Virtual Machine (VM) to enhance security and
isolation of container workloads. As a result, the system has a number of differences
and limitations when compared with the default [Docker*](https://www.docker.com/) runtime,
[`runc`](https://github.com/opencontainers/runc).
Some of these limitations have potential solutions, whereas others exist
due to fundamental architectural differences generally related to the
use of VMs.
The [Kata Container runtime](../src/runtime)
launches each container within its own hardware isolated VM, and each VM has
its own kernel. Due to this higher degree of isolation, certain container
capabilities cannot be supported or are implicitly enabled through the VM.
# Definition of a limitation
The [Open Container Initiative](https://www.opencontainers.org/)
[Runtime Specification](https://github.com/opencontainers/runtime-spec) ("OCI spec")
defines the minimum specifications a runtime must support to interoperate with
container managers such as Docker. If a runtime does not support some aspect
of the OCI spec, it is by definition a limitation.
However, the OCI runtime reference implementation (`runc`) does not perfectly
align with the OCI spec itself.
Further, since the default OCI runtime used by Docker is `runc`, Docker
expects runtimes to behave as `runc` does. This implies that another form of
limitation arises if the behavior of a runtime implementation does not align
with that of `runc`. Having two standards complicates the challenge of
supporting a Docker environment since a runtime must support the official OCI
spec and the non-standard extensions provided by `runc`.
# Scope
Each known limitation is captured in a separate GitHub issue that contains
detailed information about the issue. These issues are tagged with the
`limitation` label. This document is a curated summary of important known
limitations and provides links to the relevant GitHub issues.
The following link shows the latest list of limitations:
- https://github.com/pulls?utf8=%E2%9C%93&q=is%3Aopen+label%3Alimitation+org%3Akata-containers
# Contributing
If you would like to work on resolving a limitation, please refer to the
[contributors guide](https://github.com/kata-containers/community/blob/master/CONTRIBUTING.md).
If you wish to raise an issue for a new limitation, either
[raise an issue directly on the runtime](https://github.com/kata-containers/kata-containers/issues/new)
or see the
[project table of contents](https://github.com/kata-containers/kata-containers)
for advice on which repository to raise the issue against.
# Pending items
This section lists items that might be possible to fix.
## Runtime commands
### checkpoint and restore
The runtime does not provide `checkpoint` and `restore` commands. There
are discussions about using VM save and restore to give [`criu`](https://github.com/checkpoint-restore/criu)-like functionality, which might provide a solution.
Note that the OCI standard does not specify `checkpoint` and `restore`
commands.
See issue https://github.com/kata-containers/runtime/issues/184 for more information.
### events command
The runtime does not fully implement the `events` command. `OOM` notifications and `Intel RDT` stats are not fully supported.
Note that the OCI standard does not specify an `events` command.
See issue https://github.com/kata-containers/runtime/issues/308 and https://github.com/kata-containers/runtime/issues/309 for more information.
### update command
Currently, only block I/O weight is not supported.
All other configurations are supported and are working properly.
## Networking
### Docker swarm and compose support
The newest version of Docker supported is specified by the
`externals.docker.version` variable in the
[versions database](https://github.com/kata-containers/runtime/blob/master/versions.yaml).
Basic Docker swarm support works. However, if you want to use custom networks
with Docker's swarm, an older version of Docker is required. This is specified
by the `externals.docker.meta.swarm-version` variable in the
[versions database](https://github.com/kata-containers/runtime/blob/master/versions.yaml).
See issue https://github.com/kata-containers/runtime/issues/175 for more information.
Docker compose normally uses custom networks, so also has the same limitations.
## Resource management
Due to the way VMs differ in their CPU and memory allocation, and sharing
across the host system, the implementation of an equivalent method for
these commands is potentially challenging.
See issue https://github.com/clearcontainers/runtime/issues/341 and [the constraints challenge](#the-constraints-challenge) for more information.
For CPUs resource management see
[CPU constraints](design/vcpu-handling.md).
### docker run and shared memory
The runtime does not implement the `docker run --shm-size` command to
set the size of the `/dev/shm tmpfs` within the container. It is possible to pass this configuration value into the VM container so the appropriate mount command happens at launch time.
See issue https://github.com/kata-containers/kata-containers/issues/21 for more information.
### docker run and sysctl
The `docker run --sysctl` feature is not implemented. At the runtime
level, this equates to the `linux.sysctl` OCI configuration. Docker
allows configuring the sysctl settings that support namespacing. From a security and isolation point of view, it might make sense to set them in the VM, which isolates sysctl settings. Also, given that each Kata Container has its own kernel, we can support setting of sysctl settings that are not namespaced. In some cases, we might need to support configuring some of the settings on both the host side Kata Container namespace and the Kata Containers kernel.
See issue https://github.com/kata-containers/runtime/issues/185 for more information.
## Docker daemon features
Some features enabled or implemented via the
[`dockerd` daemon](https://docs.docker.com/config/daemon/) configuration are not yet
implemented.
### SELinux support
The `dockerd` configuration option `"selinux-enabled": true` is not presently implemented
in Kata Containers. Enabling this option causes an OCI runtime error.
See issue https://github.com/kata-containers/runtime/issues/784 for more information.
The consequence of this is that the [Docker --security-opt is only partially supported](#docker---security-opt-option-partially-supported).
Kubernetes [SELinux labels](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#assign-selinux-labels-to-a-container) will also not be applied.
# Architectural limitations
This section lists items that might not be fixed due to fundamental
architectural differences between "soft containers" (i.e. traditional Linux*
containers) and those based on VMs.
## Networking limitations
### Support for joining an existing VM network
Docker supports the ability for containers to join another containers
namespace with the `docker run --net=containers` syntax. This allows
multiple containers to share a common network namespace and the network
interfaces placed in the network namespace. Kata Containers does not
support network namespace sharing. If a Kata Container is setup to
share the network namespace of a `runc` container, the runtime
effectively takes over all the network interfaces assigned to the
namespace and binds them to the VM. Consequently, the `runc` container loses
its network connectivity.
### docker --net=host
Docker host network support (`docker --net=host run`) is not supported.
It is not possible to directly access the host networking configuration
from within the VM.
The `--net=host` option can still be used with `runc` containers and
inter-mixed with running Kata Containers, thus enabling use of `--net=host`
when necessary.
It should be noted, currently passing the `--net=host` option into a
Kata Container may result in the Kata Container networking setup
modifying, re-configuring and therefore possibly breaking the host
networking setup. Do not use `--net=host` with Kata Containers.
### docker run --link
The runtime does not support the `docker run --link` command. This
command is now deprecated by docker and we have no intention of adding support.
Equivalent functionality can be achieved with the newer docker networking commands.
See more documentation at
[docs.docker.com](https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/).
## Host resource sharing
### docker run --privileged
Privileged support in Kata is essentially different from `runc` containers.
Kata does support `docker run --privileged` command, but in this case full access
to the guest VM is provided in addition to some host access.
The container runs with elevated capabilities within the guest and is granted
access to guest devices instead of the host devices.
This is also true with using `securityContext privileged=true` with Kubernetes.
The container may also be granted full access to a subset of host devices
(https://github.com/kata-containers/runtime/issues/1568).
See [Privileged Kata Containers](how-to/privileged.md) for how to configure some of this behavior.
# Miscellaneous
This section lists limitations where the possible solutions are uncertain.
## Docker --security-opt option partially supported
The `--security-opt=` option used by Docker is partially supported.
We only support `--security-opt=no-new-privileges` and `--security-opt seccomp=/path/to/seccomp/profile.json`
option as of today.
Note: The `--security-opt apparmor=your_profile` is not yet supported. See https://github.com/kata-containers/runtime/issues/707.
# Appendices
## The constraints challenge
Applying resource constraints such as cgroup, CPU, memory, and storage to a workload is not always straightforward with a VM based system. A Kata Container runs in an isolated environment inside a virtual machine. This, coupled with the architecture of Kata Containers, offers many more possibilities than are available to traditional Linux containers due to the various layers and contexts.
In some cases it might be necessary to apply the constraints to multiple levels. In other cases, the hardware isolated VM provides equivalent functionality to the the requested constraint.
The following examples outline some of the various areas constraints can be applied:
- Inside the VM
Constrain the guest kernel. This can be achieved by passing particular values through the kernel command line used to boot the guest kernel. Alternatively, sysctl values can be applied at early boot.
- Inside the container
Constrain the container created inside the VM.
- Outside the VM:
- Constrain the hypervisor process by applying host-level constraints.
- Constrain all processes running inside the hypervisor.
This can be achieved by specifying particular hypervisor configuration options.
Note that in some circumstances it might be necessary to apply particular constraints
to more than one of the previous areas to achieve the desired level of isolation and resource control.

8
docs/Makefile Normal file
View File

@@ -0,0 +1,8 @@
#
# Copyright (c) 2018 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
default:
@true

78
docs/README.md Normal file
View File

@@ -0,0 +1,78 @@
# Documentation
* [Getting Started](#getting-started)
* [More User Guides](#more-user-guides)
* [Kata Use-Cases](#kata-use-cases)
* [Developer Guide](#developer-guide)
* [Design and Implementations](#design-and-implementations)
* [How to Contribute](#how-to-contribute)
* [Code Licensing](#code-licensing)
* [The Release Process](#the-release-process)
* [Help Improving the Documents](#help-improving-the-documents)
* [Website Changes](#website-changes)
The [Kata Containers](https://github.com/kata-containers)
documentation repository hosts overall system documentation, with information
common to multiple components.
For details of the other Kata Containers repositories, see the
[repository summary](https://github.com/kata-containers/kata-containers).
## Getting Started
* [Installation guides](./install/README.md): Install and run Kata Containers with Docker or Kubernetes
## More User Guides
* [Upgrading](Upgrading.md): how to upgrade from [Clear Containers](https://github.com/clearcontainers) and [runV](https://github.com/hyperhq/runv) to [Kata Containers](https://github.com/kata-containers) and how to upgrade an existing Kata Containers system to the latest version.
* [Limitations](Limitations.md): differences and limitations compared with the default [Docker](https://www.docker.com/) runtime,
[`runc`](https://github.com/opencontainers/runc).
### Howto guides
See the [howto documentation](how-to).
## Kata Use-Cases
* [GPU Passthrough with Kata](./use-cases/GPU-passthrough-and-Kata.md)
* [OpenStack Zun with Kata Containers](./use-cases/zun_kata.md)
* [SR-IOV with Kata](./use-cases/using-SRIOV-and-kata.md)
* [Intel QAT with Kata](./use-cases/using-Intel-QAT-and-kata.md)
* [VPP with Kata](./use-cases/using-vpp-and-kata.md)
* [SPDK vhost-user with Kata](./use-cases/using-SPDK-vhostuser-and-kata.md)
* [Intel SGX with Kata](./use-cases/using-Intel-SGX-and-kata.md)
## Developer Guide
Documents that help to understand and contribute to Kata Containers.
### Design and Implementations
* [Kata Containers Architecture](design/architecture.md): Architectural overview of Kata Containers
* [Kata Containers E2E Flow](design/end-to-end-flow.md): The entire end-to-end flow of Kata Containers
* [Kata Containers design](./design/README.md): More Kata Containers design documents
### How to Contribute
* [Developer Guide](Developer-Guide.md): Setup the Kata Containers developing environments
* [How to contribute to Kata Containers](https://github.com/kata-containers/community/blob/master/CONTRIBUTING.md)
* [Code of Conduct](../CODE_OF_CONDUCT.md)
### Code Licensing
* [Licensing](Licensing-strategy.md): About the licensing strategy of Kata Containers.
### The Release Process
* [Release strategy](Stable-Branch-Strategy.md)
* [Release Process](Release-Process.md)
## Help Improving the Documents
* [Documentation Requirements](Documentation-Requirements.md)
## Website Changes
If you have a suggestion for how we can improve the
[website](https://katacontainers.io), please raise an issue (or a PR) on
[the repository that holds the source for the website](https://github.com/OpenStackweb/kata-netlify-refresh).

90
docs/Release-Process.md Normal file
View File

@@ -0,0 +1,90 @@
# How to do a Kata Containers Release
This document lists the tasks required to create a Kata Release.
<!-- TOC START min:1 max:3 link:true asterisk:false update:true -->
- [How to do a Kata Containers Release](#how-to-do-a-kata-containers-release)
- [Requirements](#requirements)
- [Release Process](#release-process)
- [Bump all Kata repositories](#bump-all-kata-repositories)
- [Merge all bump version Pull requests](#merge-all-bump-version-pull-requests)
- [Tag all Kata repositories](#tag-all-kata-repositories)
- [Check Git-hub Actions](#check-git-hub-actions)
- [Create release notes](#create-release-notes)
- [Announce the release](#announce-the-release)
<!-- TOC END -->
## Requirements
- [hub](https://github.com/github/hub)
- OBS account with permissions on [`/home:katacontainers`](https://build.opensuse.org/project/subprojects/home:katacontainers)
- GitHub permissions to push tags and create releases in Kata repositories.
- GPG configured to sign git tags. https://help.github.com/articles/generating-a-new-gpg-key/
- You should configure your GitHub to use your ssh keys (to push to branches). See https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/.
* As an alternative, configure hub to push and fork with HTTPS, `git config --global hub.protocol https` (Not tested yet) *
## Release Process
### Bump all Kata repositories
- We have set up a Jenkins job to bump the version in the `VERSION` file in all Kata repositories. Go to the [Jenkins bump-job page](http://jenkins.katacontainers.io/job/release/build) to trigger a new job.
- Start a new job with variables for the job passed as:
- `BRANCH=<the-branch-you-want-to-bump>`
- `NEW_VERSION=<the-new-kata-version>`
For example, in the case where you want to make a patch release `1.10.2`, the variable `NEW_VERSION` should be `1.10.2` and `BRANCH` should point to `stable-1.10`. In case of an alpha or release candidate release, `BRANCH` should point to `master` branch.
Alternatively, you can also bump the repositories using a script in the Kata packaging repo
```
$ cd ${GOPATH}/src/github.com/kata-containers/kata-containers/tools/packaging/release
$ export NEW_VERSION=<the-new-kata-version>
$ export BRANCH=<the-branch-you-want-to-bump>
$ ./update-repository-version.sh -p "$NEW_VERSION" "$BRANCH"
```
### Merge all bump version Pull requests
- The above step will create a GitHub pull request in the Kata projects. Trigger the CI using `/test` command on each bump Pull request.
- Check any failures and fix if needed.
- Work with the Kata approvers to verify that the CI works and the pull requests are merged.
### Tag all Kata repositories
Once all the pull requests to bump versions in all Kata repositories are merged,
tag all the repositories as shown below.
```
$ cd ${GOPATH}/src/github.com/kata-containers/kata-containers/tools/packaging/release
$ git checkout <kata-branch-to-release>
$ git pull
$ ./tag_repos.sh -p -b "$BRANCH" tag
```
### Check Git-hub Actions
We make use of [GitHub actions](https://github.com/features/actions) in this [file](https://github.com/kata-containers/kata-containers/blob/master/.github/workflows/main.yaml) in the `kata-containers/kata-containers` repository to build and upload release artifacts. This action is auto triggered with the above step when a new tag is pushed to the `kata-containers/kata-conatiners` repository.
Check the [actions status page](https://github.com/kata-containers/kata-containers/actions) to verify all steps in the actions workflow have completed successfully. On success, a static tarball containing Kata release artifacts will be uploaded to the [Release page](https://github.com/kata-containers/kata-containers/releases).
### Create release notes
We have a script in place in the packaging repository to create release notes that include a short-log of the commits across Kata components.
Run the script as shown below:
```
$ cd ${GOPATH}/src/github.com/kata-containers/kata-containers/tools/packaging/release
# Note: OLD_VERSION is where the script should start to get changes.
$ ./release-notes.sh ${OLD_VERSION} ${NEW_VERSION} > notes.md
# Edit the `notes.md` file to review and make any changes to the release notes.
# Add the release notes in the project's GitHub.
$ hub release edit -F notes.md "${NEW_VERSION}"
```
### Announce the release
Publish in [Slack and Kata mailing list](https://github.com/kata-containers/community#join-us) that new release is ready.

View File

@@ -0,0 +1,151 @@
Branch and release maintenance for the Kata Containers project.
## Introduction
This document provides details about Kata Containers releases.
## Versioning
The Kata Containers project uses [semantic versioning](http://semver.org/) for all releases.
Semantic versions are comprised of three fields in the form:
```
MAJOR.MINOR.PATCH
```
For examples: `1.0.0`, `1.0.0-rc.5`, and `99.123.77+foo.bar.baz.5`.
Semantic versioning is used since the version number is able to convey clear
information about how a new version relates to the previous version.
For example, semantic versioning can also provide assurances to allow users to know
when they must upgrade compared with when they might want to upgrade:
- When `PATCH` increases, the new release contains important **security fixes**
and an upgrade is recommended.
The patch field can contain extra details after the number.
Dashes denote pre-release versions. `1.0.0-rc.5` in the example denotes the fifth release
candidate for release `1.0.0`. Plus signs denote other details. In our example, `+foo.bar.baz.5`
provides additional information regarding release `99.123.77` in the previous example.
- When `MINOR` increases, the new release adds **new features** but *without
changing the existing behavior*.
- When `MAJOR` increases, the new release adds **new features, bug fixes, or
both** and which *changes the behavior from the previous release* (incompatible with previous releases).
A major release will also likely require a change of the container manager version used,
for example Docker\*. Please refer to the release notes for further details.
## Release Strategy
Any new features added since the last release will be available in the next minor
release. These will include bug fixes as well. To facilitate a stable user environment,
Kata provides stable branch-based releases and a master branch release.
## Stable branch patch criteria
No new features should be introduced to stable branches. This is intended to limit risk to users,
providing only bug and security fixes.
## Branch Management
Kata Containers will maintain two stable release branches in addition to the master branch.
Once a new MAJOR or MINOR release is created from master, a new stable branch is created for
the prior MAJOR or MINOR release and the older stable branch is no longer maintained. End of
maintenance for a branch is announced on the Kata Containers mailing list. Users can determine
the version currently installed by running `kata-runtime kata-env`. It is recommended to use the
latest stable branch available.
A couple of examples follow to help clarify this process.
### New bug fix introduced
A bug fix is submitted against the runtime which does not introduce new inter-component dependencies.
This fix is applied to both the master and stable branches, and there is no need to create a new
stable branch.
| Branch | Original version | New version |
|--|--|--|
| `master` | `1.3.0-rc0` | `1.3.0-rc1` |
| `stable-1.2` | `1.2.0` | `1.2.1` |
| `stable-1.1` | `1.1.2` | `1.1.3` |
### New release made feature or change adding new inter-component dependency
A new feature is introduced, which adds a new inter-component dependency. In this case a new stable
branch is created (stable-1.3) starting from master and the older stable branch (stable-1.1)
is dropped from maintenance.
| Branch | Original version | New version |
|--|--|--|
| `master` | `1.3.0-rc1` | `1.3.0` |
| `stable-1.3` | N/A| `1.3.0` |
| `stable-1.2` | `1.2.1` | `1.2.2` |
| `stable-1.1` | `1.1.3` | (unmaintained) |
Note, the stable-1.1 branch will still exist with tag 1.1.3, but under current plans it is
not maintained further. The next tag applied to master will be 1.4.0-alpha0. We would then
create a couple of alpha releases gathering features targeted for that particular release (in
this case 1.4.0), followed by a release candidate. The release candidate marks a feature freeze.
A new stable branch is created for the release candidate. Only bug fixes and any security issues
are added to the branch going forward until release 1.4.0 is made.
## Backporting Process
Development that occurs against the master branch and applicable code commits should also be submitted
against the stable branches. Some guidelines for this process follow::
1. Only bug and security fixes which do not introduce inter-component dependencies are
candidates for stable branches. These PRs should be marked with "bug" in GitHub.
2. Once a PR is created against master which meets requirement of (1), a comparable one
should also be submitted against the stable branches. It is the responsibility of the submitter
to apply their pull request against stable, and it is the responsibility of the
reviewers to help identify stable-candidate pull requests.
## Continuous Integration Testing
The test repository is forked to create stable branches from master. Full CI
runs on each stable and master PR using its respective tests repository branch.
### An alternative method for CI testing:
Ideally, the continuous integration infrastructure will run the same test suite on both master
and the stable branches. When tests are modified or new feature tests are introduced, explicit
logic should exist within the testing CI to make sure only applicable tests are executed against
stable and master. While this is not in place currently, it should be considered in the long term.
## Release Management
### Patch releases
Releases are made every three weeks, which include a GitHub release as
well as binary packages. These patch releases are made for both stable branches, and a "release candidate"
for the next `MAJOR` or `MINOR` is created from master. If there are no changes across all the repositories, no
release is created and an announcement is made on the developer mailing list to highlight this.
If a release is being made, each repository is tagged for this release, regardless
of whether changes are introduced. The release schedule can be seen on the
[release rotation wiki page](https://github.com/kata-containers/community/wiki/Release-Team-Rota).
If there is urgent need for a fix, a patch release will be made outside of the planned schedule.
The process followed for making a release can be found at [Release Process](Release-Process.md).
## Minor releases
### Frequency
Minor releases are less frequent in order to provide a more stable baseline for users. They are currently
running on a twelve week cadence. As the Kata Containers code base has reached a certain level of
maturity, we have increased the cadence from six weeks to twelve weeks. The release schedule can be seen on the
[release rotation wiki page](https://github.com/kata-containers/community/wiki/Release-Team-Rota).
### Compatibility
Kata guarantees compatibility between components that are within one minor release of each other.
This is critical for dependencies which cross between host (runtime, shim, proxy) and
the guest (hypervisor, rootfs and agent). For example, consider a cluster with a long-running
deployment, workload-never-dies, all on Kata version 1.1.3 components. If the operator updates
the Kata components to the next new minor release (i.e. 1.2.0), we need to guarantee that the 1.2.0
runtime still communicates with 1.1.3 agent within workload-never-dies.
Handling live-update is out of the scope of this document. See this [`kata-runtime` issue](https://github.com/kata-containers/runtime/issues/492) for details.

140
docs/Upgrading.md Normal file
View File

@@ -0,0 +1,140 @@
* [Introduction](#introduction)
* [Maintenance warning](#maintenance-warning)
* [Determine current version](#determine-current-version)
* [Determine latest version](#determine-latest-version)
* [Configuration changes](#configuration-changes)
* [Upgrade Kata Containers](#upgrade-kata-containers)
* [Upgrade native distribution packaged version](#upgrade-native-distribution-packaged-version)
* [Static installation](#static-installation)
* [Determine if you are using a static installation](#determine-if-you-are-using-a-static-installation)
* [Remove a static installation](#remove-a-static-installation)
* [Upgrade a static installation](#upgrade-a-static-installation)
* [Custom assets](#custom-assets)
# Introduction
This document outlines the options for upgrading from a
[Kata Containers 1.x release](https://github.com/kata-containers/runtime/releases) to a
[Kata Containers 2.x release](https://github.com/kata-containers/kata-containers/releases).
# Maintenance warning
Kata Containers 2.x is the new focus for the Kata Containers development
community.
Although Kata Containers 1.x releases will continue to be published for a
period of time, once a stable release for Kata Containers 2.x is published,
Kata Containers 1.x stable users should consider switching to the Kata 2.x
release.
See the [stable branch strategy documentation](Stable-Branch-Strategy.md) for
further details.
# Determine current version
To display the current Kata Containers version, run one of the following:
```bash
$ kata-runtime --version
$ containerd-shim-kata-v2 --version
```
# Determine latest version
Kata Containers 2.x releases are published on the
[Kata Containers GitHub releases page](https://github.com/kata-containers/kata-containers/releases).
Alternatively, if you are using Kata Containers version 1.12.0 or newer, you
can check for newer releases using the command line:
```bash
$ kata-runtime check --check-version-only
```
There are various other related options. Run `kata-runtime check --help`
for further details.
# Configuration changes
The [Kata Containers 2.x configuration file](/src/runtime/README.md#configuration)
is compatible with the
[Kata Containers 1.x configuration file](https://github.com/kata-containers/runtime/blob/master/README.md#configuration).
However, if you have created a local configuration file
(`/etc/kata-containers/configuration.toml`), this will mask the newer Kata
Containers 2.x configuration file.
Since Kata Containers 2.x introduces a number of new options and changes
some default values, we recommend that you disable the local configuration
file (by moving or renaming it) until you have reviewed the changes to the
official configuration file and applied them to your local file if required.
# Upgrade Kata Containers
## Upgrade native distribution packaged version
As shown in the
[installation instructions](install),
Kata Containers provide binaries for popular distributions in their native
packaging formats. This allows Kata Containers to be upgraded using the
standard package management tools for your distribution.
> **Note:**
>
> Users should prefer the distribution packaged version of Kata Containers
> unless they understand the implications of a manual installation.
## Static installation
> **Note:**
>
> Unless you are an advanced user, if you are using a static installation of
> Kata Containers, we recommend you remove it and install a
> [native distribution packaged version](#upgrade-native-distribution-packaged-version)
> instead.
### Determine if you are using a static installation
If the following command displays the output "static", you are using a static
version of Kata Containers:
```bash
$ ls /opt/kata/bin/kata-runtime &>/dev/null && echo static
```
### Remove a static installation
Static installations are installed in `/opt/kata/`, so to uninstall simply
remove this directory.
### Upgrade a static installation
If you understand the implications of using a static installation, to upgrade
first
[remove the existing static installation](#remove-a-static-installation), then
[install the latest release](#determine-latest-version).
See the
[manual installation installation documentation](install/README.md#manual-installation)
for details on how to automatically install and configuration a static release
with containerd.
# Custom assets
> **Note:**
>
> This section only applies to advanced users who have built their own guest
> kernel or image.
If you are using custom
[guest assets](design/architecture.md#guest-assets),
you must upgrade them to work with Kata Containers 2.x since Kata
Containers 1.x assets will **not** work.
See the following for further details:
- [Guest kernel documentation](/tools/packaging/kernel)
- [Guest image and initrd documentation](/tools/osbuilder)
The official assets are packaged meaning they are automatically included in
new releases.

11
docs/design/README.md Normal file
View File

@@ -0,0 +1,11 @@
# Design
Kata Containers design documents:
- [Kata Containers architecture](architecture.md)
- [API Design of Kata Containers](kata-api-design.md)
- [Design requirements for Kata Containers](kata-design-requirements.md)
- [VSocks](VSocks.md)
- [VCPU handling](vcpu-handling.md)
- [Host cgroups](host-cgroups.md)
- [Metrics(Kata 2.0)](kata-2-0-metrics.md)

95
docs/design/VSocks.md Normal file
View File

@@ -0,0 +1,95 @@
# Kata Containers and VSOCKs
- [Introduction](#introduction)
- [VSOCK communication diagram](#vsock-communication-diagram)
- [System requirements](#system-requirements)
- [Advantages of using VSOCKs](#advantages-of-using-vsocks)
- [High density](#high-density)
- [Reliability](#reliability)
## Introduction
There are two different ways processes in the virtual machine can communicate
with processes in the host. The first one is by using serial ports, where the
processes in the virtual machine can read/write data from/to a serial port
device and the processes in the host can read/write data from/to a Unix socket.
Most GNU/Linux distributions have support for serial ports, making it the most
portable solution. However, the serial link limits read/write access to one
process at a time.
A newer, simpler method is [VSOCKs][1], which can accept connections from
multiple clients. The following diagram shows how it's implemented in Kata Containers.
### VSOCK communication diagram
```
.----------------------.
| .------------------. |
| | .-----. .-----. | |
| | |cont1| |cont2| | |
| | `-----' `-----' | |
| | | | | |
| | .---------. | |
| | | agent | | |
| | `---------' | |
| | | | | |
| | POD .-------. | |
| `-----| vsock |----' |
| `-------' |
| | | |
| .------. .------. |
| | shim | | shim | |
| `------' `------' |
| Host |
`----------------------'
```
## System requirements
The host Linux kernel version must be greater than or equal to v4.8, and the
`vhost_vsock` module must be loaded or built-in (`CONFIG_VHOST_VSOCK=y`). To
load the module run the following command:
```
$ sudo modprobe -i vhost_vsock
```
The Kata Containers version must be greater than or equal to 1.2.0 and `use_vsock`
must be set to `true` in the runtime [configuration file][1].
### With VMWare guest
To use Kata Containers with VSOCKs in a VMWare guest environment, first stop the `vmware-tools` service and unload the VMWare Linux kernel module.
```
sudo systemctl stop vmware-tools
sudo modprobe -r vmw_vsock_vmci_transport
sudo modprobe -i vhost_vsock
```
## Advantages of using VSOCKs
### High density
Using a proxy for multiplexing the connections between the VM and the host uses
4.5MB per [POD][2]. In a high density deployment this could add up to GBs of
memory that could have been used to host more PODs. When we talk about density
each kilobyte matters and it might be the decisive factor between run another
POD or not. For example if you have 500 PODs running in a server, the same
amount of [`kata-proxy`][3] processes will be running and consuming for around
2250MB of RAM. Before making the decision not to use VSOCKs, you should ask
yourself, how many more containers can run with the memory RAM consumed by the
Kata proxies?
### Reliability
[`kata-proxy`][3] is in charge of multiplexing the connections between virtual
machine and host processes, if it dies all connections get broken. For example
if you have a [POD][2] with 10 containers running, if `kata-proxy` dies it would
be impossible to contact your containers, though they would still be running.
Since communication via VSOCKs is direct, the only way to lose communication
with the containers is if the VM itself or the `containerd-shim-kata-v2` dies, if this happens
the containers are removed automatically.
[1]: https://wiki.qemu.org/Features/VirtioVsock
[2]: ./vcpu-handling.md#virtual-cpus-and-kubernetes-pods
[3]: https://github.com/kata-containers/proxy

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

View File

@@ -0,0 +1 @@
<mxfile host="Chrome" modified="2020-07-02T06:44:28.736Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" etag="r7FpfnbGNK7jbg54Gu9x" version="13.3.5" type="device"><diagram id="XNV8G0dePIPkhS_Khqr4" name="Page-1">7VvZcuI4FP0aHqFky+sjkNCTqfR0qtLV6fTLlMDy0hiLscWWrx8Zy3iRQkhjQxbygnVlhK1zz9HRkg4cztZfYjT3vxIHhx0VOOsOvOqoKrRthX2kkU0WMTWYBbw4cLIQKAL3wRPOgkoeXQQOTngsC1FCQhrMq8EJiSI8oZUYimOyqt7mktCpBObIw0LgfoJCMfoQONTPoiqEdlHxFw48n/80hIA/+Qzld/NA4iOHrEoheN2Bw5gQml3N1kMcpr1X7ZjRM7W7J4txRA/5wrd/v5rDewTubvrjyZDYg1l/01W0rJklChf8lfnT0k3eBzFZRA5OW1E6cLDyA4rv52iS1q4Y6izm01nIq10SUQ4jwxAOvBg5AXvCIQlJvG0PmhgZOK1zgzAsxR2ELXfC4gmNyRSXaoyJhccuqxHfmXfDEscUr0sh3gdfMJlhGm/YLby2q+i6nn2J56QOzKy8KhDWctT8Eri7rEQ8q7xd60W/swve9a+BQW8PBlWTw+C6jm0YIgyu66oTKQyOMTZ0oykYNLsGQ/7OJRgYnUQYFENvCYYWUXgvZFDss5PBuHBBVc7OBQUKvY4dNjbyIompTzwSofC6iA4KXNKULu65JWTO0fiNKd1wONCCkipWeB3Qn6Xrx7Spns5LV2ve8raw4YUyy7R9iCRkEU/4u3i3328se/zw+97wp99Wf4fTh2I0pCj2MN3TOZwjaYfsBTjGIaLBsmomGodKhQJjKI3nEymAt2jMPFql01EYeBG7nrAOwyy/B2nqBswE9XnFLHCcDF+cBE9ovG0v7fo5CSK6fR190NGvDgJjb7YJpNlZO/6rFfMkJRPoKbahVUUtKx2MBm/8Ln27Ustqmonldrt2tQ3iugnLmzqeu4c8COK9mVkRRSNkXTpwgmUFZeO/RWopt0h0ky0UfXaDos3XWzzyenblpZ+sfykKIhw73cQPZt0poqi73DXPHnf7C9nNzY2Hmqi2yhgpWJWpLQDGdX/EW6jqM/trSoUts6bCUBwLFdPMk6Csw0YDg6EcePMV3H6D4szwiDc/y4XSt9Ji8bVtSSbq5nGibouivpdjL6o6TxjQA5ZuVjMGHKc0jQqJfKwQzdQHzpwj7YAkc+Sj17nswN7HLklGofHNCbglCrjhWKahyQQc9nUN5i20JeBMnMHLAi6bzLQm35r+megGjqKbeqhQw0OF+jR8U0W+3cVp2z5eJOmL45gl8ccmnm1XiGdIltQUS2uHePJx7py8K7j2WKbaC7wrqPaYt3eSYQ5KZr1yMTsb76QQi1Min9K5FPe3OelVnyHaq+e8oMfYVWXgkVPefIKrKL3aAlN71lRcxXgWz5PxWP2YRIYHEnmXXxBa1fSyj8uvRrMJ/XBvb7q/6A348c9DF/34nvjgzANA61lzgizJMX4jNguKer9dqpqRKKCkXX917pUpW1drS48yh6Xqp1yZ0kS9Tshk2hwOsl0xCwATynDo6wBooG0cLFibYFoiCjIQYGs2VxH6+43OL/9omNu32vLyqozxpuyqKurXe9uleZYyf+BYoa6rx3mInJWGUuFkVwOn86yKgOllW6Zp0TVr2zKaRHRPvS2jiWT+8IOfqcBeDQodqucd/8TdMeSl7/iRzaCm1bYpVREEWwZCW0dFLAGEnXilCtcsGJLTO7bpANOUEEbHliNdFbXUMczO+1SBGo0AGI2aAgqqdaC0XKTK0qWdkjB79oZYWJw0f1qsDMkgc1Kk8vN15fWwzRzHyyCRzHbZi9IqGNWOjEiEa73OQ4f7Shn61blE/aidT+LgKc2vsPPCssWrzizWBVB2ZlF2ZLE1qEQb6C1wkprUKY6j9Ez8u4CrmeEJVNGBsk1Y46TwiCdKP59L0HOhOpdLkJxkutgE2dCjw/PbBGW/p7v4hB1Y5tl9gmjpLj5B6hNka+Yn9QmqaOkuPmGHjtaeT2DF4h/tsrW/4v8V4fX/</diagram></mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

@@ -0,0 +1,47 @@
@startuml
User->CLI: network add-interface
CLI->virtcontainers: AddInterface
virtcontainers->QEMU:QMP-hot-add-network
virtcontainers->agent:UpdateInterface
note right
the agent's UpdateInterface code will need to be augmented
to have a timeout/wait associated with this for the network
device to appear (ie, wait for qmp to complete)
end note
agent->User: err, interface detail
User->CLI: network del-interface
CLI->virtcontainers: DeleteInterface
note right
There will be no call to the agent. We rely on guest kernel
to clean up any state associated with the interface.
end note
virtcontainers->QEMU:QMP-hot-delete-network
virtcontainers->User: err, interface detail
User->CLI: network list-interface
CLI->virtcontainers: ListInterfaces
virtcontainers->agent:ListInterfaces
agent->User: err, list of interface details
User->CLI: network update-routes
CLI->virtcontainers: UpdateRoutes
note right
routes are handled in a 'one shot' basis,
setting all of the routes for the network. This needs to
be called after interfaces are added, and should be called
after interfaces are removed. It should be fine to call once
after adding all of the expected interfaces. If you know all
the resulting routes, simply calling set routes with the
complete list should suffice.
end note
virtcontainers->agent:UpdateRoutes
agent->User: err, list of routes
User->CLI: network list-routes
CLI->virtcontainers: ListRoutes
virtcontainers->agent:ListRoutes
agent->User: err, list of routes
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 KiB

View File

@@ -0,0 +1,174 @@
Title: Kata Flow
participant CRI
participant CRIO
participant Kata Runtime
participant virtcontainers
participant hypervisor
participant agent
participant shim-pod
participant shim-ctr
participant proxy
# Run the sandbox
CRI->CRIO: RunPodSandbox()
CRIO->Kata Runtime: create
Kata Runtime->virtcontainers: CreateSandbox()
Note left of virtcontainers: Sandbox\nReady
virtcontainers->virtcontainers: createNetwork()
virtcontainers->virtcontainers: Execute PreStart Hooks
virtcontainers->+hypervisor: Start VM (inside the netns)
hypervisor-->-virtcontainers: VM started
virtcontainers->proxy: Start Proxy
proxy->hypervisor: Connect the VM
virtcontainers->+agent: CreateSandbox()
agent-->-virtcontainers: Sandbox Created
virtcontainers->+agent: CreateContainer()
agent-->-virtcontainers: Container Created
virtcontainers->shim-pod: Start Shim
shim-pod->agent: ReadStdout() (blocking call)
shim-pod->agent: ReadStderr() (blocking call)
shim-pod->agent: WaitProcess() (blocking call)
Note left of virtcontainers: Container-pod\nReady
virtcontainers-->Kata Runtime: End of CreateSandbox()
Kata Runtime-->CRIO: End of create
CRIO->Kata Runtime: start
Kata Runtime->virtcontainers: StartSandbox()
Note left of virtcontainers: Sandbox\nRunning
virtcontainers->+agent: StartContainer()
agent-->-virtcontainers: Container Started
Note left of virtcontainers: Container-pod\nRunning
virtcontainers->virtcontainers: Execute PostStart Hooks
virtcontainers-->Kata Runtime: End of StartSandbox()
Kata Runtime-->CRIO: End of start
CRIO-->CRI: End of RunPodSandbox()
# Create the container
CRI->CRIO: CreateContainer()
CRIO->Kata Runtime: create
Kata Runtime->virtcontainers: CreateContainer()
virtcontainers->+agent: CreateContainer()
agent-->-virtcontainers: Container Created
virtcontainers->shim-ctr: Start Shim
shim-ctr->agent: ReadStdout() (blocking call)
shim-ctr->agent: ReadStderr() (blocking call)
shim-ctr->agent: WaitProcess() (blocking call)
Note left of virtcontainers: Container-ctr\nReady
virtcontainers-->Kata Runtime: End of CreateContainer()
Kata Runtime-->CRIO: End of create
CRIO-->CRI: End of CreateContainer()
# Start the container
CRI->CRIO: StartContainer()
CRIO->Kata Runtime: start
Kata Runtime->virtcontainers: StartContainer()
virtcontainers->+agent: StartContainer()
agent-->-virtcontainers: Container Started
Note left of virtcontainers: Container-ctr\nRunning
virtcontainers-->Kata Runtime: End of StartContainer()
Kata Runtime-->CRIO: End of start
CRIO-->CRI: End of StartContainer()
# Stop the container
CRI->CRIO: StopContainer()
CRIO->Kata Runtime: kill
Kata Runtime->virtcontainers: KillContainer()
virtcontainers->+agent: SignalProcess()
alt SIGTERM OR SIGKILL
agent-->shim-ctr: WaitProcess() returns
end
agent-->-virtcontainers: Process Signalled
virtcontainers-->Kata Runtime: End of KillContainer()
alt SIGTERM OR SIGKILL
Kata Runtime->virtcontainers: StopContainer()
virtcontainers->+shim-ctr: waitForShim()
alt Timeout exceeded
virtcontainers->+agent: SignalProcess(SIGKILL)
agent-->shim-ctr: WaitProcess() returns
agent-->-virtcontainers: Process Signalled by SIGKILL
virtcontainers->shim-ctr: waitForShim()
end
shim-ctr-->-virtcontainers: Shim terminated
virtcontainers->+agent: SignalProcess(SIGKILL)
agent-->-virtcontainers: Process Signalled by SIGKILL
virtcontainers->+agent: RemoveContainer()
agent-->-virtcontainers: Container Removed
Note left of virtcontainers: Container-ctr\nStopped
virtcontainers-->Kata Runtime: End of StopContainer()
end
Kata Runtime-->CRIO: End of kill
CRIO-->CRI: End of StopContainer()
# Remove the container
CRI->CRIO: RemoveContainer()
CRIO->Kata Runtime: delete
Kata Runtime->virtcontainers: DeleteContainer()
virtcontainers->virtcontainers: Delete container resources
virtcontainers-->Kata Runtime: End of DeleteContainer()
Kata Runtime-->CRIO: End of delete
CRIO-->CRI: End of RemoveContainer()
# Stop the sandbox
CRI->CRIO: StopPodSandbox()
CRIO->Kata Runtime: kill
Kata Runtime->virtcontainers: KillContainer()
virtcontainers->+agent: SignalProcess()
alt SIGTERM OR SIGKILL
agent-->shim-pod: WaitProcess() returns
end
agent-->-virtcontainers: Process Signalled
virtcontainers-->Kata Runtime: End of KillContainer()
alt SIGTERM OR SIGKILL
Kata Runtime->virtcontainers: StopSandbox()
loop for each container
alt Container-ctr
virtcontainers->+shim-ctr: waitForShim()
alt Timeout exceeded
virtcontainers->+agent: SignalProcess(SIGKILL)
agent-->shim-ctr: WaitProcess() returns
agent-->-virtcontainers: Process Signalled by SIGKILL
virtcontainers->shim-ctr: waitForShim()
end
shim-ctr-->-virtcontainers: Shim terminated
virtcontainers->+agent: SignalProcess(SIGKILL)
agent-->-virtcontainers: Process Signalled by SIGKILL
virtcontainers->+agent: RemoveContainer()
agent-->-virtcontainers: Container Removed
Note left of virtcontainers: Container-ctr\nStopped
else Container-pod
virtcontainers->+shim-pod: waitForShim()
alt Timeout exceeded
virtcontainers->+agent: SignalProcess(SIGKILL)
agent-->shim-pod: WaitProcess() returns
agent-->-virtcontainers: Process Signalled by SIGKILL
virtcontainers->shim-pod: waitForShim()
end
shim-pod-->-virtcontainers: Shim terminated
virtcontainers->+agent: SignalProcess(SIGKILL)
agent-->-virtcontainers: Process Signalled by SIGKILL
virtcontainers->+agent: RemoveContainer()
agent-->-virtcontainers: Container Removed
Note left of virtcontainers: Container-pod\nStopped
end
end
virtcontainers->+agent: DestroySandbox()
agent-->-virtcontainers: Sandbox Destroyed
virtcontainers->hypervisor: Stop VM
Note left of virtcontainers: Sandbox\nStopped
virtcontainers->virtcontainers: removeNetwork()
virtcontainers->virtcontainers: Execute PostStop Hooks
virtcontainers-->Kata Runtime: End of StopSandbox()
end
Kata Runtime-->CRIO: End of kill
CRIO-->CRI: End of StopPodSandbox()
# Remove the sandbox
CRI->CRIO: RemovePodSandbox()
CRIO->Kata Runtime: delete
Kata Runtime->virtcontainers: DeleteSandbox()
loop for each container
virtcontainers->virtcontainers: Delete container resources
end
virtcontainers->virtcontainers: Delete sandbox resources
virtcontainers-->Kata Runtime: End of DeleteSandbox()
Kata Runtime-->CRIO: End of delete
CRIO-->CRI: End of RemovePodSandbox()

View File

@@ -0,0 +1 @@
<mxfile host="Chrome" modified="2020-07-02T06:45:31.744Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" etag="f3JpMUEY9_WRpPV9i93y" version="13.3.5" type="device"><diagram id="XNV8G0dePIPkhS_Khqr4" name="Page-1">7VrbcqM4EP0aPzolIa6PTpzMPEyqspna2tl9SclGNmwwYoRw7P36lUDY3GzjBPA4NSlXBTWtC92nT7cEI3S32nxhOPIeqUuCkQbczQhNR5qGHAeKf1KyzSSWjjLBkvluJgJ7wXf/P5IJYS5NfJfESpaJOKUB96OycE7DkMx5SYYZo29ltQUN3JIgwktSE3yf46Au/ct3uZdJNYSc/Y2vxF96amqEgFr5CufaShB72KVvBRG6H6E7RinPrlabOxJI65UN83Dg7m5ljIS8TYd4pmuY/PvHjzj+Of06ftWeH/4Zm9koaxwk6omfGF0R7pEklmsmbE2YWj/f5lYRjxLJy2QVfPMXJPBD0bqNCPNFV6GPpoESP+1lt2+ez8n3CM9l1zeBFyHz+CoQLSguhQs5Fl3Yrh0EOIr9WTorEBJG5gmL/TV5JnGGFCmlCZcz3e0QIIULMZhCk7T07cIPgjsaUJY+ADJd2zJ1IY85o6+kcAdNDB1BNUJBvkj/hLxuduUJYShONgWRcsMXIg3KtkJF3R1rmm1lnVRYaKYCyVsRZErHK+DLzhWxAvZyN/re9eJCef8MJFg1JLxijscrGvqcfkIIwBmGRGuCAADm/eShZwhAxwKnIWCAISEAYQ0DNb8XvBVRP+TpGozbkTGtuJ8y7tElDXFQBEDVKXVTHgVna/tCrWxdqBs168IG4xqG0ZNx7QbbmgGXAIxwWDKy+TORSSE11jiD+UQoaFq0SU2W3xdXS14MG3cce/5qnAbueje+WG42Rab9O5S7DmXTaBHKdlMoG32FsmYMGcrQaB/K9rn2hcgoW7dlKOuwr1DWmmL5So2rV4xr1aHbaNzegOsc5EnXX+cclkQuFuwjyO5RzOrP4wLXFdRqXiGuqO5Vc2/4+720SGE48JehZD+yUDQ998Plt7Q1lXRDQnci9xiiOQvo/FWSGk1Cl7iKt4Sz2PaHGi5t/F1ntNS/ZONzqQhuHGSrdqp7A4Cj2tNNPqxsbAuNAnJS2XloiWnC5uSYTxRGOGZLcmzAPDCkmVtRJ7gRHK2XEDiGahBGAsxFeijRchPe1PBPMswKyK6ScpVrs8dWvfaoFR7F24Kait7D8+h64zwPh/Qt42P6VklfXGQrbu6NULkMqtiALhYx4aNq0O489f44RuDTciTSL8yRqF6n/5kS4nMScmGeCifOWM6HfjgPEleQmFzpVlh47cdybwdWeY/r50toa1fDl3mQnOTLjrkQaT1xYYWrUPVI6pS+foTbumImWGcmvCTqwX/vizrcF+32PMf2RaBpX9QfddYPPH+RtLSDZWsDO+Xg0bV2aalWBHRn3Kba/UqNC0HFuqYoxbXL5n29zlzZRuglJbCXq83i8AbosJzFQd7uPIvnLjuZxnOuOJ3GnYHSOCzzqa7vMdl1Jq/CXz+RydEH9c0hMr9Wix+P8yg9XX0QP4FmHHg0Fr6e2MABcpIDIVUIGMkpvug4UYEzo5zTVXOg7EIDnAqNgwn4JGzbojY/7e8bteNa+alXM9AB0Hbmd1TzOyM8YeFH3UojEsqDKRx7KftlhJe/xrYLDAdK7OYYnXo89+RJl5sX87htlgfJltqbx7W6x/usRKyuKuZd4ZvbDV34qEHTD5Qc0pYkWFzz2UG54gCwi4qj85DNkdx7zEK7mpJbsvS5pUUDyuHxYkH0qFY+5/dAAxQYWn13Kb0r8IBDd0Y3R6LlcgXFaQgag0GwAgwDVF7h9VwoaPWPYD5VoXA5T9qOM2gBgOqeTPfIN2LSx18uBDs8UR6qxBMVXtnDpj1sUY/qL+E/Vay2Pn0YLqiNSk61jGGren3Yqv6o/86p6qFVfkVsgwtX9fqhqv5lmZD4Cg8S31/c6IPV19WXXVZLwjy/vq7uvvOZ3ln7iub+K/VMff+xP7r/Hw==</diagram></mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@@ -0,0 +1,31 @@
Title: Kata Flow
participant Docker
participant Kata Runtime
participant virtcontainers
participant hypervisor
participant agent
participant shim-pod
participant shim-ctr
participant proxy
#Docker Create!
Docker->Kata Runtime: create
Kata Runtime->virtcontainers: CreateSandbox()
Note left of virtcontainers: Sandbox\nReady
virtcontainers->virtcontainers: createNetwork()
virtcontainers->virtcontainers: Execute PreStart Hooks
virtcontainers->+hypervisor: Start VM (inside the netns)
hypervisor-->-virtcontainers: VM started
virtcontainers->proxy: Start Proxy
proxy->hypervisor: Connect the VM
virtcontainers->+agent: CreateSandbox()
agent-->-virtcontainers: Sandbox Created
virtcontainers->+agent: CreateContainer()
agent-->-virtcontainers: Container Created
virtcontainers->shim-pod: Start Shim
shim->agent: ReadStdout() (blocking call)
shim->agent: ReadStderr() (blocking call)
shim->agent: WaitProcess() (blocking call)
Note left of virtcontainers: Container\nReady
virtcontainers-->Kata Runtime: End of CreateSandbox()
Kata Runtime-->Docker: End of create

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -0,0 +1,20 @@
Title: Docker Exec
participant Docker
participant kata-runtime
participant virtcontainers
participant shim
participant hypervisor
participant agent
participant proxy
#Docker Exec
Docker->kata-runtime: exec
kata-runtime->virtcontainers: EnterContainer()
virtcontainers->agent: exec
agent->virtcontainers: Process started in the container
virtcontainers->shim: start shim
shim->agent: ReadStdout()
shim->agent: ReadStderr()
shim->agent: WaitProcess()
virtcontainers->kata-runtime: End of EnterContainer()
kata-runtime-->Docker: End of exec

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -0,0 +1,20 @@
Title: Docker Start
participant Docker
participant Kata Runtime
participant virtcontainers
participant hypervisor
participant agent
participant shim-pod
participant shim-ctr
participant proxy
#Docker Start
Docker->Kata Runtime: start
Kata Runtime->virtcontainers: StartSandbox()
Note left of virtcontainers: Sandbox\nRunning
virtcontainers->+agent: StartContainer()
agent-->-virtcontainers: Container Started
Note left of virtcontainers: Container-pod\nRunning
virtcontainers->virtcontainers: Execute PostStart Hooks
virtcontainers-->Kata Runtime: End of StartSandbox()
Kata Runtime-->Docker: End of start

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

311
docs/design/architecture.md Normal file
View File

@@ -0,0 +1,311 @@
# Kata Containers Architecture
- [Kata Containers Architecture](#kata-containers-architecture)
- [Overview](#overview)
- [Virtualization](#virtualization)
- [Guest assets](#guest-assets)
- [Guest kernel](#guest-kernel)
- [Guest image](#guest-image)
- [Root filesystem image](#root-filesystem-image)
- [Initrd image](#initrd-image)
- [Agent](#agent)
- [Runtime](#runtime)
- [Configuration](#configuration)
- [Networking](#networking)
- [Network Hotplug](#network-hotplug)
- [Storage](#storage)
- [Kubernetes support](#kubernetes-support)
- [OCI annotations](#oci-annotations)
- [Mixing VM based and namespace based runtimes](#mixing-vm-based-and-namespace-based-runtimes)
- [Appendices](#appendices)
- [DAX](#dax)
## Overview
This is an architectural overview of Kata Containers, based on the 2.0 release.
The primary deliverable of the Kata Containers project is a CRI friendly shim. There is also a CRI friendly library API behind them.
The [Kata Containers runtime](../../src/runtime)
is compatible with the [OCI](https://github.com/opencontainers) [runtime specification](https://github.com/opencontainers/runtime-spec)
and therefore works seamlessly with the [Kubernetes\* Container Runtime Interface (CRI)](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md)
through the [CRI-O\*](https://github.com/kubernetes-incubator/cri-o) and
[Containerd\*](https://github.com/containerd/containerd) implementation.
Kata Containers creates a QEMU\*/KVM virtual machine for pod that `kubelet` (Kubernetes) creates respectively.
The [`containerd-shim-kata-v2` (shown as `shimv2` from this point onwards)](../../src/runtime/containerd-shim-v2)
is the Kata Containers entrypoint, which
implements the [Containerd Runtime V2 (Shim API)](https://github.com/containerd/containerd/tree/master/runtime/v2) for Kata.
Before `shimv2` (as done in [Kata Containers 1.x releases](https://github.com/kata-containers/runtime/releases)), we need to create a `containerd-shim` and a [`kata-shim`](https://github.com/kata-containers/shim) for each container and the Pod sandbox itself, plus an optional [`kata-proxy`](https://github.com/kata-containers/proxy) when VSOCK is not available. With `shimv2`, Kubernetes can launch Pod and OCI compatible containers with one shim (the `shimv2`) per Pod instead of `2N+1` shims, and no standalone `kata-proxy` process even if no VSOCK is available.
![Kubernetes integration with shimv2](arch-images/shimv2.svg)
The container process is then spawned by
[`kata-agent`](../../src/agent), an agent process running
as a daemon inside the virtual machine. `kata-agent` runs a [`ttRPC`](https://github.com/containerd/ttrpc-rust) server in
the guest using a VIRTIO serial or VSOCK interface which QEMU exposes as a socket
file on the host. `shimv2` uses a `ttRPC` protocol to communicate with
the agent. This protocol allows the runtime to send container management
commands to the agent. The protocol is also used to carry the I/O streams (stdout,
stderr, stdin) between the containers and the manage engines (e.g. CRI-O or containerd).
For any given container, both the init process and all potentially executed
commands within that container, together with their related I/O streams, need
to go through the VSOCK interface exported by QEMU.
The container workload, that is, the actual OCI bundle rootfs, is exported from the
host to the virtual machine. In the case where a block-based graph driver is
configured, `virtio-scsi` will be used. In all other cases a `virtio-fs` VIRTIO mount point
will be used. `kata-agent` uses this mount point as the root filesystem for the
container processes.
## Virtualization
How Kata Containers maps container concepts to virtual machine technologies, and how this is realized in the multiple
hypervisors and VMMs that Kata supports is described within the [virtualization documentation](./virtualization.md)
## Guest assets
The hypervisor will launch a virtual machine which includes a minimal guest kernel
and a guest image.
### Guest kernel
The guest kernel is passed to the hypervisor and used to boot the virtual
machine. The default kernel provided in Kata Containers is highly optimized for
kernel boot time and minimal memory footprint, providing only those services
required by a container workload. This is based on a very current upstream Linux
kernel.
### Guest image
Kata Containers supports both an `initrd` and `rootfs` based minimal guest image.
#### Root filesystem image
The default packaged root filesystem image, sometimes referred to as the "mini O/S", is a
highly optimized container bootstrap system based on [Clear Linux](https://clearlinux.org/). It provides an extremely minimal environment and
has a highly optimized boot path.
The only services running in the context of the mini O/S are the init daemon
(`systemd`) and the [Agent](#agent). The real workload the user wishes to run
is created using libcontainer, creating a container in the same manner that is done
by `runc`.
For example, when `ctr run -ti ubuntu date` is run:
- The hypervisor will boot the mini-OS image using the guest kernel.
- `systemd`, running inside the mini-OS context, will launch the `kata-agent` in
the same context.
- The agent will create a new confined context to run the specified command in
(`date` in this example).
- The agent will then execute the command (`date` in this example) inside this
new context, first setting the root filesystem to the expected Ubuntu\* root
filesystem.
#### Initrd image
A compressed `cpio(1)` archive, created from a rootfs which is loaded into memory and used as part of the Linux startup process. During startup, the kernel unpacks it into a special instance of a `tmpfs` that becomes the initial root filesystem.
The only service running in the context of the initrd is the [Agent](#agent) as the init daemon. The real workload the user wishes to run is created using libcontainer, creating a container in the same manner that is done by `runc`.
## Agent
[`kata-agent`](../../src/agent) is a process running in the guest as a supervisor for managing containers and processes running within those containers.
For the 2.0 release, the `kata-agent` is rewritten in the [RUST programming language](https://www.rust-lang.org/) so that we can minimize its memory footprint while keeping the memory safety of the original GO version of [`kata-agent` used in Kata Container 1.x](https://github.com/kata-containers/agent). This memory footprint reduction is pretty impressive, from tens of megabytes down to less than 100 kilobytes, enabling Kata Containers in more use cases like functional computing and edge computing.
The `kata-agent` execution unit is the sandbox. A `kata-agent` sandbox is a container sandbox defined by a set of namespaces (NS, UTS, IPC and PID). `shimv2` can
run several containers per VM to support container engines that require multiple
containers running inside a pod.
`kata-agent` communicates with the other Kata components over `ttRPC`.
## Runtime
`containerd-shim-kata-v2` is a [containerd runtime shimv2](https://github.com/containerd/containerd/blob/v1.4.1/runtime/v2/README.md) implementation and is responsible for handling the `runtime v2 shim APIs`, which is similar to [the OCI runtime specification](https://github.com/opencontainers/runtime-spec) but simplifies the architecture by loading the runtime once and making RPC calls to handle the various container lifecycle commands. This refinement is an improvement on the OCI specification which requires the container manager call the runtime binary multiple times, at least once for each lifecycle command.
`containerd-shim-kata-v2` heavily utilizes the
[virtcontainers package](../../src/runtime/virtcontainers/), which provides a generic, runtime-specification agnostic, hardware-virtualized containers library.
### Configuration
The runtime uses a TOML format configuration file called `configuration.toml`. By default this file is installed in the `/usr/share/defaults/kata-containers` directory and contains various settings such as the paths to the hypervisor, the guest kernel and the mini-OS image.
The actual configuration file paths can be determined by running:
```
$ kata-runtime --show-default-config-paths
```
Most users will not need to modify the configuration file.
The file is well commented and provides a few "knobs" that can be used to modify the behavior of the runtime and your chosen hypervisor.
The configuration file is also used to enable runtime [debug output](../Developer-Guide.md#enable-full-debug).
## Networking
Containers will typically live in their own, possibly shared, networking namespace.
At some point in a container lifecycle, container engines will set up that namespace
to add the container to a network which is isolated from the host network, but
which is shared between containers
In order to do so, container engines will usually add one end of a virtual
ethernet (`veth`) pair into the container networking namespace. The other end of
the `veth` pair is added to the host networking namespace.
This is a very namespace-centric approach as many hypervisors/VMMs cannot handle `veth`
interfaces. Typically, `TAP` interfaces are created for VM connectivity.
To overcome incompatibility between typical container engines expectations
and virtual machines, Kata Containers networking transparently connects `veth`
interfaces with `TAP` ones using Traffic Control:
![Kata Containers networking](arch-images/network.png)
With a TC filter in place, a redirection is created between the container network and the
virtual machine. As an example, the CNI may create a device, `eth0`, in the container's network
namespace, which is a VETH device. Kata Containers will create a tap device for the VM, `tap0_kata`,
and setup a TC redirection filter to mirror traffic from `eth0`'s ingress to `tap0_kata`'s egress,
and a second to mirror traffic from `tap0_kata`'s ingress to `eth0`'s egress.
Kata Containers maintains support for MACVTAP, which was an earlier implementation used in Kata. TC-filter
is the default because it allows for simpler configuration, better CNI plugin compatibility, and performance
on par with MACVTAP.
Kata Containers has deprecated support for bridge due to lacking performance relative to TC-filter and MACVTAP.
Kata Containers supports both
[CNM](https://github.com/docker/libnetwork/blob/master/docs/design.md#the-container-network-model)
and [CNI](https://github.com/containernetworking/cni) for networking management.
### Network Hotplug
Kata Containers has developed a set of network sub-commands and APIs to add, list and
remove a guest network endpoint and to manipulate the guest route table.
The following diagram illustrates the Kata Containers network hotplug workflow.
![Network Hotplug](arch-images/kata-containers-network-hotplug.png)
## Storage
Container workloads are shared with the virtualized environment through [virtio-fs](https://virtio-fs.gitlab.io/).
The [devicemapper `snapshotter`](https://github.com/containerd/containerd/tree/master/snapshots/devmapper) is a special case. The `snapshotter` uses dedicated block devices rather than formatted filesystems, and operates at the block level rather than the file level. This knowledge is used to directly use the underlying block device instead of the overlay file system for the container root file system. The block device maps to the top read-write layer for the overlay. This approach gives much better I/O performance compared to using `virtio-fs` to share the container file system.
Kata Containers has the ability to hotplug and remove block devices, which makes it possible to use block devices for containers started after the VM has been launched.
Users can check to see if the container uses the devicemapper block device as its rootfs by calling `mount(8)` within the container. If the devicemapper block device
is used, `/` will be mounted on `/dev/vda`. Users can disable direct mounting of the underlying block device through the runtime configuration.
## Kubernetes support
[Kubernetes\*](https://github.com/kubernetes/kubernetes/) is a popular open source
container orchestration engine. In Kubernetes, a set of containers sharing resources
such as networking, storage, mount, PID, etc. is called a
[Pod](https://kubernetes.io/docs/user-guide/pods/).
A node can have multiple pods, but at a minimum, a node within a Kubernetes cluster
only needs to run a container runtime and a container agent (called a
[Kubelet](https://kubernetes.io/docs/admin/kubelet/)).
A Kubernetes cluster runs a control plane where a scheduler (typically running on a
dedicated master node) calls into a compute Kubelet. This Kubelet instance is
responsible for managing the lifecycle of pods within the nodes and eventually relies
on a container runtime to handle execution. The Kubelet architecture decouples
lifecycle management from container execution through the dedicated
`gRPC` based [Container Runtime Interface (CRI)](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/node/container-runtime-interface-v1.md).
In other words, a Kubelet is a CRI client and expects a CRI implementation to
handle the server side of the interface.
[CRI-O\*](https://github.com/kubernetes-incubator/cri-o) and [Containerd\*](https://github.com/containerd/containerd/) are CRI implementations that rely on [OCI](https://github.com/opencontainers/runtime-spec)
compatible runtimes for managing container instances.
Kata Containers is an officially supported CRI-O and Containerd runtime. Refer to the following guides on how to set up Kata Containers with Kubernetes:
- [How to use Kata Containers and Containerd](../how-to/containerd-kata.md)
- [Run Kata Containers with Kubernetes](../how-to/run-kata-with-k8s.md)
#### OCI annotations
In order for the Kata Containers runtime (or any virtual machine based OCI compatible
runtime) to be able to understand if it needs to create a full virtual machine or if it
has to create a new container inside an existing pod's virtual machine, CRI-O adds
specific annotations to the OCI configuration file (`config.json`) which is passed to
the OCI compatible runtime.
Before calling its runtime, CRI-O will always add a `io.kubernetes.cri-o.ContainerType`
annotation to the `config.json` configuration file it produces from the Kubelet CRI
request. The `io.kubernetes.cri-o.ContainerType` annotation can either be set to `sandbox`
or `container`. Kata Containers will then use this annotation to decide if it needs to
respectively create a virtual machine or a container inside a virtual machine associated
with a Kubernetes pod:
```Go
containerType, err := ociSpec.ContainerType()
if err != nil {
return err
}
handleFactory(ctx, runtimeConfig)
disableOutput := noNeedForOutput(detach, ociSpec.Process.Terminal)
var process vc.Process
switch containerType {
case vc.PodSandbox:
process, err = createSandbox(ctx, ociSpec, runtimeConfig, containerID, bundlePath, console, disableOutput, systemdCgroup)
if err != nil {
return err
}
case vc.PodContainer:
process, err = createContainer(ctx, ociSpec, containerID, bundlePath, console, disableOutput)
if err != nil {
return err
}
}
```
#### Mixing VM based and namespace based runtimes
> **Note:** Since Kubernetes 1.12, the [`Kubernetes RuntimeClass`](https://kubernetes.io/docs/concepts/containers/runtime-class/)
> has been supported and the user can specify runtime without the non-standardized annotations.
With `RuntimeClass`, users can define Kata Containers as a `RuntimeClass` and then explicitly specify that a pod being created as a Kata Containers pod. For details, please refer to [How to use Kata Containers and Containerd](../../docs/how-to/containerd-kata.md).
# Appendices
## DAX
Kata Containers utilizes the Linux kernel DAX [(Direct Access filesystem)](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/dax.txt)
feature to efficiently map some host-side files into the guest VM space.
In particular, Kata Containers uses the QEMU NVDIMM feature to provide a
memory-mapped virtual device that can be used to DAX map the virtual machine's
root filesystem into the guest memory address space.
Mapping files using DAX provides a number of benefits over more traditional VM
file and device mapping mechanisms:
- Mapping as a direct access devices allows the guest to directly access
the host memory pages (such as via Execute In Place (XIP)), bypassing the guest
page cache. This provides both time and space optimizations.
- Mapping as a direct access device inside the VM allows pages from the
host to be demand loaded using page faults, rather than having to make requests
via a virtualized device (causing expensive VM exits/hypercalls), thus providing
a speed optimization.
- Utilizing `MAP_SHARED` shared memory on the host allows the host to efficiently
share pages.
Kata Containers uses the following steps to set up the DAX mappings:
1. QEMU is configured with an NVDIMM memory device, with a memory file
backend to map in the host-side file into the virtual NVDIMM space.
2. The guest kernel command line mounts this NVDIMM device with the DAX
feature enabled, allowing direct page mapping and access, thus bypassing the
guest page cache.
![DAX](arch-images/DAX.png)
Information on the use of NVDIMM via QEMU is available in the [QEMU source code](http://git.qemu-project.org/?p=qemu.git;a=blob;f=docs/nvdimm.txt;hb=HEAD)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
# Kata Containers E2E Flow
![Kata containers e2e flow](arch-images/katacontainers-e2e-with-bg.jpg)

335
docs/design/host-cgroups.md Normal file
View File

@@ -0,0 +1,335 @@
- [Host cgroup management](#host-cgroup-management)
- [Introduction](#introduction)
- [`SandboxCgroupOnly` enabled](#sandboxcgrouponly-enabled)
- [What does Kata do in this configuration?](#what-does-kata-do-in-this-configuration)
- [Why create a Kata-cgroup under the parent cgroup?](#why-create-a-kata-cgroup-under-the-parent-cgroup)
- [Improvements](#improvements)
- [`SandboxCgroupOnly` disabled (default, legacy)](#sandboxcgrouponly-disabled-default-legacy)
- [What does this method do?](#what-does-this-method-do)
- [Impact](#impact)
- [Supported cgroups](#supported-cgroups)
- [Cgroups V1](#cgroups-v1)
- [Cgroups V2](#cgroups-v2)
- [Distro Support](#distro-support)
- [Summary](#summary)
# Host cgroup management
## Introduction
In Kata Containers, workloads run in a virtual machine that is managed by a virtual
machine monitor (VMM) running on the host. As a result, Kata Containers run over two layers of cgroups. The
first layer is in the guest where the workload is placed, while the second layer is on the host where the
VMM and associated threads are running.
The OCI [runtime specification][linux-config] provides guidance on where the container cgroups should be placed:
> [`cgroupsPath`][cgroupspath]: (string, OPTIONAL) path to the cgroups. It can be used to either control the cgroups
> hierarchy for containers or to run a new process in an existing container
cgroups are hierarchical, and this can be seen with the following pod example:
- Pod 1: `cgroupsPath=/kubepods/pod1`
- Container 1:
`cgroupsPath=/kubepods/pod1/container1`
- Container 2:
`cgroupsPath=/kubepods/pod1/container2`
- Pod 2: `cgroupsPath=/kubepods/pod2`
- Container 1:
`cgroupsPath=/kubepods/pod2/container2`
- Container 2:
`cgroupsPath=/kubepods/pod2/container2`
Depending on the upper-level orchestrator, the cgroup under which the pod is placed is
managed by the orchestrator. In the case of Kubernetes, the pod-cgroup is created by Kubelet,
while the container cgroups are to be handled by the runtime. Kubelet will size the pod-cgroup
based on the container resource requirements.
Kata Containers introduces a non-negligible overhead for running a sandbox (pod). Based on this, two scenarios are possible:
1) The upper-layer orchestrator takes the overhead of running a sandbox into account when sizing the pod-cgroup, or
2) Kata Containers do not fully constrain the VMM and associated processes, instead placing a subset of them outside of the pod-cgroup.
Kata Containers provides two options for how cgroups are handled on the host. Selection of these options is done through
the `SandboxCgroupOnly` flag within the Kata Containers [configuration](../../src/runtime/README.md#configuration)
file.
## `SandboxCgroupOnly` enabled
With `SandboxCgroupOnly` enabled, it is expected that the parent cgroup is sized to take the overhead of running
a sandbox into account. This is ideal, as all the applicable Kata Containers components can be placed within the
given cgroup-path.
In the context of Kubernetes, Kubelet will size the pod-cgroup to take the overhead of running a Kata-based sandbox
into account. This will be feasible in the 1.16 Kubernetes release through the `PodOverhead` feature.
```
+----------------------------------------------------------+
| +---------------------------------------------------+ |
| | +---------------------------------------------+ | |
| | | +--------------------------------------+ | | |
| | | | kata-shimv2, VMM and threads: | | | |
| | | | (VMM, IO-threads, vCPU threads, etc)| | | |
| | | | | | | |
| | | | kata_<sandbox-id> | | | |
| | | +--------------------------------------+ | | |
| | | | | |
| | |Pod 1 | | |
| | +---------------------------------------------+ | |
| | | |
| | +---------------------------------------------+ | |
| | | +--------------------------------------+ | | |
| | | | kata-shimv2, VMM and threads: | | | |
| | | | (VMM, IO-threads, vCPU threads, etc)| | | |
| | | | | | | |
| | | | kata_<sandbox-id> | | | |
| | | +--------------------------------------+ | | |
| | |Pod 2 | | |
| | +---------------------------------------------+ | |
| |kubepods | |
| +---------------------------------------------------+ |
| |
|Node |
+----------------------------------------------------------+
```
### What does Kata do in this configuration?
1. Given a `PodSandbox` container creation, let:
```
podCgroup=Parent(container.CgroupsPath)
KataSandboxCgroup=<podCgroup>/kata_<PodSandboxID>
```
2. Create the cgroup, `KataSandboxCgroup`
3. Join the `KataSandboxCgroup`
Any process created by the runtime will be created in `KataSandboxCgroup`.
The runtime will limit the cgroup in the host only if the sandbox doesn't have a
container type annotation, but the caller is free to set the proper limits for the `podCgroup`.
In the example above the pod cgroups are `/kubepods/pod1` and `/kubepods/pod2`.
Kata creates the unrestricted sandbox cgroup under the pod cgroup.
### Why create a Kata-cgroup under the parent cgroup?
`Docker` does not have a notion of pods, and will not create a cgroup directory
to place a particular container in (i.e., all containers would be in a path like
`/docker/container-id`. To simplify the implementation and continue to support `Docker`,
Kata Containers creates the sandbox-cgroup, in the case of Kubernetes, or a container cgroup, in the case
of docker.
### Improvements
- Get statistics about pod resources
If the Kata caller wants to know the resource usage on the host it can get
statistics from the pod cgroup. All cgroups stats in the hierarchy will include
the Kata overhead. This gives the possibility of gathering usage-statics at the
pod level and the container level.
- Better host resource isolation
Because the Kata runtime will place all the Kata processes in the pod cgroup,
the resource limits that the caller applies to the pod cgroup will affect all
processes that belong to the Kata sandbox in the host. This will improve the
isolation in the host preventing Kata to become a noisy neighbor.
## `SandboxCgroupOnly` disabled (default, legacy)
If the cgroup provided to Kata is not sized appropriately, instability will be
introduced when fully constraining Kata components, and the user-workload will
see a subset of resources that were requested. Based on this, the default
handling for Kata Containers is to not fully constrain the VMM and Kata
components on the host.
```
+----------------------------------------------------------+
| +---------------------------------------------------+ |
| | +---------------------------------------------+ | |
| | | +--------------------------------------+ | | |
| | | |Container 1 |-|Container 2 | | | |
| | | | |-| | | | |
| | | | Shim+container1 |-| Shim+container2 | | | |
| | | +--------------------------------------+ | | |
| | | | | |
| | |Pod 1 | | |
| | +---------------------------------------------+ | |
| | | |
| | +---------------------------------------------+ | |
| | | +--------------------------------------+ | | |
| | | |Container 1 |-|Container 2 | | | |
| | | | |-| | | | |
| | | | Shim+container1 |-| Shim+container2 | | | |
| | | +--------------------------------------+ | | |
| | | | | |
| | |Pod 2 | | |
| | +---------------------------------------------+ | |
| |kubepods | |
| +---------------------------------------------------+ |
| +---------------------------------------------------+ |
| | Hypervisor | |
| |Kata | |
| +---------------------------------------------------+ |
| |
|Node |
+----------------------------------------------------------+
```
### What does this method do?
1. Given a container creation let `containerCgroupHost=container.CgroupsPath`
1. Rename `containerCgroupHost` path to add `kata_`
1. Let `PodCgroupPath=PodSanboxContainerCgroup` where `PodSanboxContainerCgroup` is the cgroup of a container of type `PodSandbox`
1. Limit the `PodCgroupPath` with the sum of all the container limits in the Sandbox
1. Move only vCPU threads of hypervisor to `PodCgroupPath`
1. Per each container, move its `kata-shim` to its own `containerCgroupHost`
1. Move hypervisor and applicable threads to memory cgroup `/kata`
_Note_: the Kata Containers runtime will not add all the hypervisor threads to
the cgroup path requested, only vCPUs. These threads are run unconstrained.
This mitigates the risk of the VMM and other threads receiving an out of memory scenario (`OOM`).
#### Impact
If resources are reserved at a system level to account for the overheads of
running sandbox containers, this configuration can be utilized with adequate
stability. In this scenario, non-negligible amounts of CPU and memory will be
utilized unaccounted for on the host.
[linux-config]: https://github.com/opencontainers/runtime-spec/blob/master/config-linux.md
[cgroupspath]: https://github.com/opencontainers/runtime-spec/blob/master/config-linux.md#cgroups-path
# Supported cgroups
Kata Containers supports cgroups `v1` and `v2`. In the following sections each cgroup is
described briefly and what changes are needed in Kata Containers to support it.
## Cgroups V1
`Cgroups V1` are under a [`tmpfs`][1] filesystem mounted at `/sys/fs/cgroup`, where each cgroup is
mounted under a separate cgroup filesystem. A `Cgroups v1` hierarchy may look like the following
diagram:
```
/sys/fs/cgroup/
├── blkio
│ ├── cgroup.procs
│ └── tasks
├── cpu -> cpu,cpuacct
├── cpuacct -> cpu,cpuacct
├── cpu,cpuacct
│ ├── cgroup.procs
│ └── tasks
├── cpuset
│ ├── cgroup.procs
│ └── tasks
├── devices
│ ├── cgroup.procs
│ └── tasks
├── freezer
│ ├── cgroup.procs
│ └── tasks
├── hugetlb
│ ├── cgroup.procs
│ └── tasks
├── memory
│ ├── cgroup.procs
│ └── tasks
├── net_cls -> net_cls,net_prio
├── net_cls,net_prio
│ ├── cgroup.procs
│ └── tasks
├── net_prio -> net_cls,net_prio
├── perf_event
│ ├── cgroup.procs
│ └── tasks
├── pids
│ ├── cgroup.procs
│ └── tasks
└── systemd
├── cgroup.procs
└── tasks
```
A process can join a cgroup by writing its process id (`pid`) to `cgroup.procs` file,
or join a cgroup partially by writing the task (thread) id (`tid`) to the `tasks` file.
Kata Containers supports `v1` by default and no change in the configuration file is needed.
To know more about `cgroups v1`, see [cgroupsv1(7)][2].
## Cgroups V2
`Cgroups v2` are also known as unified cgroups, unlike `cgroups v1`, the cgroups are
mounted under the same cgroup filesystem. A `Cgroups v2` hierarchy may look like the following
diagram:
```
/sys/fs/cgroup/system.slice
├── cgroup.controllers
├── cgroup.events
├── cgroup.freeze
├── cgroup.max.depth
├── cgroup.max.descendants
├── cgroup.procs
├── cgroup.stat
├── cgroup.subtree_control
├── cgroup.threads
├── cgroup.type
├── cpu.max
├── cpu.pressure
├── cpu.stat
├── cpu.weight
├── cpu.weight.nice
├── io.bfq.weight
├── io.latency
├── io.max
├── io.pressure
├── io.stat
├── memory.current
├── memory.events
├── memory.events.local
├── memory.high
├── memory.low
├── memory.max
├── memory.min
├── memory.oom.group
├── memory.pressure
├── memory.stat
├── memory.swap.current
├── memory.swap.events
├── memory.swap.max
├── pids.current
├── pids.events
└── pids.max
```
Same as `cgroups v1`, a process can join the cgroup by writing its process id (`pid`) to
`cgroup.procs` file, or join a cgroup partially by writing the task (thread) id (`tid`) to
`cgroup.threads` file.
For backwards compatibility Kata Containers defaults to supporting cgroups v1 by default.
To change this to `v2`, set `sandbox_cgroup_only=true` in the `configuration.toml` file.
To know more about `cgroups v2`, see [cgroupsv2(7)][3].
### Distro Support
Many Linux distributions do not yet support `cgroups v2`, as it is quite a recent addition.
For more information about the status of this feature see [issue #2494][4].
# Summary
| cgroup option | default? | status | pros | cons | cgroups
|-|-|-|-|-|-|
| `SandboxCgroupOnly=false` | yes | legacy | Easiest to make Kata work | Unaccounted for memory and resource utilization | v1
| `SandboxCgroupOnly=true` | no | recommended | Complete tracking of Kata memory and CPU utilization. In Kubernetes, the Kubelet can fully constrain Kata via the pod cgroup | Requires upper layer orchestrator which sizes sandbox cgroup appropriately | v1, v2
[1]: http://man7.org/linux/man-pages/man5/tmpfs.5.html
[2]: http://man7.org/linux/man-pages/man7/cgroups.7.html#CGROUPS_VERSION_1
[3]: http://man7.org/linux/man-pages/man7/cgroups.7.html#CGROUPS_VERSION_2
[4]: https://github.com/kata-containers/runtime/issues/2494

View File

@@ -0,0 +1,352 @@
# Kata 2.0 Metrics Design
* [Limitations of Kata 1.x and the target of Kata 2.0](#limitations-of-kata-1x-and-the-target-of-kata-20)
* [Metrics architecture](#metrics-architecture)
* [Kata monitor](#kata-monitor)
* [Kata runtime](#kata-runtime)
* [Kata agent](#kata-agent)
* [Performance and overhead](#performance-and-overhead)
* [Metrics list](#metrics-list)
* [Metric types](#metric-types)
* [Kata agent metrics](#kata-agent-metrics)
* [Firecracker metrics](#firecracker-metrics)
* [Kata guest OS metrics](#kata-guest-os-metrics)
* [Hypervisor metrics](#hypervisor-metrics)
* [Kata monitor metrics](#kata-monitor-metrics)
* [Kata containerd shim v2 metrics](#kata-containerd-shim-v2-metrics)
Kata implement CRI's API and support [`ContainerStats`](https://github.com/kubernetes/kubernetes/blob/release-1.18/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto#L101) and [`ListContainerStats`](https://github.com/kubernetes/kubernetes/blob/release-1.18/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto#L103) interfaces to expose containers metrics. User can use these interface to get basic metrics about container.
But unlike `runc`, Kata is a VM-based runtime and has a different architecture.
## Limitations of Kata 1.x and the target of Kata 2.0
Kata 1.x has a number of limitations related to observability that may be obstacles to running Kata Containers at scale.
In Kata 2.0, the following components will be able to provide more details about the system.
- containerd shim v2 (effectively `kata-runtime`)
- Hypervisor statistics
- Agent process
- Guest OS statistics
> **Note**: In Kata 1.x, the main user-facing component was the runtime (`kata-runtime`). From 1.5, Kata then introduced the Kata containerd shim v2 (`containerd-shim-kata-v2`) which is essentially a modified runtime that is loaded by containerd to simplify and improve the way VM-based containers are created and managed.
>
> For Kata 2.0, the main component is the Kata containerd shim v2, although the deprecated `kata-runtime` binary will be maintained for a period of time.
>
> Any mention of the "Kata runtime" in this document should be taken to refer to the Kata containerd shim v2 unless explicitly noted otherwise (for example by referring to it explicitly as the `kata-runtime` binary).
## Metrics architecture
Kata 2.0 metrics strongly depend on [Prometheus](https://prometheus.io/), a graduated project from CNCF.
Kata Containers 2.0 introduces a new Kata component called `kata-monitor` which is used to monitor the other Kata components on the host. It's the monitor interface with Kata runtime, and we can do something like these:
- Get metrics
- Get events
In this document we will cover metrics only. And until now it only supports metrics function.
This is the architecture overview metrics in Kata Containers 2.0.
![Kata Containers 2.0 metrics](arch-images/kata-2-metrics.png)
And the sequence diagram is shown below:
![Kata Containers 2.0 metrics ](arch-images/kata-metrics-sequence-diagram.png)
For a quick evaluation, you can check out [this how to](../how-to/how-to-set-prometheus-in-k8s.md).
### Kata monitor
`kata-monitor` is a management agent on one node, where many Kata containers are running. `kata-monitor`'s work include:
> **Note**: node is a single host system or a node in K8s clusters.
- Aggregate sandbox metrics running on this node, and add `sandbox_id` label
- As a Prometheus target, all metrics from Kata shim on this node will be collected by Prometheus indirectly. This can easy the targets count in Prometheus, and also need not to expose shim's metrics by `ip:port`
Only one `kata-monitor` process are running on one node.
`kata-monitor` is using a different communication channel other than that `conatinerd` communicating with Kata shim, and Kata shim listen on a new socket address for communicating with `kata-monitor`.
The way `kata-monitor` get shim's metrics socket file(`monitor_address`) like that `containerd` get shim address. The socket is an abstract socket and saved as file `abstract` with the same directory of `address` for `containerd`.
> **Note**: If there is no Prometheus server is configured, i.e., there is no scrape operations, `kata-monitor` will do nothing initiative.
### Kata runtime
Runtime is responsible for:
- Gather metrics about shim process
- Gather metrics about hypervisor process
- Gather metrics about running sandbox
- Get metrics from Kata agent(through `ttrpc`)
### Kata agent
Agent is responsible for:
- Gather agent process metrics
- Gather guest OS metrics
And in Kata 2.0, agent will add a new interface:
```protobuf
rpc GetMetrics(GetMetricsRequest) returns (Metrics);
message GetMetricsRequest {}
message Metrics {
string metrics = 1;
}
```
The `metrics` field is Prometheus encoded content. This can avoid defining a fixed structure in protocol buffers.
### Performance and overhead
Metrics should not become the bottleneck of system, downgrade the performance, and run with minimal overhead.
Requirements:
* Metrics **MUST** be quick to collect
* Metrics **MUST** be small.
* Metrics **MUST** be generated only if there are subscribers to the Kata metrics service
* Metrics **MUST** be stateless
In Kata 2.0, metrics are collected mainly from `/proc` filesystem, and consumed by Prometheus, based on a pull mode, that is mean if there is no Prometheus collector is running, so there will be zero overhead if nobody cares the metrics.
Metrics service also doesn't hold any metrics in memory.
|\*|No Sandbox | 1 Sandbox | 2 Sandboxes |
|---|---|---|---|
|Metrics count| 39 | 106 | 173 |
|Metrics size(bytes)| 9K | 144K | 283K |
|Metrics size(`gzipped`, bytes)| 2K | 10K | 17K |
*Metrics size*: Response size of one Prometheus scrape request.
It's easy to estimated that if there are 10 sandboxes running in the host, the size of one metrics fetch request issued by Prometheus will be about to 9 + (144 - 9) * 10 = 1.35M (not `gzipped`) or 2 + (10 - 2) * 10 = 82K (`gzipped`). Of course Prometheus support `gzip` compression, that can reduce the response size of every request.
And here is some test data:
- End-to-end (from Prometheus server to `kata-monitor` and `kata-monitor` write response back): 20ms(avg)
- Agent(RPC all from shim to agent): 3ms(avg)
Test infrastructure:
- OS: Ubuntu 20.04
- Hardware: Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz, 6 Cores, and 16GB memory.
**Scrape interval**
Prometheus default `scrape_interval` is 1 minute, and usually it is set to 15s. Small `scrape_interval` will cause more overhead, so user should set it on monitor demand.
## Metrics list
Here listed is all supported metrics by Kata 2.0. Some metrics is dependent on guest kernels in the VM, so there may be some different by your environment.
Metrics is categorized by component where metrics are collected from and for.
* [Metric types](#metric-types)
* [Kata agent metrics](#kata-agent-metrics)
* [Firecracker metrics](#firecracker-metrics)
* [Kata guest OS metrics](#kata-guest-os-metrics)
* [Hypervisor metrics](#hypervisor-metrics)
* [Kata monitor metrics](#kata-monitor-metrics)
* [Kata containerd shim v2 metrics](#kata-containerd-shim-v2-metrics)
> **Note**:
> * Labels here are not include `instance` and `job` labels that added by Prometheus.
> * Notes about metrics unit
> * `Kibibytes`, abbreviated `KiB`. 1 `KiB` equals 1024 B.
> * For some metrics (like network devices statistics from file `/proc/net/dev`), unit is depend on label( for example `recv_bytes` and `recv_packets` are having different units).
> * Most of these metrics is collected from `/proc` filesystem, so the unit of metrics are keeping the same unit as `/proc`. See the `proc(5)` manual page for further details.
### Metric types
Prometheus offer four core metric types.
- Counter: A counter is a cumulative metric that represents a single monotonically increasing counter whose value can only increase.
- Gauge: A gauge metric represents a single numerical value that can go up and down, typically used for measured values like current memory usage.
- Histogram: A histogram samples observations (usually things like request durations or response sizes) and counts them in configurable buckets.
- Summary: A summary samples observations like histogram, it can calculate configurable quantiles over a sliding time window.
See [Prometheus metric types](https://prometheus.io/docs/concepts/metric_types/) for detailed explanations about these metric types.
### Kata agent metrics
Agent's metrics contains metrics about agent process.
| Metric name | Type | Units | Labels | Introduced in Kata version |
|---|---|---|---|---|
| `kata_agent_io_stat`: <br> Agent process IO stat. | `GAUGE` | | <ul><li>`item` (see `/proc/<pid>/io`)<ul><li>`cancelled_write_byte`</li><li>`rchar`</li><li>`read_bytes`</li><li>`syscr`</li><li>`syscw`</li><li>`wchar`</li><li>`write_bytes`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_proc_stat`: <br> Agent process stat. | `GAUGE` | | <ul><li>`item` (see `/proc/<pid>/stat`)<ul><li>`cstime`</li><li>`cutime`</li><li>`stime`</li><li>`utime`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_proc_status`: <br> Agent process status. | `GAUGE` | | <ul><li>`item` (see `/proc/<pid>/status`)<ul><li>`hugetlbpages`</li><li>`nonvoluntary_ctxt_switches`</li><li>`rssanon`</li><li>`rssfile`</li><li>`rssshmem`</li><li>`vmdata`</li><li>`vmexe`</li><li>`vmhwm`</li><li>`vmlck`</li><li>`vmlib`</li><li>`vmpeak`</li><li>`vmpin`</li><li>`vmpte`</li><li>`vmrss`</li><li>`vmsize`</li><li>`vmstk`</li><li>`vmswap`</li><li>`voluntary_ctxt_switches`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_process_cpu_seconds_total`: <br> Total user and system CPU time spent in seconds. | `COUNTER` | `seconds` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_process_max_fds`: <br> Maximum number of open file descriptors. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_process_open_fds`: <br> Number of open file descriptors. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_process_resident_memory_bytes`: <br> Resident memory size in bytes. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_process_start_time_seconds`: <br> Start time of the process since `unix` epoch in seconds. | `GAUGE` | `seconds` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_process_virtual_memory_bytes`: <br> Virtual memory size in bytes. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_scrape_count`: <br> Metrics scrape count | `COUNTER` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_total_rss`: <br> Agent process total `rss` size | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_total_time`: <br> Agent process total time | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_agent_total_vm`: <br> Agent process total `vm` size | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
### Firecracker metrics
Metrics for Firecracker vmm.
| Metric name | Type | Units | Labels | Introduced in Kata version |
|---|---|---|---|---|
| `kata_firecracker_api_server`: <br> Metrics related to the internal API server. | `GAUGE` | | <ul><li>`item`<ul><li>`process_startup_time_cpu_us`</li><li>`process_startup_time_us`</li><li>`sync_response_fails`</li><li>`sync_vmm_send_timeout_count`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_block`: <br> Block Device associated metrics. | `GAUGE` | | <ul><li>`item`<ul><li>`activate_fails`</li><li>`cfg_fails`</li><li>`event_fails`</li><li>`execute_fails`</li><li>`flush_count`</li><li>`invalid_reqs_count`</li><li>`no_avail_buffer`</li><li>`queue_event_count`</li><li>`rate_limiter_event_count`</li><li>`rate_limiter_throttled_events`</li><li>`read_bytes`</li><li>`read_count`</li><li>`update_count`</li><li>`update_fails`</li><li>`write_bytes`</li><li>`write_count`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_get_api_requests`: <br> Metrics specific to GET API Requests for counting user triggered actions and/or failures. | `GAUGE` | | <ul><li>`item`<ul><li>`instance_info_count`</li><li>`instance_info_fails`</li><li>`machine_cfg_count`</li><li>`machine_cfg_fails`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_i8042`: <br> Metrics specific to the i8042 device. | `GAUGE` | | <ul><li>`item`<ul><li>`error_count`</li><li>`missed_read_count`</li><li>`missed_write_count`</li><li>`read_count`</li><li>`reset_count`</li><li>`write_count`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_latencies_us`: <br> Performance metrics related for the moment only to snapshots. | `GAUGE` | | <ul><li>`item`<ul><li>`diff_create_snapshot`</li><li>`full_create_snapshot`</li><li>`load_snapshot`</li><li>`pause_vm`</li><li>`resume_vm`</li><li>`vmm_diff_create_snapshot`</li><li>`vmm_full_create_snapshot`</li><li>`vmm_load_snapshot`</li><li>`vmm_pause_vm`</li><li>`vmm_resume_vm`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_logger`: <br> Metrics for the logging subsystem. | `GAUGE` | | <ul><li>`item`<ul><li>`log_fails`</li><li>`metrics_fails`</li><li>`missed_log_count`</li><li>`missed_metrics_count`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_mmds`: <br> Metrics for the MMDS functionality. | `GAUGE` | | <ul><li>`item`<ul><li>`connections_created`</li><li>`connections_destroyed`</li><li>`rx_accepted`</li><li>`rx_accepted_err`</li><li>`rx_accepted_unusual`</li><li>`rx_bad_eth`</li><li>`rx_count`</li><li>`tx_bytes`</li><li>`tx_count`</li><li>`tx_errors`</li><li>`tx_frames`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_net`: <br> Network-related metrics. | `GAUGE` | | <ul><li>`item`<ul><li>`activate_fails`</li><li>`cfg_fails`</li><li>`event_fails`</li><li>`mac_address_updates`</li><li>`no_rx_avail_buffer`</li><li>`no_tx_avail_buffer`</li><li>`rx_bytes_count`</li><li>`rx_count`</li><li>`rx_event_rate_limiter_count`</li><li>`rx_fails`</li><li>`rx_packets_count`</li><li>`rx_partial_writes`</li><li>`rx_queue_event_count`</li><li>`rx_rate_limiter_throttled`</li><li>`rx_tap_event_count`</li><li>`tap_read_fails`</li><li>`tap_write_fails`</li><li>`tx_bytes_count`</li><li>`tx_count`</li><li>`tx_fails`</li><li>`tx_malformed_frames`</li><li>`tx_packets_count`</li><li>`tx_partial_reads`</li><li>`tx_queue_event_count`</li><li>`tx_rate_limiter_event_count`</li><li>`tx_rate_limiter_throttled`</li><li>`tx_spoofed_mac_count`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_patch_api_requests`: <br> Metrics specific to PATCH API Requests for counting user triggered actions and/or failures. | `GAUGE` | | <ul><li>`item`<ul><li>`drive_count`</li><li>`drive_fails`</li><li>`machine_cfg_count`</li><li>`machine_cfg_fails`</li><li>`network_count`</li><li>`network_fails`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_put_api_requests`: <br> Metrics specific to PUT API Requests for counting user triggered actions and/or failures. | `GAUGE` | | <ul><li>`item`<ul><li>`actions_count`</li><li>`actions_fails`</li><li>`boot_source_count`</li><li>`boot_source_fails`</li><li>`drive_count`</li><li>`drive_fails`</li><li>`logger_count`</li><li>`logger_fails`</li><li>`machine_cfg_count`</li><li>`machine_cfg_fails`</li><li>`metrics_count`</li><li>`metrics_fails`</li><li>`network_count`</li><li>`network_fails`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_rtc`: <br> Metrics specific to the RTC device. | `GAUGE` | | <ul><li>`item`<ul><li>`error_count`</li><li>`missed_read_count`</li><li>`missed_write_count`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_seccomp`: <br> Metrics for the seccomp filtering. | `GAUGE` | | <ul><li>`item`<ul><li>`num_faults`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_signals`: <br> Metrics related to signals. | `GAUGE` | | <ul><li>`item`<ul><li>`sigbus`</li><li>`sigsegv`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_uart`: <br> Metrics specific to the UART device. | `GAUGE` | | <ul><li>`item`<ul><li>`error_count`</li><li>`flush_count`</li><li>`missed_read_count`</li><li>`missed_write_count`</li><li>`read_count`</li><li>`write_count`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_vcpu`: <br> Metrics specific to VCPUs' mode of functioning. | `GAUGE` | | <ul><li>`item`<ul><li>`exit_io_in`</li><li>`exit_io_out`</li><li>`exit_mmio_read`</li><li>`exit_mmio_write`</li><li>`failures`</li><li>`filter_cpuid`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_vmm`: <br> Metrics specific to the machine manager as a whole. | `GAUGE` | | <ul><li>`item`<ul><li>`device_events`</li><li>`panic_count`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_firecracker_vsock`: <br> Vsock-related metrics. | `GAUGE` | | <ul><li>`item`<ul><li>`activate_fails`</li><li>`cfg_fails`</li><li>`conn_event_fails`</li><li>`conns_added`</li><li>`conns_killed`</li><li>`conns_removed`</li><li>`ev_queue_event_fails`</li><li>`killq_resync`</li><li>`muxer_event_fails`</li><li>`rx_bytes_count`</li><li>`rx_packets_count`</li><li>`rx_queue_event_count`</li><li>`rx_queue_event_fails`</li><li>`rx_read_fails`</li><li>`tx_bytes_count`</li><li>`tx_flush_fails`</li><li>`tx_packets_count`</li><li>`tx_queue_event_count`</li><li>`tx_queue_event_fails`</li><li>`tx_write_fails`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
### Kata guest OS metrics
Guest OS's metrics in hypervisor.
| Metric name | Type | Units | Labels | Introduced in Kata version |
|---|---|---|---|---|
| `kata_guest_cpu_time`: <br> Guest CPU stat. | `GAUGE` | | <ul><li>`cpu` (CPU no. and total for all CPUs)<ul><li>`0` (CPU 0)</li><li>`1` (CPU 1)</li><li>`total` (for all CPUs)</li></ul></li><li>`item` (Kernel/system statistics, from `/proc/stat`)<ul><li>`guest`</li><li>`guest_nice`</li><li>`idle`</li><li>`iowait`</li><li>`irq`</li><li>`nice`</li><li>`softirq`</li><li>`steal`</li><li>`system`</li><li>`user`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_guest_diskstat`: <br> Disks stat in system. | `GAUGE` | | <ul><li>`disk` (disk name)</li><li>`item` (see `/proc/diskstats`)<ul><li>`discards`</li><li>`discards_merged`</li><li>`flushes`</li><li>`in_progress`</li><li>`merged`</li><li>`reads`</li><li>`sectors_discarded`</li><li>`sectors_read`</li><li>`sectors_written`</li><li>`time_discarding`</li><li>`time_flushing`</li><li>`time_in_progress`</li><li>`time_reading`</li><li>`time_writing`</li><li>`weighted_time_in_progress`</li><li>`writes`</li><li>`writes_merged`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_guest_load`: <br> Guest system load. | `GAUGE` | | <ul><li>`item`<ul><li>`load1`</li><li>`load15`</li><li>`load5`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_guest_meminfo`: <br> Statistics about memory usage on the system. | `GAUGE` | | <ul><li>`item` (see `/proc/meminfo`)<ul><li>`active`</li><li>`active_anon`</li><li>`active_file`</li><li>`anon_hugepages`</li><li>`anon_pages`</li><li>`bounce`</li><li>`buffers`</li><li>`cached`</li><li>`cma_free`</li><li>`cma_total`</li><li>`commit_limit`</li><li>`committed_as`</li><li>`direct_map_1G`</li><li>`direct_map_2M`</li><li>`direct_map_4M`</li><li>`direct_map_4k`</li><li>`dirty`</li><li>`hardware_corrupted`</li><li>`high_free`</li><li>`high_total`</li><li>`hugepages_free`</li><li>`hugepages_rsvd`</li><li>`hugepages_surp`</li><li>`hugepages_total`</li><li>`hugepagesize`</li><li>`hugetlb`</li><li>`inactive`</li><li>`inactive_anon`</li><li>`inactive_file`</li><li>`k_reclaimable`</li><li>`kernel_stack`</li><li>`low_free`</li><li>`low_total`</li><li>`mapped`</li><li>`mem_available`</li><li>`mem_free`</li><li>`mem_total`</li><li>`mlocked`</li><li>`mmap_copy`</li><li>`nfs_unstable`</li><li>`page_tables`</li><li>`per_cpu`</li><li>`quicklists`</li><li>`s_reclaimable`</li><li>`s_unreclaim`</li><li>`shmem`</li><li>`shmem_hugepages`</li><li>`shmem_pmd_mapped`</li><li>`slab`</li><li>`swap_cached`</li><li>`swap_free`</li><li>`swap_total`</li><li>`unevictable`</li><li>`vmalloc_chunk`</li><li>`vmalloc_total`</li><li>`vmalloc_used`</li><li>`writeback`</li><li>`writeback_tmp`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_guest_netdev_stat`: <br> Guest net devices stats. | `GAUGE` | | <ul><li>`interface` (network device name)</li><li>`item` (see `/proc/net/dev`)<ul><li>`recv_bytes`</li><li>`recv_compressed`</li><li>`recv_drop`</li><li>`recv_errs`</li><li>`recv_fifo`</li><li>`recv_frame`</li><li>`recv_multicast`</li><li>`recv_packets`</li><li>`sent_bytes`</li><li>`sent_carrier`</li><li>`sent_colls`</li><li>`sent_compressed`</li><li>`sent_drop`</li><li>`sent_errs`</li><li>`sent_fifo`</li><li>`sent_packets`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_guest_tasks`: <br> Guest system load. | `GAUGE` | | <ul><li>`item`<ul><li>`cur`</li><li>`max`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_guest_vm_stat`: <br> Guest virtual memory stat. | `GAUGE` | | <ul><li>`item` (see `/proc/vmstat`)<ul><li>`allocstall_dma`</li><li>`allocstall_dma32`</li><li>`allocstall_movable`</li><li>`allocstall_normal`</li><li>`balloon_deflate`</li><li>`balloon_inflate`</li><li>`compact_daemon_free_scanned`</li><li>`compact_daemon_migrate_scanned`</li><li>`compact_daemon_wake`</li><li>`compact_fail`</li><li>`compact_free_scanned`</li><li>`compact_isolated`</li><li>`compact_migrate_scanned`</li><li>`compact_stall`</li><li>`compact_success`</li><li>`drop_pagecache`</li><li>`drop_slab`</li><li>`htlb_buddy_alloc_fail`</li><li>`htlb_buddy_alloc_success`</li><li>`kswapd_high_wmark_hit_quickly`</li><li>`kswapd_inodesteal`</li><li>`kswapd_low_wmark_hit_quickly`</li><li>`nr_active_anon`</li><li>`nr_active_file`</li><li>`nr_anon_pages`</li><li>`nr_anon_transparent_hugepages`</li><li>`nr_bounce`</li><li>`nr_dirtied`</li><li>`nr_dirty`</li><li>`nr_dirty_background_threshold`</li><li>`nr_dirty_threshold`</li><li>`nr_file_pages`</li><li>`nr_free_cma`</li><li>`nr_free_pages`</li><li>`nr_inactive_anon`</li><li>`nr_inactive_file`</li><li>`nr_isolated_anon`</li><li>`nr_isolated_file`</li><li>`nr_kernel_stack`</li><li>`nr_mapped`</li><li>`nr_mlock`</li><li>`nr_page_table_pages`</li><li>`nr_shmem`</li><li>`nr_shmem_hugepages`</li><li>`nr_shmem_pmdmapped`</li><li>`nr_slab_reclaimable`</li><li>`nr_slab_unreclaimable`</li><li>`nr_unevictable`</li><li>`nr_unstable`</li><li>`nr_vmscan_immediate_reclaim`</li><li>`nr_vmscan_write`</li><li>`nr_writeback`</li><li>`nr_writeback_temp`</li><li>`nr_written`</li><li>`nr_zone_active_anon`</li><li>`nr_zone_active_file`</li><li>`nr_zone_inactive_anon`</li><li>`nr_zone_inactive_file`</li><li>`nr_zone_unevictable`</li><li>`nr_zone_write_pending`</li><li>`oom_kill`</li><li>`pageoutrun`</li><li>`pgactivate`</li><li>`pgalloc_dma`</li><li>`pgalloc_dma32`</li><li>`pgalloc_movable`</li><li>`pgalloc_normal`</li><li>`pgdeactivate`</li><li>`pgfault`</li><li>`pgfree`</li><li>`pginodesteal`</li><li>`pglazyfree`</li><li>`pglazyfreed`</li><li>`pgmajfault`</li><li>`pgmigrate_fail`</li><li>`pgmigrate_success`</li><li>`pgpgin`</li><li>`pgpgout`</li><li>`pgrefill`</li><li>`pgrotated`</li><li>`pgscan_direct`</li><li>`pgscan_direct_throttle`</li><li>`pgscan_kswapd`</li><li>`pgskip_dma`</li><li>`pgskip_dma32`</li><li>`pgskip_movable`</li><li>`pgskip_normal`</li><li>`pgsteal_direct`</li><li>`pgsteal_kswapd`</li><li>`pswpin`</li><li>`pswpout`</li><li>`slabs_scanned`</li><li>`swap_ra`</li><li>`swap_ra_hit`</li><li>`unevictable_pgs_cleared`</li><li>`unevictable_pgs_culled`</li><li>`unevictable_pgs_mlocked`</li><li>`unevictable_pgs_munlocked`</li><li>`unevictable_pgs_rescued`</li><li>`unevictable_pgs_scanned`</li><li>`unevictable_pgs_stranded`</li><li>`workingset_activate`</li><li>`workingset_nodereclaim`</li><li>`workingset_refault`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
### Hypervisor metrics
Hypervisors metrics, collected mainly from `proc` filesystem of hypervisor process.
| Metric name | Type | Units | Labels | Introduced in Kata version |
|---|---|---|---|---|
| `kata_hypervisor_fds`: <br> Open FDs for hypervisor. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_hypervisor_io_stat`: <br> Process IO statistics. | `GAUGE` | | <ul><li>`item` (see `/proc/<pid>/io`)<ul><li>`cancelledwritebytes`</li><li>`rchar`</li><li>`readbytes`</li><li>`syscr`</li><li>`syscw`</li><li>`wchar`</li><li>`writebytes`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_hypervisor_netdev`: <br> Net devices statistics. | `GAUGE` | | <ul><li>`interface` (network device name)</li><li>`item` (see `/proc/net/dev`)<ul><li>`recv_bytes`</li><li>`recv_compressed`</li><li>`recv_drop`</li><li>`recv_errs`</li><li>`recv_fifo`</li><li>`recv_frame`</li><li>`recv_multicast`</li><li>`recv_packets`</li><li>`sent_bytes`</li><li>`sent_carrier`</li><li>`sent_colls`</li><li>`sent_compressed`</li><li>`sent_drop`</li><li>`sent_errs`</li><li>`sent_fifo`</li><li>`sent_packets`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_hypervisor_proc_stat`: <br> Hypervisor process statistics. | `GAUGE` | | <ul><li>`item` (see `/proc/<pid>/stat`)<ul><li>`cstime`</li><li>`cutime`</li><li>`stime`</li><li>`utime`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_hypervisor_proc_status`: <br> Hypervisor process status. | `GAUGE` | | <ul><li>`item` (see `/proc/<pid>/status`)<ul><li>`hugetlbpages`</li><li>`nonvoluntary_ctxt_switches`</li><li>`rssanon`</li><li>`rssfile`</li><li>`rssshmem`</li><li>`vmdata`</li><li>`vmexe`</li><li>`vmhwm`</li><li>`vmlck`</li><li>`vmlib`</li><li>`vmpeak`</li><li>`vmpin`</li><li>`vmpmd`</li><li>`vmpte`</li><li>`vmrss`</li><li>`vmsize`</li><li>`vmstk`</li><li>`vmswap`</li><li>`voluntary_ctxt_switches`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_hypervisor_threads`: <br> Hypervisor process threads. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
### Kata monitor metrics
Metrics about monitor itself.
| Metric name | Type | Units | Labels | Introduced in Kata version |
|---|---|---|---|---|
| `kata_monitor_go_gc_duration_seconds`: <br> A summary of the pause duration of garbage collection cycles. | `SUMMARY` | `seconds` | | 2.0.0 |
| `kata_monitor_go_goroutines`: <br> Number of goroutines that currently exist. | `GAUGE` | | | 2.0.0 |
| `kata_monitor_go_info`: <br> Information about the Go environment. | `GAUGE` | | <ul><li>`version` (golang version)<ul><li>`go1.13.9` (environment dependent variable)</li></ul></li></ul> | 2.0.0 |
| `kata_monitor_go_memstats_alloc_bytes`: <br> Number of bytes allocated and still in use. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_alloc_bytes_total`: <br> Total number of bytes allocated, even if freed. | `COUNTER` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_buck_hash_sys_bytes`: <br> Number of bytes used by the profiling bucket hash table. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_frees_total`: <br> Total number of frees. | `COUNTER` | | | 2.0.0 |
| `kata_monitor_go_memstats_gc_cpu_fraction`: <br> The fraction of this program's available CPU time used by the GC since the program started. | `GAUGE` | | | 2.0.0 |
| `kata_monitor_go_memstats_gc_sys_bytes`: <br> Number of bytes used for garbage collection system metadata. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_heap_alloc_bytes`: <br> Number of heap bytes allocated and still in use. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_heap_idle_bytes`: <br> Number of heap bytes waiting to be used. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_heap_inuse_bytes`: <br> Number of heap bytes that are in use. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_heap_objects`: <br> Number of allocated objects. | `GAUGE` | | | 2.0.0 |
| `kata_monitor_go_memstats_heap_released_bytes`: <br> Number of heap bytes released to OS. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_heap_sys_bytes`: <br> Number of heap bytes obtained from system. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_last_gc_time_seconds`: <br> Number of seconds since 1970 of last garbage collection. | `GAUGE` | `seconds` | | 2.0.0 |
| `kata_monitor_go_memstats_lookups_total`: <br> Total number of pointer lookups. | `COUNTER` | | | 2.0.0 |
| `kata_monitor_go_memstats_mallocs_total`: <br> Total number of `mallocs`. | `COUNTER` | | | 2.0.0 |
| `kata_monitor_go_memstats_mcache_inuse_bytes`: <br> Number of bytes in use by `mcache` structures. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_mcache_sys_bytes`: <br> Number of bytes used for `mcache` structures obtained from system. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_mspan_inuse_bytes`: <br> Number of bytes in use by `mspan` structures. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_mspan_sys_bytes`: <br> Number of bytes used for `mspan` structures obtained from system. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_next_gc_bytes`: <br> Number of heap bytes when next garbage collection will take place. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_other_sys_bytes`: <br> Number of bytes used for other system allocations. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_stack_inuse_bytes`: <br> Number of bytes in use by the stack allocator. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_stack_sys_bytes`: <br> Number of bytes obtained from system for stack allocator. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_memstats_sys_bytes`: <br> Number of bytes obtained from system. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_go_threads`: <br> Number of OS threads created. | `GAUGE` | | | 2.0.0 |
| `kata_monitor_process_cpu_seconds_total`: <br> Total user and system CPU time spent in seconds. | `COUNTER` | `seconds` | | 2.0.0 |
| `kata_monitor_process_max_fds`: <br> Maximum number of open file descriptors. | `GAUGE` | | | 2.0.0 |
| `kata_monitor_process_open_fds`: <br> Number of open file descriptors. | `GAUGE` | | | 2.0.0 |
| `kata_monitor_process_resident_memory_bytes`: <br> Resident memory size in bytes. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_process_start_time_seconds`: <br> Start time of the process since `unix` epoch in seconds. | `GAUGE` | `seconds` | | 2.0.0 |
| `kata_monitor_process_virtual_memory_bytes`: <br> Virtual memory size in bytes. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_process_virtual_memory_max_bytes`: <br> Maximum amount of virtual memory available in bytes. | `GAUGE` | `bytes` | | 2.0.0 |
| `kata_monitor_running_shim_count`: <br> Running shim count(running sandboxes). | `GAUGE` | | | 2.0.0 |
| `kata_monitor_scrape_count`: <br> Scape count. | `COUNTER` | | | 2.0.0 |
| `kata_monitor_scrape_durations_histogram_milliseconds`: <br> Time used to scrape from shims | `HISTOGRAM` | `milliseconds` | | 2.0.0 |
| `kata_monitor_scrape_failed_count`: <br> Failed scape count. | `COUNTER` | | | 2.0.0 |
### Kata containerd shim v2 metrics
Metrics about Kata containerd shim v2 process.
| Metric name | Type | Units | Labels | Introduced in Kata version |
|---|---|---|---|---|
| `kata_shim_agent_rpc_durations_histogram_milliseconds`: <br> RPC latency distributions. | `HISTOGRAM` | `milliseconds` | <ul><li>`action` (RPC actions of Kata agent)<ul><li>`grpc.CheckRequest`</li><li>`grpc.CloseStdinRequest`</li><li>`grpc.CopyFileRequest`</li><li>`grpc.CreateContainerRequest`</li><li>`grpc.CreateSandboxRequest`</li><li>`grpc.DestroySandboxRequest`</li><li>`grpc.ExecProcessRequest`</li><li>`grpc.GetMetricsRequest`</li><li>`grpc.GuestDetailsRequest`</li><li>`grpc.ListInterfacesRequest`</li><li>`grpc.ListProcessesRequest`</li><li>`grpc.ListRoutesRequest`</li><li>`grpc.MemHotplugByProbeRequest`</li><li>`grpc.OnlineCPUMemRequest`</li><li>`grpc.PauseContainerRequest`</li><li>`grpc.RemoveContainerRequest`</li><li>`grpc.ReseedRandomDevRequest`</li><li>`grpc.ResumeContainerRequest`</li><li>`grpc.SetGuestDateTimeRequest`</li><li>`grpc.SignalProcessRequest`</li><li>`grpc.StartContainerRequest`</li><li>`grpc.StartTracingRequest`</li><li>`grpc.StatsContainerRequest`</li><li>`grpc.StopTracingRequest`</li><li>`grpc.TtyWinResizeRequest`</li><li>`grpc.UpdateContainerRequest`</li><li>`grpc.UpdateInterfaceRequest`</li><li>`grpc.UpdateRoutesRequest`</li><li>`grpc.WaitProcessRequest`</li><li>`grpc.WriteStreamRequest`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_fds`: <br> Kata containerd shim v2 open FDs. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_gc_duration_seconds`: <br> A summary of the pause duration of garbage collection cycles. | `SUMMARY` | `seconds` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_goroutines`: <br> Number of goroutines that currently exist. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_info`: <br> Information about the Go environment. | `GAUGE` | | <ul><li>`sandbox_id`</li><li>`version` (golang version)<ul><li>`go1.13.9` (environment dependent variable)</li></ul></li></ul> | 2.0.0 |
| `kata_shim_go_memstats_alloc_bytes`: <br> Number of bytes allocated and still in use. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_alloc_bytes_total`: <br> Total number of bytes allocated, even if freed. | `COUNTER` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_buck_hash_sys_bytes`: <br> Number of bytes used by the profiling bucket hash table. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_frees_total`: <br> Total number of frees. | `COUNTER` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_gc_cpu_fraction`: <br> The fraction of this program's available CPU time used by the GC since the program started. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_gc_sys_bytes`: <br> Number of bytes used for garbage collection system metadata. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_heap_alloc_bytes`: <br> Number of heap bytes allocated and still in use. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_heap_idle_bytes`: <br> Number of heap bytes waiting to be used. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_heap_inuse_bytes`: <br> Number of heap bytes that are in use. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_heap_objects`: <br> Number of allocated objects. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_heap_released_bytes`: <br> Number of heap bytes released to OS. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_heap_sys_bytes`: <br> Number of heap bytes obtained from system. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_last_gc_time_seconds`: <br> Number of seconds since 1970 of last garbage collection. | `GAUGE` | `seconds` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_lookups_total`: <br> Total number of pointer lookups. | `COUNTER` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_mallocs_total`: <br> Total number of `mallocs`. | `COUNTER` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_mcache_inuse_bytes`: <br> Number of bytes in use by `mcache` structures. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_mcache_sys_bytes`: <br> Number of bytes used for `mcache` structures obtained from system. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_mspan_inuse_bytes`: <br> Number of bytes in use by `mspan` structures. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_mspan_sys_bytes`: <br> Number of bytes used for `mspan` structures obtained from system. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_next_gc_bytes`: <br> Number of heap bytes when next garbage collection will take place. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_other_sys_bytes`: <br> Number of bytes used for other system allocations. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_stack_inuse_bytes`: <br> Number of bytes in use by the stack allocator. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_stack_sys_bytes`: <br> Number of bytes obtained from system for stack allocator. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_memstats_sys_bytes`: <br> Number of bytes obtained from system. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_go_threads`: <br> Number of OS threads created. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_io_stat`: <br> Kata containerd shim v2 process IO statistics. | `GAUGE` | | <ul><li>`item` (see `/proc/<pid>/io`)<ul><li>`cancelledwritebytes`</li><li>`rchar`</li><li>`readbytes`</li><li>`syscr`</li><li>`syscw`</li><li>`wchar`</li><li>`writebytes`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_netdev`: <br> Kata containerd shim v2 network devices statistics. | `GAUGE` | | <ul><li>`interface` (network device name)</li><li>`item` (see `/proc/net/dev`)<ul><li>`recv_bytes`</li><li>`recv_compressed`</li><li>`recv_drop`</li><li>`recv_errs`</li><li>`recv_fifo`</li><li>`recv_frame`</li><li>`recv_multicast`</li><li>`recv_packets`</li><li>`sent_bytes`</li><li>`sent_carrier`</li><li>`sent_colls`</li><li>`sent_compressed`</li><li>`sent_drop`</li><li>`sent_errs`</li><li>`sent_fifo`</li><li>`sent_packets`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_pod_overhead_cpu`: <br> Kata Pod overhead for CPU resources(percent). | `GAUGE` | percent | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_pod_overhead_memory_in_bytes`: <br> Kata Pod overhead for memory resources(bytes). | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_proc_stat`: <br> Kata containerd shim v2 process statistics. | `GAUGE` | | <ul><li>`item` (see `/proc/<pid>/stat`)<ul><li>`cstime`</li><li>`cutime`</li><li>`stime`</li><li>`utime`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_proc_status`: <br> Kata containerd shim v2 process status. | `GAUGE` | | <ul><li>`item` (see `/proc/<pid>/status`)<ul><li>`hugetlbpages`</li><li>`nonvoluntary_ctxt_switches`</li><li>`rssanon`</li><li>`rssfile`</li><li>`rssshmem`</li><li>`vmdata`</li><li>`vmexe`</li><li>`vmhwm`</li><li>`vmlck`</li><li>`vmlib`</li><li>`vmpeak`</li><li>`vmpin`</li><li>`vmpmd`</li><li>`vmpte`</li><li>`vmrss`</li><li>`vmsize`</li><li>`vmstk`</li><li>`vmswap`</li><li>`voluntary_ctxt_switches`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_process_cpu_seconds_total`: <br> Total user and system CPU time spent in seconds. | `COUNTER` | `seconds` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_process_max_fds`: <br> Maximum number of open file descriptors. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_process_open_fds`: <br> Number of open file descriptors. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_process_resident_memory_bytes`: <br> Resident memory size in bytes. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_process_start_time_seconds`: <br> Start time of the process since `unix` epoch in seconds. | `GAUGE` | `seconds` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_process_virtual_memory_bytes`: <br> Virtual memory size in bytes. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_process_virtual_memory_max_bytes`: <br> Maximum amount of virtual memory available in bytes. | `GAUGE` | `bytes` | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_rpc_durations_histogram_milliseconds`: <br> RPC latency distributions. | `HISTOGRAM` | `milliseconds` | <ul><li>`action` (Kata shim v2 actions)<ul><li>`checkpoint`</li><li>`close_io`</li><li>`connect`</li><li>`create`</li><li>`delete`</li><li>`exec`</li><li>`kill`</li><li>`pause`</li><li>`pids`</li><li>`resize_pty`</li><li>`resume`</li><li>`shutdown`</li><li>`start`</li><li>`state`</li><li>`stats`</li><li>`update`</li><li>`wait`</li></ul></li><li>`sandbox_id`</li></ul> | 2.0.0 |
| `kata_shim_threads`: <br> Kata containerd shim v2 process threads. | `GAUGE` | | <ul><li>`sandbox_id`</li></ul> | 2.0.0 |

View File

@@ -0,0 +1,100 @@
# Kata API Design
To fulfill the [Kata design requirements](kata-design-requirements.md), and based on the discussion on [Virtcontainers API extensions](https://docs.google.com/presentation/d/1dbGrD1h9cpuqAPooiEgtiwWDGCYhVPdatq7owsKHDEQ), the Kata runtime library features the following APIs:
- Sandbox based top API
- Storage and network hotplug API
- Plugin frameworks for external proprietary Kata runtime extensions
## Sandbox Based API
### Sandbox Management API
|Name|Description|
|---|---|
|`CreateSandbox(SandboxConfig, Factory)`| Create a sandbox and its containers, base on `SandboxConfig` and `Factory`. Return the `Sandbox` structure, but do not start them.|
### Sandbox Operation API
|Name|Description|
|---|---|
|`sandbox.Delete()`| Shut down the VM in which the sandbox, and destroy the sandbox and remove all persistent metadata.|
|`sandbox.Monitor()`| Return a context handler for caller to monitor sandbox callbacks such as error termination.|
|`sandbox.Release()`| Release a sandbox data structure, close connections to the agent, and quit any goroutines associated with the Sandbox. Mostly used for daemon restart.|
|`sandbox.Start()`| Start a sandbox and the containers making the sandbox.|
|`sandbox.Stats()`| Get the stats of a running sandbox, return a `SandboxStats` structure.|
|`sandbox.Status()`| Get the status of the sandbox and containers, return a `SandboxStatus` structure.|
|`sandbox.Stop(force)`| Stop a sandbox and Destroy the containers in the sandbox. When force is true, ignore guest related stop failures.|
|`sandbox.CreateContainer(contConfig)`| Create new container in the sandbox with the `ContainerConfig` parameter. It will add new container config to `sandbox.config.Containers`.|
|`sandbox.DeleteContainer(containerID)`| Delete a container from the sandbox by `containerID`, return a `Container` structure.|
|`sandbox.EnterContainer(containerID, cmd)`| Run a new process in a container, executing customer's `types.Cmd` command.|
|`sandbox.KillContainer(containerID, signal, all)`| Signal a container in the sandbox by the `containerID`.|
|`sandbox.PauseContainer(containerID)`| Pause a running container in the sandbox by the `containerID`.|
|`sandbox.ProcessListContainer(containerID, options)`| List every process running inside a specific container in the sandbox, return a `ProcessList` structure.|
|`sandbox.ResumeContainer(containerID)`| Resume a paused container in the sandbox by the `containerID`.|
|`sandbox.StartContainer(containerID)`| Start a container in the sandbox by the `containerID`.|
|`sandbox.StatsContainer(containerID)`| Get the stats of a running container, return a `ContainerStats` structure.|
|`sandbox.StatusContainer(containerID)`| Get the status of a container in the sandbox, return a `ContainerStatus` structure.|
|`sandbox.StopContainer(containerID, force)`| Stop a container in the sandbox by the `containerID`.|
|`sandbox.UpdateContainer(containerID, resources)`| Update a running container in the sandbox.|
|`sandbox.WaitProcess(containerID, processID)`| Wait on a process to terminate.|
### Sandbox Hotplug API
|Name|Description|
|---|---|
|`sandbox.AddDevice(info)`| Add new storage device `DeviceInfo` to the sandbox, return a `Device` structure.|
|`sandbox.AddInterface(inf)`| Add new NIC to the sandbox.|
|`sandbox.RemoveInterface(inf)`| Remove a NIC from the sandbox.|
|`sandbox.ListInterfaces()`| List all NICs and their configurations in the sandbox, return a `pbTypes.Interface` list.|
|`sandbox.UpdateRoutes(routes)`| Update the sandbox route table (e.g. for portmapping support), return a `pbTypes.Route` list.|
|`sandbox.ListRoutes()`| List the sandbox route table, return a `pbTypes.Route` list.|
### Sandbox Relay API
|Name|Description|
|---|---|
|`sandbox.WinsizeProcess(containerID, processID, Height, Width)`| Relay TTY resize request to a process.|
|`sandbox.SignalProcess(containerID, processID, signalID, signalALL)`| Relay a signal to a process or all processes in a container.|
|`sandbox.IOStream(containerID, processID)`| Relay a process stdio. Return stdin/stdout/stderr pipes to the process stdin/stdout/stderr streams.|
### Sandbox Monitor API
|Name|Description|
|---|---|
|`sandbox.GetOOMEvent()`| Monitor the OOM events that occur in the sandbox..|
|`sandbox.UpdateRuntimeMetrics()`| Update the `shim/hypervisor` metrics of the running sandbox.|
|`sandbox.GetAgentMetrics()`| Get metrics of the agent and the guest in the running sandbox.|
## Plugin framework for external proprietary Kata runtime extensions
### Hypervisor plugin
TBD.
### Metadata storage plugin
The metadata storage plugin controls where sandbox metadata is saved.
All metadata storage plugins must implement the following API:
|Name|Description|
|---|---|
|`storage.Save(key, value)`| Save a record.|
|`storage.Load(key)`| Load a record.|
|`storage.Delete(key)`| Delete a record.|
Built-in implementations include:
- Filesystem storage
- LevelDB storage
### VM Factory plugin
The VM factory plugin controls how a sandbox factory creates new VMs.
All VM factory plugins must implement following API:
|Name|Description|
|---|---|
|`VMFactory.NewVM(HypervisorConfig)`|Create a new VM based on `HypervisorConfig`.|
Built-in implementations include:
|Name|Description|
|---|---|
|`CreateNew()`| Create brand new VM based on `HypervisorConfig`.|
|`CreateFromTemplate()`| Create new VM from template.|
|`CreateFromCache()`| Create new VM from VM caches.|
### Sandbox Creation Plugin Workflow
![Sandbox Creation Plugin Workflow](https://raw.githubusercontent.com/bergwolf/raw-contents/master/kata/Kata-sandbox-creation.png "Sandbox Creation Plugin Workflow")
### Sandbox Connection Plugin Workflow
![Sandbox Connection Plugin Workflow](https://raw.githubusercontent.com/bergwolf/raw-contents/master/kata/Sandbox-Connection.png "Sandbox Connection Plugin Workflow")

View File

@@ -0,0 +1,95 @@
## Design requirements
The Kata Containers runtime **MUST** fulfill all of the following requirements:
### OCI compatibility
The Kata Containers runtime **MUST** implement the [OCI runtime specification](https://github.com/opencontainers/runtime-spec) and support all
the OCI runtime operations.
### [`runc`](https://github.com/opencontainers/runc) CLI compatibility
In theory, being OCI compatible should be enough. In practice, the Kata Containers runtime
should comply with the latest *stable* `runc` CLI. In particular, it **MUST** implement the
following `runc` commands:
* `create`
* `delete`
* `exec`
* `kill`
* `list`
* `pause`
* `ps`
* `start`
* `state`
* `version`
The Kata Containers runtime **MUST** implement the following command line options:
* `--console-socket`
* `--pid-file`
### [CRI](http://blog.kubernetes.io/2016/12/container-runtime-interface-cri-in-kubernetes.html) and [Kubernetes](https://kubernetes.io) support
The Kata Containers project **MUST** provide two interfaces for CRI shims to manage hardware
virtualization based Kubernetes pods and containers:
- An OCI and `runc` compatible command line interface, as described in the previous section.
This interface is used by implementations such as [`CRI-O`](http://cri-o.io) and [`cri-containerd`](https://github.com/containerd/cri-containerd), for example.
- A hardware virtualization runtime library API for CRI shims to consume and provide a more
CRI native implementation. The [`frakti`](https://github.com/kubernetes/frakti) CRI shim is an example of such a consumer.
### Multiple hardware architectures support
The Kata Containers runtime **MUST NOT** be architecture-specific. It should be able to support
multiple hardware architectures and provide a modular and flexible design for adding support
for additional ones.
### Multiple hypervisor support
The Kata Containers runtime **MUST NOT** be tied to any specific hardware virtualization technology,
hypervisor, or virtual machine monitor implementation.
It should support multiple hypervisors and provide a pluggable and flexible design to add support
for additional ones.
#### Nesting
The Kata Containers runtime **MUST** support nested virtualization environments.
### Networking
* The Kata Containers runtime **MUST** support CNI plugin.
* The Kata Containers runtime **MUST** support both legacy and IPv6 networks.
### I/O
#### Devices direct assignment
In order for containers to directly consume host hardware resources, the Kata Containers runtime
**MUST** provide containers with secure pass through for generic devices such as GPUs, SRIOV,
RDMA, QAT, by leveraging I/O virtualization technologies (IOMMU, interrupt remapping).
#### Acceleration
The Kata Containers runtime **MUST** support accelerated and user-space-based I/O operations
for networking (e.g. DPDK) as well as storage through `vhost-user` sockets.
#### Scalability
The Kata Containers runtime **MUST** support scalable I/O through the SRIOV technology.
### Virtualization overhead reduction
A compelling aspect of containers is their minimal overhead compared to bare metal applications.
A container runtime should keep the overhead to a minimum in order to provide the expected user
experience.
The Kata Containers runtime implementation **SHOULD** be optimized for:
* Minimal workload boot and shutdown times
* Minimal workload memory footprint
* Maximal networking throughput
* Minimal networking latency
### Testing and debugging
#### Continuous Integration
Each Kata Containers runtime pull request **MUST** pass at least the following set of container-related
tests:
* Unit tests: runtime unit tests coverage >75%
* Functional tests: the entire runtime CLI and APIs
* Integration tests: Docker and Kubernetes
#### Debugging
The Kata Containers runtime implementation **MUST** use structured logging in order to namespace
log messages to facilitate debugging.

View File

@@ -0,0 +1,175 @@
- [Virtual machine vCPU sizing in Kata Containers](#virtual-machine-vcpu-sizing-in-kata-containers)
* [Default number of virtual CPUs](#default-number-of-virtual-cpus)
* [Virtual CPUs and Kubernetes pods](#virtual-cpus-and-kubernetes-pods)
* [Container lifecycle](#container-lifecycle)
* [Container without CPU constraint](#container-without-cpu-constraint)
* [Container with CPU constraint](#container-with-cpu-constraint)
* [Do not waste resources](#do-not-waste-resources)
# Virtual machine vCPU sizing in Kata Containers
## Default number of virtual CPUs
Before starting a container, the [runtime][6] reads the `default_vcpus` option
from the [configuration file][7] to determine the number of virtual CPUs
(vCPUs) needed to start the virtual machine. By default, `default_vcpus` is
equal to 1 for fast boot time and a small memory footprint per virtual machine.
Be aware that increasing this value negatively impacts the virtual machine's
boot time and memory footprint.
In general, we recommend that you do not edit this variable, unless you know
what are you doing. If your container needs more than one vCPU, use
[docker `--cpus`][1], [docker update][4], or [Kubernetes `cpu` limits][2] to
assign more resources.
*Docker*
```sh
$ docker run --name foo -ti --cpus 2 debian bash
$ docker update --cpus 4 foo
```
*Kubernetes*
```yaml
# ~/cpu-demo.yaml
apiVersion: v1
kind: Pod
metadata:
name: cpu-demo
namespace: sandbox
spec:
containers:
- name: cpu0
image: vish/stress
resources:
limits:
cpu: "3"
args:
- -cpus
- "5"
```
```sh
$ sudo -E kubectl create -f ~/cpu-demo.yaml
```
## Virtual CPUs and Kubernetes pods
A Kubernetes pod is a group of one or more containers, with shared storage and
network, and a specification for how to run the containers [[specification][3]].
In Kata Containers this group of containers, which is called a sandbox, runs inside
the same virtual machine. If you do not specify a CPU constraint, the runtime does
not add more vCPUs and the container is not placed inside a CPU cgroup.
Instead, the container uses the number of vCPUs specified by `default_vcpus`
and shares these resources with other containers in the same situation
(without a CPU constraint).
## Container lifecycle
When you create a container with a CPU constraint, the runtime adds the
number of vCPUs required by the container. Similarly, when the container terminates,
the runtime removes these resources.
## Container without CPU constraint
A container without a CPU constraint uses the default number of vCPUs specified
in the configuration file. In the case of Kubernetes pods, containers without a
CPU constraint use and share between them the default number of vCPUs. For
example, if `default_vcpus` is equal to 1 and you have 2 containers without CPU
constraints with each container trying to consume 100% of vCPU, the resources
divide in two parts, 50% of vCPU for each container because your virtual
machine does not have enough resources to satisfy containers needs. If you want
to give access to a greater or lesser portion of vCPUs to a specific container,
use [`docker --cpu-shares`][1] or [Kubernetes `cpu` requests][2].
*Docker*
```sh
$ docker run -ti --cpus-shares=512 debian bash
```
*Kubernetes*
```yaml
# ~/cpu-demo.yaml
apiVersion: v1
kind: Pod
metadata:
name: cpu-demo
namespace: sandbox
spec:
containers:
- name: cpu0
image: vish/stress
resources:
requests:
cpu: "0.7"
args:
- -cpus
- "3"
```
```sh
$ sudo -E kubectl create -f ~/cpu-demo.yaml
```
Before running containers without CPU constraint, consider that your containers
are not running alone. Since your containers run inside a virtual machine other
processes use the vCPUs as well (e.g. `systemd` and the Kata Containers
[agent][5]). In general, we recommend setting `default_vcpus` equal to 1 to
allow non-container processes to run on this vCPU and to specify a CPU
constraint for each container. If your container is already running and needs
more vCPUs, you can add more using [docker update][4].
## Container with CPU constraint
The runtime calculates the number of vCPUs required by a container with CPU
constraints using the following formula: `vCPUs = ceiling( quota / period )`, where
`quota` specifies the number of microseconds per CPU Period that the container is
guaranteed CPU access and `period` specifies the CPU CFS scheduler period of time
in microseconds. The result determines the number of vCPU to hot plug into the
virtual machine. Once the vCPUs have been added, the [agent][5] places the
container inside a CPU cgroup. This placement allows the container to use only
its assigned resources.
## Do not waste resources
If you already know the number of vCPUs needed for each container and pod, or
just want to run them with the same number of vCPUs, you can specify that
number using the `default_vcpus` option in the configuration file, each virtual
machine starts with that number of vCPUs. One limitation of this approach is
that these vCPUs cannot be removed later and you might be wasting
resources. For example, if you set `default_vcpus` to 8 and run only one
container with a CPU constraint of 1 vCPUs, you might be wasting 7 vCPUs since
the virtual machine starts with 8 vCPUs and 1 vCPUs is added and assigned
to the container. Non-container processes might be able to use 8 vCPUs but they
use a maximum 1 vCPU, hence 7 vCPUs might not be used.
*Container without CPU constraint*
```sh
$ docker run -ti debian bash -c "nproc; cat /sys/fs/cgroup/cpu,cpuacct/cpu.cfs_*"
1 # number of vCPUs
100000 # cfs period
-1 # cfs quota
```
*Container with CPU constraint*
```sh
docker run --cpus 4 -ti debian bash -c "nproc; cat /sys/fs/cgroup/cpu,cpuacct/cpu.cfs_*"
5 # number of vCPUs
100000 # cfs period
400000 # cfs quota
```
[1]: https://docs.docker.com/config/containers/resource_constraints/#cpu
[2]: https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource
[3]: https://kubernetes.io/docs/concepts/workloads/pods/pod/
[4]: https://docs.docker.com/engine/reference/commandline/update/
[5]: ../../src/agent
[6]: ../../src/runtime
[7]: ../../src/runtime/README.md#configuration

View File

@@ -0,0 +1,133 @@
# Virtualization in Kata Containers
- [Virtualization in Kata Containers](#virtualization-in-kata-containers)
- [Mapping container concepts to virtual machine technologies](#mapping-container-concepts-to-virtual-machine-technologies)
- [Kata Containers Hypervisor and VMM support](#kata-containers-hypervisor-and-vmm-support)
- [QEMU/KVM](#qemukvm)
- [Machine accelerators](#machine-accelerators)
- [Hotplug devices](#hotplug-devices)
- [Firecracker/KVM](#firecrackerkvm)
- [Cloud Hypervisor/KVM](#cloud-hypervisorkvm)
- [Summary](#summary)
Kata Containers, a second layer of isolation is created on top of those provided by traditional namespace-containers. The
hardware virtualization interface is the basis of this additional layer. Kata will launch a lightweight virtual machine,
and use the guests Linux kernel to create a container workload, or workloads in the case of multi-container pods. In Kubernetes
and in the Kata implementation, the sandbox is carried out at the pod level. In Kata, this sandbox is created using a virtual machine.
This document describes how Kata Containers maps container technologies to virtual machines technologies, and how this is realized in
the multiple hypervisors and virtual machine monitors that Kata supports.
## Mapping container concepts to virtual machine technologies
A typical deployment of Kata Containers will be in Kubernetes by way of a Container Runtime Interface (CRI) implementation. On every node,
Kubelet will interact with a CRI implementer (such as containerd or CRI-O), which will in turn interface with Kata Containers (an OCI based runtime).
The CRI API, as defined at the [Kubernetes CRI-API repo](https://github.com/kubernetes/cri-api/), implies a few constructs being supported by the
CRI implementation, and ultimately in Kata Containers. In order to support the full [API](https://github.com/kubernetes/cri-api/blob/a6f63f369f6d50e9d0886f2eda63d585fbd1ab6a/pkg/apis/runtime/v1alpha2/api.proto#L34-L110) with the CRI-implementer, Kata must provide the following constructs:
![API to construct](./arch-images/api-to-construct.png)
These constructs can then be further mapped to what devices are necessary for interfacing with the virtual machine:
![construct to VM concept](./arch-images/construct-to-vm-concept.png)
Ultimately, these concepts map to specific para-virtualized devices or virtualization technologies.
![VM concept to underlying technology](./arch-images/vm-concept-to-tech.png)
Each hypervisor or VMM varies on how or if it handles each of these.
## Kata Containers Hypervisor and VMM support
Kata Containers [supports multiple hypervisors](../hypervisors.md).
Details of each solution and a summary are provided below.
### QEMU/KVM
Kata Containers with QEMU has complete compatibility with Kubernetes.
Depending on the host architecture, Kata Containers supports various machine types,
for example `pc` and `q35` on x86 systems, `virt` on ARM systems and `pseries` on IBM Power systems. The default Kata Containers
machine type is `pc`. The machine type and its [`Machine accelerators`](#machine-accelerators) can
be changed by editing the runtime [`configuration`](./architecture.md/#configuration) file.
Devices and features used:
- virtio VSOCK or virtio serial
- virtio block or virtio SCSI
- [virtio net](https://www.redhat.com/en/virtio-networking-series)
- virtio fs or virtio 9p (recommend: virtio fs)
- VFIO
- hotplug
- machine accelerators
Machine accelerators and hotplug are used in Kata Containers to manage resource constraints, improve boot time and reduce memory footprint. These are documented below.
#### Machine accelerators
Machine accelerators are architecture specific and can be used to improve the performance
and enable specific features of the machine types. The following machine accelerators
are used in Kata Containers:
- NVDIMM: This machine accelerator is x86 specific and only supported by `pc` and
`q35` machine types. `nvdimm` is used to provide the root filesystem as a persistent
memory device to the Virtual Machine.
#### Hotplug devices
The Kata Containers VM starts with a minimum amount of resources, allowing for faster boot time and a reduction in memory footprint. As the container launch progresses,
devices are hotplugged to the VM. For example, when a CPU constraint is specified which includes additional CPUs, they can be hot added. Kata Containers has support
for hot-adding the following devices:
- Virtio block
- Virtio SCSI
- VFIO
- CPU
### Firecracker/KVM
Firecracker, built on many rust crates that are within [rust-VMM](https://github.com/rust-vmm), has a very limited device model, providing a lighter
footprint and attack surface, focusing on function-as-a-service like use cases. As a result, Kata Containers with Firecracker VMM supports a subset of the CRI API.
Firecracker does not support file-system sharing, and as a result only block-based storage drivers are supported. Firecracker does not support device
hotplug nor does it support VFIO. As a result, Kata Containers with Firecracker VMM does not support updating container resources after boot, nor
does it support device passthrough.
Devices used:
- virtio VSOCK
- virtio block
- virtio net
### Cloud Hypervisor/KVM
[Cloud Hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor), based
on [rust-vmm](https://github.com/rust-vmm), is designed to have a
lighter footprint and smaller attack surface for running modern cloud
workloads. Kata Containers with Cloud
Hypervisor provides mostly complete compatibility with Kubernetes
comparable to the QEMU configuration. As of the 1.12 and 2.0.0 release
of Kata Containers, the Cloud Hypervisor configuration supports both CPU
and memory resize, device hotplug (disk and VFIO), file-system sharing through virtio-fs,
block-based volumes, booting from VM images backed by pmem device, and
fine-grained seccomp filters for each VMM threads (e.g. all virtio
device worker threads). Please check [this GitHub Project](https://github.com/orgs/kata-containers/projects/21)
for details of ongoing integration efforts.
Devices and features used:
- virtio VSOCK or virtio serial
- virtio block
- virtio net
- virtio fs
- virtio pmem
- VFIO
- hotplug
- seccomp filters
- [HTTP OpenAPI](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/vmm/src/api/openapi/cloud-hypervisor.yaml)
### Summary
| Solution | release introduced | brief summary |
|-|-|-|
| Cloud Hypervisor | 1.10 | upstream Cloud Hypervisor with rich feature support, e.g. hotplug, VFIO and FS sharing|
| Firecracker | 1.5 | upstream Firecracker, rust-VMM based, no VFIO, no FS sharing, no memory/CPU hotplug |
| QEMU | 1.0 | upstream QEMU, with support for hotplug and filesystem sharing |

39
docs/how-to/README.md Normal file
View File

@@ -0,0 +1,39 @@
# Howto Guides
* [Howto Guides](#howto-guides)
* [Kubernetes Integration](#kubernetes-integration)
* [Hypervisors Integration](#hypervisors-integration)
* [Advanced Topics](#advanced-topics)
## Kubernetes Integration
- [Run Kata containers with `crictl`](run-kata-with-crictl.md)
- [Run Kata Containers with Kubernetes](run-kata-with-k8s.md)
- [How to use Kata Containers and Containerd](containerd-kata.md)
- [How to use Kata Containers and CRI (containerd plugin) with Kubernetes](how-to-use-k8s-with-cri-containerd-and-kata.md)
- [Kata Containers and service mesh for Kubernetes](service-mesh.md)
- [How to import Kata Containers logs into Fluentd](how-to-import-kata-logs-with-fluentd.md)
## Hypervisors Integration
Currently supported hypervisors with Kata Containers include:
- `qemu`
- `cloud-hypervisor`
- `firecracker`
- `ACRN`
While `qemu` and `cloud-hypervisor` work out of the box with installation of Kata,
some additional configuration is needed in case of `firecracker` and `ACRN`.
Refer to the following guides for additional configuration steps:
- [Kata Containers with Firecracker](https://github.com/kata-containers/documentation/wiki/Initial-release-of-Kata-Containers-with-Firecracker-support)
- [Kata Containers with ACRN Hypervisor](how-to-use-kata-containers-with-acrn.md)
## Advanced Topics
- [How to use Kata Containers with virtio-fs](how-to-use-virtio-fs-with-kata.md)
- [Setting Sysctls with Kata](how-to-use-sysctls-with-kata.md)
- [What Is VMCache and How To Enable It](what-is-vm-cache-and-how-do-I-use-it.md)
- [What Is VM Templating and How To Enable It](what-is-vm-templating-and-how-do-I-use-it.md)
- [Privileged Kata Containers](privileged.md)
- [How to load kernel modules in Kata Containers](how-to-load-kernel-modules-with-kata.md)
- [How to use Kata Containers with `virtio-mem`](how-to-use-virtio-mem-with-kata.md)
- [How to set sandbox Kata Containers configurations with pod annotations](how-to-set-sandbox-config-kata.md)
- [How to monitor Kata Containers in K8s](how-to-set-prometheus-in-k8s.md)

View File

@@ -0,0 +1,371 @@
# How to use Kata Containers and Containerd
- [Concepts](#concepts)
- [Kubernetes `RuntimeClass`](#kubernetes-runtimeclass)
- [Containerd Runtime V2 API: Shim V2 API](#containerd-runtime-v2-api-shim-v2-api)
- [Install](#install)
- [Install Kata Containers](#install-kata-containers)
- [Install containerd with CRI plugin](#install-containerd-with-cri-plugin)
- [Install CNI plugins](#install-cni-plugins)
- [Install `cri-tools`](#install-cri-tools)
- [Configuration](#configuration)
- [Configure containerd to use Kata Containers](#configure-containerd-to-use-kata-containers)
- [Kata Containers as a `RuntimeClass`](#kata-containers-as-a-runtimeclass)
- [Kata Containers as the runtime for untrusted workload](#kata-containers-as-the-runtime-for-untrusted-workload)
- [Kata Containers as the default runtime](#kata-containers-as-the-default-runtime)
- [Configuration for `cri-tools`](#configuration-for-cri-tools)
- [Run](#run)
- [Launch containers with `ctr` command line](#launch-containers-with-ctr-command-line)
- [Launch Pods with `crictl` command line](#launch-pods-with-crictl-command-line)
This document covers the installation and configuration of [containerd](https://containerd.io/)
and [Kata Containers](https://katacontainers.io). The containerd provides not only the `ctr`
command line tool, but also the [CRI](https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/)
interface for [Kubernetes](https://kubernetes.io) and other CRI clients.
This document is primarily written for Kata Containers v1.5.0-rc2 or above, and containerd v1.2.0 or above.
Previous versions are addressed here, but we suggest users upgrade to the newer versions for better support.
## Concepts
### Kubernetes `RuntimeClass`
[`RuntimeClass`](https://kubernetes.io/docs/concepts/containers/runtime-class/) is a Kubernetes feature first
introduced in Kubernetes 1.12 as alpha. It is the feature for selecting the container runtime configuration to
use to run a pods containers. This feature is supported in `containerd` since [v1.2.0](https://github.com/containerd/containerd/releases/tag/v1.2.0).
Before the `RuntimeClass` was introduced, Kubernetes was not aware of the difference of runtimes on the node. `kubelet`
creates Pod sandboxes and containers through CRI implementations, and treats all the Pods equally. However, there
are requirements to run trusted Pods (i.e. Kubernetes plugin) in a native container like runc, and to run untrusted
workloads with isolated sandboxes (i.e. Kata Containers).
As a result, the CRI implementations extended their semantics for the requirements:
- At the beginning, [Frakti](https://github.com/kubernetes/frakti) checks the network configuration of a Pod, and
treat Pod with `host` network as trusted, while others are treated as untrusted.
- The containerd introduced an annotation for untrusted Pods since [v1.0](https://github.com/containerd/cri/blob/v1.0.0-rc.0/docs/config.md):
```yaml
annotations:
io.kubernetes.cri.untrusted-workload: "true"
```
- Similarly, CRI-O introduced the annotation `io.kubernetes.cri-o.TrustedSandbox` for untrusted Pods.
To eliminate the complexity of user configuration introduced by the non-standardized annotations and provide
extensibility, `RuntimeClass` was introduced. This gives users the ability to affect the runtime behavior
through `RuntimeClass` without the knowledge of the CRI daemons. We suggest that users with multiple runtimes
use `RuntimeClass` instead of the deprecated annotations.
### Containerd Runtime V2 API: Shim V2 API
The [`containerd-shim-kata-v2` (short as `shimv2` in this documentation)](../../src/runtime/containerd-shim-v2)
implements the [Containerd Runtime V2 (Shim API)](https://github.com/containerd/containerd/tree/master/runtime/v2) for Kata.
With `shimv2`, Kubernetes can launch Pod and OCI-compatible containers with one shim per Pod. Prior to `shimv2`, `2N+1`
shims (i.e. a `containerd-shim` and a `kata-shim` for each container and the Pod sandbox itself) and no standalone `kata-proxy`
process were used, even with VSOCK not available.
![Kubernetes integration with shimv2](../design/arch-images/shimv2.svg)
The shim v2 is introduced in containerd [v1.2.0](https://github.com/containerd/containerd/releases/tag/v1.2.0) and Kata `shimv2`
is implemented in Kata Containers v1.5.0.
## Install
### Install Kata Containers
Follow the instructions to [install Kata Containers](../install/README.md).
### Install containerd with CRI plugin
> **Note:** `cri` is a native plugin of containerd 1.1 and above. It is built into containerd and enabled by default.
> You do not need to install `cri` if you have containerd 1.1 or above. Just remove the `cri` plugin from the list of
> `disabled_plugins` in the containerd configuration file (`/etc/containerd/config.toml`).
Follow the instructions from the [CRI installation guide](http://github.com/containerd/cri/blob/master/docs/installation.md).
Then, check if `containerd` is now available:
```bash
$ command -v containerd
```
### Install CNI plugins
> **Note:** You do not need to install CNI plugins if you do not want to use containerd with Kubernetes.
> If you have installed Kubernetes with `kubeadm`, you might have already installed the CNI plugins.
You can manually install CNI plugins as follows:
```bash
$ go get github.com/containernetworking/plugins
$ pushd $GOPATH/src/github.com/containernetworking/plugins
$ ./build_linux.sh
$ sudo mkdir /opt/cni
$ sudo cp -r bin /opt/cni/
$ popd
```
### Install `cri-tools`
> **Note:** `cri-tools` is a set of tools for CRI used for development and testing. Users who only want
> to use containerd with Kubernetes can skip the `cri-tools`.
You can install the `cri-tools` from source code:
```bash
$ go get github.com/kubernetes-incubator/cri-tools
$ pushd $GOPATH/src/github.com/kubernetes-incubator/cri-tools
$ make
$ sudo -E make install
$ popd
```
## Configuration
### Configure containerd to use Kata Containers
By default, the configuration of containerd is located at `/etc/containerd/config.toml`, and the
`cri` plugins are placed in the following section:
```toml
[plugins]
[plugins.cri]
[plugins.cri.containerd]
[plugins.cri.containerd.default_runtime]
#runtime_type = "io.containerd.runtime.v1.linux"
[plugins.cri.cni]
# conf_dir is the directory in which the admin places a CNI conf.
conf_dir = "/etc/cni/net.d"
```
The following sections outline how to add Kata Containers to the configurations.
#### Kata Containers as a `RuntimeClass`
For
- Kata Containers v1.5.0 or above (including `1.5.0-rc`)
- Containerd v1.2.0 or above
- Kubernetes v1.12.0 or above
The `RuntimeClass` is suggested.
The following configuration includes three runtime classes:
- `plugins.cri.containerd.runtimes.runc`: the runc, and it is the default runtime.
- `plugins.cri.containerd.runtimes.kata`: The function in containerd (reference [the document here](https://github.com/containerd/containerd/tree/master/runtime/v2#binary-naming))
where the dot-connected string `io.containerd.kata.v2` is translated to `containerd-shim-kata-v2` (i.e. the
binary name of the Kata implementation of [Containerd Runtime V2 (Shim API)](https://github.com/containerd/containerd/tree/master/runtime/v2)).
- `plugins.cri.containerd.runtimes.katacli`: the `containerd-shim-runc-v1` calls `kata-runtime`, which is the legacy process.
```toml
[plugins.cri.containerd]
no_pivot = false
[plugins.cri.containerd.runtimes]
[plugins.cri.containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v1"
[plugins.cri.containerd.runtimes.runc.options]
NoPivotRoot = false
NoNewKeyring = false
ShimCgroup = ""
IoUid = 0
IoGid = 0
BinaryName = "runc"
Root = ""
CriuPath = ""
SystemdCgroup = false
[plugins.cri.containerd.runtimes.kata]
runtime_type = "io.containerd.kata.v2"
[plugins.cri.containerd.runtimes.katacli]
runtime_type = "io.containerd.runc.v1"
[plugins.cri.containerd.runtimes.katacli.options]
NoPivotRoot = false
NoNewKeyring = false
ShimCgroup = ""
IoUid = 0
IoGid = 0
BinaryName = "/usr/bin/kata-runtime"
Root = ""
CriuPath = ""
SystemdCgroup = false
```
From Containerd v1.2.4 and Kata v1.6.0, there is a new runtime option supported, which allows you to specify a specific Kata configuration file as follows:
```toml
[plugins.cri.containerd.runtimes.kata]
runtime_type = "io.containerd.kata.v2"
privileged_without_host_devices = true
[plugins.cri.containerd.runtimes.kata.options]
ConfigPath = "/etc/kata-containers/config.toml"
```
`privileged_without_host_devices` tells containerd that a privileged Kata container should not have direct access to all host devices. If unset, containerd will pass all host devices to Kata container, which may cause security issues.
This `ConfigPath` option is optional. If you do not specify it, shimv2 first tries to get the configuration file from the environment variable `KATA_CONF_FILE`. If neither are set, shimv2 will use the default Kata configuration file paths (`/etc/kata-containers/configuration.toml` and `/usr/share/defaults/kata-containers/configuration.toml`).
If you use Containerd older than v1.2.4 or a version of Kata older than v1.6.0 and also want to specify a configuration file, you can use the following workaround, since the shimv2 accepts an environment variable, `KATA_CONF_FILE` for the configuration file path. Then, you can create a
shell script with the following:
```bash
#!/bin/bash
KATA_CONF_FILE=/etc/kata-containers/firecracker.toml containerd-shim-kata-v2 $@
```
Name it as `/usr/local/bin/containerd-shim-katafc-v2` and reference it in the configuration of containerd:
```toml
[plugins.cri.containerd.runtimes.kata-firecracker]
runtime_type = "io.containerd.katafc.v2"
```
#### Kata Containers as the runtime for untrusted workload
For cases without `RuntimeClass` support, we can use the legacy annotation method to support using Kata Containers
for an untrusted workload. With the following configuration, you can run trusted workloads with a runtime such as `runc`
and then, run an untrusted workload with Kata Containers:
```toml
[plugins.cri.containerd]
# "plugins.cri.containerd.default_runtime" is the runtime to use in containerd.
[plugins.cri.containerd.default_runtime]
# runtime_type is the runtime type to use in containerd e.g. io.containerd.runtime.v1.linux
runtime_type = "io.containerd.runtime.v1.linux"
# "plugins.cri.containerd.untrusted_workload_runtime" is a runtime to run untrusted workloads on it.
[plugins.cri.containerd.untrusted_workload_runtime]
# runtime_type is the runtime type to use in containerd e.g. io.containerd.runtime.v1.linux
runtime_type = "io.containerd.kata.v2"
```
For the earlier versions of Kata Containers and containerd that do not support Runtime V2 (Shim API), you can use the following alternative configuration:
```toml
[plugins.cri.containerd]
# "plugins.cri.containerd.default_runtime" is the runtime to use in containerd.
[plugins.cri.containerd.default_runtime]
# runtime_type is the runtime type to use in containerd e.g. io.containerd.runtime.v1.linux
runtime_type = "io.containerd.runtime.v1.linux"
# "plugins.cri.containerd.untrusted_workload_runtime" is a runtime to run untrusted workloads on it.
[plugins.cri.containerd.untrusted_workload_runtime]
# runtime_type is the runtime type to use in containerd e.g. io.containerd.runtime.v1.linux
runtime_type = "io.containerd.runtime.v1.linux"
# runtime_engine is the name of the runtime engine used by containerd.
runtime_engine = "/usr/bin/kata-runtime"
```
You can find more information on the [Containerd config documentation](https://github.com/containerd/cri/blob/master/docs/config.md)
#### Kata Containers as the default runtime
If you want to set Kata Containers as the only runtime in the deployment, you can simply configure as follows:
```toml
[plugins.cri.containerd]
[plugins.cri.containerd.default_runtime]
runtime_type = "io.containerd.kata.v2"
```
Alternatively, for the earlier versions of Kata Containers and containerd that do not support Runtime V2 (Shim API), you can use the following alternative configuration:
```toml
[plugins.cri.containerd]
[plugins.cri.containerd.default_runtime]
runtime_type = "io.containerd.runtime.v1.linux"
runtime_engine = "/usr/bin/kata-runtime"
```
### Configuration for `cri-tools`
> **Note:** If you skipped the [Install `cri-tools`](#install-cri-tools) section, you can skip this section too.
First, add the CNI configuration in the containerd configuration.
The following is the configuration if you installed CNI as the *[Install CNI plugins](#install-cni-plugins)* section outlined.
Put the CNI configuration as `/etc/cni/net.d/10-mynet.conf`:
```json
{
"cniVersion": "0.2.0",
"name": "mynet",
"type": "bridge",
"bridge": "cni0",
"isGateway": true,
"ipMasq": true,
"ipam": {
"type": "host-local",
"subnet": "172.19.0.0/24",
"routes": [
{ "dst": "0.0.0.0/0" }
]
}
}
```
Next, reference the configuration directory through containerd `config.toml`:
```toml
[plugins.cri.cni]
# conf_dir is the directory in which the admin places a CNI conf.
conf_dir = "/etc/cni/net.d"
```
The configuration file of `crictl` command line tool in `cri-tools` locates at `/etc/crictl.yaml`:
```yaml
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: true
```
## Run
### Launch containers with `ctr` command line
To run a container with Kata Containers through the containerd command line, you can run the following:
```bash
$ sudo ctr image pull docker.io/library/busybox:latest
$ sudo ctr run --runtime io.containerd.run.kata.v2 -t --rm docker.io/library/busybox:latest hello sh
```
This launches a BusyBox container named `hello`, and it will be removed by `--rm` after it quits.
### Launch Pods with `crictl` command line
With the `crictl` command line of `cri-tools`, you can specify runtime class with `-r` or `--runtime` flag.
Use the following to launch Pod with `kata` runtime class with the pod in [the example](https://github.com/kubernetes-sigs/cri-tools/tree/master/docs/examples)
of `cri-tools`:
```bash
$ sudo crictl runp -r kata podsandbox-config.yaml
36e23521e8f89fabd9044924c9aeb34890c60e85e1748e8daca7e2e673f8653e
```
You can add container to the launched Pod with the following:
```bash
$ sudo crictl create 36e23521e8f89 container-config.yaml podsandbox-config.yaml
1aab7585530e62c446734f12f6899f095ce53422dafcf5a80055ba11b95f2da7
```
Now, start it with the following:
```bash
$ sudo crictl start 1aab7585530e6
1aab7585530e6
```
In Kubernetes, you need to create a `RuntimeClass` resource and add the `RuntimeClass` field in the Pod Spec
(see this [document](https://kubernetes.io/docs/concepts/containers/runtime-class/) for more information).
If `RuntimeClass` is not supported, you can use the following annotation in a Kubernetes pod to identify as an untrusted workload:
```yaml
annotations:
io.kubernetes.cri.untrusted-workload: "true"
```

View File

@@ -0,0 +1,19 @@
{
"metadata": {
"name": "busybox-container",
"namespace": "test.kata"
},
"image": {
"image": "docker.io/library/busybox:latest"
},
"command": [
"sleep",
"9999"
],
"args": [],
"working_dir": "/",
"log_path": "",
"stdin": false,
"stdin_once": false,
"tty": false
}

View File

@@ -0,0 +1,20 @@
{
"metadata": {
"name": "busybox-pod",
"uid": "busybox-pod",
"namespace": "test.kata"
},
"hostname": "busybox_host",
"log_directory": "",
"dns_config": {
},
"port_mappings": [],
"resources": {
},
"labels": {
},
"annotations": {
},
"linux": {
}
}

View File

@@ -0,0 +1,39 @@
{
"metadata": {
"name": "redis-client",
"namespace": "test.kata"
},
"image": {
"image": "docker.io/library/redis:6.0.8-alpine"
},
"command": [
"tail", "-f", "/dev/null"
],
"envs": [
{
"key": "PATH",
"value": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
{
"key": "TERM",
"value": "xterm"
}
],
"labels": {
"tier": "backend"
},
"annotations": {
"pod": "redis-client-pod"
},
"log_path": "",
"stdin": false,
"stdin_once": false,
"tty": false,
"linux": {
"resources": {
"memory_limit_in_bytes": 524288000
},
"security_context": {
}
}
}

View File

@@ -0,0 +1,28 @@
{
"metadata": {
"name": "redis-client-pod",
"uid": "test-redis-client-pod",
"namespace": "test.kata"
},
"hostname": "redis-client",
"log_directory": "",
"dns_config": {
"searches": [
"8.8.8.8"
]
},
"port_mappings": [],
"resources": {
"cpu": {
"limits": 1,
"requests": 1
}
},
"labels": {
"tier": "backend"
},
"annotations": {
},
"linux": {
}
}

View File

@@ -0,0 +1,36 @@
{
"metadata": {
"name": "redis-server",
"namespace": "test.kata"
},
"image": {
"image": "docker.io/library/redis:6.0.8-alpine"
},
"envs": [
{
"key": "PATH",
"value": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
{
"key": "TERM",
"value": "xterm"
}
],
"labels": {
"tier": "backend"
},
"annotations": {
"pod": "redis-server-pod"
},
"log_path": "",
"stdin": false,
"stdin_once": false,
"tty": false,
"linux": {
"resources": {
"memory_limit_in_bytes": 524288000
},
"security_context": {
}
}
}

View File

@@ -0,0 +1,28 @@
{
"metadata": {
"name": "redis-server-pod",
"uid": "test-redis-server-pod",
"namespace": "test.kata"
},
"hostname": "redis-server",
"log_directory": "",
"dns_config": {
"searches": [
"8.8.8.8"
]
},
"port_mappings": [],
"resources": {
"cpu": {
"limits": 1,
"requests": 1
}
},
"labels": {
"tier": "backend"
},
"annotations": {
},
"linux": {
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,43 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
namespace: prometheus
labels:
app: grafana
spec:
replicas: 1
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
containers:
- image: grafana/grafana:7.0.5
name: grafana
ports:
- containerPort: 3000
name: http
---
apiVersion: v1
kind: Service
metadata:
namespace: prometheus
name: grafana
labels:
app: grafana
spec:
type: NodePort
selector:
app: grafana
ports:
- port: 3000
targetPort: 3000
name: http
nodePort: 30000
protocol: TCP

View File

@@ -0,0 +1,55 @@
apiVersion: v1
kind: Namespace
metadata:
name: kata-system
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app.kubernetes.io/name: kata-monitor
name: kata-monitor
namespace: kata-system
spec:
selector:
matchLabels:
app.kubernetes.io/name: kata-monitor
template:
metadata:
labels:
app.kubernetes.io/name: kata-monitor
annotations:
prometheus.io/scrape: "true"
spec:
hostNetwork: true
containers:
- name: kata-monitor
image: docker.io/katadocker/kata-monitor:2.0.0
args:
- -log-level=debug
ports:
- containerPort: 8090
resources:
limits:
cpu: 200m
memory: 300Mi
requests:
cpu: 200m
memory: 300Mi
volumeMounts:
- name: containerdtask
mountPath: /run/containerd/io.containerd.runtime.v2.task/
readOnly: true
- name: containerdsocket
mountPath: /run/containerd/containerd.sock
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: containerdtask
hostPath:
path: /run/containerd/io.containerd.runtime.v2.task/
- name: containerdsocket
hostPath:
path: /run/containerd/containerd.sock

View File

@@ -0,0 +1,132 @@
apiVersion: v1
kind: Namespace
metadata:
name: prometheus
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs: ["get", "list", "watch"]
- apiGroups:
- extensions
resources:
- ingresses
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: prometheus
namespace: prometheus
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: prometheus
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: prometheus
subjects:
- kind: ServiceAccount
name: prometheus
namespace: prometheus
---
kind: Service
apiVersion: v1
metadata:
name: prometheus
namespace: prometheus
labels:
app: prometheus
spec:
type: NodePort
selector:
app: prometheus
ports:
- port: 9090
targetPort: 9090
name: http
nodePort: 30909
protocol: TCP
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: prometheus
namespace: prometheus
spec:
replicas: 1
selector:
matchLabels:
app: prometheus
template:
metadata:
labels:
app: prometheus
spec:
serviceAccountName: prometheus
containers:
- name: prometheus
image: prom/prometheus:v2.7.1
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-config-volume
mountPath: /etc/prometheus/prometheus.yml
subPath: prometheus.yml
volumes:
- name: prometheus-config-volume
configMap:
name: prometheus-config
restartPolicy: Always
---
kind: ConfigMap
apiVersion: v1
metadata:
name: prometheus-config
namespace: prometheus
data:
prometheus.yml: |
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- kata-system
relabel_configs:
# Example relabel to scrape only pods that have
# "prometheus.io/scrape: true" annotation.
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true

View File

@@ -0,0 +1,463 @@
# Importing Kata Containers logs with Fluentd
* [Introduction](#introduction)
* [Overview](#overview)
* [Test stack](#test-stack)
* [Importing the logs](#importing-the-logs)
* [Direct import `logfmt` from `systemd`](#direct-import-logfmt-from-systemd)
* [Configuring `minikube`](#configuring-minikube)
* [Pull from `systemd`](#pull-from-systemd)
* [Systemd Summary](#systemd-summary)
* [Directly importing JSON](#directly-importing-json)
* [JSON in files](#json-in-files)
* [Prefixing all keys](#prefixing-all-keys)
* [Kata `shimv2`](#kata-shimv2)
* [Caveats](#caveats)
* [Summary](#summary)
# Introduction
This document describes how to import Kata Containers logs into [Fluentd](https://www.fluentd.org/),
typically for importing into an
Elastic/Fluentd/Kibana([EFK](https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch#running-efk-stack-in-production))
or Elastic/Logstash/Kibana([ELK](https://www.elastic.co/elastic-stack)) stack.
The majority of this document focusses on CRI-O based (classic) Kata runtime. Much of that information
also applies to the Kata `shimv2` runtime. Differences pertaining to Kata `shimv2` can be found in their
[own section](#kata-shimv2).
> **Note:** This document does not cover any aspect of "log rotation". It is expected that any production
> stack already has a method in place to control node log growth.
# Overview
Kata generates logs. The logs can come from numerous parts of the Kata stack (the runtime, proxy, shim
and even the agent). By default the logs
[go to the system journal](../../src/runtime/README.md#logging),
but they can also be configured to be stored in files.
The logs default format is in [`logfmt` structured logging](https://brandur.org/logfmt), but can be switched to
be JSON with a command line option.
Provided below are some examples of Kata log import and processing using
[Fluentd](https://www.fluentd.org/).
## Test stack
Some of the testing we can perform locally, but other times we really need a live stack for testing.
We will use a [`minikube`](https://github.com/kubernetes/minikube/) stack with EFK enabled and Kata
installed to do our tests. Some details such as specific paths and versions of components may need
to be adapted to your specific installation.
The [Kata minikube installation guide](../install/minikube-installation-guide.md) was used to install
`minikube` with Kata Containers enabled.
The minikube EFK stack `addon` is then enabled:
```bash
$ minikube addons enable efk
```
> *Note*: Installing and booting EFK can take a little while - check progress with
> `kubectl get pods -n=kube-system` and wait for all the pods to get to the `Running` state.
## Importing the logs
Kata offers us two choices to make when storing the logs:
- Do we store them to the system log, or to separate files?
- Do we store them in `logfmt` format, or `JSON`?
We will start by examining the Kata default setup (`logfmt` stored in the system log), and then look
at other options.
## Direct import `logfmt` from `systemd`
Fluentd contains both a component that can read the `systemd` system journals, and a component
that can parse `logfmt` entries. We will utilise these in two separate steps to evaluate how well
the Kata logs import to the EFK stack.
### Configuring `minikube`
> **Note:** Setting up, configuration and deployment of `minikube` is not covered in exacting
> detail in this guide. It is presumed the user has the abilities and their own Kubernetes/Fluentd
> stack they are able to utilise in order to modify and test as necessary.
Minikube by default
[configures](https://github.com/kubernetes/minikube/blob/master/deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/systemd/journald.conf)
the `systemd-journald` with the
[`Storage=volatile`](https://www.freedesktop.org/software/systemd/man/journald.conf.html) option,
which results in the journal being stored in `/run/log/journal`. Unfortunately, the Minikube EFK
Fluentd install extracts most of its logs in `/var/log`, and therefore does not mount `/run/log`
into the Fluentd pod by default. This prevents us from reading the system journal by default.
This can be worked around by patching the Minikube EFK `addon` YAML to mount `/run/log` into the
Fluentd container:
```patch
diff --git a/deploy/addons/efk/fluentd-es-rc.yaml.tmpl b/deploy/addons/efk/fluentd-es-rc.yaml.tmpl
index 75e386984..83bea48b9 100644
--- a/deploy/addons/efk/fluentd-es-rc.yaml.tmpl
+++ b/deploy/addons/efk/fluentd-es-rc.yaml.tmpl
@@ -44,6 +44,8 @@ spec:
volumeMounts:
- name: varlog
mountPath: /var/log
+ - name: runlog
+ mountPath: /run/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
@@ -57,6 +59,9 @@ spec:
- name: varlog
hostPath:
path: /var/log
+ - name: runlog
+ hostPath:
+ path: /run/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
```
> **Note:** After making this change you will need to build your own `minikube` to encapsulate
> and use this change, or fine another method to (re-)launch the Fluentd containers for the change
> to take effect.
### Pull from `systemd`
We will start with testing Fluentd pulling the Kata logs directly from the system journal with the
Fluentd [systemd plugin](https://github.com/fluent-plugin-systemd/fluent-plugin-systemd).
We modify the Fluentd config file with the following fragment. For reference, the Minikube
YAML can be found
[on GitHub](https://github.com/kubernetes/minikube/blob/master/deploy/addons/efk/fluentd-es-configmap.yaml.tmpl):
> **Note:** The below Fluentd config fragment is in the "older style" to match the Minikube version of
> Fluentd. If using a more up to date version of Fluentd, you may need to update some parameters, such as
> using `matches` rather than `filters` and placing `@` before `type`. Your Fluentd should warn you in its
> logs if such updates are necessary.
```
<source>
type systemd
tag kata-containers
path /run/log/journal
pos_file /run/log/journal/kata-journald.pos
filters [{"SYSLOG_IDENTIFIER": "kata-runtime"}, {"SYSLOG_IDENTIFIER": "kata-proxy"}, {"SYSLOG_IDENTIFIER": "kata-shim"}]
read_from_head true
</source>
```
We then apply the new YAML, and restart the Fluentd pod (by killing it, and letting the `ReplicationController`
start a new instance, which will pick up the new `ConfigurationMap`):
```bash
$ kubectl apply -f new-fluentd-cm.yaml
$ kubectl delete pod -n=kube-system fluentd-es-XXXXX
```
Now open the Kibana UI to the Minikube EFK `addon`, and launch a Kata QEMU based test pod in order to
generate some Kata specific log entries:
```bash
$ minikube addons open efk
$ cd $GOPATH/src/github.com/kata-containers/packaging/kata-deploy
$ kubectl apply -f examples/nginx-deployment-qemu.yaml
```
Looking at the Kibana UI, we can now see that some `kata-runtime` tagged records have appeared:
![Kata tags in EFK](./images/efk_kata_tag.png)
If we now filter on that tag, we can see just the Kata related entries
![Kata tags in EFK](./images/efk_filter_on_tag.png)
If we expand one of those entries, we can see we have imported useful information. You can then
sub-filter on, for instance, the `SYSLOG_IDENTIFIER` to differentiate the Kata components, and
on the `PRIORITY` to filter out critical issues etc.
Kata generates a significant amount of Kata specific information, which can be seen as
[`logfmt`](https://github.com/kata-containers/tests/tree/master/cmd/log-parser#logfile-requirements).
data contained in the `MESSAGE` field. Imported as-is, there is no easy way to filter on that data
in Kibana:
![Kata tags in EFK](./images/efk_syslog_entry_detail.png).
We can however further sub-parse the Kata entries using the
[Fluentd plugins](https://docs.fluentbit.io/manual/pipeline/parsers/logfmt) that will parse
`logfmt` formatted data. We can utilise these to parse the sub-fields using a Fluentd filter
section. At the same time, we will prefix the new fields with `kata_` to make it clear where
they have come from:
```
<filter kata-containers>
@type parser
key_name MESSAGE
format logfmt
reserve_data true
inject_key_prefix kata_
</filter>
```
The Minikube Fluentd version does not come with the `logfmt` parser installed, so we will run a local
test to check the parsing works. The resulting output from Fluentd is:
```
2020-02-21 10:31:27.810781647 +0000 kata-containers:
{"_BOOT_ID":"590edceeef5545a784ec8c6181a10400",
"_MACHINE_ID":"3dd49df65a1b467bac8d51f2eaa17e92",
"_HOSTNAME":"minikube",
"PRIORITY":"6",
"_UID":"0",
"_GID":"0",
"_SYSTEMD_SLICE":"system.slice",
"_SELINUX_CONTEXT":"kernel",
"_CAP_EFFECTIVE":"3fffffffff",
"_TRANSPORT":"syslog",
"_SYSTEMD_CGROUP":"/system.slice/crio.service",
"_SYSTEMD_UNIT":"crio.service",
"_SYSTEMD_INVOCATION_ID":"f2d99c784e6f406c87742f4bca16a4f6",
"SYSLOG_IDENTIFIER":"kata-runtime",
"_COMM":"kata-runtime",
"_EXE":"/opt/kata/bin/kata-runtime",
"SYSLOG_TIMESTAMP":"Feb 21 10:31:27 ",
"_CMDLINE":"/opt/kata/bin/kata-runtime --config /opt/kata/share/defaults/kata-containers/configuration-qemu.toml --root /run/runc state 7cdd31660d8705facdadeb8598d2c0bd008e8142c54e3b3069abd392c8d58997",
"SYSLOG_PID":"14314",
"_PID":"14314",
"MESSAGE":"time=\"2020-02-21T10:31:27.810781647Z\" level=info msg=\"release sandbox\" arch=amd64 command=state container=7cdd31660d8705facdadeb8598d2c0bd008e8142c54e3b3069abd392c8d58997 name=kata-runtime pid=14314 sandbox=1c3e77cad66aa2b6d8cc846f818370f79cb0104c0b840f67d0f502fd6562b68c source=virtcontainers subsystem=sandbox",
"SYSLOG_RAW":"<6>Feb 21 10:31:27 kata-runtime[14314]: time=\"2020-02-21T10:31:27.810781647Z\" level=info msg=\"release sandbox\" arch=amd64 command=state container=7cdd31660d8705facdadeb8598d2c0bd008e8142c54e3b3069abd392c8d58997 name=kata-runtime pid=14314 sandbox=1c3e77cad66aa2b6d8cc846f818370f79cb0104c0b840f67d0f502fd6562b68c source=virtcontainers subsystem=sandbox\n",
"_SOURCE_REALTIME_TIMESTAMP":"1582281087810805",
"kata_level":"info",
"kata_msg":"release sandbox",
"kata_arch":"amd64",
"kata_command":"state",
"kata_container":"7cdd31660d8705facdadeb8598d2c0bd008e8142c54e3b3069abd392c8d58997",
"kata_name":"kata-runtime",
"kata_pid":14314,
"kata_sandbox":"1c3e77cad66aa2b6d8cc846f818370f79cb0104c0b840f67d0f502fd6562b68c",
"kata_source":"virtcontainers",
"kata_subsystem":"sandbox"}
```
Here we can see that the `MESSAGE` field has been parsed out and pre-pended into the `kata_*` fields,
which contain usefully filterable fields such as `kata_level`, `kata_command` and `kata_subsystem` etc.
### Systemd Summary
We have managed to configure Fluentd to capture the Kata logs entries from the system
journal, and further managed to then parse out the `logfmt` message into JSON to allow further analysis
inside Elastic/Kibana.
## Directly importing JSON
The underlying basic data format used by Fluentd and Elastic is JSON. If we output JSON
directly from Kata, that should make overall import and processing of the log entries more efficient.
There are potentially two things we can do with Kata here:
- Get Kata to [output its logs in `JSON` format](../../src/runtime/README.md#logging) rather
than `logfmt`.
- Get Kata to log directly into a file, rather than via the system journal. This would allow us to not need
to parse the systemd format files, and capture the Kata log lines directly. It would also avoid Fluentd
having to potentially parse or skip over many non-Kata related systemd journal that it is not at all
interested in.
In theory we could get Kata to post its messages in JSON format to the systemd journal by adding the
`--log-format=json` option to the Kata runtime, and then swapping the `logfmt` parser for the `json`
parser, but we would still need to parse the systemd files. We will skip this setup in this document, and
go directly to a full Kata specific JSON format logfile test.
### JSON in files
Kata runtime has the ability to generate JSON logs directly, rather than its default `logfmt` format. Passing
the `--log-format=json` argument to the Kata runtime enables this. The easiest way to pass in this extra
parameter from a [Kata deploy](https://github.com/kata-containers/packaging/tree/master/kata-deploy) installation
is to edit the `/opt/kata/bin/kata-qemu` shell script (generated by the
[Kata packaging release scripts](https://github.com/kata-containers/packaging/blob/master/release/kata-deploy-binaries.sh)).
At the same time, we will add the `--log=/var/log/kata-runtime.log` argument to store the Kata logs in their
own file (rather than into the system journal).
```bash
#!/bin/bash
/opt/kata/bin/kata-runtime --config "/opt/kata/share/defaults/kata-containers/configuration-qemu.toml" --log-format=json --log=/var/log/kata-runtime.log $@
```
And then we'll add the Fluentd config section to parse that file. Note, we inform the parser that Kata is
generating timestamps in `iso8601` format. Kata places these timestamps into a field called `time`, which
is the default field the Fluentd parser looks for:
```
<source>
type tail
tag kata-containers
path /var/log/kata-runtime.log
pos_file /var/log/kata-runtime.pos
format json
time_format %iso8601
read_from_head true
</source>
```
This imports the `kata-runtime` logs, with the resulting records looking like:
![Kata tags in EFK](./images/efk_direct_from_json.png)
Something to note here is that we seem to have gained an awful lot of fairly identical looking fields in the
elastic database:
![Kata tags in EFK](./images/efk_direct_json_fields.png)
In reality, they are not all identical, but do come out of one of the Kata log entries - from the
`kill` command. A JSON fragment showing an example is below:
```json
{
...
"EndpointProperties": {
"Iface": {
"Index": 4,
"MTU": 1460,
"TxQLen": 0,
"Name": "eth0",
"HardwareAddr": "ClgKAQAL",
"Flags": 19,
"RawFlags": 69699,
"ParentIndex": 15,
"MasterIndex": 0,
"Namespace": null,
"Alias": "",
"Statistics": {
"RxPackets": 1,
"TxPackets": 5,
"RxBytes": 42,
"TxBytes": 426,
"RxErrors": 0,
"TxErrors": 0,
"RxDropped": 0,
"TxDropped": 0,
"Multicast": 0,
"Collisions": 0,
"RxLengthErrors": 0,
"RxOverErrors": 0,
"RxCrcErrors": 0,
"RxFrameErrors": 0,
"RxFifoErrors": 0,
"RxMissedErrors": 0,
"TxAbortedErrors": 0,
"TxCarrierErrors": 0,
"TxFifoErrors": 0,
"TxHeartbeatErrors": 0,
"TxWindowErrors": 0,
"RxCompressed": 0,
"TxCompressed": 0
...
```
If these new fields are not required, then a Fluentd
[`record_transformer` filter](https://docs.fluentd.org/filter/record_transformer#remove_keys)
could be used to delete them before they are injected into Elastic.
#### Prefixing all keys
It may be noted above that all the fields are imported with their base native name, such as
`arch` and `level`. It may be better for data storage and processing if all the fields were
identifiable as having come from Kata, and avoid namespace clashes with other imports.
This can be achieved by prefixing all the keys with, say, `kata_`. It appears `fluend` cannot
do this directly in the input or match phases, but can in the filter/parse phase (as was done
when processing `logfmt` data for instance). To achieve this, we can first input the Kata
JSON data as a single line, and then add the prefix using a JSON filter section:
```
# Pull in as a single line...
<source>
@type tail
path /var/log/kata-runtime.log
pos_file /var/log/kata-runtime.pos
read_from_head true
tag kata-runtime
<parse>
@type none
</parse>
</source>
<filter kata-runtime>
@type parser
key_name message
# drop the original single line `message` entry
reserve_data false
inject_key_prefix kata_
<parse>
@type json
</parse>
</filter>
```
# Kata `shimv2`
When using the Kata `shimv2` runtime with `containerd`, as described in this
[how-to guide](containerd-kata.md#containerd-runtime-v2-api-shim-v2-api), the Kata logs are routed
differently, and some adjustments to the above methods will be necessary to filter them in Fluentd.
The Kata `shimv2` logs are different in two primary ways:
- The Kata logs are directed via `containerd`, and will be captured along with the `containerd` logs,
such as on the containerd stdout or in the system journal.
- In parallel, Kata `shimv2` places its logs into the system journal under the systemd name of `kata`.
Below is an example Fluentd configuration fragment showing one possible method of extracting and separating
the `containerd` and Kata logs from the system journal by filtering on the Kata `SYSLOG_IDENTIFIER` field,
using the [Fluentd v0.12 rewrite_tag_filter](https://docs.fluentd.org/v/0.12/output/rewrite_tag_filter):
```yaml
<source>
type systemd
path /path/to/journal
# capture the containerd logs
filters [{ "_SYSTEMD_UNIT": "containerd.service" }]
pos_file /tmp/systemd-containerd.pos
read_from_head true
# tag those temporarily, as we will filter them and rewrite the tags
tag containerd_tmp_tag
</source>
# filter out and split between kata entries and containerd entries
<match containerd_tmp_tag>
@type rewrite_tag_filter
# Tag Kata entries
<rule>
key SYSLOG_IDENTIFIER
pattern kata
tag kata_tag
</rule>
# Anything that was not matched so far, tag as containerd
<rule>
key MESSAGE
pattern /.+/
tag containerd_tag
</rule>
</match>
```
# Caveats
> **Warning:** You should be aware of the following caveats, which may disrupt or change what and how
> you capture and process the Kata Containers logs.
The following caveats should be noted:
- There is a [known issue](https://github.com/kata-containers/runtime/issues/985) whereby enabling
full debug in Kata, particularly enabling agent kernel log messages, can result in corrupt log lines
being generated by Kata (due to overlapping multiple output streams).
- Presently only the `kata-runtime` can generate JSON logs, and direct them to files. Other components
such as the `proxy` and `shim` can only presently report to the system journal. Hopefully these
components will be extended with extra functionality.
# Summary
We have shown how native Kata logs using the systemd journal and `logfmt` data can be import, and also
how Kata can be instructed to generate JSON logs directly, and import those into Fluentd.
We have detailed a few known caveats, and leave it to the implementer to choose the best method for their
system.

View File

@@ -0,0 +1,109 @@
# Loading kernel modules
A new feature for loading kernel modules was introduced in Kata Containers 1.9.
The list of kernel modules and their parameters can be provided using the
configuration file or OCI annotations. The [Kata runtime][1] gives that
information to the [Kata Agent][2] through gRPC when the sandbox is created.
The [Kata Agent][2] will insert the kernel modules using `modprobe(8)`, hence
modules dependencies are resolved automatically.
The sandbox will not be started when:
* A kernel module is specified and the `modprobe(8)` command is not installed in
the guest or it fails loading the module.
* The module is not available in the guest or it doesn't meet the guest kernel
requirements, like architecture and version.
In the following sections are documented the different ways that exist for
loading kernel modules in Kata Containers.
- [Using Kata Configuration file](#using-kata-configuration-file)
- [Using annotations](#using-annotations)
# Using Kata Configuration file
```
NOTE: Use this method, only if you need to pass the kernel modules to all
containers. Please use annotations described below to set per pod annotations.
```
The list of kernel modules and parameters can be set in the `kernel_modules`
option as a coma separated list, where each entry in the list specifies a kernel
module and its parameters. Each list element comprises one or more space separated
fields. The first field specifies the module name and subsequent fields specify
individual parameters for the module.
The following example specifies two modules to load: `e1000e` and `i915`. Two parameters
are specified for the `e1000` module: `InterruptThrottleRate` (which takes an array
of integer values) and `EEE` (which requires a single integer value).
```toml
kernel_modules=["e1000e InterruptThrottleRate=3000,3000,3000 EEE=1", "i915"]
```
Not all the container managers allow users provide custom annotations, hence
this is the only way that Kata Containers provide for loading modules when
custom annotations are not supported.
There are some limitations with this approach:
* Write access to the Kata configuration file is required.
* The configuration file must be updated when a new container is created,
otherwise the same list of modules is used, even if they are not needed in the
container.
# Using annotations
As was mentioned above, not all containers need the same modules, therefore using
the configuration file for specifying the list of kernel modules per [POD][3] can
be a pain.
Unlike the configuration file, [annotations](how-to-set-sandbox-config-kata.md)
provide a way to specify custom configurations per POD.
The list of kernel modules and parameters can be set using the annotation
`io.katacontainers.config.agent.kernel_modules` as a semicolon separated
list, where the first word of each element is considered as the module name and
the rest as its parameters.
In the following example two PODs are created, but the kernel modules `e1000e`
and `i915` are inserted only in the POD `pod1`.
```yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
annotations:
io.katacontainers.config.agent.kernel_modules: "e1000e EEE=1; i915"
spec:
runtimeClassName: kata
containers:
- name: c1
image: busybox
command:
- sh
stdin: true
tty: true
---
apiVersion: v1
kind: Pod
metadata:
name: pod2
spec:
runtimeClassName: kata
containers:
- name: c2
image: busybox
command:
- sh
stdin: true
tty: true
```
> **Note**: To pass annotations to Kata containers, [CRI-O must be configured correctly](how-to-set-sandbox-config-kata.md#cri-o-configuration)
[1]: ../../src/runtime
[2]: ../../src/agent
[3]: https://kubernetes.io/docs/concepts/workloads/pods/pod/

View File

@@ -0,0 +1,108 @@
# How to monitor Kata Containers in Kubernetes clusters
This document describes how to run `kata-monitor` in a Kubernetes cluster using Prometheus's service discovery to scrape metrics from `kata-agent`.
- [Introduction](#introduction)
- [Pre-requisites](#pre-requisites)
- [Configure Prometheus](#configure-prometheus)
- [Configure `kata-monitor`](#configure-kata-monitor)
- [Setup Grafana](#setup-grafana)
* [Create `datasource`](#create-datasource)
* [Import dashboard](#import-dashboard)
> **Warning**: This how-to is only for evaluation purpose, you **SHOULD NOT** running it in production using this configurations.
## Introduction
If you are running Kata containers in a Kubernetes cluster, the best way to run `kata-monitor` is using Kubernetes native `DaemonSet`, `kata-monitor` will run on desired Kubernetes nodes without other operations when new nodes joined the cluster.
Prometheus also support a Kubernetes service discovery that can find scrape targets dynamically without explicitly setting `kata-monitor`'s metric endpoints.
## Pre-requisites
You must have a running Kubernetes cluster first. If not, [install a Kubernetes cluster](https://kubernetes.io/docs/setup/) first.
Also you should ensure that `kubectl` working correctly.
> **Note**: More information about Kubernetes integrations:
> - [Run Kata Containers with Kubernetes](run-kata-with-k8s.md)
> - [How to use Kata Containers and Containerd](containerd-kata.md)
> - [How to use Kata Containers and CRI (containerd plugin) with Kubernetes](how-to-use-k8s-with-cri-containerd-and-kata.md)
## Configure Prometheus
Start Prometheus by utilizing our sample manifest:
```
$ kubectl apply -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/docs/how-to/data/prometheus.yml
```
This will create a new namespace, `prometheus`, and create the following resources:
* `ClusterRole`, `ServiceAccount`, `ClusterRoleBinding` to let Prometheus to access Kubernetes API server.
* `ConfigMap` that contains minimum configurations to let Prometheus run Kubernetes service discovery.
* `Deployment` that run Prometheus in `Pod`.
* `Service` with `type` of `NodePort`(`30909` in this how to), that we can access Prometheus through `<hostIP>:30909`. In production environment, this `type` may be `LoadBalancer` or `Ingress` resource.
After the Prometheus server is running, run `curl -s http://hostIP:NodePort:30909/metrics`, if Prometheus is working correctly, you will get response like these:
```
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 3.9403e-05
go_gc_duration_seconds{quantile="0.25"} 0.000169907
go_gc_duration_seconds{quantile="0.5"} 0.000207421
go_gc_duration_seconds{quantile="0.75"} 0.000229911
```
## Configure `kata-monitor`
`kata-monitor` can be started on the cluster as follows:
```
$ kubectl apply -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/docs/how-to/data/kata-monitor-daemonset.yml
```
This will create a new namespace `kata-system` and a `daemonset` in it.
Once the `daemonset` is running, Prometheus should discover `kata-monitor` as a target. You can open `http://<hostIP>:30909/service-discovery` and find `kubernetes-pods` under the `Service Discovery` list
## Setup Grafana
Run this command to run Grafana in Kubernetes:
```
$ kubectl apply -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/docs/how-to/data/grafana.yml
```
This will create deployment and service for Grafana under namespace `prometheus`.
After the Grafana deployment is ready, you can open `http://hostIP:NodePort:30000/` to access Grafana server. For Grafana 7.0.5, the default user/password is `admin/admin`. You can modify the default account and adjust other security settings by editing the [Grafana configuration](https://grafana.com/docs/grafana/latest/installation/configuration/#security).
To use Grafana show data from Prometheus, you must create a Prometheus `datasource` and dashboard.
### Create `datasource`
Open `http://hostIP:NodePort:30000/datasources/new` in your browser, select Prometheus from time series databases list.
Normally you only need to set `URL` to `http://hostIP:NodePort:30909` to let it work, and leave the name as `Prometheus` as default.
### Import dashboard
A [sample dashboard](data/dashboard.json) for Kata Containers metrics is provided which can be imported to Grafana for evaluation.
You can import this dashboard using Grafana UI, or using `curl` command in console.
```
$ curl -XPOST -i localhost:3000/api/dashboards/import \
-u admin:admin \
-H "Content-Type: application/json" \
-d "{\"dashboard\":$(curl -sL https://raw.githubusercontent.com/kata-containers/kata-containers/main/docs/how-to/data/dashboard.json )}"
```
## References
- [Prometheus `kubernetes_sd_config`](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config)

View File

@@ -0,0 +1,204 @@
# Per-Pod Kata Configurations
Kata Containers gives users freedom to customize at per-pod level, by setting
a wide range of Kata specific annotations in the pod specification.
Some annotations may be [restricted](#restricted-annotations) by the
configuration file for security reasons, notably annotations that could lead the
runtime to execute programs on the host. Such annotations are marked with _(R)_ in
the tables below.
# Kata Configuration Annotations
There are several kinds of Kata configurations and they are listed below.
## Global Options
| Key | Value Type | Comments |
|-------| ----- | ----- |
| `io.katacontainers.config_path` | string | Kata config file location that overrides the default config paths |
| `io.katacontainers.pkg.oci.bundle_path` | string | OCI bundle path |
| `io.katacontainers.pkg.oci.container_type`| string | OCI container type. Only accepts `pod_container` and `pod_sandbox` |
## Runtime Options
| Key | Value Type | Comments |
|-------| ----- | ----- |
| `io.katacontainers.config.runtime.experimental` | `boolean` | determines if experimental features enabled |
| `io.katacontainers.config.runtime.disable_guest_seccomp`| `boolean` | determines if `seccomp` should be applied inside guest |
| `io.katacontainers.config.runtime.disable_new_netns` | `boolean` | determines if a new netns is created for the hypervisor process |
| `io.katacontainers.config.runtime.internetworking_model` | string| determines how the VM should be connected to the container network interface. Valid values are `macvtap`, `tcfilter` and `none` |
| `io.katacontainers.config.runtime.sandbox_cgroup_only`| `boolean` | determines if Kata processes are managed only in sandbox cgroup |
## Agent Options
| Key | Value Type | Comments |
|-------| ----- | ----- |
| `io.katacontainers.config.agent.enable_tracing` | `boolean` | enable tracing for the agent |
| `io.katacontainers.config.agent.container_pipe_size` | uint32 | specify the size of the std(in/out) pipes created for containers |
| `io.katacontainers.config.agent.kernel_modules` | string | the list of kernel modules and their parameters that will be loaded in the guest kernel. Semicolon separated list of kernel modules and their parameters. These modules will be loaded in the guest kernel using `modprobe`(8). E.g., `e1000e InterruptThrottleRate=3000,3000,3000 EEE=1; i915 enable_ppgtt=0` |
| `io.katacontainers.config.agent.trace_mode` | string | the trace mode for the agent |
| `io.katacontainers.config.agent.trace_type` | string | the trace type for the agent |
## Hypervisor Options
| Key | Value Type | Comments |
|-------| ----- | ----- |
| `io.katacontainers.config.hypervisor.asset_hash_type` | string | the hash type used for assets verification, default is `sha512` |
| `io.katacontainers.config.hypervisor.block_device_cache_direct` | `boolean` | Denotes whether use of `O_DIRECT` (bypass the host page cache) is enabled |
| `io.katacontainers.config.hypervisor.block_device_cache_noflush` | `boolean` | Denotes whether flush requests for the device are ignored |
| `io.katacontainers.config.hypervisor.block_device_cache_set` | `boolean` | cache-related options will be set to block devices or not |
| `io.katacontainers.config.hypervisor.block_device_driver` | string | the driver to be used for block device, valid values are `virtio-blk`, `virtio-scsi`, `nvdimm`|
| `io.katacontainers.config.hypervisor.cpu_features` | `string` | Comma-separated list of CPU features to pass to the CPU (QEMU) |
| `io.katacontainers.config.hypervisor.ctlpath` (R) | `string` | Path to the `acrnctl` binary for the ACRN hypervisor |
| `io.katacontainers.config.hypervisor.default_max_vcpus` | uint32| the maximum number of vCPUs allocated for the VM by the hypervisor |
| `io.katacontainers.config.hypervisor.default_memory` | uint32| the memory assigned for a VM by the hypervisor in `MiB` |
| `io.katacontainers.config.hypervisor.default_vcpus` | uint32| the default vCPUs assigned for a VM by the hypervisor |
| `io.katacontainers.config.hypervisor.disable_block_device_use` | `boolean` | disallow a block device from being used |
| `io.katacontainers.config.hypervisor.disable_image_nvdimm` | `boolean` | specify if a `nvdimm` device should be used as rootfs for the guest (QEMU) |
| `io.katacontainers.config.hypervisor.disable_vhost_net` | `boolean` | specify if `vhost-net` is not available on the host |
| `io.katacontainers.config.hypervisor.enable_hugepages` | `boolean` | if the memory should be `pre-allocated` from huge pages |
| `io.katacontainers.config.hypervisor.enable_iommu_platform` | `boolean` | enable `iommu` on CCW devices (QEMU s390x) |
| `io.katacontainers.config.hypervisor.enable_iommu` | `boolean` | enable `iommu` on Q35 (QEMU x86_64) |
| `io.katacontainers.config.hypervisor.enable_iothreads` | `boolean`| enable IO to be processed in a separate thread. Supported currently for virtio-`scsi` driver |
| `io.katacontainers.config.hypervisor.enable_mem_prealloc` | `boolean` | the memory space used for `nvdimm` device by the hypervisor |
| `io.katacontainers.config.hypervisor.enable_swap` | `boolean` | enable swap of VM memory |
| `io.katacontainers.config.hypervisor.enable_vhost_user_store` | `boolean` | enable vhost-user storage device (QEMU) |
| `io.katacontainers.config.hypervisor.enable_virtio_mem` | `boolean` | enable virtio-mem (QEMU) |
| `io.katacontainers.config.hypervisor.entropy_source` | string| the path to a host source of entropy (`/dev/random`, `/dev/urandom` or real hardware RNG device) |
| `io.katacontainers.config.hypervisor.file_mem_backend` (R) | string | file based memory backend root directory |
| `io.katacontainers.config.hypervisor.firmware_hash` | string | container firmware SHA-512 hash value |
| `io.katacontainers.config.hypervisor.firmware` | string | the guest firmware that will run the container VM |
| `io.katacontainers.config.hypervisor.guest_hook_path` | string | the path within the VM that will be used for drop in hooks |
| `io.katacontainers.config.hypervisor.hotplug_vfio_on_root_bus` | `boolean` | indicate if devices need to be hotplugged on the root bus instead of a bridge|
| `io.katacontainers.config.hypervisor.hypervisor_hash` | string | container hypervisor binary SHA-512 hash value |
| `io.katacontainers.config.hypervisor.image_hash` | string | container guest image SHA-512 hash value |
| `io.katacontainers.config.hypervisor.image` | string | the guest image that will run in the container VM |
| `io.katacontainers.config.hypervisor.initrd_hash` | string | container guest initrd SHA-512 hash value |
| `io.katacontainers.config.hypervisor.initrd` | string | the guest initrd image that will run in the container VM |
| `io.katacontainers.config.hypervisor.jailer_hash` | string | container jailer SHA-512 hash value |
| `io.katacontainers.config.hypervisor.jailer_path` (R) | string | the jailer that will constrain the container VM |
| `io.katacontainers.config.hypervisor.kernel_hash` | string | container kernel image SHA-512 hash value |
| `io.katacontainers.config.hypervisor.kernel_params` | string | additional guest kernel parameters |
| `io.katacontainers.config.hypervisor.kernel` | string | the kernel used to boot the container VM |
| `io.katacontainers.config.hypervisor.machine_accelerators` | string | machine specific accelerators for the hypervisor |
| `io.katacontainers.config.hypervisor.machine_type` | string | the type of machine being emulated by the hypervisor |
| `io.katacontainers.config.hypervisor.memory_offset` | uint32| the memory space used for `nvdimm` device by the hypervisor |
| `io.katacontainers.config.hypervisor.memory_slots` | uint32| the memory slots assigned to the VM by the hypervisor |
| `io.katacontainers.config.hypervisor.msize_9p` | uint32 | the `msize` for 9p shares |
| `io.katacontainers.config.hypervisor.path` | string | the hypervisor that will run the container VM |
| `io.katacontainers.config.hypervisor.pcie_root_port` | specify the number of PCIe Root Port devices. The PCIe Root Port device is used to hot-plug a PCIe device (QEMU) |
| `io.katacontainers.config.hypervisor.shared_fs` | string | the shared file system type, either `virtio-9p` or `virtio-fs` |
| `io.katacontainers.config.hypervisor.use_vsock` | `boolean` | specify use of `vsock` for agent communication |
| `io.katacontainers.config.hypervisor.vhost_user_store_path` (R) | `string` | specify the directory path where vhost-user devices related folders, sockets and device nodes should be (QEMU) |
| `io.katacontainers.config.hypervisor.virtio_fs_cache_size` | uint32 | virtio-fs DAX cache size in `MiB` |
| `io.katacontainers.config.hypervisor.virtio_fs_cache` | string | the cache mode for virtio-fs, valid values are `always`, `auto` and `none` |
| `io.katacontainers.config.hypervisor.virtio_fs_daemon` | string | virtio-fs `vhost-user` daemon path |
| `io.katacontainers.config.hypervisor.virtio_fs_extra_args` | string | extra options passed to `virtiofs` daemon |
# CRI-O Configuration
In case of CRI-O, all annotations specified in the pod spec are passed down to Kata.
For containerd, annotations specified in the pod spec are passed down to Kata
starting with version `1.3.0` of containerd. Additionally, extra configuration is
needed for containerd, by providing a `pod_annotations` field in the containerd config
file. The `pod_annotations` field is a list of annotations that can be passed down to
Kata as OCI annotations. It supports golang match patterns. Since annotations supported
by Kata follow the pattern `io.katacontainers.*`, the following configuration would work
for passing annotations to Kata from containerd:
```
$ cat /etc/containerd/config
....
[plugins.cri.containerd.runtimes.kata]
runtime_type = "io.containerd.runc.v1"
pod_annotations = ["io.katacontainers.*"]
[plugins.cri.containerd.runtimes.kata.options]
BinaryName = "/usr/bin/kata-runtime"
....
```
Additional documentation on the above configuration can be found in the
[containerd docs](https://github.com/containerd/cri/blob/8d5a8355d07783ba2f8f451209f6bdcc7c412346/docs/config.md).
# Example - Using annotations
As mentioned above, not all containers need the same modules, therefore using
the configuration file for specifying the list of kernel modules per POD can
be a pain. Unlike the configuration file, annotations provide a way to specify
custom configurations per POD.
The list of kernel modules and parameters can be set using the annotation
`io.katacontainers.config.agent.kernel_modules` as a semicolon separated
list, where the first word of each element is considered as the module name and
the rest as its parameters.
Also users might want to enable guest `seccomp` to provide better isolation with a
little performance sacrifice. The annotation
`io.katacontainers.config.runtime.disable_guest_seccomp` can used for such purpose.
In the following example two PODs are created, but the kernel modules `e1000e`
and `i915` are inserted only in the POD `pod1`. Also guest `seccomp` is only enabled
in the POD `pod2`.
```yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
annotations:
io.katacontainers.config.agent.kernel_modules: "e1000e EEE=1; i915"
spec:
runtimeClassName: kata
containers:
- name: c1
image: busybox
command:
- sh
stdin: true
tty: true
---
apiVersion: v1
kind: Pod
metadata:
name: pod2
annotations:
io.katacontainers.config.runtime.disable_guest_seccomp: false
spec:
runtimeClassName: kata
containers:
- name: c2
image: busybox
command:
- sh
stdin: true
tty: true
```
# Restricted annotations
Some annotations are _restricted_, meaning that the configuration file specifies
the acceptable values. Currently, only hypervisor annotations are restricted,
for security reason, with the intent to control which binaries the Kata
Containers runtime will launch on your behalf.
The configuration file validates the annotation _name_ as well as the annotation
_value_.
The acceptable annotation names are defined by the `enable_annotations` entry in
the configuration file.
For restricted annotations, an additional configuration entry provides a list of
acceptable values. Since most restricted annotations are intended to control
which binaries the runtime can execute, the valid value is generally provided by
a shell pattern, as defined by `glob(3)`. The table below provides the name of
the configuration entry:
| Key | Config file entry | Comments |
|-------| ----- | ----- |
| `ctlpath` | `valid_ctlpaths` | Valid paths for `acrnctl` binary |
| `file_mem_backend` | `valid_file_mem_backends` | Valid locations for the file-based memory backend root directory |
| `jailer_path` | `valid_jailer_paths`| Valid paths for the jailer constraining the container VM (Firecracker) |
| `path` | `valid_hypervisor_paths` | Valid hypervisors to run the container VM |
| `vhost_user_store_path` | `valid_vhost_user_store_paths` | Valid paths for vhost-user related files|
| `virtio_fs_daemon` | `valid_virtio_fs_daemon_paths` | Valid paths for the `virtiofsd` daemon |

View File

@@ -0,0 +1,220 @@
# How to use Kata Containers and CRI (containerd plugin) with Kubernetes
* [Requirements](#requirements)
* [Install and configure containerd](#install-and-configure-containerd)
* [Install and configure Kubernetes](#install-and-configure-kubernetes)
* [Install Kubernetes](#install-kubernetes)
* [Configure Kubelet to use containerd](#configure-kubelet-to-use-containerd)
* [Configure HTTP proxy - OPTIONAL](#configure-http-proxy---optional)
* [Start Kubernetes](#start-kubernetes)
* [Install a Pod Network](#install-a-pod-network)
* [Allow pods to run in the master node](#allow-pods-to-run-in-the-master-node)
* [Create an untrusted pod using Kata Containers](#create-an-untrusted-pod-using-kata-containers)
* [Delete created pod](#delete-created-pod)
This document describes how to set up a single-machine Kubernetes (k8s) cluster.
The Kubernetes cluster will use the
[CRI containerd plugin](https://github.com/containerd/cri) and
[Kata Containers](https://katacontainers.io) to launch untrusted workloads.
For Kata Containers 1.5.0-rc2 and above, we will use `containerd-shim-kata-v2` (short as `shimv2` in this documentation)
to launch Kata Containers. For the previous version of Kata Containers, the Pods are launched with `kata-runtime`.
## Requirements
- Kubernetes, Kubelet, `kubeadm`
- containerd with `cri` plug-in
- Kata Containers
> **Note:** For information about the supported versions of these components,
> see the Kata Containers
> [`versions.yaml`](../../versions.yaml)
> file.
## Install and configure containerd
First, follow the [How to use Kata Containers and Containerd](containerd-kata.md) to install and configure containerd.
Then, make sure the containerd works with the [examples in it](containerd-kata.md#run).
## Install and configure Kubernetes
### Install Kubernetes
- Follow the instructions for
[`kubeadm` installation](https://kubernetes.io/docs/setup/independent/install-kubeadm/).
- Check `kubeadm` is now available
```bash
$ command -v kubeadm
```
### Configure Kubelet to use containerd
In order to allow Kubelet to use containerd (using the CRI interface), configure the service to point to the `containerd` socket.
- Configure Kubernetes to use `containerd`
```bash
$ sudo mkdir -p /etc/systemd/system/kubelet.service.d/
$ cat << EOF | sudo tee /etc/systemd/system/kubelet.service.d/0-containerd.conf
[Service]
Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock"
EOF
```
- Inform systemd about the new configuration
```bash
$ sudo systemctl daemon-reload
```
### Configure HTTP proxy - OPTIONAL
If you are behind a proxy, use the following script to configure your proxy for docker, Kubelet, and containerd:
```bash
$ services="
kubelet
containerd
docker
"
$ for service in ${services}; do
service_dir="/etc/systemd/system/${service}.service.d/"
sudo mkdir -p ${service_dir}
cat << EOT | sudo tee "${service_dir}/proxy.conf"
[Service]
Environment="HTTP_PROXY=${http_proxy}"
Environment="HTTPS_PROXY=${https_proxy}"
Environment="NO_PROXY=${no_proxy}"
EOT
done
$ sudo systemctl daemon-reload
```
## Start Kubernetes
- Make sure `containerd` is up and running
```bash
$ sudo systemctl restart containerd
$ sudo systemctl status containerd
```
- Prevent conflicts between `docker` iptables (packet filtering) rules and k8s pod communication
If Docker is installed on the node, it is necessary to modify the rule
below. See https://github.com/kubernetes/kubernetes/issues/40182 for further
details.
```bash
$ sudo iptables -P FORWARD ACCEPT
```
- Start cluster using `kubeadm`
```bash
$ sudo kubeadm init --cri-socket /run/containerd/containerd.sock --pod-network-cidr=10.244.0.0/16
$ export KUBECONFIG=/etc/kubernetes/admin.conf
$ sudo -E kubectl get nodes
$ sudo -E kubectl get pods
```
## Install a Pod Network
A pod network plugin is needed to allow pods to communicate with each other.
- Install the `flannel` plugin by following the
[Using `kubeadm` to Create a Cluster](https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#instructions)
guide, starting from the **Installing a pod network** section.
- Create a pod network using flannel
> **Note:** There is no known way to determine programmatically the best version (commit) to use.
> See https://github.com/coreos/flannel/issues/995.
```bash
$ sudo -E kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
```
- Wait for the pod network to become available
```bash
# number of seconds to wait for pod network to become available
$ timeout_dns=420
$ while [ "$timeout_dns" -gt 0 ]; do
if sudo -E kubectl get pods --all-namespaces | grep dns | grep Running; then
break
fi
sleep 1s
((timeout_dns--))
done
```
- Check the pod network is running
```bash
$ sudo -E kubectl get pods --all-namespaces | grep dns | grep Running && echo "OK" || ( echo "FAIL" && false )
```
## Allow pods to run in the master node
By default, the cluster will not schedule pods in the master node. To enable master node scheduling:
```bash
$ sudo -E kubectl taint nodes --all node-role.kubernetes.io/master-
```
## Create an untrusted pod using Kata Containers
By default, all pods are created with the default runtime configured in CRI containerd plugin.
If a pod has the `io.kubernetes.cri.untrusted-workload` annotation set to `"true"`, the CRI plugin runs the pod with the
[Kata Containers runtime](../../src/runtime/README.md).
- Create an untrusted pod configuration
```bash
$ cat << EOT | tee nginx-untrusted.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-untrusted
annotations:
io.kubernetes.cri.untrusted-workload: "true"
spec:
containers:
- name: nginx
image: nginx
EOT
```
- Create an untrusted pod
```bash
$ sudo -E kubectl apply -f nginx-untrusted.yaml
```
- Check pod is running
```bash
$ sudo -E kubectl get pods
```
- Check hypervisor is running
```bash
$ ps aux | grep qemu
```
## Delete created pod
```bash
$ sudo -E kubectl delete -f nginx-untrusted.yaml
```

View File

@@ -0,0 +1,130 @@
# Kata Containers with ACRN
This document provides an overview on how to run Kata containers with ACRN hypervisor and device model.
- [Introduction](#introduction)
- [Pre-requisites](#pre-requisites)
- [Configure Docker](#configure-docker)
- [Configure Kata Containers with ACRN](#configure-kata-containers-with-acrn)
## Introduction
ACRN is a flexible, lightweight Type-1 reference hypervisor built with real-time and safety-criticality in mind. ACRN uses an open source platform making it optimized to streamline embedded development.
Some of the key features being:
- Small footprint - Approx. 25K lines of code (LOC).
- Real Time - Low latency, faster boot time, improves overall responsiveness with hardware.
- Adaptability - Multi-OS support for guest operating systems like Linux, Android, RTOSes.
- Rich I/O mediators - Allows sharing of various I/O devices across VMs.
- Optimized for a variety of IoT (Internet of Things) and embedded device solutions.
Please refer to ACRN [documentation](https://projectacrn.github.io/latest/index.html) for more details on ACRN hypervisor and device model.
## Pre-requisites
This document requires the presence of the ACRN hypervisor and Kata Containers on your system. Install using the instructions available through the following links:
- ACRN supported [Hardware](https://projectacrn.github.io/latest/hardware.html#supported-hardware).
> **Note:** Please make sure to have a minimum of 4 logical processors (HT) or cores.
- ACRN [software](https://projectacrn.github.io/latest/tutorials/kbl-nuc-sdc.html#use-the-script-to-set-up-acrn-automatically) setup.
- For networking, ACRN supports either MACVTAP or TAP. If MACVTAP is not enabled in the Service OS, please follow the below steps to update the kernel:
```sh
$ git clone https://github.com/projectacrn/acrn-kernel.git
$ cd acrn-kernel
$ cp kernel_config_sos .config
$ sed -i "s/# CONFIG_MACVLAN is not set/CONFIG_MACVLAN=y/" .config
$ sed -i '$ i CONFIG_MACVTAP=y' .config
$ make clean && make olddefconfig && make && sudo make modules_install INSTALL_MOD_PATH=out/
```
Login into Service OS and update the kernel with MACVTAP support:
```sh
$ sudo mount /dev/sda1 /mnt
$ sudo scp -r <user name>@<host address>:<your workspace>/acrn-kernel/arch/x86/boot/bzImage /mnt/EFI/org.clearlinux/
$ sudo scp -r <user name>@<host address>:<your workspace>/acrn-kernel/out/lib/modules/* /lib/modules/
$ conf_file=$(sed -n '$ s/default //p' /mnt/loader/loader.conf).conf
$ kernel_img=$(sed -n 2p /mnt/loader/entries/$conf_file | cut -d'/' -f4)
$ sudo sed -i "s/$kernel_img/bzImage/g" /mnt/loader/entries/$conf_file
$ sync && sudo umount /mnt && sudo reboot
```
- Kata Containers installation: Automated installation does not seem to be supported for Clear Linux, so please use [manual installation](../Developer-Guide.md) steps.
> **Note:** Create rootfs image and not initrd image.
In order to run Kata with ACRN, your container stack must provide block-based storage, such as device-mapper.
> **Note:** Currently, by design you can only launch one VM from Kata Containers using ACRN hypervisor (SDC scenario). Based on feedback from community we can increase number of VMs.
## Configure Docker
To configure Docker for device-mapper and Kata,
1. Stop Docker daemon if it is already running.
```bash
$ sudo systemctl stop docker
```
2. Set `/etc/docker/daemon.json` with the following contents.
```
{
"storage-driver": "devicemapper"
}
```
3. Restart docker.
```bash
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
```
4. Configure [Docker](../Developer-Guide.md#update-the-docker-systemd-unit-file) to use `kata-runtime`.
## Configure Kata Containers with ACRN
To configure Kata Containers with ACRN, copy the generated `configuration-acrn.toml` file when building the `kata-runtime` to either `/etc/kata-containers/configuration.toml` or `/usr/share/defaults/kata-containers/configuration.toml`.
The following command shows full paths to the `configuration.toml` files that the runtime loads. It will use the first path that exists. (Please make sure the kernel and image paths are set correctly in the `configuration.toml` file)
```bash
$ sudo kata-runtime --show-default-config-paths
```
>**Warning:** Please offline CPUs using [this](offline_cpu.sh) script, else VM launches will fail.
```bash
$ sudo ./offline_cpu.sh
```
Start an ACRN based Kata Container,
```bash
$ sudo docker run -ti --runtime=kata-runtime busybox sh
```
You will see ACRN(`acrn-dm`) is now running on your system, as well as a `kata-shim`, `kata-proxy`. You should obtain an interactive shell prompt. Verify that all the Kata processes terminate once you exit the container.
```bash
$ ps -ef | grep -E "kata|acrn"
```
Validate ACRN hypervisor by using `kata-runtime kata-env`,
```sh
$ kata-runtime kata-env | awk -v RS= '/\[Hypervisor\]/'
[Hypervisor]
MachineType = ""
Version = "DM version is: 1.2-unstable-254577a6-dirty (daily tag:acrn-2019w27.4-140000p)
Path = "/usr/bin/acrn-dm"
BlockDeviceDriver = "virtio-blk"
EntropySource = "/dev/urandom"
Msize9p = 0
MemorySlots = 10
Debug = false
UseVSock = false
SharedFS = ""
```

View File

@@ -0,0 +1,143 @@
# Setting Sysctls with Kata
## Sysctls
In Linux, the sysctl interface allows an administrator to modify kernel
parameters at runtime. Parameters are available via the `/proc/sys/` virtual
process file system.
The parameters include the following subsystems among others:
- `fs` (file systems)
- `kernel` (kernel)
- `net` (networking)
- `vm` (virtual memory)
To get a complete list of kernel parameters, run:
```
$ sudo sysctl -a
```
Both Docker and Kubernetes provide mechanisms for setting namespaced sysctls.
Namespaced sysctls can be set per pod in the case of Kubernetes or per container
in case of Docker.
The following sysctls are known to be namespaced and can be set with
Docker and Kubernetes:
- `kernel.shm*`
- `kernel.msg*`
- `kernel.sem`
- `fs.mqueue.*`
- `net.*`
### Namespaced Sysctls:
Kata Containers supports setting namespaced sysctls with Docker and Kubernetes.
All namespaced sysctls can be set in the same way as regular Linux based
containers, the difference being, in the case of Kata they are set inside the guest.
#### Setting Namespaced Sysctls with Docker:
```
$ sudo docker run --runtime=kata-runtime -it alpine cat /proc/sys/fs/mqueue/queues_max
256
$ sudo docker run --runtime=kata-runtime --sysctl fs.mqueue.queues_max=512 -it alpine cat /proc/sys/fs/mqueue/queues_max
512
```
... and:
```
$ sudo docker run --runtime=kata-runtime -it alpine cat /proc/sys/kernel/shmmax
18446744073692774399
$ sudo docker run --runtime=kata-runtime --sysctl kernel.shmmax=1024 -it alpine cat /proc/sys/kernel/shmmax
1024
```
For additional documentation on setting sysctls with Docker please refer to [Docker-sysctl-doc](https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime).
#### Setting Namespaced Sysctls with Kubernetes:
Kubernetes considers certain sysctls as safe and others as unsafe. For detailed
information about what sysctls are considered unsafe, please refer to the [Kubernetes sysctl docs](https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/).
For using unsafe sysctls, the cluster admin would need to allow these as:
```
$ kubelet --allowed-unsafe-sysctls 'kernel.msg*,net.ipv4.route.min_pmtu' ...
```
or using the declarative approach as:
```
$ cat kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1alpha3
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
allowed-unsafe-sysctls: "kernel.msg*,kernel.shm.*,net.*"
...
```
The above YAML can then be passed to `kubeadm init` as:
```
$ sudo -E kubeadm init --config=kubeadm.yaml
```
Both safe and unsafe sysctls can be enabled in the same way in the Pod YAML:
```
apiVersion: v1
kind: Pod
metadata:
name: sysctl-example
spec:
securityContext:
sysctls:
- name: kernel.shm_rmid_forced
value: "0"
- name: net.ipv4.route.min_pmtu
value: "1024"
```
### Non-Namespaced Sysctls:
Docker and Kubernetes disallow sysctls without a namespace.
The recommendation is to set them directly on the host or use a privileged
container in the case of Kubernetes.
In the case of Kata, the approach of setting sysctls on the host does not
work since the host sysctls have no effect on a Kata Container running
inside a guest. Kata gives you the ability to set non-namespaced sysctls using a privileged container.
This has the advantage that the non-namespaced sysctls are set inside the guest
without having any effect on the `/proc/sys` values of any other pod or the
host itself.
The recommended approach to do this would be to set the sysctl value in a
privileged init container. In this way, the application containers do not need any elevated
privileges.
```
apiVersion: v1
kind: Pod
metadata:
name: busybox-kata
spec:
runtimeClassName: kata-qemu
securityContext:
sysctls:
- name: kernel.shm_rmid_forced
value: "0"
containers:
- name: busybox-container
securityContext:
privileged: true
image: debian
command:
- sleep
- "3000"
initContainers:
- name: init-sys
securityContext:
privileged: true
image: busybox
command: ['sh', '-c', 'echo "64000" > /proc/sys/vm/max_map_count']
```

View File

@@ -0,0 +1,12 @@
# Kata Containers with virtio-fs
- [Kata Containers with virtio-fs](#kata-containers-with-virtio-fs)
- [Introduction](#introduction)
## Introduction
Container deployments utilize explicit or implicit file sharing between host filesystem and containers. From a trust perspective, avoiding a shared file-system between the trusted host and untrusted container is recommended. This is not always feasible. In Kata Containers, block-based volumes are preferred as they allow usage of either device pass through or `virtio-blk` for access within the virtual machine.
As of the 2.0 release of Kata Containers, [virtio-fs](https://virtio-fs.gitlab.io/) is the default filesystem sharing mechanism.
virtio-fs support works out of the box for `cloud-hypervisor` and `qemu`, when Kata Containers is deployed using `kata-deploy`. Learn more about `kata-deploy` and how to use `kata-deploy` in Kubernetes [here](https://github.com/kata-containers/packaging/tree/master/kata-deploy#kubernetes-quick-start).

View File

@@ -0,0 +1,53 @@
# Kata Containers with `virtio-mem`
- [Introduction](#introduction)
- [Requisites](#requisites)
- [Run a Kata Container utilizing `virtio-mem`](#run-a-kata-container-utilizing-virtio-mem)
## Introduction
The basic idea of `virtio-mem` is to provide a flexible, cross-architecture memory hot plug and hot unplug solution that avoids many limitations imposed by existing technologies, architectures, and interfaces.
More details can be found in https://lkml.org/lkml/2019/12/12/681.
Kata Containers with `virtio-mem` supports memory resize.
## Requisites
Kata Containers with `virtio-mem` requires Linux and the QEMU that support `virtio-mem`.
The Linux kernel and QEMU upstream version still not support `virtio-mem`. @davidhildenbrand is working on them.
Please use following unofficial version of the Linux kernel and QEMU that support `virtio-mem` with Kata Containers.
The Linux kernel is at https://github.com/davidhildenbrand/linux/tree/virtio-mem-rfc-v4.
The Linux kernel config that can work with Kata Containers is at https://gist.github.com/teawater/016194ee84748c768745a163d08b0fb9.
The QEMU is at https://github.com/teawater/qemu/tree/kata-virtio-mem. (The original source is at https://github.com/davidhildenbrand/qemu/tree/virtio-mem. Its base version of QEMU cannot work with Kata Containers. So merge the commit of `virtio-mem` to upstream QEMU.)
Set Linux and the QEMU that support `virtio-mem` with following line in the Kata Containers QEMU configuration `configuration-qemu.toml`:
```toml
[hypervisor.qemu]
path = "qemu-dir"
kernel = "vmlinux-dir"
```
Enable `virtio-mem` with following line in the Kata Containers configuration:
```toml
enable_virtio_mem = true
```
## Run a Kata Container utilizing `virtio-mem`
Use following command to enable memory overcommitment of a Linux kernel. Because QEMU `virtio-mem` device need to allocate a lot of memory.
```
$ echo 1 | sudo tee /proc/sys/vm/overcommit_memory
```
Use following command start a Kata Container.
```
$ docker run --rm -it --runtime=kata --name test busybox
```
Use following command set the memory size of test to default_memory + 512m.
```
$ docker update -m 512m --memory-swap -1 test
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

View File

@@ -0,0 +1,24 @@
#!/bin/bash
# Copyright (c) 2019 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
# Description: Offline SOS CPUs except BSP before launch UOS
[ $(id -u) -eq 0 ] || { echo >&2 "ERROR: run as root"; exit 1; }
for i in $(ls -d /sys/devices/system/cpu/cpu[1-9]*); do
online=`cat $i/online`
idx=`echo $i | tr -cd "[0-9]"`
echo "INFO:$0: cpu$idx online=$online"
if [ "$online" = "1" ]; then
echo 0 > $i/online
while [ "$online" = "1" ]; do
sleep 1
echo 0 > $i/online
online=`cat $i/online`
done
echo $idx > /sys/class/vhm/acrn_vhm/offline_cpu
fi
done

79
docs/how-to/privileged.md Normal file
View File

@@ -0,0 +1,79 @@
# Privileged Kata Containers
Kata Containers supports creation of containers that are "privileged" (i.e. have additional capabilities and access
that is not normally granted).
* [Warnings](#warnings)
* [Host Devices](#host-devices)
* [Containerd and CRI](#containerd-and-cri)
* [CRI-O](#cri-o)
## Warnings
**Warning:** Whilst this functionality is supported, it can decrease the security of Kata Containers if not configured
correctly.
### Host Devices
By default, when privileged is enabled for a container, all the `/dev/*` block devices from the host are mounted
into the guest. This will allow the privileged container inside the Kata guest to gain access to mount any block device
from the host, a potentially undesirable side-effect that decreases the security of Kata.
The following sections document how to configure this behavior in different container runtimes.
#### Containerd and CRI
The Containerd CRI allows configuring the privileged host devices behavior for each runtime in the CRI config. This is
done with the `privileged_without_host_devices` option. Setting this to `true` will disable hot plugging of the host
devices into the guest, even when privileged is enabled.
Support for configuring privileged host devices behaviour was added in containerd `1.3.0` version.
See below example config:
```toml
[plugins]
[plugins.cri]
[plugins.cri.containerd]
[plugins.cri.containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v1"
privileged_without_host_devices = false
[plugins.cri.containerd.runtimes.kata]
runtime_type = "io.containerd.kata.v2"
privileged_without_host_devices = true
[plugins.cri.containerd.runtimes.kata.options]
ConfigPath = "/opt/kata/share/defaults/kata-containers/configuration.toml"
```
- [Kata Containers with Containerd and CRI documentation](how-to-use-k8s-with-cri-containerd-and-kata.md)
- [Containerd CRI config documentation](https://github.com/containerd/cri/blob/master/docs/config.md)
#### CRI-O
Similar to containerd, CRI-O allows configuring the privileged host devices
behavior for each runtime in the CRI config. This is done with the
`privileged_without_host_devices` option. Setting this to `true` will disable
hot plugging of the host devices into the guest, even when privileged is enabled.
Support for configuring privileged host devices behaviour was added in CRI-O `1.16.0` version.
See below example config:
```toml
[crio.runtime.runtimes.runc]
runtime_path = "/usr/local/bin/crio-runc"
runtime_type = "oci"
runtime_root = "/run/runc"
privileged_without_host_devices = false
[crio.runtime.runtimes.kata]
runtime_path = "/usr/bin/kata-runtime"
runtime_type = "oci"
privileged_without_host_devices = true
[crio.runtime.runtimes.kata-shim2]
runtime_path = "/usr/local/bin/containerd-shim-kata-v2"
runtime_type = "vm"
privileged_without_host_devices = true
```
- [Kata Containers with CRI-O](../how-to/run-kata-with-k8s.md#cri-o)

View File

@@ -0,0 +1,150 @@
# Working with `crictl`
* [What's `cri-tools`](#whats-cri-tools)
* [Use `crictl` run Pods in Kata containers](#use-crictl-run-pods-in-kata-containers)
* [Run `busybox` Pod](#run-busybox-pod)
* [Run pod sandbox with config file](#run-pod-sandbox-with-config-file)
* [Create container in the pod sandbox with config file](#create-container-in-the-pod-sandbox-with-config-file)
* [Start container](#start-container)
* [Run `redis` Pod](#run-redis-pod)
* [Create `redis-server` Pod](#create-redis-server-pod)
* [Create `redis-client` Pod](#create-redis-client-pod)
* [Check `redis` server is working](#check-redis-server-is-working)
## What's `cri-tools`
[`cri-tools`](https://github.com/kubernetes-sigs/cri-tools) provides debugging and validation tools for Kubelet Container Runtime Interface (CRI).
`cri-tools` includes two tools: `crictl` and `critest`. `crictl` is the CLI for Kubelet CRI, in this document, we will show how to use `crictl` to run Pods in Kata containers.
> **Note:** `cri-tools` is only used for debugging and validation purpose, and don't use it to run production workloads.
> **Note:** For how to install and configure `cri-tools` with CRI runtimes like `containerd` or CRI-O, please also refer to other [howtos](./README.md).
## Use `crictl` run Pods in Kata containers
Sample config files in this document can be found [here](./data/crictl/).
### Run `busybox` Pod
#### Run pod sandbox with config file
```bash
$ sudo crictl runp -r kata sandbox_config.json
16a62b035940f9c7d79fd53e93902d15ad21f7f9b3735f1ac9f51d16539b836b
$ sudo crictl pods
POD ID CREATED STATE NAME NAMESPACE ATTEMPT
16a62b035940f 21 seconds ago Ready busybox-pod 0
```
#### Create container in the pod sandbox with config file
```bash
$ sudo crictl create 16a62b035940f container_config.json sandbox_config.json
e6ca0e0f7f532686236b8b1f549e4878e4fe32ea6b599a5d684faf168b429202
```
List containers and check the container is in `Created` state:
```bash
$ sudo crictl ps -a
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
e6ca0e0f7f532 docker.io/library/busybox:latest 19 seconds ago Created busybox-container 0 16a62b035940f
```
#### Start container
```bash
$ sudo crictl start e6ca0e0f7f532
e6ca0e0f7f532
```
List containers and we can see that the container state has changed from `Created` to `Running`:
```bash
$ sudo crictl ps
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
e6ca0e0f7f532 docker.io/library/busybox:latest About a minute ago Running busybox-container 0 16a62b035940f
```
And last we can `exec` into `busybox` container:
```bash
$ sudo crictl exec -it e6ca0e0f7f532 sh
```
And run commands in it:
```
/ # hostname
busybox_host
/ # id
uid=0(root) gid=0(root)
```
### Run `redis` Pod
In this example, we will create two Pods: one is for `redis` server, and another one is `redis` client.
#### Create `redis-server` Pod
It's also possible to start a container within a single command:
```bash
$ sudo crictl run -r kata redis_server_container_config.json redis_server_sandbox_config.json
bb36e05c599125842c5193909c4de186b1cee3818f5d17b951b6a0422681ce4b
```
#### Create `redis-client` Pod
```bash
$ sudo crictl run -r kata redis_client_container_config.json redis_client_sandbox_config.json
e344346c5414e3f51f97f20b2262e0b7afe457750e94dc0edb109b94622fc693
```
After the new container started, we can check the running Pods and containers.
```bash
$ sudo crictl pods
POD ID CREATED STATE NAME NAMESPACE ATTEMPT
469d08a7950e3 30 seconds ago Ready redis-client-pod 0
02c12fdb08219 About a minute ago Ready redis-server-pod 0
$ sudo crictl ps
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
e344346c5414e docker.io/library/redis:6.0.8-alpine 35 seconds ago Running redis-client 0 469d08a7950e3
bb36e05c59912 docker.io/library/redis:6.0.8-alpine About a minute ago Running redis-server 0 02c12fdb08219
```
#### Check `redis` server is working
To connect to the `redis-server`. First we need to get the `redis-server`'s IP address.
```bash
$ server=$(sudo crictl inspectp 02c12fdb08219 | jq .status.network.ip | tr -d '"' )
$ echo $server
172.19.0.118
```
Launch `redis-cli` in the new Pod and connect server running at `172.19.0.118`.
```bash
$ sudo crictl exec -it e344346c5414e redis-cli -h $server
172.19.0.118:6379> get test-key
(nil)
172.19.0.118:6379> set test-key test-value
OK
172.19.0.118:6379> get test-key
"test-value"
```
Then back to `redis-server`, check if the `test-key` is set in server.
```bash
$ sudo crictl exec -it bb36e05c59912 redis-cli get test-key
"test-val"
```
Returned `test-val` is just set by `redis-cli` in `redis-client` Pod.

View File

@@ -0,0 +1,204 @@
# Run Kata Containers with Kubernetes
* [Run Kata Containers with Kubernetes](#run-kata-containers-with-kubernetes)
* [Prerequisites](#prerequisites)
* [Install a CRI implementation](#install-a-cri-implementation)
* [CRI-O](#cri-o)
* [Kubernetes Runtime Class (CRI-O v1.12 )](#kubernetes-runtime-class-cri-o-v112)
* [Untrusted annotation (until CRI-O v1.12)](#untrusted-annotation-until-cri-o-v112)
* [Network namespace management](#network-namespace-management)
* [containerd with CRI plugin](#containerd-with-cri-plugin)
* [Install Kubernetes](#install-kubernetes)
* [Configure for CRI-O](#configure-for-cri-o)
* [Configure for containerd](#configure-for-containerd)
* [Run a Kubernetes pod with Kata Containers](#run-a-kubernetes-pod-with-kata-containers)
## Prerequisites
This guide requires Kata Containers available on your system, install-able by following [this guide](../install/README.md).
## Install a CRI implementation
Kubernetes CRI (Container Runtime Interface) implementations allow using any
OCI-compatible runtime with Kubernetes, such as the Kata Containers runtime.
Kata Containers support both the [CRI-O](https://github.com/kubernetes-incubator/cri-o) and
[CRI-containerd](https://github.com/containerd/cri) CRI implementations.
After choosing one CRI implementation, you must make the appropriate configuration
to ensure it integrates with Kata Containers.
Kata Containers 1.5 introduced the `shimv2` for containerd 1.2.0, reducing the components
required to spawn pods and containers, and this is the preferred way to run Kata Containers with Kubernetes ([as documented here](../how-to/how-to-use-k8s-with-cri-containerd-and-kata.md#configure-containerd-to-use-kata-containers)).
An equivalent shim implementation for CRI-O is planned.
### CRI-O
For CRI-O installation instructions, refer to the [CRI-O Tutorial](https://github.com/kubernetes-incubator/cri-o/blob/master/tutorial.md) page.
The following sections show how to set up the CRI-O configuration file (default path: `/etc/crio/crio.conf`) for Kata.
Unless otherwise stated, all the following settings are specific to the `crio.runtime` table:
```toml
# The "crio.runtime" table contains settings pertaining to the OCI
# runtime used and options for how to set up and manage the OCI runtime.
[crio.runtime]
```
A comprehensive documentation of the configuration file can be found [here](https://github.com/cri-o/cri-o/blob/master/docs/crio.conf.5.md).
> **Note**: After any change to this file, the CRI-O daemon have to be restarted with:
>````
>$ sudo systemctl restart crio
>````
#### Kubernetes Runtime Class (CRI-O v1.12+)
The [Kubernetes Runtime Class](https://kubernetes.io/docs/concepts/containers/runtime-class/)
is the preferred way of specifying the container runtime configuration to run a Pod's containers.
To use this feature, Kata must added as a runtime handler with:
```toml
[crio.runtime.runtimes.kata-runtime]
runtime_path = "/usr/bin/kata-runtime"
runtime_type = "oci"
```
You can also add multiple entries to specify alternatives hypervisors, e.g.:
```toml
[crio.runtime.runtimes.kata-qemu]
runtime_path = "/usr/bin/kata-runtime"
runtime_type = "oci"
[crio.runtime.runtimes.kata-fc]
runtime_path = "/usr/bin/kata-runtime"
runtime_type = "oci"
```
#### Untrusted annotation (until CRI-O v1.12)
The untrusted annotation is used to specify a runtime for __untrusted__ workloads, i.e.
a runtime to be used when the workload cannot be trusted and a higher level of security
is required. An additional flag can be used to let CRI-O know if a workload
should be considered _trusted_ or _untrusted_ by default.
For further details, see the documentation
[here](../design/architecture.md#mixing-vm-based-and-namespace-based-runtimes).
```toml
# runtime is the OCI compatible runtime used for trusted container workloads.
# This is a mandatory setting as this runtime will be the default one
# and will also be used for untrusted container workloads if
# runtime_untrusted_workload is not set.
runtime = "/usr/bin/runc"
# runtime_untrusted_workload is the OCI compatible runtime used for untrusted
# container workloads. This is an optional setting, except if
# default_container_trust is set to "untrusted".
runtime_untrusted_workload = "/usr/bin/kata-runtime"
# default_workload_trust is the default level of trust crio puts in container
# workloads. It can either be "trusted" or "untrusted", and the default
# is "trusted".
# Containers can be run through different container runtimes, depending on
# the trust hints we receive from kubelet:
# - If kubelet tags a container workload as untrusted, crio will try first to
# run it through the untrusted container workload runtime. If it is not set,
# crio will use the trusted runtime.
# - If kubelet does not provide any information about the container workload trust
# level, the selected runtime will depend on the default_container_trust setting.
# If it is set to "untrusted", then all containers except for the host privileged
# ones, will be run by the runtime_untrusted_workload runtime. Host privileged
# containers are by definition trusted and will always use the trusted container
# runtime. If default_container_trust is set to "trusted", crio will use the trusted
# container runtime for all containers.
default_workload_trust = "untrusted"
```
#### Network namespace management
To enable networking for the workloads run by Kata, CRI-O needs to be configured to
manage network namespaces, by setting the following key to `true`.
In CRI-O v1.16:
```toml
manage_network_ns_lifecycle = true
```
In CRI-O v1.17+:
```toml
manage_ns_lifecycle = true
```
### containerd with CRI plugin
If you select containerd with `cri` plugin, follow the "Getting Started for Developers"
instructions [here](https://github.com/containerd/cri#getting-started-for-developers)
to properly install it.
To customize containerd to select Kata Containers runtime, follow our
"Configure containerd to use Kata Containers" internal documentation
[here](../how-to/how-to-use-k8s-with-cri-containerd-and-kata.md#configure-containerd-to-use-kata-containers).
## Install Kubernetes
Depending on what your needs are and what you expect to do with Kubernetes,
please refer to the following
[documentation](https://kubernetes.io/docs/setup/) to install it correctly.
Kubernetes talks with CRI implementations through a `container-runtime-endpoint`,
also called CRI socket. This socket path is different depending on which CRI
implementation you chose, and the Kubelet service has to be updated accordingly.
### Configure for CRI-O
`/etc/systemd/system/kubelet.service.d/0-crio.conf`
```
[Service]
Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///var/run/crio/crio.sock"
```
### Configure for containerd
`/etc/systemd/system/kubelet.service.d/0-cri-containerd.conf`
```
[Service]
Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock"
```
For more information about containerd see the "Configure Kubelet to use containerd"
documentation [here](../how-to/how-to-use-k8s-with-cri-containerd-and-kata.md#configure-kubelet-to-use-containerd).
## Run a Kubernetes pod with Kata Containers
After you update your Kubelet service based on the CRI implementation you
are using, reload and restart Kubelet. Then, start your cluster:
```bash
$ sudo systemctl daemon-reload
$ sudo systemctl restart kubelet
# If using CRI-O
$ sudo kubeadm init --skip-preflight-checks --cri-socket /var/run/crio/crio.sock --pod-network-cidr=10.244.0.0/16
# If using CRI-containerd
$ sudo kubeadm init --skip-preflight-checks --cri-socket /run/containerd/containerd.sock --pod-network-cidr=10.244.0.0/16
$ export KUBECONFIG=/etc/kubernetes/admin.conf
```
You can force Kubelet to use Kata Containers by adding some `untrusted`
annotation to your pod configuration. In our case, this ensures Kata
Containers is the selected runtime to run the described workload.
`nginx-untrusted.yaml`
```yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-untrusted
annotations:
io.kubernetes.cri.untrusted-workload: "true"
spec:
containers:
- name: nginx
image: nginx
```
Next, you run your pod:
```
$ sudo -E kubectl apply -f nginx-untrusted.yaml
```

246
docs/how-to/service-mesh.md Normal file
View File

@@ -0,0 +1,246 @@
# Kata Containers and service mesh for Kubernetes
* [Assumptions](#assumptions)
* [How they work](#how-they-work)
* [Prerequisites](#prerequisites)
* [Kata and Kubernetes](#kata-and-kubernetes)
* [Restrictions](#restrictions)
* [Install and deploy your service mesh](#install-and-deploy-your-service-mesh)
* [Service Mesh Istio](#service-mesh-istio)
* [Service Mesh Linkerd](#service-mesh-linkerd)
* [Inject your services with sidecars](#inject-your-services-with-sidecars)
* [Sidecar Istio](#sidecar-istio)
* [Sidecar Linkerd](#sidecar-linkerd)
* [Run your services with Kata](#run-your-services-with-kata)
* [Lower privileges](#lower-privileges)
* [Add annotations](#add-annotations)
* [Deploy](#deploy)
A service mesh is a way to monitor and control the traffic between
micro-services running in your Kubernetes cluster. It is a powerful
tool that you might want to use in combination with the security
brought by Kata Containers.
## Assumptions
You are expected to be familiar with concepts such as __pods__,
__containers__, __control plane__, __data plane__, and __sidecar__.
## How they work
Istio and Linkerd both rely on the same model, where they run controller
applications in the control plane, and inject a proxy as a sidecar inside
the pod running the service. The proxy registers in the control plane as
a first step, and it constantly sends different sorts of information about
the service running inside the pod. That information comes from the
filtering performed when receiving all the traffic initially intended for
the service. That is how the interaction between the control plane and the
proxy allows the user to apply load balancing and authentication rules to
the incoming and outgoing traffic, inside the cluster, and between multiple
micro-services.
This cannot not happen without a good amount of `iptables` rules ensuring
the packets reach the proxy instead of the expected service. Rules are
setup through an __init__ container because they have to be there as soon
as the proxy starts.
## Prerequisites
### Kata and Kubernetes
Follow the [instructions](../install/README.md)
to get Kata Containers properly installed and configured with Kubernetes.
You can choose between CRI-O and CRI-containerd, both are supported
through this document.
For both cases, select the workloads as _trusted_ by default. This way,
your cluster and your service mesh run with `runc`, and only the containers
you choose to annotate run with Kata Containers.
### Restrictions
As documented [here](https://github.com/linkerd/linkerd2/issues/982),
a kernel version between 4.14.22 and 4.14.40 causes a deadlock when
`getsockopt()` gets called with the `SO_ORIGINAL_DST` option. Unfortunately,
both service meshes use this system call with this same option from the
proxy container running inside the VM. This means that you cannot run
this kernel version range as the guest kernel for Kata if you want your
service mesh to work.
As mentioned when explaining the basic functioning of those service meshes,
`iptables` are heavily used, and they need to be properly enabled through
the guest kernel config. If they are not properly enabled, the init container
is not able to perform a proper setup of the rules.
## Install and deploy your service mesh
### Service Mesh Istio
As a reference, you can follow Istio [instructions](https://istio.io/docs/setup/kubernetes/quick-start/#download-and-prepare-for-the-installation).
The following is a summary of what you need to install Istio on your system:
```
$ curl -L https://git.io/getLatestIstio | sh -
$ cd istio-*
$ export PATH=$PWD/bin:$PATH
```
Now deploy Istio in the control plane of your cluster with the following:
```
$ kubectl apply -f install/kubernetes/istio-demo.yaml
```
To verify that the control plane is properly deployed, you can use both of
the following commands:
```
$ kubectl get svc -n istio-system
$ kubectl get pods -n istio-system -o wide
```
### Service Mesh Linkerd
As a reference, follow the Linkerd [instructions](https://linkerd.io/2/getting-started/index.html).
The following is a summary of what you need to install Linkerd on your system:
```
$ curl https://run.linkerd.io/install | sh
$ export PATH=$PATH:$HOME/.linkerd/bin
```
Now deploy Linkerd in the control plane of your cluster with the following:
```
$ linkerd install | kubectl apply -f -
```
To verify that the control plane is properly deployed, you can use both of
the following commands:
```
$ kubectl get svc -n linkerd
$ kubectl get pods -n linkerd -o wide
```
## Inject your services with sidecars
Once the control plane is running, you need a deployment to define a few
services that rely on each other. Then, you inject the YAML file with the
sidecar proxy using the tools provided by each service mesh.
If you do not have such a deployment ready, refer to the samples provided
by each project.
### Sidecar Istio
Istio provides a [`bookinfo`](https://istio.io/docs/examples/bookinfo/)
sample, which you can rely on to inject their `envoy` proxy as a
sidecar.
You need to use their tool called `istioctl kube-inject` to inject
your YAML file. We use their `bookinfo` sample as an example:
```
$ istioctl kube-inject -f samples/bookinfo/kube/bookinfo.yaml -o bookinfo-injected.yaml
```
### Sidecar Linkerd
Linkerd provides an [`emojivoto`](https://linkerd.io/2/getting-started/index.html)
sample, which you can rely on to inject their `linkerd` proxy as a
sidecar.
You need to use their tool called `linkerd inject` to inject your YAML
file. We use their `emojivoto` sample as example:
```
$ wget https://raw.githubusercontent.com/runconduit/conduit-examples/master/emojivoto/emojivoto.yml
$ linkerd inject emojivoto.yml > emojivoto-injected.yaml
```
## Run your services with Kata
Now that your service deployment is injected with the appropriate sidecar
containers, manually edit your deployment to make it work with Kata.
### Lower privileges
In Kubernetes, the __init__ container is often `privileged` as it needs to
setup the environment, which often needs some root privileges. In the case
of those services meshes, all they need is the `NET_ADMIN` capability to
modify the underlying network rules. Linkerd, by default, does not use
`privileged` container, but Istio does.
Because of the previous reason, if you use Istio you need to switch all
containers with `privileged: true` to `privileged: false`.
### Add annotations
There is no difference between Istio and Linkerd in this section. It is
about which CRI implementation you use.
For both CRI-O and CRI-containerd, you have to add an annotation indicating
the workload for this deployment is not _trusted_, which will trigger
`kata-runtime` to be called instead of `runc`.
__CRI-O:__
Add the following annotation for CRI-O
```yaml
io.kubernetes.cri-o.TrustedSandbox: "false"
```
The following is an example of what your YAML can look like:
```yaml
...
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
name: details-v1
spec:
replicas: 1
strategy: {}
template:
metadata:
annotations:
io.kubernetes.cri-o.TrustedSandbox: "false"
sidecar.istio.io/status: '{"version":"55c9e544b52e1d4e45d18a58d0b34ba4b72531e45fb6d1572c77191422556ffc","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}'
creationTimestamp: null
labels:
app: details
version: v1
...
```
__CRI-containerd:__
Add the following annotation for CRI-containerd
```yaml
io.kubernetes.cri.untrusted-workload: "true"
```
The following is an example of what your YAML can look like:
```yaml
...
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
name: details-v1
spec:
replicas: 1
strategy: {}
template:
metadata:
annotations:
io.kubernetes.cri.untrusted-workload: "true"
sidecar.istio.io/status: '{"version":"55c9e544b52e1d4e45d18a58d0b34ba4b72531e45fb6d1572c77191422556ffc","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}'
creationTimestamp: null
labels:
app: details
version: v1
...
```
### Deploy
Deploy your application by using the following:
```
$ kubectl apply -f myapp-injected.yaml
```

Some files were not shown because too many files have changed in this diff Show More