Nephio R3 Release Notes
Overview
The theme of R3 is “strengthen the platform ; get ready for O-RAN”. As such, a major focus in this release has been on improving the functional robustness, stability and usability of the Nephio core components. In addition, a significant effort has been put into improving the documentation and simplifying developer workflows, to ease onboarding of new developers into the Nephio community. A number of O-RAN user stories have been triaged in readiness for implementation in future releases.
Prerequisites
Please refer to the Install Guide for the prerequisites on supported environments.
Support Matrix
The sandbox environment requires a physical or virtual machine with:
- Ubuntu-20.04-focal or Ubuntu 22.04 Linux Or Fedora 34
- Minimum 8 cores and Recommended 16 cores (Needed for end-to-end testing with RAN and core )
- 32 GB memory
- 200 GB disk size
- Default user with sudo passwordless permissions
This installation has been verified on VMs running on Google Cloud.
A Nephio sandbox can be created on any Kubernetes cluster v1.26 and above.
Features
API
No changes
Web UI
UI received dependency refresh, new Tabs component and security vulnerabilities fixes.
Packages
- Catalog fixes
- Packages to deploy OSC RIC
Functionalities
-
Platform
- Fixes, Security patches and enhancements to Porch. See Appendix for details.
- The Porch development environment is much improved, with a tutorial, script support, and makefile targets available. Developers can now
- Run Porch locally on Kind
- Run the Porch Server or Porch controllers in vscode towards a local Kind porch installation
- Run the end to end tests locally
- Work on Linux or MacOS locally or using a VM
- The Porch documentation was improved with the addition of a Porch tutorial, which steps the user through the main Porch use cases. Documentation on how to use Porchctl was also added
- The Porch build and test toolchain was heavily augmented. Among them was stepping the Go version to 1.22, adding Github actions to build the latest Porch and Porchctl images, support for running the Porch/Porchctl tests locally, and stepping the versions of various dependencies.
-
Documentation
- Improvements in aesthetics and bug fixes
- Updated Component Architecture
- Updated Schema Catalog
- User Stories related to O-RAN integration and Service Assurance
- Versioning support for documentation
-
Nephio experimental
- Ytt-declarative-configuration added. This is a generic KPT Function that utilizes the power YTT to achieve higher-level intent automation, reducing complexities and costs associated with infrastructure provisioning. This simplifies deployment and management for the operator by enabling YTT’s templating capabilities to configure network functions.
- Tko is a self-contained playground for new ideas for Nephio’s future. It stores all data in a traditional SQL backend by default (including support for planetary-scale databases, such as Spanner), validates all KRM before allowing it to be stored in the backend, implements a minimalistic plugin system (included is an SDK for Python-based plugins as well as support for kpt functions), includes a topology plugin (with support for TOSCA) as well as native Helm support, and implements a more declarative specialization workflow. Also includes web and terminal UIs (TUI).
-
Security
- OpenSSF best practices score improved from 3.6 to 7.6
- Release digital signing automation
- Vulnerability reporting process set in place
Fixes
- Porchctl development builds added
- Rpkg update panic is fixed
- Porch race condition is fixed
- High package approval time in the porch is fixed which should reduce the overall deployment time.
- Porch package revision fixes
- Porch connection failure with self-signed certificates is fixed
- Updated OAI RAN operator to reflect NFDeployment status
Limitations
- Inter-cluster networking is not dynamic so as more clusters are deployed, some manual tweaking will be needed for inter-cluster communications.
- Provisioning of VLAN interfaces on nodes is manual at this time.
- Feedback of workload deployments from workload clusters to the Management cluster is limited. You may need to connect directly to the Workload cluster via kubectl to debug any deployment issues.
- Web UI features are limited to view/edit of packages and resources in those packages and their deployment. Additional features will be added in subsequent releases.
- When the capacities of the UPF,SMF and AMF NFs are changed, the free5GC Operator on the Workload cluster will instantiate a new POD with correspondingly modified resources (CPU, memory etc.) During this process, the pod will restart. This is a limitation of free5GC.
- Only Gitea works with automated cluster provisioning to create new repositories and join them to Nephio. To use a different Git provider, you must manually provision cluster repositories, register them to the Nephio management server, and set up Config Sync on the Workload cluster.
- The WebUI does not require authentication in the current demo configuration. Testing of the WebUI with authentication configured has not been done at this time.
- The WebUI only shows resources in the default namespace.
- While many types of Git authentication are supported, the testing was only done with token-based Git authentication in Gitea.
Known Issues and Workarounds
- Packages may take a long time to be approved by the auto-approval controller. If they seem stuck, restarting Porch and the Nephio controllers may help:
kubectl -n porch-system rollout restart deploy porch-server
kubectl -n nephio-system rollout restart deploy nephio-controller
- Occasional calls to
porchctl rpkg copy
may fail with a message likeError: Internal error occurred: error applying patch: conflict: fragment line does not match src line
. Try again in a little while, this may clear up on its own. Restarting Porch may also help.
Appendix
Porch Fixes and enhancements
- Functional Improvements to Porch including
- Using the default exponential back-off in case of errors instead of a constant 30 sec retry, see https://github.com/nephio-project/porch/pull/76
- Showing kpt package rendering errors via the status of PackageVariant, see https://github.com/nephio-project/porch/pull/75
- Support for new field selectors: spec.workspaceName and spec.lifecycle on PackageRevision resources, see https://github.com/nephio-project/porch/pull/70
- Caching in the case of multiple Repository resources pointing to the same git repo is fixed, see https://github.com/nephio-project/porch/pull/68
- The PackageRevision’s metadata.uid field is now unique, see https://github.com/nephio-project/porch/pull/61
- Caching for packageRevisionResources is removed, they should not have been cached, see https://github.com/nephio-project/porch/pull/55
- Pod templating for function runner is introduced, see https://github.com/nephio-project/porch/pull/54
- Garbage collection is updated to reclaim pods in namespace which contain only KRM functions, see https://github.com/nephio-project/porch/pull/52
- Functional Improvements to Porchctl including:
- The porchctl version is now returned correctly, see https://github.com/nephio-project/porch/pull/65
- The error message emitted when metadata is missing is now less confusing, see https://github.com/nephio-project/porch/pull/39
- Better unit testing for rpkg commands, see https://github.com/nephio-project/porch/pull/33
- Porchctl rpkg commands now print to stdout on normal completion and stderr on errors, see https://github.com/nephio-project/porch/pull/30
- Porch Security Improvements
- TSupport for cabundle tls for git repo comms, see https://github.com/nephio-project/porch/pull/58
- TConfiguration of an external webhook and associated certs for resource deletion is now supported https://github.com/nephio-project/porch/pull/53
- TMissing repository RBAC roles for porch controllers were added, see https://github.com/nephio-project/porch/pull/56
- TThe porch namespace in the generated cert/webhook can now be configured https://github.com/nephio-project/porch/pull/26