Add Edge Application

1. Introduction

In ZEDEDA, when we talk about Edge Applications, it represents the Metadata manifest. The Edge Application describes the various pieces of software and how they are run on any given edge node.
 
Let's now see how you can add an Edge Application to the ZEDEDA platform. Before you onboard;
  • You need to store the application details in a location where the application can be retrieved. (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 GUI to add it to the ZEDEDA platform (discussed in the later part of this document).
A quick overview of How to Add an Edge App to ZEDEDA.
 

2. Add an Edge Application using ZEDEDA UI

After you log in to the ZEDEDA platform, navigate to the Marketplace link to onboard your Edge Application.
  • Step 1 > Click on the ‘Marketplace’ from the left navigation. By default, you land on the 'Edge Apps' screen, where you see the available Edge Applications added/imported into your Enterprise.
  • Step 2 > Click on Add in the top right corner.
image_2.png
 
Edge applications are defined in three types in the ZEDEDA platform. Select an ‘Edge App Type’ as per your requirement.
  • Type A: Container
  • Type B: Virtual Machine
  • Type C: Modules
 

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.
image_1.png
 
  • Step 1 > Populate the input field values for the 'Identity' section, as instructed in the table.
image_9.png
 

Identity section

Define the basic identification details of the Edge Application. You can choose to upload a logo for end-users to identify the app uniquely.
 
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
  • VCE
  • TKG Attach
License Choose from a list of commonly used licenses by developers to release their work or provide a custom license by pointing to an existing location or uploading a file.
VNC Connection This option should be enabled if you want 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). The Edge Application Instance can be accessed through a Remote Console connection from within the UI if enabled.
Enable CPU Pinning CPU Pinning is one technique used to improve the application VM process efficiency. ZEDEDA VM and Container Applications support this. 
 
  • 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.
image_8.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 Edge App Images that the Edge Application needs to function. This includes choosing an Edge App Image that is already uploaded or linked through UI. The table below explains the fields in a bit more detail.
Input Field Value
Scope: Projects Choose the Project you need from the dropdown.
Edge App Image(*) Choose an existing Edge App Image already registered with ZEDEDA by uploading the actual file or uplinking it 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 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. 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.
 
image_7.png

Environments

This section can 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 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.
image_6.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,' add the Rate value.
Burst If you choose 'Action' as 'Limit,' add the Burst value.
 
  • Step 6 > Populate the input field values for the 'Inbound Rules' section, as instructed in the table.
image_5.png
Input Field Value

Protocol(*)

You can choose from 'TCP' or '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,' add the application port number.

Rate(*)

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

Burst(*)

If you choose 'Action' as 'Limit,' 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.
image_4.png
 

Configuration

Suppose you would like to provide a cloud-init functionality to the end-users during the initialization of each Edge Application instance. In that case, you can provide the template 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.

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 displayed. You can then select the variable along with the operator and appropriate value.
  • Step 9 > Click 'Add Variable' to add a custom variable.
image_3.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.
image_10.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 the Add button to onboard the Edge Application.
image_11.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.

Company

Company name to be provided.

Agreement

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

Support Description

Specific instructions or contact details for support

 
Once the container Edge Application is added, it appears on the Marketplace screen.
 

Type B: Virtual Machine

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

Identity section

Define the basic identification details of the Edge Application. You can choose to upload a logo for end-users to identify the app uniquely. Additionally, you can 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 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
  • VCE
  • TKG Attach

VNC Connection

This option should be enabled if you want 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). 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
  • HVM (Emulated Legacy IO)
  • PVH (Beta)
  • FML

Enable CPU Pinning

CPU Pinning is one technique used to improve the application VM process efficiency. ZEDEDA VM and Container Applications support this.

 
  • 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.
 
image_19.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 ZEDEDA and 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 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 the ZEDEDA platform by way of uploading the actual file or uplinking it to an existing location.

Max Size(*)

Specify the maximum storage that the Image can use 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 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. 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 users purge 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' to enable direct attachment of a hardware resource.
    • Step 4b > Select the appropriate adapter type from the dropdown list.
 
image_18.png

Environments

This section can 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 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.
image_17.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,' add the Rate value.
Burst If you choose 'Action' as 'Limit,' add the Burst value.
  • Step 6 > Populate the input field values for the 'Inbound Rules' section, as instructed in the table.
image_16.png
Input Field Value

Protocol(*)

You can choose from 'TCP' and '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,' add the application port number.

Rate(*)

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

Burst(*)

If you choose 'Action' as 'Limit,' 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.
image_15.png
 

Configuration

Suppose you would like to provide a cloud-init-like functionality to the end-users during the initialization of each Edge Application instance. In that case, you can provide the template 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 displayed. You can then select the variable along with the operator and appropriate value.
  • Step 9 > Click 'Add Variable' to add a custom variable.
image_14.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.
image_13.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 the Add button to onboard the Edge Application.
image_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.

Company

Company name to be provided.

Agreement

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

Support Description

Specific instructions or contact details for support

 
After the Edge Application is added, it appears on the Marketplace screen.
Note: Alternatively, you can import the parameters by clicking the Import JSON button.
 

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 ZEDEDA, refer here.
image_26.png
 
  • Step 1 > Populate the input field values for the 'Identity' section, as instructed in the table.
image_25.png
 

Identity section

Define the basic identification details of the Edge Application. You can choose to upload a logo for end-users to identify the app uniquely. 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.

Enable CPU Pinning

Click yes to enable.

Azure Runtime Module

Click yes to enable.

License

Choose from a list of commonly used licenses by developers to release their work or provide a custom license by 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.
image_24.png
 

Drives

Define dependencies on all the application images that the Edge Application needs to function. This includes choosing an application image already uploaded or linked through ZEDEDA. You create a datastore with the container registry as a category; 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 no credentials are involved.
 
The table below explains the fields in a bit more detail.
 
Input Field Value
Edge App Image(*) Select an existing Edge Application Image already registered with the ZEDEDA platform by uploading the actual file or uplinking it to an existing location.
 

Container Options

These options enable you to configure the module containers at runtime, 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.
image_23.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 the Add button to onboard the Edge Application.
image_22.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.
Company Company name to be provided.
Agreement The developer can share specific agreements with services offered or standards complied with.
Support Description Specific instructions or contact details for support
 
Once the Edge Application is added, it appears on the Marketplace screen.
 

3. Onboard an Edge Application using ZEDEDA CLI

To log in to ZEDEDA through CLI, 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 add an Edge Application Image, use the following command 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
 
The Edge Application is added successfully.
Was this article helpful?
1 out of 1 found this helpful

Articles in this section