Deploy a Sample Workload on Intel® Distribution of Open Network Edge Software Services

ID 672433
Updated 8/10/2021
Version Latest
Public

author-image

By

Get Started

To follow this guide, you need a machine with:

  • An Intel® Xeon® processor
  • Minimum 64 GB RAM
  • Minimum 256 GB hard drive
  • An internet connection
  • CentOS* 7.8.2003

Objectives

  1. Install the Converged Edge Insights software package, version 20.12. For instructions, see the Converged Edge Insights Documentation.
  2. Deploy a container-based workload:
           a. Understand the structure of a Helm* chart
           b. Deploy an application
           c. Validate the deployment
  3. Deploy a virtual-machine-based workload:
           a. Create the KubeVirt namespace, operator, and custom resources
           b. Deploy the Containerized Data Importer (CDI)
           c. Understand the structure of a Helm chart
           d. Deploy an application
           e. Validate the deployment

Container Deployment

Get a Sample

Go to GitHub* to download the sample Helm chart.

Figure 1. Directory structure

Understand the Structure of a Helm Chart

Chart.yaml

This file contains information about the Helm chart and is required for application deployments.

Figure 2. Example of Chart.yaml

This file contains the following fields:

  • apiVersion (required): Version of the chart API.
  • appVersion (optional): The application version.
  • Description (optional): A one-sentence explanation of this project.
  • Keywords (optional): A list of significant words for the project.
  • Name (required): The chart name.
  • Version (required): A standard version of Semantic Versioning (SemVer) 2.

For more information about additional fields, see Documentation.

Values.yaml

This file contains the default configuration values for the Helm chart.

Figure 3. Example of values.yaml

Templates Directory

The Templates directory contains the YAML definitions for the services, deployments, and other Kubernetes* objects that are previously listed. These definitions are used to render the chart resources.

Deploy an Application

  1. Switch to the root user:
    # su root

     

  2. Delete the default network policy:
    # kubectl delete networkpolicy block-all-ingress
    

     

  3. Install and deploy the chart archive:

    # helm install my-sample-container-chart sample-container-chart/ --values sample-container-chart/values.yaml

     

Validate the Deployment

Verify the following information for the release:

  • The values used to generate the release
  • The generated manifest file
  • The information provided by the chart for the release
  • The hooks associated with the release
# helm status my-sample-container-chart

Virtual Machine Deployment

Create the KubeVirt Namespace, Operator, and Custom Resources

KubeVirt is a virtual machine management add-in for Kubernetes.

  1. Switch to the root user:
    # su root

     

  2. Delete the default network policy:
    # kubectl delete networkpolicy block-all-ingress

     

  3. Create the KubeVirt namespace:
    # kubectl create namespace kubevirt

     

  4. Create the configuration map to use software emulation and live migration features:
    # kubectl create configmap -n kubevirt kubevirt-config --from-literal debug.useEmulation=true --from-literal feature-gates="LiveMigration"

     

  5. Create the KubeVirt operator:
    # kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/v0.25.0/kubevirt-operator.yaml

     

  6. Create the KubeVirt custom resource (CR) definition:

    # kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/v0.25.0/kubevirt-cr.yaml

     

Deploy the CDI

This utility to imports, uploads, and clones virtual machine images for use with KubeVirt.

  1. Create the CDI operator:
    # kubectl apply -f https://github.com/kubevirt/containerized-data-importer/releases/download/v1.13.1/cdi-operator.yaml

     

  2. Create the CDI CR:
    # kubectl create -f https://github.com/kubevirt/containerized-data-importer/releases/download/v1.13.1/cdi-cr.yaml

     

Understand the Structure of a Helm* Chart

Get a Sample

Go to GitHub to download the sample Helm chart.

Figure 4. Directory Structure

Understand the Structure of a Helm Chart

Chart.yaml

This file contains information about the Helm chart and is required for application deployments.

Figure 5. Example of Chart.yaml

This file contains the following fields:

  • apiVersion (required): Version of the chart API.
  • appVersion (optional): The application version.
  • Description (optional): A one-sentence explanation of this project.
  • Keywords (optional): A list of significant words for the project.
  • Name (required): The chart name.
  • Version (required): A standard version of Semantic Versioning (SemVer) 2.

For more information about additional fields, see Documentation.

Values.yaml

This file contains the default configuration values for the Helm chart.

Figure 6. Example of values.yaml

Templates Directory

This directory contains files specific to one or more resource types, which are passed to the template engine for rendering the chart resources.

Figure 7. Template directory files

This directory contains configurations for the following resources:

  • Virtual machine
  • Service
  • Persistent volume claim
  • Persistent volume

Deploy an Application on Intel Distribution of Open Network Edge Services Software

  1. Switch to the root user:
    # su root

     

  2. Delete the default network policy:
    # kubectl delete networkpolicy block-all-ingress
    

     

  3. Install and deploy the chart archive:

    # helm install my-sample-vm-chart sample-vm-chart/ --values sample-vm-chart /values.yaml

     

Validate the Deployment

  1. Verify the following information for the release:
    • The values used to generate the release
    • The generated manifest file
    • The information provided by the chart for the release
    • The hooks associated with the release
      # helm status my-sample-vm-chart

       

  2. Review the status of the virtual machine objects in the default namespace:
    # kubectl get vm