Hello, Edge!

This “Hello, Edge!” is the third quickstart in Volterra’s “Hello, World!” series. It will start by deploying an application with vk8’s (Volterra Virtual Kubernetes) on Volterra Network Edge. This document goes through the steps of deploying an application on VoltMesh Network Edge using Volterra’s Managed Kubernetes services called vk8s, auto discovering the service and configuring/managing the vk8s deployment, virtual host statistics, and metrics on VoltConsole.

HelloCloud
HelloCloud

In summary, you will:

The following are the sequence of actions:


Prerequsites

Application on Network Edge

Step 1. Download and save your PCKS file (.p12) with your API credentials from your Volterra tenant.

Step 2: Create a terraform variable file. Below is a sample input file.

Sample aws.tfvars

# DEFINITIONS
# 
# api_creds_p12: $PATH/to_your_api_creds.p12
# tenant_name: VES Tenant Name
# namespace: VES Namespace
# https_offload: CERT hosting/SSL termination (true|false)
# endpoint_name: VES Endpoint Name - default: quickstart-endpoint
# cluster_name: VES Cluster Name - default: quickstart-cluster
# route_name: VES Route Name - default: quickstart-route
# advertise_policy_name: VES Advertise Policy Name - default: quickstart-adv-policy
# virtual_host_name: VES Virtual Host Name - default: quickstart-vhost
# domain: VES Domain Name configured in Virtual Host
# vk8s_service_name: vk8s - Kubernetes service name
# vk8s_service_namespace: VES tenant Namespace
# vk8s_name: VES vk8’s name
# virtual_site_name: VES virtual site name
{
  "api_creds_p12": "/home/user1/Api_Credentials.p12",
  "tenant_name": "smart-retail",
  "namespace": "quickstart3",
  "virtual_site_name": "quickstart3-vsite",
  "vk8s_name": "quickstart3-vk8s",
  “https_offload”: “<true/false>”,
  "endpoint_name": "quickstart-endpoint",
  "vk8s_service_name": "productpage",
  "vk8s_service_namespace": "quickstart3”,
  "cluster_name": "quickstart-cluster",
  "route_name": "quickstart-route",
  "advertise_policy_name": "quickstart-adv-policy",
  "virtual_host_name": "quickstart-vhost",
  "domain": "hello-edge.volterra.io"    
}

Step 3. Download the Volterra Quickstart Script deployment script ato your local machine.

docker run --rm -v $(pwd):/opt/bin:rw volterraio/volt-terraform:latest cp /deploy-terraform.sh .

Step 4: Run the deploy-terraform.sh to deploy the application on vk8’s, auto-discover, connect and secure through VoltMesh. This will perform the following sequence of steps:

  1. Creates a Volterra Virtual Site selecting Volterra Regional Edge from Site List
  2. Creates a vk8’s object on VoltConsole in users Volterra Tenant
  3. Downloads vk8’s Kubeconfig file
  4. Deploys a sample Bookinfo application as a vk8’s deployment on Virtual Site created above (Site: Volterra Regional Edge)
  5. Configures Endpoint, Cluster, Route, Advertise Policy and Virtual Host on Volterra
./deploy-terraform.sh apply -i <absolute_path_to_variable_file> -tn example/hello-edge --force

Step 5: Verify if vk8’s cluster is up and running.

echo "$(terraform output vk8s_kubeconfig)" > ./k8s_config
export KUBECONFIG=./k8s_config

Below commands should show the list of worker nodes (in this case a single node will be displayed - Volterra Network Edge)

kubectl get nodes

Step 6: Verify if Bookinfo application is deployed and functional on vk8s deployment.

kubectl get pods,svc -n quickstart3

A successful output shows all pod status as up and running. A sample output is shown below:

$ kubectl get pods,svc -n quickstart3
NAME                                  READY   STATUS    RESTARTS   AGE
pod/details-v1-68fbb76fc-9hztq        2/2     Running   0          42s
pod/productpage-v1-6c6c87ffff-prf27   2/2     Running   0          42s
pod/ratings-v1-7bdfd65ccc-gvcf5       2/2     Running   0          42s
pod/reviews-v1-5c5b7b9f8d-7w6cm       2/2     Running   0          42s
pod/reviews-v2-569796655b-7swqg       2/2     Running   0          42s
pod/reviews-v3-844bc59d88-smjvj       2/2     Running   0          42s

NAME                               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/details                    ClusterIP   10.100.27.133    <none>        9080/TCP   42s
service/kubernetes                 ClusterIP   10.100.0.1       <none>        443/TCP    52d
service/productpage                ClusterIP   10.100.146.75    <none>        9080/TCP   42s
service/ratings                    ClusterIP   10.100.206.181   <none>        9080/TCP   42s
service/release-name-smi-metrics   ClusterIP   10.100.189.44    <none>        443/TCP    7d11h
service/reviews                    ClusterIP   10.100.77.44     <none>        9080/TCP   42s
   

Step 7: Open Bookinfo web page in the browser using the domain provided in the variable file above.

open $(./deploy-terraform.sh output -i <absolute_path_to_variable_file> terraform output exposed_dns)

Step 8: Open VoltConsole for Bookinfo vk8’s deployment status.

  • Note: You can check the pod status from pod tab in the vK8s section.
open $(./deploy-terraform.sh output -i <absolute_path_to_variable_file> terraform output vk8s_page) 

Step 9: Generate client traffic to Bookinfo application for VoltConsole dashboard statistics.

XYZ

Step 10: Open VoltConsole for Bookinfo application statistics.

  • Note: It will take a few minutes for statistics to show up.
open $(./deploy-terraform.sh output -i <absolute_path_to_variable_file> terraform output exposed_dns) 

Destroy

  1. To destroy all Volterra service objects created then run the following:
./deploy-terraform.sh destroy -i <absolute_path_to_vars_file> -tn example/quickstart3 --force

Volterra Concepts