Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The containers are ran from a Jumpserver with access to the SUT. Some tests use ssh to connect to the cluster, some use other tools (e.g the k8s conformance test uses the kubeclt client). Before running the test, you need to manually retrieve the files needed to access the cluster. The tools needed by each test suite are specified in this guide. Below are some guidelines on how to retrieve these files.

Tool
kubectl


Copy the folder ~/.kube from your Kubernetes master node to a local folder (e.g. ~/kube).

Code Block
ubuntu@iec01:~$ kubectl get node |grep master
iec01   Ready    master   45h   v1.13.0
ubuntu@iec01:~$ scp .kube/* 
ubuntu@ubuntu
ubuntu@jumpserver:/home/ubuntu/kube


ssh

ssh key file

Copy the ssh key to access your cluster to a local folder (e.g. ~/.ssh). The location of where to get the ssh key varies based

on how the installation was done. In case you are not sure where to get it, contact your cluster administrator.

Using blucon to run the tests

...

  1. Clone the validation repo

    Code Block
    ubuntu@ubuntuubuntu@jumpserver:~$ git clone http://gerrit.akraino.org/r/validation


  2. Customize the blueprint - Optional step

    In case your blueprint yaml file is not already in the validation repo inside the bluval folder, or you want to run a subset of the tests, you can create your own bluval yaml file and mount it later in the container. Below is an example of a demo blueprint that will call just the k8s conformance tests.

    Code Block
    ubuntu@ubuntuubuntu@jumpserver:~$ cat validation/bluval/bluval-demo.yaml 
    blueprint:
        name: demo
        layers:
            - k8s
    
        k8s: &k8s
            -
                name: conformance
                what: conformance
                optional: "False"


  3. Fill in volumes.yaml file

    Fill in the file validation/bluval/volume.yaml with the data that applies to your setup. The volumes that don’t have a local value set will be ignored. In the example below, only the following volumes are set: 

    • Location to the kube config files needed for access to the cluster
    • Location to the customized blueprint file
    • Location to where to store the results
    Code Block
    ubuntu@ubuntuubuntu@jumpserver:~$ cat validation/bluval/volumes.yaml |tail -n +23
    
    volumes:
        # location of the ssh key to access the cluster
        ssh_key_file:
            local: ''
            target: '/root/.ssh'
        # location of the k8s access files (config file, certificates, keys)
        kube_config_dir:
            local: '/home/ubuntu/kube'
            target: '/root/.kube/'
        # location of the customized variables.yaml
        custom_variables_file:
            local: ''
            target: '/opt/akraino/validation/tests/variables.yaml'
        # location of the bluval-<blueprint>.yaml file
        blueprint_dir:
            local: '/home/ubuntu/validation/bluval'
            target: '/opt/akraino/validation/bluval'
        # location on where to store the resulst on the local jumpserver
        results_dir:
            local: '/home/ubuntu/results'
            target: '/opt/akraino/results'
    
    


    Note

    Do not modify the target part of each volume. These paths will be automatically created inside the container when started, and are fixed paths that the tools inside the container expect to exist as is.


    Depending on which tool is used for connecting to the cluster (ssh, kubectl, etc), the corresponding volume needs to be mounted inside the container. To see which are the specific containers for each layer, check the second section in the same volumes.yaml file

    Code Block
    ubuntu@ubuntuubuntu@jumpserver:~$ cat validation/bluval/volumes.yaml |tail -n +45
    
    # parameters that will be passed to the container at each layer
    layers:
        # volumes mounted at all layers; volumes specific for a different layer are below
        common:
            - custom_variables_file
            - blueprint_dir
            - results_dir
        hardware:
            - ssh_key_file
        os:
            - ssh_key_file
        networking:
            - ssh_key_file
        k8s:
            - ssh_key_file
            - kube_config_dir
        k8s_networking:
            - ssh_key_File
            - kube_config_dir
    
    


  4. Run the tests
Code Block
ubuntu@ubuntuubuntu@jumpserver:~$ python3 validation/bluval/blucon.py <blueprint_name> [-l <layer>]

...

The results are stored inside the container in the /opt/akraino/results folder. If a volume was mounted to this folder (e.g. /home/ubuntu/results) then they can be viewed from the host where the test was ran. The results can be viewed with a browser, using the report.html file that the robot framework provides.

Code Block
ubuntu@ubuntuubuntu@jumpserver:~$ ls results/k8s/conformance/
201909110859_sonobuoy_376a4ddc-4498-49fc-af2e-999242c4c245.tar.gz  Conformance.Conformance.log  log.html  output.xml  report.html

...

In case of failures, the sonobuoy archive can be used to inspect all the logs. For live troubleshooting the container for a specific layer can be started with the command below:

Code Block
ubuntu@jumpserver:~$ docker run -ti -v <mount-volume-to-access-the-cluster> akraino/validation:<layer>-latest /bin/sh

...