This architecture facilitates the supportability and reduces the complexity of the existing solutions, without having to deploy a third component and is also fully compatible and agnostic of the existing CNI plugins in the cluster.
Networking DRA drivers authors need to define two business logic:
publishing node network devices: discovery the local resources on the node that the driver should announce with its attributes and capabilities.
attaching the network devices: the Network Driver, before the Pod start to be created, will receive a GRPC call from the Kubelet using the DRA API with the details of the request associated to a Pod via a ResourceClaim object. Once the Pod network namespaces has been created, the driver will receive a GRPC call from the Container Runtime via NRI to execute the corresponding configuration. A more detailed diagram can be found in:
Driver MUST be able to report Status on the ResourceClaim
Operation was successful or failed or ...
Metadata associated to the operation: IP addresses, ...
Driver MUST not need to connect to the apiserver
Right now the Claim is fetched from the apiserver to deal with skew versions problems, this behavior is undesired as the Pod creation operation must be atomic with the Kubelet "state of the world" informarion, once the API get more stable it should not be needed to fetch.