Note: The plugin should be able to access the kubeconfig of your openshift cluster and the kube-burner binary must be downloaded locally. Install poetry(curl -sSL https://install.python-poetry.org | python3 - ). Poetry requires python version > 3.7, recommended to use >3.9
Clone this repository
Create a venv in the current directory with python3.9 -m venv $(pwd)/venv
Activate the venv by running source venv/bin/activate
Enable sr-iov on the baremetal nodes from the node management console or using badfish.
Install the openshift-sriov-network-operator on the openshift cluster using the cli or the operatorhub GUI.
Identify and label a specific number of nodes with the node-role.kubernetes.io/worker-spk="" label.
check if all labelled worker nodes have the same sr-iov PF(this is done by sshing into each node from the provisoner node to get the PF of a node, command: nic=$(ssh -i /home/kni/.ssh/id_rsa -o StrictHostKeyChecking=no core@{worker-node name} "sudo ovs-vsctl list-ports br-ex | head -1") eg: $nic = ens7f0
Apply the sriov node policy using the $nic obtained from step 4.
wait for sriov nodes to be ready
Native
Note: The plugin should be able to access the kubeconfig of your openshift cluster and the kube-burner binary must be downloaded locally. Rename the kube-burner binary as web-burner or follow step number 7&8 below. Install poetry(curl -sSL https://install.python-poetry.org | python3 - ). Poetry requires python version > 3.7, recommended to use >3.9
Clone this repository
Create a venv in the current directory with python3.9 -m venv $(pwd)/venv
Activate the venv by running source venv/bin/activate
Copy and Paste the openshift cluster's kubeconfig file content into the configs/webburner_input.yaml file
To run a web-burner workload python3.9 ./arcaflow_plugin_kubeburner/kubeburner_plugin.py -f configs/webburner_input.yaml -s run-web-burner --debug
To delete a web-burner workload python3.9 ./arcaflow_plugin_kubeburner/kubeburner_plugin.py -f configs/webburner_input.yaml -s delete-web-burner --debug
Containerized
Clone this repository
cd arcaflow-plugin-kube-burner
Copy and Paste the openshift cluster's kubeconfig file content into the configs/webburner_input.yaml file
Create the container with docker build -t arca-web-burner -f Dockerfile
To run a web-burner workload cat configs/webburner_input.yaml | docker run -i arca-web-burner -s run-web-burner--debug -f -
To delete a web-burner workload cat configs/webburner_input.yaml | docker run -i arca-kube-burner -s delete-web-burner --debug -f -
Image Building
You can change this plugin's image version tag in
.github/workflows/carpenter.yaml by editing the
IMAGE_TAG variable, and pushing that change to the
branch designated in that workflow.
Autogenerated Input/Output Documentation by Arcaflow-Docsgen Below
Web-Burner Workload (delete-web-burner)
Plugin to delete resources created by the web-burner workload
Input
Type:
scope
Root object:
WebBurnerInputParams
Properties
bfd_enabled (string)
Name:
Bidirectional Forwarding Detection
Required:
No
Default (JSON encoded):
"false"
Type:
string
bridge (string)
Name:
The network bridge to use. breth0 for kind.sh ovn-kubernetes clusters
Required:
No
Default (JSON encoded):
"br-ex"
Type:
string
burst (int)
Name:
Maximum burst for throttle
Required:
No
Default (JSON encoded):
20
Type:
int
es_index (string)
Name:
The ElasticSearch index used to index the metrics
Required:
No
Type:
string
es_server (string)
Name:
List of ES instances
Required:
No
Type:
string
indexing (string)
Name:
To enable or disable indexing in elasticsearch(true/false)
Required:
No
Default (JSON encoded):
"false"
Type:
string
kubeconfig (string)
Name:
kubeconfig
Description:
Openshift cluster kubeconfig file content as a string
Required:
Yes
Type:
string
number_of_nodes (int)
Name:
Number of nodes
Description:
Size of cluster/ number of nodes in the cluster
Required:
Yes
Type:
int
qps (int)
Name:
Max number of queries per second
Required:
No
Default (JSON encoded):
20
Type:
int
scale_factor (int)
Name:
Scaling factor for the workload
Required:
No
Default (JSON encoded):
1
Type:
int
sriov (string)
Name:
To enable or disable sriov, disabling it will create macvlan network
attachment definitions instead
Required:
No
Default (JSON encoded):
"true"
Type:
string
uuid (string)
Name:
uuid to be used for the job
Required:
No
Type:
string
workload_template (string)
Name:
Workload Template
Description:
Kube-burner Template to use
Required:
Yes
Type:
string
ObjectsWebBurnerInputParams (object)
Type:
object
Properties
bfd_enabled (string)
Name:
Bidirectional Forwarding Detection
Required:
No
Default (JSON encoded):
"false"
Type:
string
bridge (string)
Name:
The network bridge to use. breth0 for kind.sh ovn-kubernetes clusters
Required:
No
Default (JSON encoded):
"br-ex"
Type:
string
burst (int)
Name:
Maximum burst for throttle
Required:
No
Default (JSON encoded):
20
Type:
int
es_index (string)
Name:
The ElasticSearch index used to index the metrics
Required:
No
Type:
string
es_server (string)
Name:
List of ES instances
Required:
No
Type:
string
indexing (string)
Name:
To enable or disable indexing in elasticsearch(true/false)
Required:
No
Default (JSON encoded):
"false"
Type:
string
kubeconfig (string)
Name:
kubeconfig
Description:
Openshift cluster kubeconfig file content as a string
Required:
Yes
Type:
string
number_of_nodes (int)
Name:
Number of nodes
Description:
Size of cluster/ number of nodes in the cluster
Required:
Yes
Type:
int
qps (int)
Name:
Max number of queries per second
Required:
No
Default (JSON encoded):
20
Type:
int
scale_factor (int)
Name:
Scaling factor for the workload
Required:
No
Default (JSON encoded):
1
Type:
int
sriov (string)
Name:
To enable or disable sriov, disabling it will create macvlan network
attachment definitions instead
Required:
No
Default (JSON encoded):
"true"
Type:
string
uuid (string)
Name:
uuid to be used for the job
Required:
No
Type:
string
workload_template (string)
Name:
Workload Template
Description:
Kube-burner Template to use
Required:
Yes
Type:
string
Outputs
error
Type:
scope
Root object:
ErrorOutput
Properties
error (string)
Name:
Failure Error
Description:
Reason for failure
Required:
Yes
Type:
string
exit_code (int)
Name:
Exit Code
Description:
Exit code returned by the program in case of a failure
Required:
Yes
Type:
int
ObjectsErrorOutput (object)
Type:
object
Properties
error (string)
Name:
Failure Error
Description:
Reason for failure
Required:
Yes
Type:
string
exit_code (int)
Name:
Exit Code
Description:
Exit code returned by the program in case of a failure