HyperTest Installation
Installation of HyperTest on cluster
An up and running Kubernetes cluster with the following already configured
Kubernetes Cluster
Storage Class
Ingress Controller
Ingress Class
You can refer to our Cluster Setup docs if you don't already have a Kubernetes cluster running
All the prerequisites have already been completed while setting up cluster from cluster docs. Below we have listed them just for overview. If you have missed any of the prerequisite, please complete it from the steps below
Kubernetes Cluster Prerequisites
Minimum Permissions
You need to have permissions for the following:
Create a new namespace
Create a service accounts in that namespace.
Add/edit node labels
Add/edit ingress and storage classes
Deploy ingress controller in a new namespace
Storage Class
HyperTest relies on dynamic volumes for running it's stateful workloads. This is achieved by Kubernetes storage classes for volume creation/mounting.
You should be able to see your available storage classes by running
If you have not created storage class named "hypertest-storage-class" while setting up your cluster, create it using steps
Note the provisioner from your storage class and we'll create a new storage class using the same provisoner.
Create storage class using the following command
Ingress and Ingress Class
Ingress is used to manage external access to services in your cluster. It exposes HTTP and HTTPS routes from outside the cluster to services within the cluster.
If you have not created ingress class named "hypertest-ingress-class" while setting up your cluster, create it using below steps
Ingress-nginx Controller
If you are using ingress-nginx and have not installed it already, deploy ingress-nginx controller from here
Once deployed, you should have a default ingress class in ingress-nginx namespace
Or else if you are using any other ingress, then use that ingress class for further steps
Note the controller from here and we'll create a new ingress class using the same controller.
Create ingress class using the following command
Node Labels and Taints
Make sure nodes assigned to run hypertest workloads have the following labels and taints
Taints: none
Labels: none
Workload: general purpose pods such as nginx controllers etc
If the nodes in your cluster are not labelled and tainted, please follow below steps to do so
Self Managed Cluster
If you are using self managed cluster, we have used longhorn for storage solutions and hence have dedicated a few nodes just for storage to used by persistent volumes by stateful sets. Hence to achieve this we have labelled and tainted those nodes with below configuration:
Taints: longhorn_storage_node=yes:NoExecute
Labels: node.longhorn.io/create-default-disk=true
Workload: Longhorn Storage Pods and Volumes
If the nodes in your cluster are not labelled and tainted, please follow below steps to do so
Taints make sure other workloads are not scheduled on HyperTest nodes. If nodes are tainted, you'd need at least 1 more node to run other Kubernetes workloads which we have kept as Kubernetes master node.
Learn more about taints here
Deploy HyperTest Controller-Service
Once deployed run the following checks
Setup Wildcard DNS
Get external address from ingress controller
Above command provides external-ip from which dashboard would be accessed.
Copy the external-ip (this guide assumes the address to be my-address.elb.ap-south-1.amazonaws.com)
Create a dns record
Create CNAME for domain
A record for IPv4
AAAA record for IPv6
Point *.hypertest.[your-domain] -> external-ip in your dns provider console (route53, godaddy etc)
eg: CNAME for *.hypertest.test-env.company.co.in -> my-address.elb.ap-south-1.amazonaws.com
Dashboard Access
HyperTest central dashboard should be accessible at http://central.hypertest.[your-domain]
Set and verify base dns from dashboard
Deploy a new hypertest instance from the central dashboard
After new hypertest instance is deployed, you can go to service dashboard and configure instance dashboard for your service
Logger Endpoints
K8s Internal Logger Endpoint: ht-<name of your service>-ht-logger.hypertest-ns.svc.cluster.local:3001
External Logger Enpoint: ht-<name of your service>.logger.<base_dns>
Add Annotations to Ingress
Add annotations to your dashboard and logger ingress resources using configmap
Save and close the file
DASHBOARD_INGRESS_ANNOTATIONS will add annotations to dashboard ingress resources
LOGGER_INGRESS_ANNOTATIONS will add annotations to logger ingress resources
Restart the ht-central-backend-deployment pod to get the latest changes from configmap.
After the pod is again up and running, verify the changes by describing the ingress resources and check for the newly added annotations.
Mirror Traffic to HyperTest
After installing HyperTest, please follow below guide to mirror traffic to HyperTest
Mirror TrafficPlease follow below guide to learn how HyperTest dashboard works
Dashboard TourLast updated