Nephio controller user's guide
Reconcilers
Reconcilers are used by Kubernetes to enforce the desired state of a Custom Resource (CR).
The Nephio Reconciler Interface
The Nephio Controller deploys multiple reconcilers and also supports pluggable reconcilers. To plug into the Nephio controller, a reconciler must implement the Nephio reconciler interface. Reconcilers register with the Nephio reconciler interface when they start up.
The reconcilers below are currently deployed by default in the Nephio controller:
./controllers/pkg/reconcilers/token/reconciler.go
./controllers/pkg/reconcilers/repository/reconciler.go
./controllers/pkg/reconcilers/bootstrap-packages/reconciler.go
./controllers/pkg/reconcilers/vlan-specializer/reconciler.go
./controllers/pkg/reconcilers/generic-specializer/reconciler.go
./controllers/pkg/reconcilers/network/reconciler.go
./controllers/pkg/reconcilers/ipam-specializer/reconciler.go
./controllers/pkg/reconcilers/bootstrap-secret/reconciler.go
./controllers/pkg/reconcilers/approval/reconciler.go
Enabling Reconcilers
To enable a particular reconciler, you pass an environment variable to the Nephio Controller at startup. The environment variable is of the form ENABLE_<RECONCILER> where <RECONCILER> is the name of the reconciler to be enabled in upper case. Therefore, to enable the bootstrap-packages reconciler, pass the ENABLE_BOOTSTRAPPACKAGES to the nephio controller. Reconcilers are disabled by default.
You can see what reconcilers are enabled on the Nephio Controller using
kubectl
.
$ kubectl describe pod -n nephio-system nephio-controller-6565fd695d-44kld
*** Truncated output ***
Name: nephio-controller-6565fd695d-44kld
Containers:
controller:
Container ID: containerd://37d3eff53c1944a659e5a7ab913173db42f34b44347072e6c9b51e5671f35ea2
Environment:
POD_NAMESPACE: nephio-system (v1:metadata.namespace)
POD_IP: (v1:status.podIP)
POD_NAME: nephio-controller-6565fd695d-44kld (v1:metadata.name)
NODE_NAME: (v1:spec.nodeName)
NODE_IP: (v1:status.hostIP)
GIT_URL: http://172.18.0.200:3000
GIT_NAMESPACE: gitea
ENABLE_APPROVAL: true
ENABLE_REPOSITORIES: true
ENABLE_BOOTSTRAPSECRETS: true
ENABLE_BOOTSTRAPPACKAGES: true
ENABLE_GENERICSPECIALIZER: true
ENABLE_NETWORKS: true
CLIENT_PROXY_ADDRESS: resource-backend-controller-grpc-svc.backend-system.svc.cluster.local:9999
To check that the reconcilers are actually deployed, you can examine the logs from the Nephio Controller. The log rolls over so you may need to redeploy the Nephio Controller to see what reconcilers are being deployed.
$ kubectl rollout restart deployment nephio-controller -n nephio-system
$ kubectl logs -n nephio-system nephio-controller-59487989bf-md845 --all-containers | \
grep enable
2023-06-27T11:37:58.646Z INFO setup enabled reconcilers {"reconcilers": "repositories,approval,bootstrappackages,bootstrapsecrets,genericspecializer,networks"}