diff --git a/krkn/scenario_plugins/service_hijacking/service_hijacking_scenario_plugin.py b/krkn/scenario_plugins/service_hijacking/service_hijacking_scenario_plugin.py index 781d3602..58608ba1 100644 --- a/krkn/scenario_plugins/service_hijacking/service_hijacking_scenario_plugin.py +++ b/krkn/scenario_plugins/service_hijacking/service_hijacking_scenario_plugin.py @@ -5,7 +5,7 @@ import yaml from krkn_lib.models.telemetry import ScenarioTelemetry from krkn_lib.telemetry.ocp import KrknTelemetryOpenshift from krkn.scenario_plugins.abstract_scenario_plugin import AbstractScenarioPlugin - +from krkn_lib.utils import get_yaml_item_value class ServiceHijackingScenarioPlugin(AbstractScenarioPlugin): def run( @@ -25,6 +25,8 @@ class ServiceHijackingScenarioPlugin(AbstractScenarioPlugin): image = scenario_config["image"] target_port = scenario_config["service_target_port"] chaos_duration = scenario_config["chaos_duration"] + privileged = get_yaml_item_value(scenario_config,"privileged", True) + logging.info( f"checking service {service_name} in namespace: {service_namespace}" @@ -46,14 +48,14 @@ class ServiceHijackingScenarioPlugin(AbstractScenarioPlugin): logging.info(f"webservice will listen on port {target_port}") webservice = ( lib_telemetry.get_lib_kubernetes().deploy_service_hijacking( - service_namespace, plan, image, port_number=target_port + service_namespace, plan, image, port_number=target_port, privileged=privileged ) ) else: logging.info(f"traffic will be redirected to named port: {target_port}") webservice = ( lib_telemetry.get_lib_kubernetes().deploy_service_hijacking( - service_namespace, plan, image, port_name=target_port + service_namespace, plan, image, port_name=target_port, privileged=privileged ) ) logging.info( diff --git a/requirements.txt b/requirements.txt index 06e1883a..1220237d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,7 +16,7 @@ google-cloud-compute==1.22.0 ibm_cloud_sdk_core==3.18.0 ibm_vpc==0.20.0 jinja2==3.1.6 -krkn-lib==5.1.1 +krkn-lib==5.1.2 lxml==5.1.0 kubernetes==28.1.0 numpy==1.26.4 diff --git a/scenarios/kube/service_hijacking.yaml b/scenarios/kube/service_hijacking.yaml index 870ecf9d..c8740d9d 100644 --- a/scenarios/kube/service_hijacking.yaml +++ b/scenarios/kube/service_hijacking.yaml @@ -5,6 +5,7 @@ service_name: nginx-service # name of the service to be hijacked service_namespace: default # The namespace where the target service is located image: quay.io/krkn-chaos/krkn-service-hijacking:v0.1.3 # Image of the krkn web service to be deployed to receive traffic. chaos_duration: 30 # Total duration of the chaos scenario in seconds. +privileged: True # True or false if need privileged securityContext to run plan: - resource: "/list/index.php" # Specifies the resource or path to respond to in the scenario. For paths, both the path and query parameters are captured but ignored. # For resources, only query parameters are captured.