Document navigation

Overview

ZStack Cloud Application Market is an IaC (Infrastructure as Code)-based development platform that offers standardized IaC orchestration and a user-friendly development framework. It features strong compatibility, scalability, and hybrid cloud deployment. This helps ISV partners, channels, and customers quickly integrate complex enterprise applications to ZStack Cloud and deploy them with one click, allowing for flexible scaling of cloud capabilities based on business needs and the easy application of best practices to production environments.

This document describes how to create, release, and install an application on ZStack Cloud.

Create Application

About this task

This topic describes how to create an application image and package. Follow these steps:
  1. Get the application template.
  2. Configure application files.
  3. Create the application image.

Procedure

  1. Get the application template.
    1. Log in to https://github.com/ZStack-Robot/marketplace-apps
    2. On the upper right corner or the displayed page, click Use this template > Create a new repository to clone the application template to your own repository.
      Figure 1. Clone Application Template to Your Repository


    The source directory structure of the application package is as follow:
    ├── applications
    │   ├── index.json
    │   ├── zstack_io_grafana
    │   │   └── aarch64
    │   │       └── 11.2.0
    │   │           ├── application.json
    │   │           ├── input.json
    │   │           ├── logo.png
    │   │           ├── output.json
    │   │           └── src
    │   │                 ├── main.tf
    │   │                 ├── output.tf
    │   │                 ├── scripts
    │   │                 │     └── check-health.sh
    │   │                 ├── variables.tf
    │   │                 └── version.tf
    │   │   └── x86_64
    │   │       └── 11.2.0
    │   │           ├── application.json
    │   │           ├── input.json
    │   │           ├── logo.png
    │   │           ├── output.json
    │   │           └── src
    │   │                 ├── main.tf
    │   │                 ├── output.tf
    │   │                 ├── scripts
    │   │                 │     └── check-health.sh
    │   │                 ├── variables.tf
    │   │                 └── version.tf
    Directory Explanation:
    • zstack_io_grafana: Application ID. Use the real Application ID to rename this path. This name must be consistent with the appId value in the file application.json.
    • aarch64/x86_64: Application architecture. If your application supports only one architecture, delete the path corresponding to another architecture.
    • 11.2.0: Application version. Use the real version number to rename this path.
    • application.json: A file defining the application name, application description, appId, application type, and connection type.
    • input.json: A file used for the UI rendering, which defines the form parameters that users need to set when installing this application on the Application Market UI page.
    • logo.png: The application Logo picture.
    • output.json: A file defining the application fields displayed on the UI after it is installed.
    • src: A directory contains IaC files with Terraform (OpenTofu). The files must follow the Terraform syntax. See https://developer.hashicorp.com/terraform/language
    • main.tf: The entry point for the OpenTofu execution file.
    • output.tf: The output after executing main.
    • script: A directory contains execution scripts. These scripts can import data using data and execute commands on the VM instances running this application.
    • variables.tf: The variables in OpenTofu format.
    • version.tf: The provider information.
  2. Configure application files.
    1. Use the real application ID, application architecture, and application version to rename the path zstack_io_grafana, aarch64/x86_64, and 11.2.0 respectively.
    2. Configure application.json.
      Template
      {
        "name": "Grafana 是一款开源指标分析和可视化套件",
        "description": "Grafana 是一款开源指标分析和可视化套件,用于可视化支持各种数据源的时间序列数据,应用市场也提供对应ZStack监控模板",
        "details": "Grafana 是一款开源指标分析和可视化套件,用于可视化支持各种数据源的时间序列数据。 本应用由ZStack打包。产品中提及的相应商标归相应公司所有",
        "appId": "zstack.io.grafana",
        "category": "cloud",
        "connector_type": "zstack"
      }
      Note:
      • Use the default value provided by the template for the parameter category and connector_type.
      • Modify other parameters according to your real conditions.
    3. Configure input.json.
      Template
      [
        {
          "name": "root_disk_size",
          "required": true,
          "default_value": 107374182400,
          "min": 107374182400,
          "tag": "ZStack::rootDiskSize"
        },
        {
          "name": "memory_size",
          "required": true,
          "default_value": 4294967296,
          "min": 2147483648,
          "tag": "ZStack::memorySize"
        },
        {
          "name": "l3_network_uuids",
          "en_label": "l3_network_uuids",
          "zh_label": "网络",
          "required": true,
          "tag": "ZStack::l3NetworkUuids"
        },
        {
          "name": "cpu_num",
          "required": true,
          "default_value": 2,
          "min": 1,
          "tag": "ZStack::cpuNumber"
        },
        {
          "name": "backup_storage_uuid",
          "required": true,
          "tag": "ZStack::backupStorageUuid"
        }
      ]
      Note:
      • name: The parameter need to configure when users install this application on the Application Market UI.
      • required: Whether the parameter is mandatory during the application installation.
      • en_lable: The English name of the parameter displayed on the UI.
      • zh_lable:The Chinese name of the parameter displayed on the UI.
      • default_value: The default value of the parameter.
      • min: The minimum value of the parameter.
      • tag: The tag with ZStack prefix is used for UI rendering. Only parameters with such tags can be displayed on the UI.
      The parameters defined in input.json are displayed on the UI in the following order:
      Parameter Description Whether the parameter must be included in input.json
      ZStack::cpuNumber The CPU cores. Yes
      ZStack::memorySize The memory size. Yes
      ZStack::imageStoreUuid The image storage UUID. No. This parameter is generated and displayed automatically.
      ZStack::rootDiskSize The root volume size. Yes
      ZStack::dataDiskSize The data volume size. No. If need, you can include one or more this parameter in input.json. The number of this parameters included in input.json is the number of data volumes user can configure on the UI when installing the application.
      ZStack::l3NetworkUuid The L3 network UUID. Yes. You must include at least one this parameter in input.json. The number of this parameters included in input.json is the number of NICs user can configure on the UI when installing the application.
      ZStack::l3NetworkIp The specified IP address for the NIC. No. If you include this parameter, you must include a ZStack::l3NetworkUuid first. One ZStack::l3NetworkUuid corresponds to one ZStack::l3NetworkIp.
      ZStack::clusterUuid The cluster UUID. Yes
      ZStack::hostUuid The host UUID. Yes
      ZStack::rootDiskPrimaryStorageUuid The UUID of the primary storage for the root volume. Yes
      ZStack::rootDiskPrimaryStorageCephPoolUuid The UUID of the storage pool for the root volume. If the root volume use a Ceph primary storage, you must include this parameter. This parameter is configured together with rootDiskPrimaryStorageUuid.
      ZStack::dataDiskPrimaryStorageUuid The UUID of the primary storage for data volumes. If you include ZStack::dataDiskSize, you must include this parameter.
      ZStack::dataDiskPrimaryStorageCephPoolUuid The UUID of the storage pool for data volumes. If you include ZStack::dataDiskSize and the data volumes use a Ceph primary storage, you must include this parameter. This parameter is configured together with ZStack::dataDiskPrimaryStorageUuid.
      ZStack::gpuDeviceUuid The GPU device UUID. No. If you include this parameter, you must include ZStack::gpuSpecsUuid and ZStack::gpuDeviceType.
      ZStack::gpuSpecsUuid The GPU specification UUID. No. If you include this parameter, you must include ZStack::gpuDeviceUuid and ZStack::gpuDeviceType.
      ZStack::gpuDeviceType The GPU device type. No. If you include this parameter, you must include ZStack::gpuDeviceUuid and ZStack::gpuSpecsUuid.
    4. Configure output.json.
      Template
      [
          {
              "name": "vm_uuids",
              "en_label": "vm_uuids",
              "zh_label": "vm_uuids",
              "type":"array",
              "tag":"ZStack:vmInstanceUuid"
          },
          {
              "name": "application_protocol",
              "en_label": "Application Protocol",
              "zh_label": "应用协议",
              "type": "string",
              "tag": "Application:protocol"
          },
          {
              "name": "application_ip",
              "en_label": "Application IP",
              "zh_label": "应用IP",
              "type":"string",
              "tag":"Application:ip"
          },
          {
              "name": "application_port",
              "en_label": "Application Port",
              "zh_label": "应用端口",
              "type":"number",
              "tag":"Application:port"
          },
          {
              "name": "default_account",
              "en_label": "Default User Name",
              "zh_label": "默认账号",
              "type":"string"
          },
          {
              "name": "default_password",
              "en_label": "Default Password",
              "zh_label": "默认密码",
              "type":"password"
          }
      ]
      Note:
      • name: The application field displayed on the UI after the installation.
      • en_lable: The English name of the field displayed on the UI.
      • zh_lable: The Chinese name of the field displayed on the UI.
    5. Configure src-main.tf.
      Template
      resource "zstack_vm" "vm" {
        name = "Grafana"
        description = "应用市场-Grafana-可视化"
        root_disk = {
          size = {{.root_disk_size}}
        }
      
        l3_network_uuids = {{.l3_network_uuids}}
        memory_size = {{.memory_size}}
        cpu_num = {{.cpu_num}}
        marketplace = true
        never_stop = true
      }
      
      variable "l3Uuids" {
        type = list(string)
        default = {{.l3_network_uuids}}
      }
      
      data "zstack_l3network" "network" {
          depends_on = [zstack_vm.vm]
          uuid = var.l3Uuids[0]
      }
      
      resource "terraform_data" "healthy_check" {
        depends_on = [zstack_vm.vm]
      
        provisioner "local-exec" {
           command     = var.wait_for_migrate_health_cmd
           environment = {
             ENDPOINT =  "http://${zstack_vm.vm.ip}:3000/"
           }
         }
      }
      Note:

      The variable values within {{}} are passed from the corresponding fields in input.json, which are also the values that users set on the UI when installing the application.

    6. Configure src-output.tf.
      Template
      output "vm_uuids" {
         value = zstack_vm.vm.uuid
      }
      
      output "application_protocol" {
         value = "http"
      }
      
      output "application_ip" {
         value = zstack_vm.vm.ip
      }
      
      output "application_port" {
         value = 3000
      }
      
      output "default_account" {
         value = "admin"
      }
      
      output "default_password" {
         value = "password"
      }
      
      output "default_host_root_password" {
         value = "password"
      }
    7. Configure src-variables.tf.
      Template
      variable "wait_for_migrate_health_cmd" {
         description = "local-exec command to execute for determining if the Grafana url is healthy. Grafana endpoint will be available as an environment variable called ENDPOINT"
         type        = string
         default     = "start=$(date +%s); until curl -k -s $ENDPOINT >/dev/null; do sleep 4; now=$(date +%s); if [ $((now - start)) -ge 600 ]; then echo 'Timeout reached'; exit 1; fi; done"
       } 
    8. Configure src-version.tf.
      Template
      terraform {
        required_providers {
          zstack = {
            source = "zstack.io/terraform-provider-zstack/zstack"
          }
        }
      }
      Note:
      • If the user's environment can connect to the Internet, you can use providers provided on https://registry.terraform.io/browse/providers
      • If the user's environment cannot connect to the Internet, you can use the following providers only. For detailed information see https://registry.terraform.io/browse/providers
         template = {
              source  = "hashicorp/template"
              version = "2.2.0"
            }
            external = {
              source = "hashicorp/external"
              version = "2.3.3"
            }
            grafana = {
              source = "grafana/grafana"
              version = "3.2.1"
            }
            local = {
              source = "hashicorp/local"
              version = "2.5.1"
            }
            null = {
              source = "hashicorp/null"
              version = "3.2.3"
            }
  3. Create the application image.
    The application image must be based on an instance image of the KVM qcow2 format. You can use the Packer Qemu Plugin to create the image. If the image includes QGA, you can pass User Data. The User Data passed must be encoded based on Base64.

    The following example shows the User Data for formatting a data disk. You can write your own User Data according to your specific requirements.

    Original User Data:
    #cloud-config
    runcmd:
      - |
        pv_list=$(pvs --noheadings -o pv_name)
        pv_count=$(echo "$pv_list" | wc -l)
        pv_name=$(echo "$pv_list" | tr -d ' ')
    
        vg_name=$(pvs --noheadings -o vg_name $pv_name | tr -d ' ')
    
        growpart $(echo $pv_name | sed 's/[0-9]*$//') $(echo $pv_name | grep -o '[0-9]*$')
        pvresize $pv_name
    
        lv_name=$(lvs --noheadings -o lv_name --sort -size | tail -1 | tr -d ' ')
    
        lvextend -l +100%FREE /dev/$vg_name/$lv_name
    
        lv_path="/dev/$vg_name/$lv_name"
        mapper_name=$(readlink -f $lv_path | awk -F '/' '{print $3}')
    
        lv_mapper_name=$(ls -l /dev/mapper/ | grep "$mapper_name" | awk '{print $9}')
    
        blkid | grep "/dev/mapper/$lv_mapper_name" | grep -q xfs
    
        if [ $? -eq 0 ]; then
            xfs_growfs /dev/mapper/$lv_mapper_name
        else
            resize2fs /dev/mapper/$lv_mapper_name
        fi
        partprobe
    Encoded User Data:
     user_data = "I2Nsb3VkLWNvbmZpZwpydW5jbWQ6CiAgLSB8CiAgICBwdl9saXN0PSQocHZzIC0tbm9oZWFkaW5ncyAtbyBwdl9u \
    YW1lKQogICAgcHZfY291bnQ9JChlY2hvICIkcHZfbGlzdCIgfCB3YyAtbCkKICAgIHB2X25hbWU9JChlY2hvICIkcHZfbGlzdCIgfCB0ciAtZCAnI \
    CcpCgogICAgdmdfbmFtZT0kKHB2cyAtLW5vaGVhZGluZ3MgLW8gdmdfbmFtZSAkcHZfbmFtZSB8IHRyIC1kICcgJykKCiAgICBncm93cGFydCAkKG \
    VjaG8gJHB2X25hbWUgfCBzZWQgJ3MvWzAtOV0qJC8vJykgJChlY2hvICRwdl9uYW1lIHwgZ3JlcCAtbyAnWzAtOV0qJCcpCiAgICBwdnJlc2l6ZSA \
    kcHZfbmFtZQoKICAgIGx2X25hbWU9JChsdnMgLS1ub2hlYWRpbmdzIC1vIGx2X25hbWUgLS1zb3J0IC1zaXplIHwgdGFpbCAtMSB8IHRyIC1kICcg \
    JykKCiAgICBsdmV4dGVuZCAtbCArMTAwJUZSRUUgL2Rldi8kdmdfbmFtZS8kbHZfbmFtZQoKICAgIGx2X3BhdGg9Ii9kZXYvJHZnX25hbWUvJGx2X \
    25hbWUiCiAgICBtYXBwZXJfbmFtZT0kKHJlYWRsaW5rIC1mICRsdl9wYXRoIHwgYXdrIC1GICcvJyAne3ByaW50ICQzfScpCgogICAgbHZfbWFwcG \
    VyX25hbWU9JChscyAtbCAvZGV2L21hcHBlci8gfCBncmVwICIkbWFwcGVyX25hbWUiIHwgYXdrICd7cHJpbnQgJDl9JykKCiAgICBibGtpZCB8IGd \
    yZXAgIi9kZXYvbWFwcGVyLyRsdl9tYXBwZXJfbmFtZSIgfCBncmVwIC1xIHhmcwoKICAgIGlmIFsgJD8gLWVxIDAgXTsgdGhlbgogICAgICAgIHhm \
    c19ncm93ZnMgL2Rldi9tYXBwZXIvJGx2X21hcHBlcl9uYW1lCiAgICBlbHNlCiAgICAgICAgcmVzaXplMmZzIC9kZXYvbWFwcGVyLyRsdl9tYXBwZ \
    XJfbmFtZQogICAgZmkKICAgIHBhcnRwcm9iZQ=="

Release Application

This topic describes how to release your application package and image to ZStack Cloud Application Market.
  • Private Release: Upload your application package and image to your local cloud. Only you can use this application.
  • Specified Shared Release: Upload your application package and image to your CDN. You and your partners can use this application.
  • Shared Release: Upload your application package and image to the official CDN of ZStack Cloud. All ZStack Cloud users can use this application.

Private Release

  1. Execute the python package_repo.py script to generate the directory images.
  2. Rename your application image to image.qcow2 and upload it to the directory images.
  3. Run the following command to generate a .bin package:
    python package_bin --${AppId} --${Version} --${Arch} --include_images
  4. Check the .bin package in the following path: target/application_bins/${AppID}/${Arch}/${Version}/${PackageName}.bin
  5. Upload the .bin package to the management node of ZStack Cloud and run the following command:
    [root@localhost~] bash ${PackageName}.bin
    Note: If you use dual-management node. Upload the .bin package to and run the bash command on the two management nodes respectively.
  6. On the main menu of ZStack Cloud, choose Operational Management > Application Market > Default Application. On the Default Application page, click Sync Application. Then, you can view the application you release.

Specified Shared Release

  1. Execute the python package_repo.py script to generate application.tar.gz and the new index.json
  2. Check application.tar.gz in the following path: target/application_bins/${app_id}/${arch}/${version}/xxx.bin
  3. Rename your application image as image.qcow2
  4. Upload application.tar.gz and image.qcow2 to your CDN according to the following directory structure:
    ├── index.json
    ├── ${AppId}
    │   └── ${Arch}
    │       └── ${Version}
    │           └── application.tar.gz
    │           └── image.qcow2    
  5. Log in to the management node of ZStack Cloud and run the following command to write your CDN into repositories:
    [root@localhost~]zstack-cli    # Enter CLI command line.
    - >>>LogInByAccount accountName=admin password=${AdminPassword}    # Log the admin account.
    admin >>>UpdateGlobalConfig name=repositories category=marketplace value="file:///opt/zstack-marketplace-repo;${CustomCDNAddress}"    # Write your CDN into repositories.
    admin >>>exit    # Exit the CLI command line.
  6. Run the following command to restart the management node:
    [root@localhost~] zstack-ctl restart_node
  7. Check whether the repositories in the marketplace-server/config/config.yaml is consistent with the sample shown below:
    repositories:
    - file:///opt/zstack-marketplace-repo
    - ${CustomCDNAddress}
  8. On the main menu of ZStack Cloud, choose Operational Management > Application Market > Default Application. On the Default Application page, click Sync Application. Then, you can view the application you release.

Shared Release

  1. Execute the python package_repo.py script to generate application.tar.gz and the new index.json
  2. Check application.tar.gz in the following path: target/application_bins/${app_id}/${arch}/${version}/xxx.bin
  3. Rename your application image as image.qcow2
  4. Send application.tar.gz and image.qcow2 to ZStack Cloud technical support. The technical support will upload the files to the official CND.
  5. On the main menu of ZStack Cloud, choose Operational Management > Application Market > Default Application. On the Default Application page, click Sync Application. Then, you can view the application you release.

Install Application

About this task

This topic describes how to install an application released on Application Market. Follow these steps:
  1. Upload the application image. (Optional)
  2. Install the application.
  3. Access the application.
  4. Application debug tips.

Procedure

  1. Upload the application image. (Optional)
    When installing the application. The system downloads the application image from the CDN automatically, which consumes certain time. If your Cloud cannot visit the CDN or you want to accelerate the installation, you can maually upload the image to the specified path in advance.
    • Download Address
      • ZStack Cloud CDN: Contact ZStack official technical support to obtain the application image.
      • To download applications that are not officially released on ZStack Cloud, contact the corresponding developers.
    • Upload Image
      • Rename the image to image.qcow2 and upload it to the following path on your management node and ImageStore (create the path if it does not exist)): /opt/zstack-marketplace-repo/{appName}/{Architecture}/{version}. For example, /opt/zstack-marketplace-repo/zstack_io_zaku/x86_64/3.1.0/image.qcow2
      • To ensure the correctness of the path and file name, we recommend that you contact the official technical support to execute this step.
  2. Install the application.

    On the main menu of ZStack Cloud, choose Operational Management > Application Market > Default Application. Locate the application you need to install and click Install. Then, the Install Application page is displayed.

    On the displayed page, set the required parameters and confirm to install.

  3. Access the application.

    On the main menu of ZStack Cloud, choose Operational Management > Application Market > Default Application > Installed. Locate the application and click the access address. Then, you can access the application.

  4. Application debug tips.
    If you need to debug, you can find the information you need with the following tips:
    • View the application UUID: Click Task on the main menu of ZStack Cloud, and locate the task corresponding to the application installation. You can find the application UUID in this task details.
    • View the application logs: See /var/lib/zstack/marketplace-server/server.log on the management node.
    • View the application directory: Enter /var/lib/zstack/marketplace-server/apps/${application_uuid}/instance/${instance_uuid} on the management node. You can see the terraform.tfstate here. If you need to debug manually, run the following command:
      ```bash
      export TF_CLI_CONFIG_FILE=/var/lib/zstack/marketplace-server/.terraformrc && /var/lib/zstack/marketplace-server/tools/tofu apply -var "host=cloud api endpoint" -var "port=8080" -var "session_id=xxxxx"
      ​```

Glossary

Instance

An instance is a virtual machine or server that runs the images of operating systems in Cloud, such as VM instance and elastic baremetal instance.

VM Instance

A VM instance is a virtual machine instance running on a host. A VM instance has its own IP address and can access public networks and run application services.

Volume

A volume provides storage space for a VM instance. Volumes are categorized into root volumes and data volumes.

Root Volume

A root volume provides support for the system operations of a VM instance.

Data Volume

A data volume provides extended storage space for a VM instance.

Image

An image is a template file used to create a VM instance or volume. Images are categorized into system images and volume images.

Instance Offering

An instance offering defines the number of vCPU cores, memory size, network bandwidth, and other configuration settings of VM instances.

Disk Offering

A disk offering defines the capacity and other configuration settings of volumes.

GPU Specification

A GPU specification defines the frame per second (FPS), video memory, resolution, and other configuration settings of a physical or virtual GPU. GPU specifications are categorized into physical GPU specifications and virtual GPU specifications.

vNUMA Configuration

vNUMA uses CPU pinning to passthrough the topology of associated host physical NUMA (pNUMA) nodes to a VM instance, generating a topology of virtual NUMA (vNUMA) nodes for the VM instance. This topology enables a vCPU on a vNUMA node to primarily access the local memory and thus improves VM performance.

NUMA (Non-Uniform Memory Access)

Non-uniform memory access (NUMA) is a computer memory design where the memory access time depends on the memory location relative to the CPU. Under NUMA, a processor can access its own local memory faster than non-local memory and thus improves VM performance.

pNUMA Node (physical NUMA Node)

A pNUMA node (physical NUMA node) is a host NUMA node predefined based on the host NUMA architecture. It is used to manage the CPUs and memory of the host.

pNUMA Topology (physical NUMA Topology)

A pNUMA topology (physical NUMA topology) is the topology of the host NUMA nodes predefined by the CPU vendor based on the host NUMA architecture.

vNUMA Node (virtual NUMA Node)

A vNUMA node (virtual NUMA node) is generated by passing-through associated pNUMA nodes via CPU pinning. It is used to manage the CPUs and memory of a VM instance.

vNUMA Topology (virtual NUMA Topology)

A vNUMA topology (virtual NUMA topology) is the topology of VM NUMA nodes generated by passing-through associated pNUMA nodes via CPU pinning.

Local Memory

Local memory is the memory that a CPU (pCPU or vCPU) accesses through the Uncore iMC (Integrated Memory Controller) of the same NUMA (pNUMA or vNUMA) node. Compared with accessing non-local memory, accessing local memory has lower latencies.

CPU Pinning

CPU pinning assigns the virtual CPUs (vCPUs) of a VM instance to specific physical CPUs (pCPUs) of the host, which improves VM performance.

EmulatorPin Configuration

EmulatorPin assigns all other threads than virtual CPU (vCPU) threads and IO threads of a VM instance to physical CPUs (pCPUs) of the host so that these threads run on assigned pCPUs.

Auto-Scaling Group

An auto-scaling group is a group of VM instances that are used for the same scenarios. An auto-scaling group can automatically scale out or in based on application workloads or health status of VM instances in the group.

Snapshot

A snapshot is a point-in-time capture of data status in a volume.

Affinity Group

A VM scheduling policy is a resource orchestration policy based on which VM instances are assigned hosts to achieve the high performance and high availability of businesses.

Zone

A zone is a logical group of resources such as clusters, L2 networks, and primary storage. Zone is the largest resource scope defined in the Cloud.

Cluster

A cluster is a logical group of hosts (compute nodes).

Host

A host provides compute, network, and storage resources for VM instances.

Primary Storage

A primary storage is one or more servers that store volume files of VM instances. These files include root volume snapshots, data volume snapshots, image caches, root volumes, and data volumes.

Image Storage

An image storage is a storage server that stores VM image templates, including ISO image files.

iSCSI Storage

iSCSI storage is an SAN storage that uses the iSCSI protocol for data transmission. You can add an iSCSI SAN block as a Shared Block primary storage or pass through the block to a VM instance.

FC Storage

FC storage is an SAN storage that uses the FC technology for data transmission. You can add an FC SAN block as a Shared Block primary storage or pass through the block to a VM instance.

NVMe Storage

A type of storage implemented via the NVMe-oF (NVMe over fabrics) protocol. You can add a block device configured from an NVMe storage as SharedBlock primary storage.

L2 Network

An L2 network is a layer 2 broadcast domain used for layer 2 isolation. Generally, L2 networks are identified by names of devices on the physical network.

VXLAN Pool

A VXLAN pool is a collection of VXLAN networks established based on VXLAN Tunnel Endpoints (VTEPs). The VNI of each VXLAN network in a VXLAN pool must be unique.

L3 Network

An L3 network includes IP ranges, gateway, DNS, and other network configurations that are used by VM instances.

Public Network

Generally, a public network is a logical network that is connected to the Internet. However, in an environment that has no access to the Internet, you can also create a public network.

Flat Network

A flat network is connected to the network where the host is located and has direct access to the Internet. VM instances in a flat network can access public networks by using elastic IP addresses.

VPC Network

A VPC network is a private network where VM instances can be created. A VM instance in a VPC network can access the Internet through a VPC vRouter.

Management Network

A management network is used to manage physical resources in the Cloud. For example, you can create a management network to manage access to hosts, primary storage, image storage, and VPC vRouters.

Flow Network

A flow network is a dedicated network for port mirror transmission. You can use a flow network to transmit the mirrors of data packets of NIC ports to the target ports.

VPC vRouter

A VPC vRouter is a dedicated VM instance that provides multiple network services.

VPC vRouter HA Group

A VPC vRouter HA group consists of two VPC vRouters. Either VPC vRouter can be a primary or secondary VPC vRouter for the group. If the primary VPC vRouter does not work as expected, the VPC vRouter becomes the secondary VPC vRouter in the group to ensure high availability of business.

vRouter Image

A vRouter image encapsulates network services and can be used to create VPC vRouters.

Dedicated-Performance LB Image

A dedicated-performance load balancer (LB) image encapsulates dedicated-performance load-balancing services and can be used to create load balancer instances. However, a dedicated-performance load balancer image cannot be used to create VM instances.

vRouter Offering

A vRouter offering defines the number of vCPU cores, memory size, image, management network, and public network configuration settings of VPC vRouters. You can use a vRouter offering to create VPC vRouters that can provide network services for public networks and VPC networks.

LB Instance Offering

A load balancer (LB) instance offering defines the CPU, memory, image, and management network configuration settings used to create LB instances. LB instances provide load balancing services for the public network, flat network, and VPC network.

SDN Controller

The SDN controller is the core of the SDN architecture, responsible for centralized management and control of network devices.

SDN Cluster

A cluster of dedicated VM instances designed to provide highly available SDN capabilities.

SDN Instance

A dedicated VM instance designed to provide SDN network capabilities.

SDN Image

An SDN image encapsulates an SDN software and can be used to create SDN instances.

SDN Instance Offering

An SDN instance offering defines the CPU, memory, SDN image, and management network configuration used for creating SDN instances.

Security Group

A security group provides security control services for VM NICs. It filters the ingress or egress TCP, UDP, and ICMP packets of VM NICs based on the specified security rules.

VIP

In bridged network environments, a virtual IP address (VIP) provides network services such as serving as an elastic IP address (EIP), port forwarding, load balancing, IPsec tunneling. When a VIP provides the preceding network services, packets are sent to the VIP and then routed to the destination network where VM instances are located.

EIP

An elastic IP address (EIP) functions based on the NAT technology. IP addresses in a private network are translated into an EIP that is in another network. This way, private networks can be accessed from other networks by using EIPs.

Port Forwarding

Port forwarding functions based on the layer-3 forwarding service of VPC vRouters. This service forwards traffic flows of the specified IP addresses and ports in a public network to specified ports of VM instances by using the specified protocol. If your public IP addresses are insufficient, you can configure port forwarding for multiple VM instances by using one public IP address and port.

Load Balancer

A load balancer distributes traffic flows of a virtual IP address to backend servers. It automatically inspects the availability of backend servers and isolates unavailable servers during traffic distribution. This way, the load balancer improves the availability and service capability of your business.

Listener

A listener monitors the frontend requests of a load balancer and distributes the requests to a backend server based on the specified policy. In addition, the listener performs health checks on backend servers.

Forwarding Rule

A forwarding rule forwards the requests from different domain names or URLs to different backend server groups.

Backend Server Group

A backend server group is a group of backend servers that handles requests distributed by load balancers. It is the basic unit for traffic distribution by load balancer instances.

Backend Server

A backend server handles requests distributed by a load balancer. You can add a VM instance on the Cloud or a server on a third-party cloud as a backend server.

Frontend Network

A frontend network is a type of network that is associated with a load balancer. Requests from the network are distributed by the load balancer to backend servers based on a specified policy.

Backend Network

A backend network is a type of network that is associated with a load balancer. Requests from frontend networks are distributed by the load balancer to servers in the backend network.

Load Balancer Instance

A load balancer instance is a custom VM instance used to provide load balancing services.

Certificate

If you select HTTPS for a listener, associate it with a certificate to make the listener take effect. You can upload either a certificate or certificate chain.

Firewall

A firewall is an access control policy that monitors ingress and egress traffic of VPC vRouters and decides whether to allow or block specific traffic based on the associated rule sets and rules.

Firewall Rule Set

A firewall rule set is a set of rules that a firewall uses to defend against network attacks. You need to associate a rule set with the egress or ingress flow direction of VPC vRouter NICs to make the rule set take effect.

Firewall Rule

A firewall rule is an access control entry associated with the egress or ingress flow direction of VPC vRouter NICs to defend against network attacks. A firewall rule includes rule priority, match condition, and behavior.

Rule Template

A rule template is a template that you can select when you add rules to a rule set or a firewall.

IP/Port Set

An IP or port set is a set of IP addresses or ports that you can select when you add rules to a rule set or a firewall.

IPsec Tunnel

An IPSec tunnel encrypts and verifies IP packets that transmit over a virtual private network (VPN) from one site to another.

OSPF Area

An Open Shortest Path First (OSPF) area is divided from an autonomous system based on the OSPF protocol. This simplifies the hierarchical management of vRouters.

NetFlow

A NetFlow monitors the ingress and egress traffic of the NICs of VPC vRouters. The supported versions of data flows are V5 and V9.

Port Mirroring

Port mirroring mirrors the traffic data of VM NICs and sends the traffic data to the target ports. This allows for the analysis of data packets of ports and simplifies the monitoring and management of data traffic and makes it easier to locate network errors and exceptions.

Route Table

A route table contains information about various routes that you configure. Route entries in a route table must include the destination network, next hop, and route priority.

CloudFormation

CloudFormation is a service that simplifies the management of cloud resources and automates deployment and O&S. You can create a stack template to configure cloud resources and their dependencies. This way, resources can be automatically configured and deployed in batches. CloudFormation provides easy management of the lifecycle of cloud resources and integrates automatic O&S into API and SDK.

Resource Stack

A resource stack is a stack of resources that are configured by using a stack template. The resources in the stack have dependencies with each other. You can manage resources in the stack by managing the resource stack.

Stack Template

A stack template is a UTF8-encoded file based on which you can create resource stacks. The stack template defines the resources that you want, the dependencies between the resources, and the configuration settings of the resources. When you use a stack template to create a resource stack, CloudFormation parses the template and the resources are automatically created and configured.

Sample Template

A sample template is a commonly used resource stack. You can use a sample template provide by the Cloud to create resource stacks.

Designer

A designer is a CloudFormation tool that allows you to orchestrate cloud resources. You can drag and drop resources on a canvas and use lines to establish dependencies between the resources.

Baremetal Cluster

A baremetal cluster consists of baremetal chassis. You can manage baremetal chassis by managing a baremetal cluster where the chassis reside.

Deployment Server

A deployment server is a server that provides PXE service and console proxy service for baremetal chassis.

Baremetal Chassis

A baremetal chassis is used to create a baremetal instance and is identified based on the BMC interface and IPMI configuration setting.

Preconfigured Template

A preconfigured template is used to create a preconfigured file that allows for unattended batch installation of an operating system for baremetal instances.

Baremetal Instance

A baremetal instance is an instantiated baremetal chassis.

Elastic Baremetal Management

Elastic Baremetal Management provides dedicated physical servers for your applications to ensure high performance and stability. In addition, this feature allows elastic scaling. You can apply for and scale resources based on your needs.

Provision Network

A provision network is a dedicated network for PXE boot and image downloads while creating elastic baremetal instances in a gateway proxy cluster.

Elastic Baremetal Cluster

Provides a separated cluster to manage baremetal nodes.

Gateway Node

A gateway node is a node where the ingress and egress traffic of the Cloud and elastic baremetal instances in gateway proxy clusters is forwarded.

Baremetal Node

A baremetal node is used to create a baremetal instance and is identified based on the BMC interface and IPMI configuration setting.

Elastic Baremetal Instance

An elastic baremetal instance has the same performance as physical servers and allows elastic scaling. You can apply for and scale resources based on your needs.

Elastic Baremetal Offering

An elastic baremetal offering defines the number of vCPU cores, memory size, CPU architecture, CPU model, and other configuration settings of elastic baremetal instances.

vCenter

The Cloud allows you to take over vCenter and manage resources on the vCenter.

VM Instance

A VM instance is an ESXi virtual machine instance running on a host. A VM instance has its own IP address to access public networks and can run application services.

Network

A vCenter network defines the network settings of VM instances on vCenter, such as IP range, gateway, DNS, and network services.

Volume

A volume provides storage space for a VM instance on vCenter. A volume attached to a VM instance can be used as a root volume or data volume. A root volume provides support for the system operations of a VM instance. A data volume provides extended storage space for a VM instance.

Image

An image is a template file used to create a VM instance or volume on vCenter. Images are categorized into system images and volume images.

Event Message

Event Message displays event alarm messages of vCenter that is took over by the Cloud. This feature allows you to locate errors and exceptions efficiently.

Network Topology

A network topology visualizes the network architecture of the Cloud. It allows for efficient planning, management, and improvement of network architecture. Network topologies can be categorized into global topologies and custom topologies.

Performance Analysis

Performance Analysis displays the performance metrics of key resources monitored externally or internally in the Cloud. You can view the performance analysis or export the analysis report as needed to improve the O&M efficiency.

Capacity Management

Capacity Management visualizes the capacities and usages of key resources in the Cloud. You can use this feature to improve O&S efficiency.

MN Monitoring

Management Node (MN) monitoring allows you to view the health status of each management node when you use multiple management nodes to achieve high availability.

Alarm

An alarm is used to monitor the status of time-series data and events and respond to the status change. Alarms can be categorized into resource alarm, event alarm, and extended alarm.

One-Click Alarm

A one-click alarm integrates multiple metrics of a resource. You can create one-click alarms for multiple resources to monitor these resources.

Alarm Template

An alarm template is a template of alarm rules. If you associate an alarm template with a resource group, an alarm is created to monitor the resources in the group.

Resource Group

A resource group consists of resources grouped based on your business needs. If you associate an alarm template with a resource group, the alarm rules specified by the template take effect on all the resources in the group.

Message Template

A message template specifies the text template of a resource alarm message or event alarm message sent to an SNS system.

Message Source

A message source is used to take over extended alarm messages. If you configure alarms for message sources, extended alarm messages can be sent to various endpoints.

Endpoint

An endpoint is a method that users obtain subscribed messages. Endpoints are categorized into system endpoints, email, DingTalk, HTTP application, short message service, and Microsoft Teams.

Alarm Message

An alarm message is a message sent the time when an alarm is triggered.

Current Task

A current task is an ongoing operation performed in the Cloud. You can perform centralized management over ongoing operations.

Operation Log

An operation log is a chronological record of operations on the specified objects and their operation results.

Audit

Audit monitors and records all activities on the Cloud. You can use this feature to implement operation tracking, cybersecurity classified protection compliance, security analysis, troubleshooting, and automatic O&M.

Log Collection

Allows you to collect with one click the log data from the Cloud and various nodes on the Cloud generated in the specified time period and download the log data.

One-Click Inspection

Comprehensively inspects the health status of key resources and services of the Cloud and scores their healthiness based on the inspection results. In addition, the one-click inspection service provides O&M suggestions and inspection reports.

Backup Management

Backup management integrates multiple disaster recovery technologies such as incremental backup and full backup that are suitable for multiple business scenarios. You can implement local backup and remote backup based on your business needs.

Backup Job

You can create a backup job to back up local VM instances, volumes, or databases to a specified storage server on a regular basis.

Local Backup Data

Local backup data of VM instances, volumes, and databases is stored in the local backup server.

Local Backup Server

A local backup server is located at the local data center and is used to store local backup data.

Remote Backup Server

A remote backup server is located at a remote data center or a public cloud and is used to store remote backup data.

Continuous Data Protection (CDP)

Continuous Data Protection (CDP) provides second-level and fine-grained continuous backups for important business systems in VM instances, allowing users to restore VM data to a specific time state, and retrieve files without restoring the system.

CDP Task

You can create a CDP task to continuously back up your VM data to a specified backup server to achieve continuous data protection and recovery.

CDP Data

The backup data generated from continuous data protection on VM instances is stored in local backup servers.

Recovery Point

A recovery point is a data point generated during continuous data protection. A recovery point corresponds to a data record within the recovery point interval specified by the user.

Locked Recovery Point

You can lock or unlock a recovery point as needed. After a recovery point is locked, data of the recovery point will not be automatically cleared or deleted.

Recovery Task

A recovery task helps you quickly restore data by specifying a CDP task and recovery point, and allows you to view the recovery progress and logs in a more friendly way.

Cryptography Security Compliance

The Cryptography Security Compliance service provides applications with cloud security capabilities based on commercial cryptography, meeting the requirements of commercial cryptography application security assessments.

HSM Pool

An HSM pool is a logical group of hardware security modules (HSMs) and is used to provide unified cryptography services such as signature validation and encryption.

HSM

A hardware security module (HSM) is a dedicated device that encrypts, decrypts, and authenticates information by using the cryptographic technology.

Platform Cryptography Security Compliance

Enables the Cloud to meet the requirements of Cryptography Security Compliance through the cryptography capabilities provided by HSM pools.

Certificate Login

Authenticates the identity of a user by using a UKey device.

Data Protection

Protects important data on the Cloud to ensure the data confidentiality and integrity.

Scheduled Job

A scheduled job defines that a specific action be implemented at a specified time based on a scheduler.

Scheduler

A scheduler is used to schedule jobs. It is suitable for business scenarios that last for a long time.

Tag

A tag is used to mark resources. You can use a tag to search for and aggregate resources.

Migration Service

The Cloud provides V2V migration service that allows you to migrate VM instances and data from other virtualized platform to the current cloud platform.

ZMigrate Migration Service

A migration service installed from Application Market that migrates VM instances and their data from VMware environments to the current cloud platform.

V2V Migration

V2V Migration allows you to migrate VM instances from the VMware or KVM platform to the current cloud platform.

V2V Conversion Host

A V2V conversion host is a host in the destination cluster that you need to specify during V2V migration to cache VM instances and data when you implement V2V migration. After the VM instances and data are cached in the V2Vconversion host, they are migrated to the destination primary storage.

User

A user is a natural person that constructs the most basic unit in Tenant Management.

User Group

A user group is a collection of natural persons or a collection of project members. You can use a user group to grant permissions.

Role

A role is a collection of permissions that can be granted to users. A user that assumes a role can call API operations based on the permissions specified by the role. Roles are categorized into platform roles and project roles.

Single Sign-On

The Single Sign-On service provided by the Cloud. It supports seamless access to SSO systems. Through the service, related users can directly log in to the Cloud and manage cloud resources.

Project

A project is a task that needs to be accomplished by specific personnel at a specified time. In Tenant Management, you can plan resources at the project granularity and allocate an independent resource pool to a project. The word Tenant in Tenant Management mainly refers to projects. A project is a tenant.

Project Member

A project member is a member in a project who is granted permissions on specific project resources and can use the resources to accomplish tasks. Project members include the project admin, project managers, and normal project members.

Process Management

Process management is part of ticket management that manages the processes related to the resources of projects. Processes can be categorized into default processes and custom processes.

My Approvals

In the Cloud, only the administrator and project administrators are granted approval permissions. the administrator and project administrators can approve or reject a ticket. If a ticket is approved, resources are automatically deployed and allocated to the specified project.

Bills

A bill is the expense of resources totaled at a specified time period. Billing is accurate to the second. Bills can be categorized into project bills, department bills, and account bills.

Pricing List

A pricing list is a list of unit prices of different resources. The unit price of a resource is set based on the specification and usage time of the resource.

Console Proxy

Console proxy allows you to log in to a VM instance by using the IP address of a proxy.

AccessKey Management

An AccessKey pair is a security credential that one party authorizes another party to call API operations and access its resources in the Cloud. AccessKey pairs shall be kept confidential.

IP Allowlist/Blocklist

An IP allowlist or blocklist identifies and filters IP addresses that access the Cloud. You can create an IP allowlist or blocklist to improve access control of the Cloud.

Application Center

Application Market allows you to add applications to the Cloud and then access the applications with one click. It extends the functionality of the Cloud. You can add default applications through the built-in installation package or add more applications through URLs.

Sub-Account Management

A sub-account can be created by the admin or synced from an SSO authentication system and is managed by the admin. Resources created under a sub-account are managed by the sub-account.

Theme and Appearance

You can customize the theme and appearance of the Cloud.

Email Server

If you select Email as the endpoint of an alarm, you need to set an email server. Then alarm messages are sent to the email server.

Log Server

A log server is used to collect management node logs or the platform operation logs. You can add a log server to the cloud and use the collected logs for operation trace or troubleshooting. This makes your O&M more efficient.

Global Setting

Global Setting allows you to configure settings that take effect on the whole platform.

Scenario Template

Scenario Template provides multiple templates that encapsulate scenario-based global settings. You can apply a template globally with one click based on your business needs. This improves your O&M efficiency.

HA Policy

HA Policy is a mechanism that ensures sustained and stable running of the business if VM instances are unexpectedly stopped or are errored because of errors occurring to compute, network, or storage resources associated with the VM instances. By enabling this feature, you can customize VM HA policies to ensure your business continuity and stability.

Time Management

Manages the Cloud system time and allows you to configure time servers for the Cloud. After you configure NTP time servers for the Cloud, the clock of the time servers is synced with all nodes of the Cloud.

GPU Device

A GPU device is a powerful microprocessor with high computational capabilities. You can use a GPU device to handle intricate graphics rendering and parallel computing jobs, thus improving the efficiency of businesses such as graphic production, video processing, and machine learning.

Script Library

The script library stores and manages script files centrally. By executing scripts on VM instances, you can complete complex O&M operations and automated jobs.

XML Hook

An XML Hook is a script that can flexibly insert or modify parameters in XML files of VM instances. By attaching an XML Hook to a VM instance, you can customize VM configurations and enable specialized functionalities.

Container Service

A simple and user-friendly container management service, providing features like GPU management & scheduling, multi-tenancy, multi-cluster, quota configuration, CI/CD. and microservice. The service reduces the container using complexity and aligns well with traditional user's habits, helping you easily manage and deploy your container cluster, and enjoy the benefits of cloud-native technologies in a quick and convenient way.

Advanced Monitoring Server

An advanced monitoring server is a dedicated VM instance used to receive advanced monitoring data of load balancers and other resources.

Advanced Monitoring Server Image

An advanced monitoring server image encapsulates the advanced monitoring service and can be used to create advanced monitoring server.

Advanced Monitoring Server Offering

An advanced monitoring server offering defines the CPU cores, memory size, image, management network, and public network configurations of advanced monitoring server. You can use an advanced monitoring server offering to create advanced monitoring servers.

Plugin Management

You can package extended resources or tools into standardized plugins for quick installation and integration, expanding the Cloud capabilities.

Region Management

A region is a self-contained cloud environment with independent management node(s), networks, hardware, and cloud resources. ZStack IAM enabled user synchronization and SSO across multiple regions.
Application Market Development and Using Tutorial | 5.5.38 | ZStack Cloud · ZCF | ZStack Resource Center