Onboard (Create) Edge Application

 

1. Introduction

In ZEDEDA, when we talk about edge application, it represents the Metadata manifest. The edge application describes the various pieces of software and the manner in which they are run on any given edge node.
 
Let's now see how you can onboard an edge application to ZedControl. Before you onboard;
  • You need to store the application details in a location as to where the application can be retrieved from (refer to Data Stores–Data Store captures the location from where you want the edge node to retrieve the application images).
  • You need to upload or uplink the application in ZedControl, in order to onboard it to ZedControl (discussed in the latter part of this document).
A quick overview of How to Add an Edge App to ZedControl.
 

2. Onboard an Edge Application using ZedUI

After you log in to ZedControl, navigate to the Marketplace link, to onboard your edge application.
  • Step 1 > Click on the ‘Marketplace’ (Marketplace_icon.png) icon from the left navigation. By default, you land on the 'Edge Apps' screen, where you see the available edge applications added/imported in your Enterprise.
  • Step 2 > Click on the Add (Add_icon.png) icon on the top right corner.
EAM_2_Screen_1.png
 
Edge applications are defined in three types in ZedControl. Select an ‘Edge App Type’ as per your requirement.
  • Type A: Container
  • Type B: Virtual Machine (VM)
  • Type C: Modules
EAM_2_Screen_3.png
 

Type A: Container

The following are the steps to add Container as the 'Edge App Type'. To start, select ‘Container’ as the Edge App Type.
EAM_2_Screen_4.png
 
  • Step 1 > Populate the input field values for the 'Identity' section, as instructed in the table.
EAM_2_Screen_5.png
 

Identity section

Define the basic identification details of the edge application. You can choose to upload a logo for end-users to uniquely identify the app.
 
Input Field

Value

Logo You can upload the logo as per the suggested recommendations and formats.
Name(*) This is unique across the enterprise and cannot be changed.
Title(*) This is user-defined and can be changed.
Description A detailed explanation of what the edge application is used for. Not mandatory.
Category(*) Classification of the edge application can be one of Cloud Gateway, End Application, Infrastructure, Network Gateway, Operating System, Runtime, or Others.
Version You can provide the version for your edge application.
Deployment Type(*)
You can choose the deployment type from the available dropdown options:
  • Standalone
  • Azure Runtime
  • K3S
License Choose from a list of commonly used licenses by developers to release their work or provide a custom license by way of pointing to an existing location or uploading a file.
VNC Connection This option should be enabled if you want to allow end-users of the edge application to access the instance directly through a VNC connection (users will have to be in the same network as the edge node). Alternately if enabled, the edge application Instance can be accessed through a Remote Console connection from within the ZedUI.
 
  • Step 2 > Populate the input field values for the 'Resources' section, as instructed in the table.
  • Step 3 > Populate the input field values for the 'Drives' section, as instructed in the table.
EAM_2_Screen_6.png
 

Resources

Define the hardware resource requirements of the edge application such as the CPU, and Memory required to function properly. The table below explains the fields in a bit more detail.
Input Field Value
Resource(*) Specify the resource requirements by choosing readily available size classifications or specify all custom values for CPU, Memory & Storage requirements.
CPU(*) Specify the number of virtual CPUs required by the edge application to function.
Memory(*) Specify the virtual memory requirements of the edge application.
 

Drives

Define dependencies on all the App Images that the edge application needs to function. This includes choosing an App Image that is already uploaded or linked through ZedControl. The table below explains the fields in a bit more detail.
Input Field Value
Scope: Projects Choose the Project you need from the dropdown.
App Image(*) Choose an existing App Image that is already registered with ZedControl by way of uploading the actual file or uplinking to an existing location.
Tag This is an optional identifier used to choose preferred volume instances for deployments. Volume tags can contain alphabets, numbers, and special characters only.
Mount Path The mount path provided in the application manifest is mounted on that directory and also created under the '/eve/volumes/uuid' path inside the application instance. Generally, the mount path is not provided for the root disc. it is specified for the data disc. If a path is specified, the volume gets mounted on that path inside the application instance. All volumes are created inside the 'persist/vault/' directory or 'persist/clear/' directory and the mount points specified by the user in the application specify where the user needs the volume inside the instance.
Encrypted If this checkbox is checked, the data is encrypted and stored under the 'persist/vault/' path and/or the path provided. If data encryption is not required, then no need to check the checkbox. Note that EVE-OS supports per folder encryption.
Purge
Purge is a method of discarding accumulated information. An application bundle has a root disc and may have multiple volumes. Generally, only the root disc is purged, when the data needs to be preserved and not discarded.
If the purge checkbox is checked, the next time when user purges their application instance, the root disc is purged along with the specified volumes.
 
  • Step 4 > Populate the input field values for the 'Environments' section, as instructed in the table.
    • Step 4a > Click 'Yes' if you want to enable direct attachment of a hardware resource.
    • Step 4b > Select the appropriate adapter type from the dropdown list.
 
 
EAM_2_Screen_7a.png

Environments

This section can be used to specify the security policies for the edge application. You can define incoming and outgoing firewall rules so that only the allowed list of traffic can reach the edge application instances. Please note that by default all traffic is blocked. So specifying rules is a must-do activity to ensure your app works seamlessly with external systems. The rules are specified per adapter so that you can configure and streamline various concurrent connections that the app might require with external systems.
Input Field Value
Name(*) Name of the environment.
Direct Attach Check the checkbox, if you want to use the hardware resource directly.
Adapter Type Select the adapter type from the dropdown list.
 
Note: If you wish to use a hardware resource directly instead of using an EVE-OS managed resource, you can leave the 'Direct Attach' checkbox checked. In such a case, skip steps 5 and 6.
 
  • Step 5 > Populate the input field values for the 'Outbound Rules' section, as instructed in the table.
EAM_2_Screen_7.png
Input Field Value
Outbound Host or IP Hostname or valid IP Address.
Protocol You can choose from 'Any', 'TCP', or 'UDP'.
Port You can choose from 'Any' or can be customized.
Action You can choose from 'Allow' or 'Limit'.
Rate If you choose 'Action' as 'Limit', then add the Rate value.
Burst If you choose 'Action' as 'Limit', then add the Burst value.
 
  • Step 6 > Populate the input field values for the 'Inbound Rules' section, as instructed in the table.
EAM_2_Screen_8.png
Input Field Value

Protocol(*)

You can choose from 'TCP', 'UDP'.

Edge Node Port(*)

You can choose from 'Any' or can be customized.

Action

You can choose from 'Map' or 'Limit'.

Edge App Port(*)

If you choose 'Action' as 'Map', then add the application port number.

Rate(*)

If you choose 'Action' as 'Limit', then add the Rate value.

Burst(*)

If you choose 'Action' as 'Limit', then add the Burst value.

Inbound IP Address

Valid IP Address

 
  • Step 7 > Populate the input field values for the 'Configuration' section, as instructed in the table.
EAM_2_Screen_9.png
 

Configuration

If you would like to provide a cloud-init functionality to the end-users during the initialization of each of the edge application Instances then you can provide the template for the same using Custom Configuration. You can understand more about the options offered under this feature on this page.

Input Field

Value

Add Custom Config Template

Check the checkbox if you want to add a template.

Configuration Name(*)

Specify an alphanumeric name.

Allow Edge App Instances to override entire config

Check the checkbox accordingly.

Allow Storage Resize

Check the checkbox accordingly.

Variable Delimiter(*)

Specify a sequence of characters that helps identify variables in the template.

Configuration Template(*)

Paste the configuration template in the box.

 
  • Step 8 > Show the variable group name if this checkbox is checked. You can uncheck the checkbox to see the 'Show If' parameter being displayed. You can then select the variable along with the operator and appropriate value.
  • Step 9 > Click on 'Add Variable' to add a custom variable.
EAM_2_Screen_10.png
 

Input Field                                    

Value

Variable Group Name(*)

Provide a suitable name for the variable group.

Show Always

The 'Show Always'checkbox is checked by default.

Show If(*)

This parameter needs to have details of the rendering group variables accordingly.

 
  • Step 10 > Select the 'Variable Type' from the list.
EAM_2_Screen_11.png

Input Field

Value

Variable Name(*)

Specify the variable name. Has to be alphanumeric without space.

Display Title(*)

Specify the title you want to be displayed.

Variable Type(*)

Choose one of the types from:

  • Boolean
  • Dropdown
  • File
  • Password
  • Text
 
  • Step 11 > Populate the input field values for the 'Developer Info' section, as instructed in the table.
  • Step 12 > Click on the Add button to perform the action of the edge application onboard.
EAM_2_Screen_12.png
 

Developer Info

This section can be used to add details about you so that the end-users have support and contact information in case of observations or issues. Specific instructions or contact details for support can also be separately specified. You can also optionally choose to share a specific Developer Agreement explaining the services offered or standards complied with, by the edge application.
 

Input Field

Value

Name(*)

Developer name to be provided.

Email(*)

Developer email to be provided.

Website(*)

Developer website to be provided.

Agreement

The developer can share specific agreements with services offered or standards complied.

Developer Description

Details about the developer like the different types of development work carried out etc.

Support Description

Specific instructions or contact details for support

 
After the edge application is added, it appears on the Marketplace screen.
 
EAM_2_Screen_13.png
 
Onboarding an edge application using 'Edge Application Type' as the 'Container' is completed.
 

Type B: Virtual Machine (VM)

The following are the steps to add Virtual Machine as the 'Edge App Type'. To start, select ‘Virtual Machine’ as the Edge App Type.
EAM_2_Screen_2.png
 
  • Step 1 > Populate the input field values for the 'Identity' section, as instructed in the table.
EAM_2_Screen_14.png
 

Identity section

Define the basic identification details of the edge application. You can choose to upload a logo for end-users to uniquely identify the app. Additionally, you can also specify a few high-level attributes such as access through VNC and virtualization mode. The table below explains the fields in a bit more detail.
 

Input Field                      

Value

Logo

You can upload the logo as per the suggested recommendations and formats.

Name(*)

This is unique across the enterprise and cannot be changed.

Title(*)

This is user-defined and can be changed.

Description

A detailed explanation of what the edge application is used for. Not mandatory.

Category(*)

Classification of the edge application can be one of Cloud Gateway, End Application, Infrastructure, Network Gateway, Operating System, Runtime, or Others.

License

Choose from a list of commonly used licenses by developers to release their work or provide a custom license by way of pointing to an existing location or uploading a file.

Version

You can provide the version for your edge application.

Deployment Type(*)

You can choose the deployment type from the available dropdown options:

  • Standalone
  • Azure Runtime
  • K3S

VNC Connection

This option should be enabled if you want to allow end-users of the edge application to access the instance directly through a VNC connection (users will have to be in the same network as the edge node). Alternately if enabled, the edge application Instance can be accessed through a Remote Console connection from within the UI.

VM Mode(*)

Choose one of the supported virtualization modes–

  • HVM
  • PVH (Beta)
  • FML
 
  • Step 2 > Populate the input field values for the 'Resources' section, as instructed in the table.
  • Step 3 > Populate the input field values for the 'Drives' section, as instructed in the table.
 
EAM_2_Screen_15.png
 

Resources

Define the hardware resource requirements of the edge application such as the CPU, Memory & Storage required to function properly. The table below explains the fields in a bit more detail.
 

Input Field                

Value

Resource(*)

Specify the resource requirements by choosing readily available size classifications or specify all custom values for CPU, Memory & Storage requirements.

CPU(*)

Specify the number of virtual CPUs required by the edge App to function.

Memory(*)

Specify the virtual memory requirements of the edge application.

Storage(*)

Specify the virtual storage requirements of the edge Application.

 

Drives

Define dependencies on all the App Images that the edge application needs to function. This includes choosing an App Image that is already uploaded or linked through ZedControl as well as additional attributes about the image such as its type, target use, and the maximum storage it can use. The table below explains the fields in a bit more detail.
 

Input Field                    

Value

Scope: Projects Choose the Project you need from the dropdown.

Drive Type(*)

The drive can be any one HDD, CD-ROM, or NET.

Target(*)

Specify the target usage - Disk, Kernel, Initrd, Ramdisk.

App Image(*)

Choose an existing App Image that is already registered with ZedControl by way of uploading the actual file or uplinking to an existing location.

Max Size(*)

Specify the maximum storage that can be used by the Image once it is deployed.

Tag

This is an optional identifier used to choose preferred volume instances for deployments.

Volume tags can contain alphabets, numbers, and special characters only.

Mount Path

The mount path provided in the application manifest is mounted on that directory and also created under the '/eve/volumes/uuid' path inside the application instance. Generally, the mount path is not provided for the root disc. it is specified for the data disc. If a path is specified, the volume gets mounted on that path inside the application instance. All volumes are created inside the 'persist/vault/' directory or 'persist/clear/' directory and the mount points specified by the user in the application specify where the user needs the volume inside the instance.

Encrypted

If this checkbox is checked, the data is encrypted and stored under the 'persist/vault/' path and/or the path provided. If data encryption is not required, then no need to check the checkbox. Note that EVE-OS supports per folder encryption.

Purge

Purge is a method of discarding accumulated information. An application bundle has a root disc and may have multiple volumes. Generally, only the root disc is purged, when the data needs to be preserved and not discarded.

If the purge checkbox is checked, the next time when user purges their application instance, the root disc is purged along with the specified volumes.

  • Step 4 > Populate the input field values for the 'Environments' section, as instructed in the table.
    • Step 4a > Click 'Yes' if you want to enable direct attachment of a hardware resource.
    • Step 4b > Select the appropriate adapter type from the dropdown list.
EAM_2_Screen_16a.png

Environments

This section can be used to specify the security policies for the edge application. You can define incoming and outgoing firewall rules so that only the allowed list of traffic can reach the edge application instances. Please note that by default all traffic is blocked. So specifying rules is a must-do activity to ensure your app works seamlessly with external systems. The rules are specified per adapter so that you can configure and streamline various concurrent connections that the app might require with external systems.
Note: If you wish to use a hardware resource directly instead of using an EVE-OS managed resource, you can leave the 'Direct Attach' checkbox checked. In such a case, skip steps 5 and 6.
  • Step 5 > Populate the input field values for the 'Outbound Rules' section, as instructed in the table.
EAM_2_Screen_16.png
 
Input Field Value
Outbound Host or IP Hostname or valid IP Address.
Protocol You can choose from 'Any', 'TCP', or 'UDP'.
Port You can choose from 'Any' or can be customized.
Action You can choose from 'Allow' or 'Limit'.
Rate If you choose 'Action' as 'Limit', then add the Rate value.
Burst If you choose 'Action' as 'Limit', then add the Burst value.
  • Step 6 > Populate the input field values for the 'Inbound Rules' section, as instructed in the table.
EAM_2_Screen_17.png
Input Field Value

Protocol(*)

You can choose from 'TCP', 'UDP'.

Edge Node Port(*)

You can choose from 'Any' or can be customized.

Action

You can choose from 'Map' or 'Limit'.

Edge App Port(*)

If you choose 'Action' as 'Map', then add the application port number.

Rate(*)

If you choose 'Action' as 'Limit', then add the Rate value.

Burst(*)

If you choose 'Action' as 'Limit', then add the Burst value.

Inbound IP Address

Valid IP Address

 
  • Step 7 > Populate the input field values for the 'Configuration' section, as instructed in the table.
EAM_2_Screen_18.png
 

Configuration

If you would like to provide a cloud-init-like functionality to the end-users during the initialization of each of the edge application instances then you can provide the template for the same using Custom Configuration. You can understand more about the options offered under this feature on this page.

Input Field

Value

Add Custom Config Template

Check the checkbox if you want to add a template.

Configuration Name(*)

Specify an alphanumeric name.

Allow Edge App Instances to override entire config

Check the checkbox accordingly.

Allow Storage Resize

Check the checkbox accordingly.

Variable Delimiter(*)

Specify a sequence of characters that helps identify variables in the template.

Configuration Template(*)

Paste the configuration template in the box.

 
  • Step 8 > Show the variable group name if this checkbox is checked. You can uncheck the checkbox to see the 'Show If' parameter being displayed. You can then select the variable along with the operator and appropriate value.
  • Step 9 > Click on 'Add Variable' to add a custom variable.
EAM_2_Screen_19.png

Input Field                                    

Value

Variable Group Name(*)

Provide a suitable name for the variable group.

Show Always

The 'Show Always'checkbox is checked by default.

Show If(*)

This parameter needs to have details of the rendering group variables accordingly.

 
  • Step 10 > Select the 'Variable Type' from the list.
EAM_2_Screen_20.png

Input Field

Value

Variable Name(*)

Specify the variable name. Has to be alphanumeric without space.

Display Title(*)

Specify the title you want to be displayed.

Variable Type(*)

Choose one of the types from:

  • Boolean
  • Dropdown
  • File
  • Password
  • Text
 
  • Step 11 > Populate the input field values for the 'Developer Info' section, as instructed in the table.
  • Step 12 > Click on the Add button to perform the action of the edge application onboard.
EAM_2_Screen_21.png
 

Developer Info

This section can be used to add details about you so that the end-users have support and contact information in case of observations or issues. Specific instructions or contact details for support can also be separately specified. You can also optionally choose to share a specific Developer Agreement explaining the services offered or standards complied with, by the edge application.

Input Field                           

Value

Name(*)

Developer name to be provided.

Email(*)

Developer email to be provided.

Website(*)

Developer website to be provided.

Agreement

The developer can share specific agreements with services offered or standards complied.

Developer Description

Details about the developer like the different types of development work carried out etc.

Support Description

Specific instructions or contact details for support

 
After the edge application is added, it appears on the Marketplace screen.
EAM_2_Screen_22.png
 
Note: Alternatively, you can also import the parameters by clicking the Import JSON button.
 
Onboarding an edge application using 'Edge Application Type' as the 'Virtual Machine' is completed.
 

Type C: Module

The following are the steps to add Module as the 'Edge App Type'. To start, select ‘Module’ as the Edge App Type. If you are familiar with Azure IoT hub and want a comparison from what you used to do in Azure IoT hub and see how you want to do the same in ZedControl, refer here.
EAM_2_Screen_23.png
 
  • Step 1 > Populate the input field values for the 'Identity' section, as instructed in the table.
EAM_2_Screen_24.png
 

Identity section

Define the basic identification details of the edge application. You can choose to upload a logo for end-users to uniquely identify the app. The table below explains the fields in a bit more detail.

Input Field                      

Value

Logo

You can upload the logo as per the suggested recommendations and formats.

Name(*)

This is unique across the enterprise and cannot be changed.

Title(*)

This is user-defined and can be changed.

Description

A detailed explanation of what the edge application is used for. Not mandatory.

Category(*)

Classification of the edge application can be one of Cloud Gateway, End Application, Infrastructure, Network Gateway, Operating System, Runtime, or Others.

Version

You can provide the version for your edge application.

License

Choose from a list of commonly used licenses by developers to release their work or provide a custom license by way of pointing to an existing location or uploading a file.

 
  • Step 2 > Populate the input field values for the 'Drives' section, as instructed in the table.
  • Step 3 > Populate the input field values for the 'Container Options' section, as instructed in the table.
EAM_2_Screen_25.png
 

Drives

Define dependencies on all the application images that the edge application needs to function. This includes choosing an application image that is already uploaded or linked through ZedControl. You create a datastore with the container registry as a category and in that datastore, you add containers. You can then pull in the containers as a drive for the module. For Azure IoT, you can type in the URL directly (such as mcr.microsoft.com), if there are no credentials involved.
 
The table below explains the fields in a bit more detail.
 
Input Field Value
Scope: Projects Choose the Project you need from the dropdown.
App Image(*) Choose an existing App Image that is already registered with ZedControl by way of uploading the actual file or uplinking to an existing location.
 

Container Options

These options enable you to configure the module containers at runtime and also expand your control over the modules and allow for tasks like allowing or restricting the module's access to the host device's resources or configuring networking.
 
  • Step 4 > Populate the input field values for the 'Module Deployment Details' section, as instructed in the table.
EAM_2_Screen_26.png
 

Module Deployment Details

You can use a deployment manifest to tell your device which modules to install and how to configure them to work together. You can have multiple routes and environment variables within the same deployment. This is where all the code and properties go into Azure IoT.
 
Every module has a settings property that contains the module image, an address for the container image in a container registry, and any create options to configure the image on startup.
 
For more information on the Azure IoT module deployment, click here.
 

Module Twin settings

This consists of 'Module Twin Property' and 'Module Twin Property Content'. The deployment manifest specifies desired properties for each module deployed to the IoT Edge device. Desired properties in the deployment manifest overwrite any desired properties currently in the module twin. If you do not specify a module twin's desired properties in the deployment manifest, IoT Hub won't modify the module twin in any way.
 

Routes

Managing communication between modules, IoT Hub, and any leaf devices need routes. You can have multiple routes within the same deployment. If multiple routes for the same endpoint have the same priority, their messages will be processed on a first-come-first-served basis. If no priority is specified, the route is assigned to the lowest priority.
 

Environment Variables

This provides supplemental information to a module to facilitate the configuration process.
  • Step 5 > Populate the input field values for the 'Developer Info' section, as instructed in the table.
  • Step 6 > Click on the Add button to perform the action of the edge application onboard.
EAM_2_Screen_27.png
 

Developer Info

This section can be used to add details about you so that the end-users have support and contact information in case of observations or issues. Specific instructions or contact details for support can also be separately specified. You can also optionally choose to share a specific Developer Agreement explaining the services offered or standards complied with, by the edge application.
 
Input Field Value
Name(*) Developer name to be provided.
Email(*) Developer email to be provided.
Website(*) Developer website to be provided.
Agreement The developer can share specific agreements with services offered or standards complied with.
Developer Description Details about the developer like the different types of development work carried out etc.
Support Description Specific instructions or contact details for support
 
After the edge application is added, it appears on the Marketplace screen.
 

3. Onboard an Edge Application using zCLI

To login to ZedControl through zCLI, see here.
 
You can either create a Data Store by using zcli datastore create <name> [--title=<title>] --dstype=<dstype> [--fqdn=<fqdn>] [--region=<region>] [--apikey=<apikey>] [--apipass=<password>] [--dpath=<dpath>] command or use the DataStores like ‘Zededa-AWS-Image’, ‘AzureDataStore’, and ‘docker-hub’ provided by ZEDEDA.
zcli> zcli datastore create <name> [--title=<title>] --dstype=<dstype> [--fqdn=<fqdn>] [--region=<region>] [--apikey=<apikey>] [--apipass=<password>] [--dpath=<dpath>]
 
You can now create an application image using the zcli image create <name> --datastore-name=<datastore> --arch=[AMD64|ARM64] --image-format=[raw|qcow|qcow2|vhd|vmdk|ova|vhdx|container] [--image-url=<rel_url>] [--title=<title>] [--type=[Eve|Application|EvePrivate]] command.
 
zcli> zcli image create <name> --datastore-name=<datastore> --arch=[AMD64|ARM64] --image-format=[raw|qcow|qcow2|vhd|vmdk|ova|vhdx|container] [--image-url=<rel_url>] [--title=<title>] [--type=[Eve|Application|EvePrivate]]
 
Following are the options you can use to create an application image.
Options:
--image-format=[raw|qcow|qcow2|vhd|vmdk|ova|vhdx|container] Image format(supported formats: raw, qcow, qcow2, vhd, vmdk, ova, vhdx, container )
--type=[EveImage|AppImage|EveImagePrivate] Image type(supported types:EveImage, AppImage, EveImagePrivate)
--arch=[AMD64|ARM64] Image architecture
--status=<status> Image status
--title=<title> Title of the image
--description=<description> Description of the image
--detail Show details of the image
-f Delete image without asking user confirmation
 
Based on whether you have the application image in any of the clouds or on your local system, you can either uplink or upload your application image accordingly.
 
Use the following commands as shown below.
zcli> zcli image uplink <name> [--datastore-name=<datastore>] [--image-sha=<Sha256> --image-size=<size>] [--signature=<signature> --signer-url=<url>] [--intermediate-url=<url>] [--image-url=<rel_url>]
zcli> zcli image upload <name> --path=<path> [--chunked]
 
Note: If your image size is more than 2GB, use the --chunked option to upload your image chunk by chunk.
 
To complete the onboarding of application image, you need to create an edge application using zcli edge-app create <name> --manifest=<manifest> [--title=<title>] [--description=<description>] command, with the following options.
zcli> zcli edge-app create <name> --manifest=<manifest> [--title=<title>] [--description=<description>]
Options:
--manifest=<manifest> edge-app manifest file
--title=<title> Title of the application edge-app
--description=<description> Description of the application edge-app
--detail Show details of the application edge-app
-f Delete edge-app without asking user confirmation
 
Onboarding an edge application is completed.
Was this article helpful?
0 out of 0 found this helpful

Articles in this section