From 01d5f14d96708830f232b2744742fc14763816b1 Mon Sep 17 00:00:00 2001 From: Krisztian Litkey Date: Mon, 22 May 2023 22:05:08 +0300 Subject: [PATCH] Add a note about NRI API stability and release notes. Signed-off-by: Krisztian Litkey --- README.md | 11 +++++++++++ RELEASES.md | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 RELEASES.md diff --git a/README.md b/README.md index 1515169f..55a61885 100644 --- a/README.md +++ b/README.md @@ -354,6 +354,17 @@ access to these sockets and can act as NRI or Device Plugins. See the and [best practices](https://kubernetes.io/docs/setup/best-practices/enforcing-pod-security-standards/) about Kubernetes security. +## API Stability + +NRI APIs should not be considered stable yet. We try to avoid unnecessarily +breaking APIs, especially the Stub API which plugins use to interact with NRI. +However, before NRI reaches a stable 1.0.0 release, this is only best effort +and cannot be guaranteed. Meanwhile we do our best to document any API breaking +changes for each release in the [release notes](RELEASES.md). + +The current target for a stable v1 API through a 1.0.0 release is the end of +this year. + ## Project details nri is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE). diff --git a/RELEASES.md b/RELEASES.md new file mode 100644 index 00000000..2a33e51a --- /dev/null +++ b/RELEASES.md @@ -0,0 +1,32 @@ +# Release Notes + +## 0.4.0 (pending untagged release) + +- Pass the ttRPC receiving context from the Stub to each NRI request handler +of the plugin. +- Fix Stub/Plugin UpdateContainer interface to pass the resource update to +the UpdateContainer NRI request handler of the plugin as the last argument. +- All plugins need to be updated to reflect the above changes in any NRI +request handler they implement. + +## 0.3.0 + +- Eliminate the global NRI configuration file, replacing any remaining +configuration options with corresponding programmatic options for runtimes. +- Change default socket path from /var/run/nri.sock to /var/run/nri/nri.sock. +- Make plugin timeouts configurable on the runtime side. +- Plugins should be API-compatible between 0.2.0 and 0.3.0, but either the +runtime needs to be configured to use the old NRI socket path, or 0.2.0 plugins +need to be configured to use the new default NRI socket path. + +## 0.2.0 + +- Replace the v0.1.0 CNI like plugin interface with JSON message exchange on +stdin and stdout with external daemon-like plugins and a protobuf-defined +protocol with ttRPC bindings for communicating with the runtime. +- Allow plugins to track the state of (CRI) pods and containers. +- Allow plugins to make changes to a selected subset of container parameters +during container creation, update, and stopping of (other) containers. +- All 0.1.0 plugins are incompatible with 0.2.0, although +[an experimental adapter plugin](plugins/v010-adapter) is provided to bridge +between any existing 0.1.0 plugins and the current NRI APIs.