diff --git a/Developer-Guide.md b/Developer-Guide.md index 5d8536a5..6d58f6da 100644 --- a/Developer-Guide.md +++ b/Developer-Guide.md @@ -1,7 +1,10 @@ +# Kata Containers Developer Guide + * [Warning](#warning) * [Assumptions](#assumptions) * [Initial setup](#initial-setup) * [Requirements to build individual components](#requirements-to-build-individual-components) +* [Individual component compatibility](#individual-component-compatibility) * [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) @@ -75,6 +78,22 @@ You need to install the following to build Kata Containers components: - `make`. - `gcc` (required for building the shim and runtime). +# Individual component compatibility + +Using versions of individual components newer than the last official released +version might result in +[compatibility issues](Releases.md#component-version-compatibility). + +If you have only updated a subset of the Kata components and notice strange +behavior, we recommend you update the remaining components to ensure you are +using the latest versions of all of them. Also, remember to +[create a new image containing the latest agent version](#create-and-install-rootfs-and-initrd-image). + +If you still have compatibility issues after following the previous +instructions, refer to the +[troubleshooting section](#troubleshoot-kata-containers) and +[get in contact with us](https://github.com/kata-containers/community/blob/master/CONTRIBUTING.md#contact). + # Build and install the Kata Containers runtime ``` diff --git a/Releases.md b/Releases.md index a7b0a212..7e9f8258 100644 --- a/Releases.md +++ b/Releases.md @@ -1,7 +1,8 @@ * [Introduction](#introduction) * [Versioning](#versioning) -* [Tagging repositories](#tagging-repositories) * [Components](#components) + * [Component version compatibility](#component-version-compatibility) +* [Tagging repositories](#tagging-repositories) * [Release checklist](#release-checklist) * [Release process](#release-process) @@ -34,6 +35,27 @@ Semantic versioning is used since the version number is able to convey clear inf 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. +## Components + +A new release results in all Kata components being given a new +[version](#versioning), even if there are no changes to that component since +the last version. The version for a release is **identical** for all +components. + +This strategy allows diagnostic tools such as `kata-runtime kata-env` to record full version details of all components to help with problem determination. + +Note that although hypervisor and guest kernel both have versions, these are not updated for new releases as they are not core components developed by the Kata community. + +### Component version compatibility + +Semantic versioning allows users to determine how a new version of a +particular component relates to the previous version of that component. +However, it is not possible to compare two *different* Kata component +versions, even though all component versions are changed together. + +To ensure compatibility it is necessary to always use components of the same +version. + ## Tagging repositories To create a signed and annotated tag for a repository, first ensure that `git(1)` is configured to use your `gpg(1)` key: @@ -55,14 +77,6 @@ The annotation text must conform to the usual [patch format rules](https://githu - The subsystem must be "`release: $tag`". - The body of the message must contain details of changes in the release in `git-shortlog(1)` format. -## Components - -A new release will result in all Kata components being given a new [version](#versioning), even if no changes were made to that component since the last version. The version for a release is **identical** for all components. - -This strategy allows diagnostic tools such as `kata-runtime kata-env` to record full version details of all components to help with problem determination. - -Note that although hypervisor and guest kernel both have versions, these are not updated for new releases as they are not core components developed by the Kata community. - ## Release checklist The detailed steps to follow to create a new release are specified in the [Release Checklist](Release-Checklist.md). diff --git a/Upgrading.md b/Upgrading.md index 7379ff92..e3bd02e4 100644 --- a/Upgrading.md +++ b/Upgrading.md @@ -134,7 +134,8 @@ As shown in the [installation instructions](https://github.com/kata-containers/documentation/blob/master/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. +standard package management tools for your distribution and also guarantees +[component version compatibility](Releases.md#component-version-compatibility). # Appendices