nephio-project / nephio

Nephio is a Kubernetes-based automation platform for deploying and managing highly distributed, interconnected workloads such as 5G Network Functions, and the underlying infrastructure on which those workloads depend.
Apache License 2.0
93 stars 52 forks source link

Kubernetes API and Controller Development Docs #267

Open johnbelamaric opened 1 year ago

johnbelamaric commented 1 year ago

As part of Nephio, we are designing CRD-based APIs for network functions and network topology. We are also developing open source controllers and development kits for vendors to build their own controllers. Given that CRDs are only a few years old, very few people have extensive experience developing high quality APIs and controllers. Thus, a series of talks, blogs, and other educational initiatives is necessary to ensure API and controller quality. Ideas:

There may well be some prior art on this (certainly there are the published K8s API conventions, for example). So first thing should be to try to identify that. Next, we can work with the K8s community on developing some of this material, as it is applicable outside of Nephio as well.

adetalhouet commented 1 year ago

The following presentation captures additional consideration when it comes to API design and identifies some actions we need to address as a community to define development best practices.

https://docs.google.com/presentation/d/1DpMxnGYCmO1gPdLYGQICrl5ocJalBLMdZ9JOcCp-laI/edit?usp=sharing

johnbelamaric commented 1 year ago

Some more notes / best practice thoughts around K8s API design:

johnbelamaric commented 1 year ago

The Configuration-as-Data methodology has the goal to make the hydration process:

To that end, there are some best practices that are helpful when designing CRDs and kpt packages:

johnbelamaric commented 1 year ago

/area docs

johnbelamaric commented 7 months ago

Doc from K8s community (David Eads mostly): https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/controllers.md