Bluval User Guide
The Blueprint Validation Framework offers a set of tools that can be used to test Akraino deployments on different layers (hardware, os, k8s, openstack, etc).
The framework provides tests at different layers of the stack, like hardware, operating system, cloud infrastructure, security, etc. Since the project is constantly evolving, the full list of available tests can be found in the projects repo, where the tests are located under their respective layer. Each layer has its own container image built by the validation project. The full list of images provided can be found in the project’s DockerHub repo.
Getting Start
You can reference how we did bluval testing for the KubeEdge BP in this meeting:
[Akraino TSC] Akraino TSC Meeting (Weekly) - Zoom
Please take a look at the above video starting around 55 minutes.
As a summary, the main reference is:
Bluval User Guide (akraino.org)
There are 2 security related tests: lynis & vuls. And there are 2 k8s related tests: kube-hunter & conformance tests.
The above page shows how to do all the 4 tests in a single framework, i.e Bluval.
I am not sure if you are required to integrate the bluval testing with your Jenkins CI/CD pipeline. I heard from Tina that it’s optional. If you do want to integrate, please refer to this page:
Again we have talked about how we integrated Bluval with CI/CD for the KubeEdge BP in the meeting, you can watch the video recording link.
Here are the steps on a high level:
- Provision a Jenkins server for CI/CD of your BP
- Provision a jump server, within which to run all the tests.
- I suggest you directly download lynis and vuls to run them manually for your SUT (system under test).
- I also suggest you directly download kube-hunter and sonobuoy to run the tests manually for your k8s cluster, if you have any,
- Follow the procedure on Bluval User Guide (akraino.org)
- Upload all your logs to nexus, an example of our uploaded logs are here:
Index of /sites/logs/futurewei/kubeedgees/86 (akraino.org)
The gz files are CI/CD logs from the Jenkins server. All the bluval tests logs are under the results folder.
A few Kube-Hunter fixes can reference here:
KubeEdge BP Test Documents - Akraino - Akraino Confluence
Also, if you ever want to run Vuls directly, you can follow this:
https://vuls.io/docs/en/tutorial-docker.html
Topology
General Requirements
The Jumpserver can also act as a Jenkins slave and it needs to have docker installed. All the other tools needed to run the tests are available inside the container.
Some of the tests need to install the testing tools directly on the SUT, so the SUT needs to have access to Internet.
Accessing the cluster
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). ubuntu@iec01:~$ kubectl get node |grep master iec01 Ready master 45h v1.13.0 ubuntu@iec01:~$ scp .kube/* 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 i |