Provisioning Standalone Edge Nodes at Scale#
This guide provides step-by-step instructions for customers wishing to provision both the operating system and Kubernetes across multiple edge nodes simultaneously. This solution is particularly relevant for OEM vendor customers who require efficient and scalable deployment capabilities. To enable this use case, we utilize the OXM deployment profile within the on-premises Edge Orchestrator.
When operating in OXM profile mode, the Edge Microvisor Framework (EMF) functions as a dedicated provisioning solution stack, focusing solely on initial system deployment and not enabling any edge node agents for device lifecycle management. This approach is designed specifically as a scalable provisioning solution, building upon the single standalone edge node <https://github.com/open-edge-platform/edge-microvisor-toolkit-standalone-node>.
Future releases will introduce the capability to add edge nodes to a complete device management EMF stack, allowing customers to leverage advanced lifecycle management features as their needs evolve.
Refer to the OXM deployment profile documentation for background information.
Set up environment#
Install Edge Orchestrator CLI (orch-cli) from Intel release service.
Login to the Edge Orchestrator.
orch-cli login local-admin $ORCH_PASSWORD --keycloak https://keycloak.cluster.onprem/realms/master
The token will be valid for limited period. To refresh you have to logout and login again:
orch-cli logout local-admin
Create default region and site that will be used for all provisioned Edge Nodes.
orch-cli create region --project local-admin default --type region --api-endpoint https://api.cluster.onprem # Retrieve region ID orch-cli list region --project local-admin default --api-endpoint https://api.cluster.onprem orch-cli create site --project local-admin default --region <region-ID> --api-endpoint https://api.cluster.onprem
Get and save the default site ID:
orch-cli list site --project local-admin default --api-endpoint https://api.cluster.onprem # Copy and save Site resource ID in format site-1234ABCD
Provision Edge Nodes at scale#
Follow the steps below to provision multiple Edge Nodes at once.
Prepare customized user-apps packages and upload them to the Edge Orchestrator.
Download the script and prepare kubernetes artifacts.
curl https://raw.githubusercontent.com/open-edge-platform/edge-microvisor-toolkit-standalone-node/refs/tags/standalone-node/3.1.0/standalone-node/installation_scripts/download_images.sh -o download_images.sh chmod +x download_images.sh ./download_images.sh NON-RT # or DV
If you are using EMT image with desktop virtualization features then use DV parameter. For default EMT image which is a non-Real Time kernel use NON-RT parameter.
If you want to pre-load any user apps, place all of your artifacts in the user-apps directory as well. Then, use the below command to compress all the artifacts and copy them to the Edge Orchestrator’s storage. They will be downloaded to
/opt/user-apps
after EN is provisioned.Note
See the document on pre-loading user apps in the USB installer for more details.
tar -czvf user-apps.tar.gz -C ./user-apps kubectl cp -n orch-infra user-apps.tar.gz $(kubectl -n orch-infra get pods -l app.kubernetes.io/name=dkam --no-headers | awk '{print $1}'):/data
Generate custom cloud-init configuration for Standalone Edge Nodes.
Download the
config-file
template from the Standalone Edge Node repository.curl https://raw.githubusercontent.com/open-edge-platform/edge-microvisor-toolkit-standalone-node/refs/tags/standalone-node/3.1.0/standalone-node/installation_scripts/config-file -o config-file
Fill in the
config-file
as per the user guide in the in-line comments.You can customize the custom-config section as per your use case. For example, see reference config for EMT image with Desktop Virtualization features
Use
orch-cli
to generate custom cloud-init configuration based onconfig-file
.orch-cli generate standalone-config -c config-file -o cloud-init.cfg [--api-endpoint https://api.<CLUSTER-FQDN>]
Note
Ensure you copied user apps as explain in the previous step. Also,
--api-endpoint
is mandatory when pre-loading user apps.
Create the custom cloud-init configuration object in the Edge Orchestrator.
orch-cli create customconfig standalone cloud-init.cfg --project local-admin --description "Cloud-init config for Standalone Edge Nodes"
Generate a CSV file for bulk registration of multiple Edge Nodes.
orch-cli create host -g=hosts.csv
The generated CSV file (hosts.csv) will contain the list of Serial Numbers of Edge Nodes to be provisioned.
Fill the CSV file with the list of Serial Numbers. The content of the file should look like:
Serial,UUID,OSProfile,Site,Secure,RemoteUser,Metadata,AMTEnable,CloudInitMeta,K8sClusterTemplate,Error - do not fill 1234567 ABCDCYZ ZYXABCC
Note
The CSV file provides a possibility to specify different configurations (e.g., different cloud-init or OS profile) per each Edge Node identified by Serial Number. However, in this guide we assume that all Edge Nodes in the CSV list will be provisioned with the same configuration.
Register all Edge Nodes to the Edge Orchestrator:
orch-cli create host -i hosts.csv --site <site-ID> --cloud-init standalone --os-profile microvisor-standalone --project local-admin --api-endpoint https://api.cluster.onprem
Note
All Edge Nodes defined in
hosts.csv
will be provisioned with the same cloud-init (standalone
) and OS profile (microvisor-standalone
). If you need to provision a set of Edge Nodes with different cloud-init or OS profile you can store list of Edge Nodes in a separate CSV file and invoke the above command with the new CSV file and modified cloud-init/OS profile.Now, you can start PXE boot from all Edge Node machines. You can observe their provisioning status with the below command:
orch-cli list host --project local-admin --api-endpoint https://api.cluster.onprem