removing arca utils (#1053)
Some checks failed
Functional & Unit Tests / Functional & Unit Tests (push) Failing after 9m4s
Functional & Unit Tests / Generate Coverage Badge (push) Has been skipped

Signed-off-by: Paige Patton <prubenda@redhat.com>
This commit is contained in:
Paige Patton
2026-01-15 10:50:17 -05:00
committed by GitHub
parent a13150b0f5
commit 822bebac0c
7 changed files with 0 additions and 673 deletions

View File

@@ -1,304 +0,0 @@
# OpenShift Shenanigans
## Workflow Description
Given a target OpenShift cluster, this workflow executes a
[kube-burner plugin](https://github.com/redhat-performance/arcaflow-plugin-kube-burner)
workflow to place a load on the cluster, repeatedly removes a targeted pod at a given time frequency with the [kill-pod plugin](https://github.com/krkn-chaos/arcaflow-plugin-kill-pod),
and runs a [stress-ng](https://github.com/ColinIanKing/stress-ng) CPU workload on the cluster.
Target your OpenShift cluster with the appropriate `kubeconfig` file, and add its file path as
the value for `kubernetes_target.kubeconfig_path`, in the input file. Any combination of subworkflows can be disabled in the input file by setting either `cpu_hog_enabled`, `pod_chaos_enabled`, or `kubeburner_enabled` to `false`.
## Files
- [`workflow.yaml`](workflow.yaml) -- Defines the workflow input schema, the plugins to run
and their data relationships, and the output to present to the user
- [`input.yaml`](input.yaml) -- The input parameters that the user provides for running
the workflow
- [`config.yaml`](config.yaml) -- Global config parameters that are passed to the Arcaflow
engine
- [`cpu-hog.yaml`](subworkflows/cpu-hog.yaml) -- The StressNG workload on the CPU.
- [`kubeburner.yaml`](subworkflows/kubeburner.yaml) -- The KubeBurner workload for the Kubernetes Cluster API.
- [`pod-chaos.yaml`](subworkflows/pod-chaos.yaml) -- The Kill Pod workflow for the Kubernetes infrastructure pods.
## Running the Workflow
### Workflow Dependencies
Install Python, at least `3.9`.
First, add the path to your Python interpreter to `config.yaml` as the value
for `pythonPath` as shown here. A common choice for users working in
distributions of Linux operating systems is `usr/bin/python`. Second, add a
directory to which your Arcaflow process will have write access as the
value for `workdir`, `/tmp` is a common choice because your process will likely be able to write to it.
```yaml
deployers:
python:
pythonPath: /usr/bin/python
workdir: /tmp
```
To use this Python interpreter with our `kill-pod` plugin, go to the `deploy` section of the `kill_pod` step in [`pod-chaos.yaml`](subworkflows/pod-chaos.yaml). You can use the same `pythonPath` and `workdir` that you used in
your `config.yaml`.
```yaml
deploy:
deployer_name: python
modulePullPolicy: Always
pythonPath: /usr/bin/python
workdir: /tmp
```
Download a Go binary of the latest version of the Arcaflow engine from: https://github.com/arcalot/arcaflow-engine/releases.
#### OpenShift Target
Target your desired OpenShift cluster by setting the `kubeconfig_path` variable for each subworkflow's parameter list in [`input.yaml`](input.yaml).
#### Kube-Burner Plugin
The `kube-burner` plugin generates and reports the UUID to which the
`kube-burner` data is associated in your search database. The `uuidgen`
workflow step uses the `arcaflow-plugin-utilities` `uuid` plugin step to
randomly generate a UUID for you.
### Workflow Execution
Run the workflow:
```
$ export WFPATH=<path to this workflow directory>
$ arcaflow --context ${WFPATH} --input input.yaml --config config.yaml --workflow workflow.yaml
```
## Workflow Diagram
This diagram shows the complete end-to-end workflow logic.
### Main Workflow
```mermaid
%% Mermaid markdown workflow
flowchart LR
%% Success path
input-->steps.cpu_hog_wf.enabling
input-->steps.cpu_hog_wf.execute
input-->steps.kubeburner_wf.enabling
input-->steps.kubeburner_wf.execute
input-->steps.pod_chaos_wf.enabling
input-->steps.pod_chaos_wf.execute
outputs.workflow_success.cpu_hog-->outputs.workflow_success
outputs.workflow_success.cpu_hog.disabled-->outputs.workflow_success.cpu_hog
outputs.workflow_success.cpu_hog.enabled-->outputs.workflow_success.cpu_hog
outputs.workflow_success.kubeburner-->outputs.workflow_success
outputs.workflow_success.kubeburner.disabled-->outputs.workflow_success.kubeburner
outputs.workflow_success.kubeburner.enabled-->outputs.workflow_success.kubeburner
outputs.workflow_success.pod_chaos-->outputs.workflow_success
outputs.workflow_success.pod_chaos.disabled-->outputs.workflow_success.pod_chaos
outputs.workflow_success.pod_chaos.enabled-->outputs.workflow_success.pod_chaos
steps.cpu_hog_wf.closed-->steps.cpu_hog_wf.closed.result
steps.cpu_hog_wf.disabled-->steps.cpu_hog_wf.disabled.output
steps.cpu_hog_wf.disabled.output-->outputs.workflow_success.cpu_hog.disabled
steps.cpu_hog_wf.enabling-->steps.cpu_hog_wf.closed
steps.cpu_hog_wf.enabling-->steps.cpu_hog_wf.disabled
steps.cpu_hog_wf.enabling-->steps.cpu_hog_wf.enabling.resolved
steps.cpu_hog_wf.enabling-->steps.cpu_hog_wf.execute
steps.cpu_hog_wf.execute-->steps.cpu_hog_wf.outputs
steps.cpu_hog_wf.outputs-->steps.cpu_hog_wf.outputs.success
steps.cpu_hog_wf.outputs.success-->outputs.workflow_success.cpu_hog.enabled
steps.kubeburner_wf.closed-->steps.kubeburner_wf.closed.result
steps.kubeburner_wf.disabled-->steps.kubeburner_wf.disabled.output
steps.kubeburner_wf.disabled.output-->outputs.workflow_success.kubeburner.disabled
steps.kubeburner_wf.enabling-->steps.kubeburner_wf.closed
steps.kubeburner_wf.enabling-->steps.kubeburner_wf.disabled
steps.kubeburner_wf.enabling-->steps.kubeburner_wf.enabling.resolved
steps.kubeburner_wf.enabling-->steps.kubeburner_wf.execute
steps.kubeburner_wf.execute-->steps.kubeburner_wf.outputs
steps.kubeburner_wf.outputs-->steps.kubeburner_wf.outputs.success
steps.kubeburner_wf.outputs.success-->outputs.workflow_success.kubeburner.enabled
steps.pod_chaos_wf.closed-->steps.pod_chaos_wf.closed.result
steps.pod_chaos_wf.disabled-->steps.pod_chaos_wf.disabled.output
steps.pod_chaos_wf.disabled.output-->outputs.workflow_success.pod_chaos.disabled
steps.pod_chaos_wf.enabling-->steps.pod_chaos_wf.closed
steps.pod_chaos_wf.enabling-->steps.pod_chaos_wf.disabled
steps.pod_chaos_wf.enabling-->steps.pod_chaos_wf.enabling.resolved
steps.pod_chaos_wf.enabling-->steps.pod_chaos_wf.execute
steps.pod_chaos_wf.execute-->steps.pod_chaos_wf.outputs
steps.pod_chaos_wf.outputs-->steps.pod_chaos_wf.outputs.success
steps.pod_chaos_wf.outputs.success-->outputs.workflow_success.pod_chaos.enabled
%% Error path
steps.cpu_hog_wf.execute-->steps.cpu_hog_wf.failed
steps.cpu_hog_wf.failed-->steps.cpu_hog_wf.failed.error
steps.kubeburner_wf.execute-->steps.kubeburner_wf.failed
steps.kubeburner_wf.failed-->steps.kubeburner_wf.failed.error
steps.pod_chaos_wf.execute-->steps.pod_chaos_wf.failed
steps.pod_chaos_wf.failed-->steps.pod_chaos_wf.failed.error
%% Mermaid end
```
### Pod Chaos Workflow
```mermaid
%% Mermaid markdown workflow
flowchart LR
%% Success path
input-->steps.kill_pod.starting
steps.kill_pod.cancelled-->steps.kill_pod.closed
steps.kill_pod.cancelled-->steps.kill_pod.outputs
steps.kill_pod.closed-->steps.kill_pod.closed.result
steps.kill_pod.deploy-->steps.kill_pod.closed
steps.kill_pod.deploy-->steps.kill_pod.starting
steps.kill_pod.disabled-->steps.kill_pod.disabled.output
steps.kill_pod.enabling-->steps.kill_pod.closed
steps.kill_pod.enabling-->steps.kill_pod.disabled
steps.kill_pod.enabling-->steps.kill_pod.enabling.resolved
steps.kill_pod.enabling-->steps.kill_pod.starting
steps.kill_pod.outputs-->steps.kill_pod.outputs.success
steps.kill_pod.outputs.success-->outputs.success
steps.kill_pod.running-->steps.kill_pod.closed
steps.kill_pod.running-->steps.kill_pod.outputs
steps.kill_pod.starting-->steps.kill_pod.closed
steps.kill_pod.starting-->steps.kill_pod.running
steps.kill_pod.starting-->steps.kill_pod.starting.started
%% Error path
steps.kill_pod.cancelled-->steps.kill_pod.crashed
steps.kill_pod.cancelled-->steps.kill_pod.deploy_failed
steps.kill_pod.crashed-->steps.kill_pod.crashed.error
steps.kill_pod.deploy-->steps.kill_pod.deploy_failed
steps.kill_pod.deploy_failed-->steps.kill_pod.deploy_failed.error
steps.kill_pod.enabling-->steps.kill_pod.crashed
steps.kill_pod.outputs-->steps.kill_pod.outputs.error
steps.kill_pod.running-->steps.kill_pod.crashed
steps.kill_pod.starting-->steps.kill_pod.crashed
%% Mermaid end
```
### StressNG (CPU Hog) Workflow
```mermaid
%% Mermaid markdown workflow
flowchart LR
%% Success path
input-->steps.kubeconfig.starting
input-->steps.stressng.deploy
input-->steps.stressng.starting
steps.kubeconfig.cancelled-->steps.kubeconfig.closed
steps.kubeconfig.cancelled-->steps.kubeconfig.outputs
steps.kubeconfig.closed-->steps.kubeconfig.closed.result
steps.kubeconfig.deploy-->steps.kubeconfig.closed
steps.kubeconfig.deploy-->steps.kubeconfig.starting
steps.kubeconfig.disabled-->steps.kubeconfig.disabled.output
steps.kubeconfig.enabling-->steps.kubeconfig.closed
steps.kubeconfig.enabling-->steps.kubeconfig.disabled
steps.kubeconfig.enabling-->steps.kubeconfig.enabling.resolved
steps.kubeconfig.enabling-->steps.kubeconfig.starting
steps.kubeconfig.outputs-->steps.kubeconfig.outputs.success
steps.kubeconfig.outputs.success-->steps.stressng.deploy
steps.kubeconfig.running-->steps.kubeconfig.closed
steps.kubeconfig.running-->steps.kubeconfig.outputs
steps.kubeconfig.starting-->steps.kubeconfig.closed
steps.kubeconfig.starting-->steps.kubeconfig.running
steps.kubeconfig.starting-->steps.kubeconfig.starting.started
steps.stressng.cancelled-->steps.stressng.closed
steps.stressng.cancelled-->steps.stressng.outputs
steps.stressng.closed-->steps.stressng.closed.result
steps.stressng.deploy-->steps.stressng.closed
steps.stressng.deploy-->steps.stressng.starting
steps.stressng.disabled-->steps.stressng.disabled.output
steps.stressng.enabling-->steps.stressng.closed
steps.stressng.enabling-->steps.stressng.disabled
steps.stressng.enabling-->steps.stressng.enabling.resolved
steps.stressng.enabling-->steps.stressng.starting
steps.stressng.outputs-->steps.stressng.outputs.success
steps.stressng.outputs.success-->outputs.success
steps.stressng.running-->steps.stressng.closed
steps.stressng.running-->steps.stressng.outputs
steps.stressng.starting-->steps.stressng.closed
steps.stressng.starting-->steps.stressng.running
steps.stressng.starting-->steps.stressng.starting.started
%% Error path
steps.kubeconfig.cancelled-->steps.kubeconfig.crashed
steps.kubeconfig.cancelled-->steps.kubeconfig.deploy_failed
steps.kubeconfig.crashed-->steps.kubeconfig.crashed.error
steps.kubeconfig.deploy-->steps.kubeconfig.deploy_failed
steps.kubeconfig.deploy_failed-->steps.kubeconfig.deploy_failed.error
steps.kubeconfig.enabling-->steps.kubeconfig.crashed
steps.kubeconfig.outputs-->steps.kubeconfig.outputs.error
steps.kubeconfig.running-->steps.kubeconfig.crashed
steps.kubeconfig.starting-->steps.kubeconfig.crashed
steps.stressng.cancelled-->steps.stressng.crashed
steps.stressng.cancelled-->steps.stressng.deploy_failed
steps.stressng.crashed-->steps.stressng.crashed.error
steps.stressng.deploy-->steps.stressng.deploy_failed
steps.stressng.deploy_failed-->steps.stressng.deploy_failed.error
steps.stressng.enabling-->steps.stressng.crashed
steps.stressng.outputs-->steps.stressng.outputs.error
steps.stressng.running-->steps.stressng.crashed
steps.stressng.starting-->steps.stressng.crashed
%% Mermaid end
```
### Kube-Burner Workflow
```mermaid
%% Mermaid markdown workflow
flowchart LR
%% Success path
input-->steps.kubeburner.starting
steps.kubeburner.cancelled-->steps.kubeburner.closed
steps.kubeburner.cancelled-->steps.kubeburner.outputs
steps.kubeburner.closed-->steps.kubeburner.closed.result
steps.kubeburner.deploy-->steps.kubeburner.closed
steps.kubeburner.deploy-->steps.kubeburner.starting
steps.kubeburner.disabled-->steps.kubeburner.disabled.output
steps.kubeburner.enabling-->steps.kubeburner.closed
steps.kubeburner.enabling-->steps.kubeburner.disabled
steps.kubeburner.enabling-->steps.kubeburner.enabling.resolved
steps.kubeburner.enabling-->steps.kubeburner.starting
steps.kubeburner.outputs-->steps.kubeburner.outputs.success
steps.kubeburner.outputs.success-->outputs.success
steps.kubeburner.running-->steps.kubeburner.closed
steps.kubeburner.running-->steps.kubeburner.outputs
steps.kubeburner.starting-->steps.kubeburner.closed
steps.kubeburner.starting-->steps.kubeburner.running
steps.kubeburner.starting-->steps.kubeburner.starting.started
steps.uuidgen.cancelled-->steps.uuidgen.closed
steps.uuidgen.cancelled-->steps.uuidgen.outputs
steps.uuidgen.closed-->steps.uuidgen.closed.result
steps.uuidgen.deploy-->steps.uuidgen.closed
steps.uuidgen.deploy-->steps.uuidgen.starting
steps.uuidgen.disabled-->steps.uuidgen.disabled.output
steps.uuidgen.enabling-->steps.uuidgen.closed
steps.uuidgen.enabling-->steps.uuidgen.disabled
steps.uuidgen.enabling-->steps.uuidgen.enabling.resolved
steps.uuidgen.enabling-->steps.uuidgen.starting
steps.uuidgen.outputs-->steps.uuidgen.outputs.success
steps.uuidgen.outputs.success-->steps.kubeburner.starting
steps.uuidgen.running-->steps.uuidgen.closed
steps.uuidgen.running-->steps.uuidgen.outputs
steps.uuidgen.starting-->steps.uuidgen.closed
steps.uuidgen.starting-->steps.uuidgen.running
steps.uuidgen.starting-->steps.uuidgen.starting.started
%% Error path
steps.kubeburner.cancelled-->steps.kubeburner.crashed
steps.kubeburner.cancelled-->steps.kubeburner.deploy_failed
steps.kubeburner.crashed-->steps.kubeburner.crashed.error
steps.kubeburner.deploy-->steps.kubeburner.deploy_failed
steps.kubeburner.deploy_failed-->steps.kubeburner.deploy_failed.error
steps.kubeburner.enabling-->steps.kubeburner.crashed
steps.kubeburner.outputs-->steps.kubeburner.outputs.error
steps.kubeburner.running-->steps.kubeburner.crashed
steps.kubeburner.starting-->steps.kubeburner.crashed
steps.uuidgen.cancelled-->steps.uuidgen.crashed
steps.uuidgen.cancelled-->steps.uuidgen.deploy_failed
steps.uuidgen.crashed-->steps.uuidgen.crashed.error
steps.uuidgen.deploy-->steps.uuidgen.deploy_failed
steps.uuidgen.deploy_failed-->steps.uuidgen.deploy_failed.error
steps.uuidgen.enabling-->steps.uuidgen.crashed
steps.uuidgen.outputs-->steps.uuidgen.outputs.error
steps.uuidgen.running-->steps.uuidgen.crashed
steps.uuidgen.starting-->steps.uuidgen.crashed
%% Mermaid end
```

View File

@@ -1,18 +0,0 @@
---
deployers:
image:
deployer_name: podman
deployment:
imagePullPolicy: IfNotPresent
python:
deployer_name: python
modulePullPolicy: Always
pythonPath: /usr/bin/python
workdir: /tmp
log:
level: debug
logged_outputs:
error:
level: debug
success:
level: debug

View File

@@ -1,41 +0,0 @@
kubernetes_target:
kubeconfig_path:
cpu_hog_enabled: true
pod_chaos_enabled: true
kubeburner_enabled: true
kubeburner_list:
- kubeburner:
kubeconfig: 'given later in workflow by kubeconfig plugin'
workload: 'cluster-density'
qps: 20
burst: 20
log_level: 'info'
timeout: '1m'
iterations: 1
churn: 'true'
churn_duration: 1s
churn_delay: 1s
churn_percent: 10
alerting: 'true'
gc: 'true'
pod_chaos_list:
- namespace_pattern: ^openshift-etcd$
label_selector: k8s-app=etcd
kill: 1
krkn_pod_recovery_time: 1
cpu_hog_list:
- namespace: default
# set the node selector as a key-value pair eg.
# node_selector:
# kubernetes.io/hostname: kind-worker2
node_selector: {}
stressng_params:
timeout: 1
stressors:
- stressor: cpu
workers: 1
cpu-load: 20
cpu-method: all

View File

@@ -1,75 +0,0 @@
version: v0.2.0
input:
root: CpuHog__KubernetesTarget
objects:
CpuHog__KubernetesTarget:
id: CpuHog__KubernetesTarget
properties:
constant:
type:
type_id: ref
id: KubernetesTarget
item:
type:
type_id: ref
id: CpuHog
KubernetesTarget:
id: KubernetesTarget
properties:
kubeconfig_path:
type:
type_id: string
CpuHog:
id: CpuHog
properties:
namespace:
display:
description: The namespace where the container will be deployed
name: Namespace
type:
type_id: string
required: true
node_selector:
display:
description: kubernetes node name where the plugin must be deployed
type:
type_id: map
values:
type_id: string
keys:
type_id: string
required: true
stressng_params:
type:
type_id: ref
id: StressNGParams
namespace: $.steps.stressng.starting.inputs.input
steps:
kubeconfig:
plugin:
src: quay.io/arcalot/arcaflow-plugin-kubeconfig:0.3.1
deployment_type: image
input:
kubeconfig: !expr 'readFile($.input.constant.kubeconfig_path)'
stressng:
plugin:
src: quay.io/arcalot/arcaflow-plugin-stressng:0.8.0
deployment_type: image
step: workload
input: !expr $.input.item.stressng_params
deploy:
deployer_name: kubernetes
connection: !expr $.steps.kubeconfig.outputs.success.connection
pod:
metadata:
namespace: !expr $.input.item.namespace
labels:
arcaflow: stressng
spec:
nodeSelector: !expr $.input.item.node_selector
pluginContainer:
imagePullPolicy: Always
outputs:
success: !expr $.steps.stressng.outputs.success

View File

@@ -1,54 +0,0 @@
version: v0.2.0
input:
root: KubeBurner__KubernetesTarget
objects:
KubeBurner__KubernetesTarget:
id: KubeBurner__KubernetesTarget
properties:
constant:
type:
type_id: ref
id: KubernetesTarget
item:
type:
type_id: ref
id: KubeBurner
KubernetesTarget:
id: KubernetesTarget
properties:
kubeconfig_path:
type:
type_id: string
KubeBurner:
id: KubeBurner
properties:
kubeburner:
type:
type_id: ref
id: KubeBurnerInputParams
namespace: $.steps.kubeburner.starting.inputs.input
steps:
uuidgen:
plugin:
deployment_type: image
src: quay.io/arcalot/arcaflow-plugin-utilities:0.6.0
step: uuid
input: {}
kubeburner:
plugin:
deployment_type: image
src: quay.io/redhat-performance/arcaflow-plugin-kube-burner:latest
step: kube-burner
input:
kubeconfig: !expr 'readFile($.input.constant.kubeconfig_path)'
uuid: !expr $.steps.uuidgen.outputs.success.uuid
workload: !expr $.input.item.kubeburner.workload
iterations: !expr $.input.item.kubeburner.iterations
churn: !expr $.input.item.kubeburner.churn
churn_duration: !expr $.input.item.kubeburner.churn_duration
churn_delay: !expr $.input.item.kubeburner.churn_delay
outputs:
success:
burner: !expr $.steps.kubeburner.outputs.success

View File

@@ -1,108 +0,0 @@
version: v0.2.0
input:
root: KillPodConfig__KubernetesTarget
objects:
KillPodConfig__KubernetesTarget:
id: KillPodConfig__KubernetesTarget
properties:
constant:
type:
type_id: ref
id: KubernetesTarget
item:
type:
type_id: ref
id: KillPodConfig
KubernetesTarget:
id: KubernetesTarget
properties:
kubeconfig_path:
type:
type_id: string
KillPodConfig:
id: KillPodConfig
properties:
backoff:
default: '1'
display:
description: How many seconds to wait between checks for the target
pod status.
name: Backoff
required: false
type:
type_id: integer
kill:
default: '1'
display:
description: How many pods should we attempt to kill?
name: Number of pods to kill
required: false
type:
min: 1
type_id: integer
krkn_pod_recovery_time:
default: '60'
display:
description: The Expected Recovery time fo the pod (used by Krkn to
monitor the pod lifecycle)
name: Recovery Time
required: false
type:
type_id: integer
label_selector:
display:
description: 'Kubernetes label selector for the target pods. Required
if name_pattern is not set.
See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
for details.'
name: Label selector
required: false
required_if_not:
- name_pattern
type:
type_id: string
name_pattern:
display:
description: Regular expression for target pods. Required if label_selector
is not set.
name: Name pattern
required: false
required_if_not:
- label_selector
type:
type_id: pattern
namespace_pattern:
display:
description: Regular expression for target pod namespaces.
name: Namespace pattern
required: true
type:
type_id: pattern
timeout:
default: '180'
display:
description: Timeout to wait for the target pod(s) to be removed in
seconds.
name: Timeout
required: false
type:
type_id: integer
steps:
kill_pod:
step: kill-pods
plugin:
deployment_type: python
src: arcaflow-plugin-kill-pod@git+https://github.com/krkn-chaos/arcaflow-plugin-kill-pod.git@a9f87f88d8e7763d111613bd8b2c7862fc49624f
input:
namespace_pattern: !expr $.input.item.namespace_pattern
label_selector: !expr $.input.item.label_selector
kubeconfig_path: !expr $.input.constant.kubeconfig_path
deploy:
deployer_name: python
modulePullPolicy: Always
pythonPath: /usr/bin/python
workdir: /tmp
outputs:
success: !expr $.steps.kill_pod.outputs.success

View File

@@ -1,73 +0,0 @@
version: v0.2.0
input:
root: RootObject
objects:
KubernetesTarget:
id: KubernetesTarget
properties:
kubeconfig_path:
type:
type_id: string
RootObject:
id: RootObject
properties:
cpu_hog_enabled:
type:
type_id: bool
pod_chaos_enabled:
type:
type_id: bool
kubeburner_enabled:
type:
type_id: bool
kubernetes_target:
type:
type_id: ref
id: KubernetesTarget
kubeburner_list:
type:
type_id: list
items:
type_id: ref
id: KubeBurner
namespace: $.steps.kubeburner_wf.execute.inputs.items
pod_chaos_list:
type:
type_id: list
items:
type_id: ref
id: KillPodConfig
namespace: $.steps.pod_chaos_wf.execute.inputs.items
cpu_hog_list:
type:
type_id: list
items:
type_id: ref
id: CpuHog
namespace: $.steps.cpu_hog_wf.execute.inputs.items
steps:
kubeburner_wf:
kind: foreach
items: !expr 'bindConstants($.input.kubeburner_list, $.input.kubernetes_target)'
workflow: subworkflows/kubeburner.yaml
parallelism: 1
enabled: !expr $.input.kubeburner_enabled
pod_chaos_wf:
kind: foreach
items: !expr 'bindConstants($.input.pod_chaos_list, $.input.kubernetes_target)'
workflow: subworkflows/pod-chaos.yaml
parallelism: 1
enabled: !expr $.input.pod_chaos_enabled
cpu_hog_wf:
kind: foreach
items: !expr 'bindConstants($.input.cpu_hog_list, $.input.kubernetes_target)'
workflow: subworkflows/cpu-hog.yaml
parallelism: 1
enabled: !expr $.input.cpu_hog_enabled
outputs:
workflow_success:
kubeburner: !ordisabled $.steps.kubeburner_wf.outputs.success
pod_chaos: !ordisabled $.steps.pod_chaos_wf.outputs.success
cpu_hog: !ordisabled $.steps.cpu_hog_wf.outputs.success