The Onboarding Manager (OM) is a critical component in the Edge Infrastructure Manager, responsible for managing the onboarding process of edge nodes. The Onboarding Manager handles the entire edge node onboarding and provisioning process, from pre-registration and system power-on up to iPXE boot, authentication, and device discovery. It manages host resources, facilitates user interaction for node verification, creates instance resources, and generates Tinkerbell workflows for provisioning, which are executed by the Tink Agent.
- Automated Onboarding: Streamlines the onboarding process for edge nodes, from pre-registration to provisioning.
- Interactive and Non Interactive (passwordless) Onboarding support to onboard edge node.
- Host and Instance Resource Management: Interfaces with the Inventory Service to manage host and instance resources lifecycle.
- Workflow Automation: Generates and executes Tinkerbell workflows for provisioning edge nodes.
- Secure Boot, FDE and DMV Support: Supports Secure Boot, Full Disk Encryption (FDE) and DM Verity (DMV) settings for enhanced security.
- Integration with Keycloak: Ensures secure authentication and token management for edge nodes.
- Status Reporting: Sends onboarding and provisioning status information to the User Interface via the Inventory Service.
- Scalability: Designed to scale with approximately 45 edge nodes and provisioning tasks, as validated to date.
- Inventory Interaction: The onboarding manager uses the gRPC APIs exposed by the infra Inventory Service to manage host, instance, os resources.
- Device Discovery: The onboarding manager provides both unay and bi-directional stream gRPC-based APIs for device discovery.
- gRPC Stream Management for Non-Interactive Onboarding: The API establishes and manages gRPC stream connections with edge nodes to facilitate non-interactive onboarding.
The relevant API definitions can be found in this API directory and this API package.
Instructions on how to install and set up the onboarding-manager on your machine.
Firstly, please verify that all dependencies have been installed.
# Return errors if any dependency is missing
make dependency
This code requires the following tools to be installed on your development machine:
- Go* programming language check $GOVERSION_REQ
- golangci-lint check $GOLINTVERSION_REQ
- buf check $BUFVERSION_REQ
- protoc-gen-doc check $PROTOCGENDOCVERSION_REQ
- protoc-gen-go-grpc check $PROTOCGENGOGRPCVERSION_REQ
- protoc-gen-go check $PROTOCGENGOVERSION_REQ
- protoc-gen-validate check$PROTOCGENVALIDATEGOVERSION_REQ
- GNU Compiler Collection
Build the project as follows:
# Build go binary
make build
The binary is installed in the $OUT_DIR folder.
To learn how to contribute to the project, see the contributor's guide. The project will accept contributions through Pull-Requests (PRs). PRs must be built successfully by the CI pipeline, pass linters verifications and the unit tests.
There are several convenience make targets to support developer activities,
you can use help
to see a list of makefile targets.
The following is a list of makefile targets that support developer activities:
-
generate
to generate the database schema, Go code, and the Python binding from the protobuf definition of the APIs -
lint
to run a list of linting targets -
mdlint
to run linting of this file. -
test
to run the unit test -
go-tidy
to update the Go dependencies and regenerate thego.sum
file -
build
to build the project and generate executable files -
docker-build
to build the onboarding-manager Docker container -
For more information on how to onboard an edge node, refer to the user guide on onboarding an edge node.
-
To get started, check out the user guide.
-
For the infrastructure manager development guide, visit the infrastructure manager development guide.
-
If you are contributing, please read the contributors guide.
-
For troubleshooting, see the troubleshooting guide.
Last Updated Date: April 1, 2025