<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Krkn - Chaos and Resiliency Testing for Kubernetes on Krkn</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/</link><description>Recent content in Krkn - Chaos and Resiliency Testing for Kubernetes on Krkn</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-247--krkn-chaos.netlify.app/index.xml" rel="self" type="application/rss+xml"/><item><title>Installation</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/installation/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/installation/</guid><description>&lt;p>Following ways are supported to run Cerberus:&lt;/p>
&lt;ul>
&lt;li>Standalone python program through Git or python package&lt;/li>
&lt;li>Containerized version using either Podman or Docker as the runtime&lt;/li>
&lt;li>Kubernetes or OpenShift deployment&lt;/li>
&lt;/ul>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 Only OpenShift 4.x versions are tested.

&lt;/div>

&lt;h2 id="git">
 Git
 &lt;a class="td-heading-self-link" href="#git" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Pick the latest stable release to install &lt;a href="https://github.com/redhat-chaos/cerberus/releases/">here&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git clone https://github.com/redhat-chaos/cerberus.git --branch &amp;lt;release&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="install-the-dependencies">
 Install the dependencies
 &lt;a class="td-heading-self-link" href="#install-the-dependencies" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>&lt;strong>NOTE&lt;/strong>: Recommended to use a virtual environment(pyenv,venv) so as to prevent conflicts with already installed packages.&lt;/p></description></item><item><title>Krkn</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn/</guid><description>&lt;h2 id="installation">
 Installation
 &lt;a class="td-heading-self-link" href="#installation" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="clone-the-repository">
 Clone the Repository
 &lt;a class="td-heading-self-link" href="#clone-the-repository" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>To clone and use the latest krkn version follow the directions below. If you&amp;rsquo;re wanting to contribute back to krkn in anyway in the future we recommend &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn/#fork-and-clone-the-repository">forking the repository&lt;/a> first before cloning.&lt;/p>
&lt;p>See the latest release version &lt;a href="https://github.com/krkn-chaos/krkn/releases">here&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git clone https://github.com/krkn-chaos/krkn.git --branch &amp;lt;release version&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">cd&lt;/span> krkn
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="fork-and-clone-the-repository">
 Fork and Clone the Repository
 &lt;a class="td-heading-self-link" href="#fork-and-clone-the-repository" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Fork the repository&lt;/p></description></item><item><title>Krkn-Hub All Scenarios Variables</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/all-scenario-env/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/all-scenario-env/</guid><description>&lt;p>These variables are to be used for the top level configuration template that are shared by all the scenarios in Krkn-hub&lt;/p>
&lt;p>See the description and default values below&lt;/p>
&lt;h4 id="supported-parameters-for-all-scenarios-in-krkn-hub">
 Supported parameters for all scenarios in Krkn-Hub
 &lt;a class="td-heading-self-link" href="#supported-parameters-for-all-scenarios-in-krkn-hub" aria-label="Heading self-link">&lt;/a>
&lt;/h4>
&lt;p>The following environment variables can be set on the host running the container to tweak the scenario/faults being injected:&lt;/p>
&lt;p>example:
&lt;code>export &amp;lt;parameter_name&amp;gt;=&amp;lt;value&amp;gt;&lt;/code>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Parameter&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;th>Default&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>CERBERUS_ENABLED&lt;/td>
 &lt;td>Set this to true if cerberus is running and monitoring the cluster&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>CERBERUS_URL&lt;/td>
 &lt;td>URL to poll for the go/no-go signal&lt;/td>
 &lt;td>http://0.0.0.0:8080&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>WAIT_DURATION&lt;/td>
 &lt;td>Duration in seconds to wait between each chaos scenario&lt;/td>
 &lt;td>60&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>ITERATIONS&lt;/td>
 &lt;td>Number of times to execute the scenarios&lt;/td>
 &lt;td>1&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>DAEMON_MODE&lt;/td>
 &lt;td>Iterations are set to infinity which means that the kraken will cause chaos forever&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>PUBLISH_KRAKEN_STATUS&lt;/td>
 &lt;td>If you want&lt;/td>
 &lt;td>True&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>SIGNAL_ADDRESS&lt;/td>
 &lt;td>Address to print kraken status to&lt;/td>
 &lt;td>0.0.0.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>PORT&lt;/td>
 &lt;td>Port to print kraken status to&lt;/td>
 &lt;td>8081&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>SIGNAL_STATE&lt;/td>
 &lt;td>Waits for the RUN signal when set to PAUSE before running the scenarios, refer &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/signal/">docs&lt;/a> for more details&lt;/td>
 &lt;td>RUN&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>DEPLOY_DASHBOARDS&lt;/td>
 &lt;td>Deploys mutable grafana loaded with dashboards visualizing performance metrics pulled from in-cluster prometheus. The dashboard will be exposed as a route.&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>CAPTURE_METRICS&lt;/td>
 &lt;td>Captures metrics as specified in the profile from in-cluster prometheus. Default metrics captures are listed &lt;a href="https://github.com/krkn-chaos/krkn/blob/master/config/metrics-aggregated.yaml">here&lt;/a>&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>ENABLE_ALERTS&lt;/td>
 &lt;td>Evaluates expressions from in-cluster prometheus and exits 0 or 1 based on the severity set. &lt;a href="https://github.com/krkn-chaos/krkn/blob/master/config/alerts.yaml">Default profile&lt;/a>.&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>ALERTS_PATH&lt;/td>
 &lt;td>Path to the alerts file to use when ENABLE_ALERTS is set&lt;/td>
 &lt;td>config/alerts&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>ELASTIC_SERVER&lt;/td>
 &lt;td>Be able to track telemtry data in elasticsearch, this is the url of the elasticsearch data storage&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>ELASTIC_INDEX&lt;/td>
 &lt;td>Elastic search index pattern to post results to&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>HEALTH_CHECK_URL&lt;/td>
 &lt;td>URL to continually check and detect downtimes&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>HEALTH_CHECK_INTERVAL&lt;/td>
 &lt;td>Interval at which to get&lt;/td>
 &lt;td>2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>HEALTH_CHECK_BEARER_TOKEN&lt;/td>
 &lt;td>Bearer token used for authenticating into health check URL&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>HEALTH_CHECK_AUTH&lt;/td>
 &lt;td>Tuple of (username,password) used for authenticating into health check URL&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>HEALTH_CHECK_EXIT_ON_FAILURE&lt;/td>
 &lt;td>If value is True exits when health check failed for application, values can be True/False&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>HEALTH_CHECK_VERIFY&lt;/td>
 &lt;td>Health check URL SSL validation; can be True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>KUBE_VIRT_CHECK_INTERVAL&lt;/td>
 &lt;td>Interval at which to test kubevirt connections&lt;/td>
 &lt;td>2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>KUBE_VIRT_NAMESPACE&lt;/td>
 &lt;td>Namespace to find VMIs in and watch&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>KUBE_VIRT_NAME&lt;/td>
 &lt;td>Regex style name to match VMIs to watch&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>KUBE_VIRT_FAILURES&lt;/td>
 &lt;td>If value is True exits will only report when ssh connections fail to vmi, values can be True/False&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>KUBE_VIRT_DISCONNECTED&lt;/td>
 &lt;td>Use disconnected check by passing cluster API, can be True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>KUBE_VIRT_NODE_NAME&lt;/td>
 &lt;td>If set, will filter vms further to only track ones that are on specified node name&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>KUBE_VIRT_EXIT_ON_FAIL&lt;/td>
 &lt;td>Fails run if VMs still have false status at end of run, can be True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>KUBE_VIRT_SSH_NODE&lt;/td>
 &lt;td>If set, will be a backup way to ssh to a node. Will want to set to a node that isn&amp;rsquo;t targeted in chaos&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>CHECK_CRITICAL_ALERTS&lt;/td>
 &lt;td>When enabled will check prometheus for critical alerts firing post chaos&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_ENABLED&lt;/td>
 &lt;td>Enable/disables the telemetry collection feature&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_API_URL&lt;/td>
 &lt;td>telemetry service endpoint&lt;/td>
 &lt;td>&lt;a href="https://ulnmf9xv7j.execute-api.us-west-2.amazonaws.com/production">https://ulnmf9xv7j.execute-api.us-west-2.amazonaws.com/production&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_USERNAME&lt;/td>
 &lt;td>telemetry service username&lt;/td>
 &lt;td>redhat-chaos&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_PASSWORD&lt;/td>
 &lt;td>&lt;/td>
 &lt;td>No default&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_PROMETHEUS_BACKUP&lt;/td>
 &lt;td>enables/disables prometheus data collection&lt;/td>
 &lt;td>True&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMTRY_FULL_PROMETHEUS_BACKUP&lt;/td>
 &lt;td>if is set to False only the /prometheus/wal folder will be downloaded&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_BACKUP_THREADS&lt;/td>
 &lt;td>number of telemetry download/upload threads&lt;/td>
 &lt;td>5&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_ARCHIVE_PATH&lt;/td>
 &lt;td>local path where the archive files will be temporarly stored&lt;/td>
 &lt;td>/tmp&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_MAX_RETRIES&lt;/td>
 &lt;td>maximum number of upload retries (if 0 will retry forever)&lt;/td>
 &lt;td>0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_RUN_TAG&lt;/td>
 &lt;td>if set, this will be appended to the run folder in the bucket (useful to group the runs&lt;/td>
 &lt;td>chaos&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_GROUP&lt;/td>
 &lt;td>if set will archive the telemetry in the S3 bucket on a folder named after the value&lt;/td>
 &lt;td>default&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_ARCHIVE_SIZE&lt;/td>
 &lt;td>the size of the prometheus data archive size in KB. The lower the size of archive is&lt;/td>
 &lt;td>1000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_LOGS_BACKUP&lt;/td>
 &lt;td>Logs backup to s3&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_FILTER_PATTER&lt;/td>
 &lt;td>Filter logs based on certain time stamp patterns&lt;/td>
 &lt;td>[&amp;quot;(\w{3}\s\d{1,2}\s\d{2}:\d{2}:\d{2}\.\d+).+&amp;quot;,&amp;ldquo;kinit (\d+/\d+/\d+\s\d{2}:\d{2}:\d{2})\s+&amp;rdquo;,&amp;quot;(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z).+&amp;quot;]&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>TELEMETRY_CLI_PATH&lt;/td>
 &lt;td>OC Cli path, if not specified will be search in $PATH&lt;/td>
 &lt;td>&lt;em>blank&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 For setting the TELEMETRY_ARCHIVE_SIZE,the higher the number of archive files will be produced and uploaded (and processed by backup_thread simultaneously).For unstable/slow connection is better to keep this value low increasing the number of backup_threads, in this way, on upload failure, the retry will happen only on the failed chunk without affecting the whole upload.

&lt;/div></description></item><item><title>Krkn-lib</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/krkn-lib/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/krkn-lib/</guid><description>&lt;p>&lt;img src="https://img.shields.io/pypi/v/krkn-lib?label=PyPi" alt="PyPI">&lt;/p>
&lt;h1 id="krkn-lib">
 krkn-lib
 &lt;a class="td-heading-self-link" href="#krkn-lib" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;h2 id="krkn-chaos-and-resiliency-testing-tool-foundation-library">
 Krkn Chaos and resiliency testing tool Foundation Library
 &lt;a class="td-heading-self-link" href="#krkn-chaos-and-resiliency-testing-tool-foundation-library" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="contents">
 Contents
 &lt;a class="td-heading-self-link" href="#contents" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>The Library contains Classes, Models and helper functions used in &lt;a href="https://github.com/krkn-chaos/krkn">Kraken&lt;/a> to interact with
Kubernetes, Openshift and other external APIS.
The goal of this library is to give to developers the building blocks to realize new Chaos
Scenarios and to increase the testability and the modularity of the Krkn codebase.&lt;/p></description></item><item><title>Krknctl All Scenarios Variables</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/all-scenario-env-krknctl/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/all-scenario-env-krknctl/</guid><description>&lt;p>These variables are to be used for the top level configuration template that are shared by all the scenarios in Krknctl&lt;/p>
&lt;p>See the description and default values below&lt;/p>
&lt;h4 id="supported-parameters-for-all-scenarios-in-krknctl">
 Supported parameters for all scenarios in KrknCtl
 &lt;a class="td-heading-self-link" href="#supported-parameters-for-all-scenarios-in-krknctl" aria-label="Heading self-link">&lt;/a>
&lt;/h4>
&lt;p>The following environment variables can be set on the host running the container to tweak the scenario/faults being injected:&lt;/p>
&lt;p>&lt;strong>Usage example:&lt;/strong>
&lt;code>--&amp;lt;parameter&amp;gt; &amp;lt;value&amp;gt;&lt;/code>&lt;/p>
&lt;style>
.wide-params-table table {
 width: 100%;
 table-layout: fixed;
}
.wide-params-table th,
.wide-params-table td {
 padding: 12px 16px;
 vertical-align: top;
 word-wrap: break-word;
 word-break: break-word;
 overflow-wrap: break-word;
}
.wide-params-table th:nth-child(1),
.wide-params-table td:nth-child(1) {
 width: 18%;
}
.wide-params-table th:nth-child(2),
.wide-params-table td:nth-child(2) {
 width: 28%;
}
.wide-params-table th:nth-child(3),
.wide-params-table td:nth-child(3) {
 width: 10%;
}
.wide-params-table th:nth-child(4),
.wide-params-table td:nth-child(4) {
 width: 14%;
}
.wide-params-table th:nth-child(5),
.wide-params-table td:nth-child(5) {
 width: 30%;
}
&lt;/style>
&lt;div class="wide-params-table">
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Parameter&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;th>Type&lt;/th>
 &lt;th>Possible Values&lt;/th>
 &lt;th>Default&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&amp;ndash;cerberus-enabled&lt;/td>
 &lt;td>Enables Cerberus Support&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;cerberus-url&lt;/td>
 &lt;td>Cerberus http url&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>http://0.0.0.0:8080&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;distribution&lt;/td>
 &lt;td>Selects the orchestrator distribution&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>openshift/kubernetes&lt;/td>
 &lt;td>openshift&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;krkn-kubeconfig&lt;/td>
 &lt;td>Sets the path where krkn will search for kubeconfig in container&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>/home/krkn/.kube/config&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;wait-duration&lt;/td>
 &lt;td>Waits for a certain amount of time after the scenario&lt;/td>
 &lt;td>number&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>1&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;iterations&lt;/td>
 &lt;td>Number of times the same chaos scenario will be executed&lt;/td>
 &lt;td>number&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>1&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;daemon-mode&lt;/td>
 &lt;td>If set the scenario will execute forever&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;uuid&lt;/td>
 &lt;td>Sets krkn run uuid instead of generating it&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;capture-metrics&lt;/td>
 &lt;td>Enables metrics capture&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;enable-alerts&lt;/td>
 &lt;td>Enables cluster alerts check&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;alerts-path&lt;/td>
 &lt;td>Allows to specify a different alert file path&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>config/alerts.yaml&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;metrics-path&lt;/td>
 &lt;td>Allows to specify a different metrics file path&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>config/metrics-aggregated.yaml&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;enable-es&lt;/td>
 &lt;td>Enables elastic search data collection&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;es-server&lt;/td>
 &lt;td>Elasticsearch instance URL&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>http://0.0.0.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;es-port&lt;/td>
 &lt;td>Elasticsearch instance port&lt;/td>
 &lt;td>number&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>443&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;es-username&lt;/td>
 &lt;td>Elasticsearch instance username&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>elastic&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;es-password&lt;/td>
 &lt;td>Elasticsearch instance password&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;es-verify-certs&lt;/td>
 &lt;td>Enables elasticsearch TLS certificate verification&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;es-metrics-index&lt;/td>
 &lt;td>Index name for metrics in Elasticsearch&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>krkn-metrics&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;es-alerts-index&lt;/td>
 &lt;td>Index name for alerts in Elasticsearch&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>krkn-alerts&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;es-telemetry-index&lt;/td>
 &lt;td>Index name for telemetry in Elasticsearch&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>krkn-telemetry&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;check-critical-alerts&lt;/td>
 &lt;td>Enables checking for critical alerts&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-enabled&lt;/td>
 &lt;td>Enables telemetry support&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-api-url&lt;/td>
 &lt;td>API endpoint for telemetry data&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>&lt;a href="https://ulnmf9xv7j.execute-api.us-west-2.amazonaws.com/production">https://ulnmf9xv7j.execute-api.us-west-2.amazonaws.com/production&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-username&lt;/td>
 &lt;td>Username for telemetry authentication&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>redhat-chaos&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-password&lt;/td>
 &lt;td>Password for telemetry authentication&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-prometheus-backup&lt;/td>
 &lt;td>Enables Prometheus backup for telemetry&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>True&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-full-prometheus-backup&lt;/td>
 &lt;td>Enables full Prometheus backup for telemetry&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-backup-threads&lt;/td>
 &lt;td>Number of threads for telemetry backup&lt;/td>
 &lt;td>number&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>5&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-archive-path&lt;/td>
 &lt;td>Path to save telemetry archive&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>/tmp&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-max-retries&lt;/td>
 &lt;td>Maximum retries for telemetry operations&lt;/td>
 &lt;td>number&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-run-tag&lt;/td>
 &lt;td>Tag for telemetry run&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>chaos&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-group&lt;/td>
 &lt;td>Group name for telemetry data&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>default&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-archive-size&lt;/td>
 &lt;td>Maximum size for telemetry archives&lt;/td>
 &lt;td>number&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>1000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-logs-backup&lt;/td>
 &lt;td>Enables logs backup for telemetry&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-filter-pattern&lt;/td>
 &lt;td>Filter pattern for telemetry logs&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>[&amp;quot;\w{3}\s\d{1,2}\s\d{2}:\d{2}:\d{2}\.\d+&amp;quot;, &amp;ldquo;kinit (\d+/\d+/\d+\s\d{2}:\d{2}:\d{2}&amp;rdquo;, &amp;ldquo;\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z&amp;rdquo;]&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-cli-path&lt;/td>
 &lt;td>Path to telemetry CLI tool (oc)&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;telemetry-events-backup&lt;/td>
 &lt;td>Enables events backup for telemetry&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>True&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;health-check-interval&lt;/td>
 &lt;td>How often to check the health check urls (seconds)&lt;/td>
 &lt;td>number&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;health-check-url&lt;/td>
 &lt;td>URL to check the health of&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;health-check-auth&lt;/td>
 &lt;td>Authentication tuple to authenticate into health check URL&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;health-check-bearer-token&lt;/td>
 &lt;td>Bearer token to authenticate into health check URL&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;health-check-exit&lt;/td>
 &lt;td>Exit on failure when health check URL is not able to connect&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;health-check-verify&lt;/td>
 &lt;td>SSL Verification to authenticate into health check URL&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>false&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;kubevirt-check-interval&lt;/td>
 &lt;td>How often to check the KubeVirt VMs SSH status (seconds)&lt;/td>
 &lt;td>number&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;kubevirt-namespace&lt;/td>
 &lt;td>KubeVirt namespace to check the health of&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;kubevirt-name&lt;/td>
 &lt;td>KubeVirt regex names to watch&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;kubevirt-only-failures&lt;/td>
 &lt;td>KubeVirt checks only report if failure occurs&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>false&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;kubevirt-disconnected&lt;/td>
 &lt;td>KubeVirt checks in disconnected mode, bypassing the cluster&amp;rsquo;s API&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>false&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;kubevirt-ssh-node&lt;/td>
 &lt;td>KubeVirt backup node to SSH into when checking VMI IP address status&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>false&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;kubevirt-exit-on-failure&lt;/td>
 &lt;td>KubeVirt fails run if VMs still have false status&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>false&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;kubevirt-node-node&lt;/td>
 &lt;td>Only track VMs in KubeVirt on given node name&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>-&lt;/td>
 &lt;td>false&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&amp;ndash;krkn-debug&lt;/td>
 &lt;td>Enables debug mode for Krkn&lt;/td>
 &lt;td>enum&lt;/td>
 &lt;td>True/False&lt;/td>
 &lt;td>False&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;/div> 


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 For setting the TELEMETRY_ARCHIVE_SIZE,the higher the number of archive files will be produced and uploaded (and processed by backup_thread simultaneously| .For unstable/slow connection is better to keep this value low increasing the number of backup_threads, in this way, on upload failure, the retry will happen only on the failed chunk without affecting the whole upload.

&lt;/div></description></item><item><title>Network Chaos API</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/network-chaos-ng-scenarios/network-chaos-ng-scenario-api/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/network-chaos-ng-scenarios/network-chaos-ng-scenario-api/</guid><description>&lt;h2 id="abstractnetworkchaosmodule-abstract-module-class">
 &lt;code>AbstractNetworkChaosModule&lt;/code> abstract module class
 &lt;a class="td-heading-self-link" href="#abstractnetworkchaosmodule-abstract-module-class" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>All the plugins must implement the &lt;code>AbstractNetworkChaosModule&lt;/code> abstract class in order to be instantiated and ran by the Netwok Chaos NG plugin.
This abstract class implements two main abstract methods:&lt;/p>
&lt;ul>
&lt;li>&lt;code>run(self, target: str, kubecli: KrknTelemetryOpenshift, error_queue: queue.Queue = None)&lt;/code> is the entrypoint for each Network Chaos module.
If the module is configured to be run in parallel &lt;code>error_queue&lt;/code> must not be None
&lt;ul>
&lt;li>&lt;code>target&lt;/code>: param is the name of the resource (Pod, Node etc.) that will be targeted by the scenario&lt;/li>
&lt;li>&lt;code>kubecli&lt;/code>: the &lt;code>KrknTelemetryOpenshift&lt;/code> needed by the scenario to access to the krkn-lib methods&lt;/li>
&lt;li>&lt;code>error_queue&lt;/code>: a queue that will be used by the plugin to push the errors raised during the execution of parallel modules&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;code>get_config(self) -&amp;gt; (NetworkChaosScenarioType, BaseNetworkChaosConfig)&lt;/code> returns the common subset of settings shared by all the scenarios &lt;code>BaseNetworkChaosConfig&lt;/code> and the type of Network Chaos Scenario that is running (Pod Scenario or Node Scenario)&lt;/li>
&lt;/ul>
&lt;h2 id="basenetworkchaosconfig-base-module-configuration">
 &lt;code>BaseNetworkChaosConfig&lt;/code> base module configuration
 &lt;a class="td-heading-self-link" href="#basenetworkchaosconfig-base-module-configuration" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Is the base class that contains the common parameters shared by all the Network Chaos NG modules.&lt;/p></description></item><item><title>Supported Cloud Providers</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/cloud_setup/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/cloud_setup/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/cloud_setup/#aws">AWS&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/cloud_setup/#gcp">GCP&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/cloud_setup/#openstack">Openstack&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/cloud_setup/#azure">Azure&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/cloud_setup/#alibaba">Alibaba&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/cloud_setup/#vmware">VMware&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/cloud_setup/#ibmcloud">IBMCloud&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="aws">
 AWS
 &lt;a class="td-heading-self-link" href="#aws" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>&lt;strong>NOTE&lt;/strong>: For clusters with AWS make sure &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html">AWS CLI&lt;/a> is installed and properly &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html">configured&lt;/a> using an AWS account. This should set a configuration file at &lt;code>$HOME/.aws/config&lt;/code> for your the AWS account. If you have multiple profiles configured on AWS, you can change the profile by setting &lt;code>export AWS_DEFAULT_PROFILE=&amp;lt;profile-name&amp;gt;&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">AWS_DEFAULT_REGION&lt;/span>&lt;span class="o">=&lt;/span>&amp;lt;aws-region&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This configuration will work for self managed AWS, ROSA and Rosa-HCP&lt;/p></description></item><item><title>Adding scenarios via plugin api</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/scenario_plugin_api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/scenario_plugin_api/</guid><description>&lt;h1 id="scenario-plugin-api">
 Scenario Plugin API:
 &lt;a class="td-heading-self-link" href="#scenario-plugin-api" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;p>This API enables seamless integration of Scenario Plugins for Krkn. Plugins are automatically
detected and loaded by the plugin loader, provided they extend the &lt;code>AbstractPluginScenario&lt;/code>
abstract class, implement the required methods, and adhere to the specified &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/scenario_plugin_api/#naming-conventions">naming conventions&lt;/a>.&lt;/p>
&lt;h2 id="plugin-folder">
 Plugin folder:
 &lt;a class="td-heading-self-link" href="#plugin-folder" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>The plugin loader automatically loads plugins found in the &lt;code>krkn/scenario_plugins&lt;/code> directory,
relative to the Krkn root folder. Each plugin must reside in its own directory and can consist
of one or more Python files. The entry point for each plugin is a Python class that extends the
&lt;a href="https://github.com/krkn-chaos/krkn/blob/main/krkn/scenario_plugins/abstract_scenario_plugin.py">AbstractPluginScenario&lt;/a> abstract class and implements its required methods.&lt;/p></description></item><item><title>Evolutionary Algorithm</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/evolutionary_algorithm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/evolutionary_algorithm/</guid><description>&lt;p>Krkn-AI uses an online learning approach by leveraging an evolutionary algorithm, where an agent runs tests on the actual cluster and gathers feedback by measuring various KPIs for your cluster and application. The algorithm begins by creating random population samples that contain Chaos scenarios. These scenarios are executed on the cluster, feedback is collected, and then the best samples (parents) are selected to undergo crossover and mutation operations to generate the next set of samples (offspring). The algorithm relies on heuristics to guide the exploration and exploitation of scenarios.&lt;/p></description></item><item><title>Getting Started</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/getting-started-krkn-ai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/getting-started-krkn-ai/</guid><description>&lt;h2 id="getting-started-with-krkn-ai">
 Getting Started with Krkn-AI
 &lt;a class="td-heading-self-link" href="#getting-started-with-krkn-ai" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>This documentation details how to deploy a sample microservice application on Kubernetes Cluster and run Krkn-AI test.&lt;/p>
&lt;h3 id="prerequisites">
 Prerequisites
 &lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Follow this &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn-ai/">guide&lt;/a> to install Krkn-AI CLI.&lt;/li>
&lt;li>Krkn-AI uses Thanos Querier to fetch SLO metrics by PromQL. You can easily install it by setting up &lt;a href="https://github.com/prometheus-operator/prometheus-operator">prometheus-operator&lt;/a> in your cluster.&lt;/li>
&lt;/ul>
&lt;h3 id="deploy-sample-microservice">
 Deploy Sample Microservice
 &lt;a class="td-heading-self-link" href="#deploy-sample-microservice" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>For demonstration purpose, we will deploy a sample microservice called &lt;a href="https://github.com/instana/robot-shop">robot-shop&lt;/a> on the cluster:&lt;/p></description></item><item><title>Krkn Config Explanations</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/</guid><description>&lt;h1 id="config">
 Config
 &lt;a class="td-heading-self-link" href="#config" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;p>Set the scenarios to inject and the tunings like duration to wait between each scenario in the config file located at &lt;a href="https://github.com/redhat-chaos/krkn/blob/main/config/config.yaml">config/config.yaml&lt;/a>.&lt;/p>
&lt;p>&lt;strong>NOTE&lt;/strong>: &lt;a href="https://github.com/redhat-chaos/krkn/blob/main/config/config_performance.yaml">config&lt;/a> can be used if leveraging the &lt;a href="https://github.com/redhat-chaos/krkn#setting-up-infrastructure-dependencies">automated way&lt;/a> to install the infrastructure pieces.&lt;/p>
&lt;p>Config components:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#kraken">Kraken&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#cerberus">Cerberus&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#performance-monitoring">Performance Monitoring&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#resiliency">Resiliency&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#elastic">ElasticSearch&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#tunings">Tunings&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#telemetry">Telemetry&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#health-checks">Health Checks&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#virt-checks">Virt Checks&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="kraken">
 Kraken
 &lt;a class="td-heading-self-link" href="#kraken" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>This section defines scenarios and specific data to the chaos run&lt;/p>
&lt;h3 id="distribution">
 Distribution
 &lt;a class="td-heading-self-link" href="#distribution" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>The distribution is now automatically set based on some verification points. Depending on which distribution, either &lt;strong>openshift&lt;/strong> or &lt;strong>kubernetes&lt;/strong> other parameters will be automatically set.
The prometheus url/route and bearer token are automatically obtained in case of OpenShift, please be sure to set it when the distribution is Kubernetes.&lt;/p></description></item><item><title>Usage</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krknctl/usage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krknctl/usage/</guid><description>&lt;h2 id="commands">
 Commands:
 &lt;a class="td-heading-self-link" href="#commands" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Commands are grouped by action and may include one or more subcommands to further define the specific action.&lt;/p>
&lt;h3 id="list-subcommand">
 &lt;code>list &amp;lt;subcommand&amp;gt;&lt;/code>:
 &lt;a class="td-heading-self-link" href="#list-subcommand" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;h4 id="available">
 &lt;code>available&lt;/code>:
 &lt;a class="td-heading-self-link" href="#available" aria-label="Heading self-link">&lt;/a>
&lt;/h4>
&lt;p>Builds a list of all the available scenarios in krkn-hub&lt;/p>
&lt;p>&lt;code>% krknctl list available &lt;/code>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Name&lt;/th>
 &lt;th>Size&lt;/th>
 &lt;th>Digest&lt;/th>
 &lt;th>Last Modified&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>network-chaos&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>service-disruption-scenarios&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>node-memory-hog&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>application-outages&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>node-cpu-hog&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>time-scenarios&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>node-scenarios&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>service-hijacking&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>pvc-scenarios&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>chaos-recommender&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>syn-flood&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>container-scenarios&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>pod-network-chaos&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>pod-scenarios&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>node-io-hog&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>power-outages&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>zone-outages&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>dummy-scenario&lt;/td>
 &lt;td>**&lt;/td>
 &lt;td>sha256:**&lt;/td>
 &lt;td>2025-01-01 00:00:00+0000 +0000&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;/li>
&lt;li>
&lt;h4 id="running">
 &lt;code>running&lt;/code>:
 &lt;a class="td-heading-self-link" href="#running" aria-label="Heading self-link">&lt;/a>
&lt;/h4>
&lt;p>Builds a list of all the scenarios currently running in the system. The scenarios are filtered based on the tool&amp;rsquo;s naming conventions.&lt;/p></description></item><item><title>Config</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/</guid><description>&lt;p>Cerberus Config Components Explained&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#config">Sample Config&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#watch-nodes">Watch Nodes&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#watch-cluster-operators">Watch Operators&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#watch-routes">Watch Routes&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#watch-master-schedulable-status">Watch Master Schedulable Status&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#watch-namespaces">Watch Namespaces&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#watch-terminating-namespaces">Watch Terminating Namespaces&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#publish-status">Publish Status&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#inspect-components">Inspect Components&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/config/#custom-checks">Custom Checks&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="config">
 Config
 &lt;a class="td-heading-self-link" href="#config" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Set the components to monitor and the tunings like duration to wait between each check in the config file located at config/config.yaml. A sample config looks like:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">cerberus&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">distribution&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">openshift &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Distribution can be kubernetes or openshift&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">kubeconfig_path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/root/.kube/config &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Path to kubeconfig&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">8081&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># http server port where cerberus status is published&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_nodes&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Set to True for the cerberus to monitor the cluster nodes&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_cluster_operators&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Set to True for cerberus to monitor cluster operators&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_terminating_namespaces&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Set to True to monitor if any namespaces (set below under &amp;#39;watch_namespaces&amp;#39; start terminating&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_url_routes&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Route url&amp;#39;s you want to monitor, this is a double array with the url and optional authorization parameter&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_master_schedulable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled checks for the schedulable master nodes with given label.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enabled&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">label&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">node-role.kubernetes.io/master&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_namespaces&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># List of namespaces to be monitored&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-etcd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-apiserver&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-kube-apiserver&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-monitoring&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-kube-controller-manager&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-machine-api&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-kube-scheduler&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-ingress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-sdn &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled, it will check for the cluster sdn and monitor that namespace&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_namespaces_ignore_pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Ignores pods matching the regex pattern in the namespaces specified under watch_namespaces&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cerberus_publish_status&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled, cerberus starts a light weight http server and publishes the status&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">inspect_components&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable it only when OpenShift client is supported to run&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled, cerberus collects logs, events and metrics of failed components&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">prometheus_url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># The prometheus url/route is automatically obtained in case of OpenShift, please set it when the distribution is Kubernetes.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">prometheus_bearer_token&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># The bearer token is automatically obtained in case of OpenShift, please set it when the distribution is Kubernetes. This is needed to authenticate with prometheus.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># This enables Cerberus to query prometheus and alert on observing high Kube API Server latencies.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">slack_integration&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled, cerberus reports the failed iterations in the slack channel&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The following env vars needs to be set: SLACK_API_TOKEN ( Bot User OAuth Access Token ) and SLACK_CHANNEL ( channel to send notifications in case of failures )&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># When slack_integration is enabled, a watcher can be assigned for each day. The watcher of the day is tagged while reporting failures in the slack channel. Values are slack member ID&amp;#39;s.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watcher_slack_ID: # (NOTE&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Defining the watcher id&amp;#39;s is optional and when the watcher slack id&amp;#39;s are not defined, the slack_team_alias tag is used if it is set else no tag is used while reporting failures in the slack channel.)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Monday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Tuesday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Wednesday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Thursday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Friday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Saturday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Sunday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">slack_team_alias&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># The slack team alias to be tagged while reporting failures in the slack channel when no watcher is assigned&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">custom_checks&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">custom_checks/custom_check_sample.py &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Relative paths of files containing additional user defined checks&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">tunings&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">timeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">20&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Number of seconds before requests fail&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">iterations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Iterations to loop before stopping the watch, it will be replaced with infinity when the daemon mode is enabled&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">sleep_time&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">3&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Sleep duration between each iteration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">kube_api_request_chunk_size&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">250&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Large requests will be broken into the specified chunk size to reduce the load on API server and improve responsiveness.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">daemon_mode&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Iterations are set to infinity which means that the cerberus will monitor the resources forever&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cores_usage_percentage&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0.5&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Set the fraction of cores to be used for multiprocessing&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">database&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">database_path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/tmp/cerberus.db &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Path where cerberus database needs to be stored&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">reuse_database&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled, the database is reused to store the failures&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="watch-nodes">
 Watch Nodes
 &lt;a class="td-heading-self-link" href="#watch-nodes" aria-label="Heading self-link">&lt;/a>
&lt;/h4>
&lt;p>This flag returns any nodes where the KernelDeadlock is not set to False and does not have a &lt;code>Ready&lt;/code> status&lt;/p></description></item><item><title>krkn-hub</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn-hub/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn-hub/</guid><description>&lt;!-- 

&lt;div class="pageinfo pageinfo-primary">
&lt;p>Krkn-hub aka kraken-hub&lt;/p>

&lt;/div>
 -->
&lt;p>Hosts container images and wrapper for running scenarios supported by &lt;a href="https://github.com/krkn-chaos/krkn/">Krkn&lt;/a>, a chaos testing tool for Kubernetes clusters to ensure it is resilient to failures. All we need to do is run the containers with the respective environment variables defined as supported by the scenarios without having to maintain and tweak files!&lt;/p>
&lt;h2 id="set-up">
 Set Up
 &lt;a class="td-heading-self-link" href="#set-up" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>You can use docker or podman to run kraken-hub&lt;/p></description></item><item><title>Node Scenarios on Bare Metal using Krkn-Hub</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/node-scenarios/node-scenarios-bm-krkn-hub/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/node-scenarios/node-scenarios-bm-krkn-hub/</guid><description>&lt;h3 id="node-scenarios-bare-metal">
 Node Scenarios Bare Metal
 &lt;a class="td-heading-self-link" href="#node-scenarios-bare-metal" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>This scenario disrupts the node(s) matching the label on a bare metal Kubernetes/OpenShift cluster. Actions/disruptions supported are listed &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/node-scenarios/">here&lt;/a>&lt;/p>
&lt;h4 id="run">
 Run
 &lt;a class="td-heading-self-link" href="#run" aria-label="Heading self-link">&lt;/a>
&lt;/h4>
&lt;p>Unlike other krkn-hub scenarios, this one requires a specific configuration due to its unique structure.
You must set up the scenario in a local file following the &lt;a href="https://github.com/krkn-chaos/krkn/blob/main/scenarios/openshift/baremetal_node_scenarios.yml">scenario syntax&lt;/a>, and then pass this file&amp;rsquo;s base64-encoded content to the container via the SCENARIO_BASE64 variable.&lt;/p></description></item><item><title>Adding New Scenario to Krkn-hub</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/editing-krkn-hub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/editing-krkn-hub/</guid><description>&lt;h2 id="addingediting-a-new-scenario-to-krkn-hub">
 Adding/Editing a New Scenario to Krkn-hub
 &lt;a class="td-heading-self-link" href="#addingediting-a-new-scenario-to-krkn-hub" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Create folder with scenario name under &lt;a href="https://github.com/krkn-chaos/krkn-hub/tree/main">krkn-hub&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Create generic scenario template with environment variables&lt;/p>
&lt;p>a. See &lt;a href="https://github.com/krkn-chaos/krkn-hub/blob/main/application-outages/app_outages.yaml.template">scenario.yaml&lt;/a> for example&lt;/p>
&lt;p>b. Almost all parameters should be set using a variable (these will be set in the env.sh file or through the command line environment variables)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Add defaults for any environment variables in an &amp;ldquo;env.sh&amp;rdquo; file&lt;/p>
&lt;p>a. See &lt;a href="https://github.com/krkn-chaos/krkn-hub/blob/main/application-outages/env.sh">env.sh&lt;/a> for example&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Create script to run.sh chaos scenario
a. See &lt;a href="https://github.com/krkn-chaos/krkn-hub/blob/main/application-outages/run.sh">run.sh&lt;/a> for example&lt;/p></description></item><item><title>Cluster Discovery</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/discover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/discover/</guid><description>&lt;p>Krkn-AI uses a genetic algorithm to generate Chaos scenarios. These scenarios require information about the components available in the cluster, which is obtained from the &lt;code>cluster_components&lt;/code> YAML field of the Krkn-AI configuration.&lt;/p>
&lt;h3 id="cli-usage">
 CLI Usage
 &lt;a class="td-heading-self-link" href="#cli-usage" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ uv run krkn_ai discover --help
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Usage: krkn_ai discover &lt;span class="o">[&lt;/span>OPTIONS&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Discover components &lt;span class="k">for&lt;/span> Krkn-AI tests
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Options:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -k, --kubeconfig TEXT Path to cluster kubeconfig file.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -o, --output TEXT Path to save config file.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -n, --namespace TEXT Namespace&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span> to discover components in. Supports
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Regex and comma separated values.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -pl, --pod-label TEXT Pod Label Keys&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span> to filter. Supports Regex and
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> comma separated values.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -nl, --node-label TEXT Node Label Keys&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span> to filter. Supports Regex and
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> comma separated values.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -v, --verbose Increase verbosity of output.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --skip-pod-name TEXT Pod name to skip. Supports comma separated values
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> with regex.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --help Show this message and exit.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="example">
 Example
 &lt;a class="td-heading-self-link" href="#example" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>The example below filters cluster components from namespaces that match the patterns &lt;code>robot-.*&lt;/code> and &lt;code>etcd&lt;/code>. In addition to namespaces, we also provide filters for pod labels and node labels. This allows us to narrow down the necessary components to consider when running a Krkn-AI test.&lt;/p></description></item><item><title>Fitness Function</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/fitness_function/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/fitness_function/</guid><description>&lt;p>The &lt;strong>fitness function&lt;/strong> is a crucial element in the Krkn-AI algorithm. It evaluates each Chaos experiment and generates a score. These scores are then used during the selection phase of the algorithm to identify the best candidate solutions in each generation.&lt;/p>
&lt;ul>
&lt;li>The fitness function can be defined as an SLO or as cluster metrics using a Prometheus query.&lt;/li>
&lt;li>Fitness scores are calculated for the time range during which the Chaos scenario is executed.&lt;/li>
&lt;/ul>
&lt;h2 id="example">
 Example
 &lt;a class="td-heading-self-link" href="#example" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Let&amp;rsquo;s look at a simple fitness function that calculates the total number of restarts in a namespace:&lt;/p></description></item><item><title>Health Checks</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/health-checks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/health-checks/</guid><description>&lt;h3 id="health-checks">
 Health Checks
 &lt;a class="td-heading-self-link" href="#health-checks" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Health checks provide real-time visibility into the impact of chaos scenarios on application availability and performance. They run continuously in the background throughout the chaos run, detecting outages, measuring downtime duration, and recording results in telemetry.&lt;/p>
&lt;p>Krkn supports multiple health check types through a plugin-based architecture:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>http_health_check&lt;/code>&lt;/strong> — monitors HTTP/HTTPS endpoints (documented on this page)&lt;/li>
&lt;li>&lt;strong>&lt;code>virt_health_check&lt;/code>&lt;/strong> — monitors KubeVirt VMI SSH connectivity (see &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/virt-checks/">Kube Virt Checks&lt;/a>)&lt;/li>
&lt;li>&lt;strong>Custom plugins&lt;/strong> — extend the system with your own health check logic (see &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/health-check-plugins/">Health Check Plugins&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>Health checks are configured in the &lt;code>config.yaml&lt;/code> under the &lt;code>health_checks&lt;/code> key.&lt;/p></description></item><item><title>Krkn RBAC</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/rbac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/rbac/</guid><description>&lt;h1 id="rbac-configurations">
 RBAC Configurations
 &lt;a class="td-heading-self-link" href="#rbac-configurations" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;p>Krkn supports two types of RBAC configurations:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Ns-Privileged RBAC&lt;/strong>: Provides namespace-scoped permissions for scenarios that only require access to resources within a specific namespace.&lt;/li>
&lt;li>&lt;strong>Privileged RBAC&lt;/strong>: Provides cluster-wide permissions for scenarios that require access to cluster-level resources like nodes.&lt;/li>
&lt;/ol>








 
 
 


&lt;div class="alert alert-info" role="alert"> &lt;div class="alert-header">
 &lt;i class="fas fa-circle-info text-info">&lt;/i> &lt;span class="alert-title">INFO&lt;/span>
 &lt;/div>
 &lt;div class="alert-content">
 The examples below use placeholders such as &lt;code>target-namespace&lt;/code> and &lt;code>krkn-namespace&lt;/code> which should be replaced with your actual namespaces. The service account name &lt;code>krkn-sa&lt;/code> is also a placeholder that you can customize.
 &lt;/div>
&lt;/div>
&lt;h2 id="rbac-yaml-files">
 RBAC YAML Files
 &lt;a class="td-heading-self-link" href="#rbac-yaml-files" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="ns-privileged-role">
 Ns-Privileged Role
 &lt;a class="td-heading-self-link" href="#ns-privileged-role" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>The ns-privileged role provides permissions limited to namespace-scoped resources:&lt;/p></description></item><item><title>Krkn Roadmap</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/krkn-roadmap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/krkn-roadmap/</guid><description>&lt;h2 id="krkn-roadmap">
 Krkn Roadmap
 &lt;a class="td-heading-self-link" href="#krkn-roadmap" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Following are a list of enhancements that we are planning to work on adding support in Krkn. Of course any help/contributions are greatly appreciated.&lt;/p>
&lt;ul>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/issues/424">Ability to run multiple chaos scenarios in parallel under load to mimic real world outages&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/issues/423">Centralized storage for chaos experiments artifacts&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/issues/394">Support for causing DNS outages&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/tree/main/utils/chaos-recommender">Chaos recommender&lt;/a> to suggest scenarios having probability of impacting the service under test using profiling results&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Chaos AI integration to improve test coverage while reducing fault space to save costs and execution time &lt;a href="https://github.com/krkn-chaos/krkn-chaos-ai">krkn-chaos-ai&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/issues/393">Support for pod level network traffic shaping&lt;/a>&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/issues/124">Ability to visualize the metrics that are being captured by Kraken and stored in Elasticsearch&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Support for running all the scenarios of Kraken on Kubernetes distribution - see &lt;a href="https://github.com/krkn-chaos/krkn/issues/185">https://github.com/krkn-chaos/krkn/issues/185&lt;/a>, &lt;a href="https://github.com/redhat-chaos/krkn/issues/186">https://github.com/redhat-chaos/krkn/issues/186&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Continue to improve &lt;a href="https://krkn-chaos.github.io/krkn">Chaos Testing Guide&lt;/a> in terms of adding best practices, test environment recommendations and scenarios to make sure the OpenShift platform, as well the applications running on top it, are resilient and performant under chaotic conditions.&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/issues/495">Switch documentation references to Kubernetes&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/issues/497">OCP and Kubernetes functionalities segregation&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krknctl">Krknctl - client for running Krkn scenarios with ease&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn-lightspeed">AI Chat bot to help get started with Krkn and commands&lt;/a>&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/issues/804">Ability to roll back cluster to original state if chaos fails&lt;/a>&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Add recovery time metrics to each scenario for better regression analysis&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> &lt;a href="https://github.com/krkn-chaos/krkn/issues/125">Add resiliency scoring to chaos scenarios ran on cluster&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>krknctl</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krknctl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krknctl/</guid><description>&lt;h2 id="install-krknctl-recommended">
 Install krknctl (Recommended)
 &lt;a class="td-heading-self-link" href="#install-krknctl-recommended" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Use the official install script as the primary installation method:&lt;/p>
&lt;p>Install using the official script&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -fsSL https://raw.githubusercontent.com/krkn-chaos/krknctl/refs/heads/main/install.sh &lt;span class="p">|&lt;/span> bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Verify installation:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">krknctl --version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="alternative-installation-methods">
 Alternative installation methods
 &lt;a class="td-heading-self-link" href="#alternative-installation-methods" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="binary-distribution">
 Binary distribution
 &lt;a class="td-heading-self-link" href="#binary-distribution" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>The krknctl binary is available for download from &lt;a href="https://github.com/krkn-chaos/krknctl/releases/latest">GitHub releases&lt;/a> for supported operating systems and architectures. Extract the tarball and add the binary to your &lt;code>$PATH&lt;/code>.&lt;/p>
&lt;h3 id="build-from-source">
 Build from source
 &lt;a class="td-heading-self-link" href="#build-from-source" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;h4 id="fork-and-clone-the-repository">
 Fork and clone the repository
 &lt;a class="td-heading-self-link" href="#fork-and-clone-the-repository" aria-label="Heading self-link">&lt;/a>
&lt;/h4>
&lt;p>Fork the repository:&lt;/p></description></item><item><title>Kube Virt Checks</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/virt-checks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/virt-checks/</guid><description>&lt;h3 id="kube-virt-checks">
 Kube Virt Checks
 &lt;a class="td-heading-self-link" href="#kube-virt-checks" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Virt checks provide real-time visibility into the impact of chaos scenarios on VMI ssh connectivity and performance.
Virt checks are configured in the &lt;code>config.yaml&lt;/code> &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/#virt-checks">here&lt;/a>&lt;/p>
&lt;p>The system periodically checks the VMI&amp;rsquo;s in the provided namespace based on the defined interval and records the results in Telemetry. The checks will run continuously from the very beginning of krkn until all scenarios are done and wait durations are complete. The telemetry data includes:&lt;/p></description></item><item><title>Resiliency Scoring</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/resiliency-score/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/resiliency-score/</guid><description>&lt;div class="alert alert-warning" role="alert"> &lt;div class="alert-header">
 &lt;i class="fas fa-triangle-exclamation text-warning">&lt;/i> &lt;span class="alert-title">WARNING&lt;/span>
 &lt;/div>
 &lt;div class="alert-content">
 &lt;p>&lt;strong>Beta Feature:&lt;/strong> Resiliency Scoring is currently in Beta. The API, configuration format, and scoring behavior may change in future releases.&lt;/p>
&lt;p>If you encounter any issues or unexpected behavior, please open a bug report at &lt;a href="https://github.com/krkn-chaos/krkn/issues">github.com/krkn-chaos/krkn/issues&lt;/a>. Include your configuration, krkn version, and any relevant logs or output.&lt;/p>

 &lt;/div>
&lt;/div>
&lt;h3 id="introduction">
 Introduction
 &lt;a class="td-heading-self-link" href="#introduction" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>&lt;strong>What is the Resiliency Score?&lt;/strong>
The Resiliency Score is a percentage (0-100%) that represents the health and stability of your Kubernetes cluster during a chaos scenario. It is calculated by evaluating a set of Service Level Objectives (SLOs) against live Prometheus data.&lt;/p></description></item><item><title>Running a Chaos Scenario with Krkn</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/getting-started/getting-started-krkn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/getting-started/getting-started-krkn/</guid><description>&lt;h2 id="getting-started-running-chaos-scenarios">
 Getting Started Running Chaos Scenarios
 &lt;a class="td-heading-self-link" href="#getting-started-running-chaos-scenarios" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h2 id="config">
 Config
 &lt;a class="td-heading-self-link" href="#config" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Instructions on how to setup the config and all the available options supported can be found at &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/config/">Config&lt;/a>.&lt;/p>
&lt;p>In all the examples below you&amp;rsquo;ll replace the &lt;code>scenario_type&lt;/code> with the scenario plugin type that can be found in the &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/">second column here&lt;/a>&lt;/p>
&lt;h3 id="running-a-single-scenario">
 Running a Single Scenario
 &lt;a class="td-heading-self-link" href="#running-a-single-scenario" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>To run a single scenario, you&amp;rsquo;ll edit the krkn config file and only have 1 item in the list of chaos_scenarios&lt;/p></description></item><item><title>Setting Up Disconnected Enviornment</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/disconnected-env/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/disconnected-env/</guid><description>&lt;h2 id="getting-started-running-chaos-scenarios-in-a-disconnected-enviornment">
 Getting Started Running Chaos Scenarios in a Disconnected Enviornment
 &lt;a class="td-heading-self-link" href="#getting-started-running-chaos-scenarios-in-a-disconnected-enviornment" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="mirror-following-images-on-the-bastion-host">
 Mirror following images on the bastion host
 &lt;a class="td-heading-self-link" href="#mirror-following-images-on-the-bastion-host" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:node-scenarios-bm&lt;/strong> - Master/worker node disruptions on baremetal&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:network-chaos&lt;/strong> - Network disruptions/traffic shaping&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:pod-scenarios&lt;/strong> - Pod level disruptions and evaluating recovery time/availability&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:syn-flood&lt;/strong> - Generates substantial amount of traffic/half open connections targeting a service&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:node-cpu-hog&lt;/strong> - Hogs CPU on the target nodes&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:node-io-hog&lt;/strong> - Hogs IO on the target nodes&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:node-memory-hog&lt;/strong> - Hogs memory on the target nodes&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:pvc-scenarios&lt;/strong> - Fills up a given PersistentVolumeClaim&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:service-hijacking&lt;/strong> - Simulates fake HTTP response for a service&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:power-outages&lt;/strong> - Shuts down the cluster and turns it back on&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:container-scenarios&lt;/strong> - Kills a container via provided kill signal&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:application-outages&lt;/strong> - Isolates application Ingress/Egress traffic&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:time-scenarios&lt;/strong> - Tweaks time/date on the nodes&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:pod-network-chaos&lt;/strong> - Introduces network chaos at pod level&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:node-network-filter&lt;/strong> - Node ip traffic filtering&lt;/li>
&lt;li>&lt;strong>quay.io/krkn-chaos/krkn-hub:pod-network-filter&lt;/strong> - DNS, internal/external service outages&lt;/li>
&lt;/ul>
&lt;h3 id="will-also-need-these-mirrored-images-inside-the-cluster">
 Will also need these mirrored images inside the cluster
 &lt;a class="td-heading-self-link" href="#will-also-need-these-mirrored-images-inside-the-cluster" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Network disruptions - &lt;strong>quay.io/krkn-chaos/krkn:tools&lt;/strong>&lt;/li>
&lt;li>Hog scenarios ( CPU, Memory and IO ) - &lt;strong>quay.io/krkn-chaos/krkn-hog&lt;/strong>&lt;/li>
&lt;li>SYN flood - &lt;strong>quay.io/krkn-chaos/krkn-syn-flood:latest&lt;/strong>&lt;/li>
&lt;li>Pod network filter scenarios - &lt;strong>quay.io/krkn-chaos/krkn-network-chaos:latest&lt;/strong>&lt;/li>
&lt;li>Service hijacking scenarios - &lt;strong>quay.io/krkn-chaos/krkn-service-hijacking:v0.1.3&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h2 id="how-to-mirror">
 How to Mirror
 &lt;a class="td-heading-self-link" href="#how-to-mirror" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>The strategy is simple:&lt;/p></description></item><item><title>Signaling to Krkn</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/signal/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/signal/</guid><description>&lt;p>This functionality allows a user to be able to pause or stop the Krkn run at any time no matter the number of iterations or daemon_mode set in the config.&lt;/p>
&lt;p>If publish_kraken_status is set to True in the config, Krkn will start up a connection to a url at a certain port to decide if it should continue running.&lt;/p>
&lt;p>By default, it will get posted to http://0.0.0.0:8081/&lt;/p>
&lt;p>An example use case for this feature would be coordinating Krkn runs based on the status of the service installation or load on the cluster.&lt;/p></description></item><item><title>SLO Validation</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/slos_validation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/slos_validation/</guid><description>&lt;h2 id="slos-validation">
 SLOs validation
 &lt;a class="td-heading-self-link" href="#slos-validation" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Krkn has a few different options that give a Pass/fail based on metrics captured from the cluster is important in addition to checking the health status and recovery. Krkn supports:&lt;/p>
&lt;h3 id="checking-for-critical-alerts-post-chaos">
 Checking for critical alerts post chaos
 &lt;a class="td-heading-self-link" href="#checking-for-critical-alerts-post-chaos" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>If enabled, the check runs at the end of each scenario ( post chaos ) and Krkn exits in case &lt;code>critical&lt;/code> alerts are firing to allow user to debug. You can enable it in the config:&lt;/p></description></item><item><title>Stopping Criteria</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/stopping_criteria/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/stopping_criteria/</guid><description>&lt;p>The stopping criteria framework lets users define when the genetic algorithm should terminate, allowing for more flexible control beyond strictly generation count or time limits. By configuring these parameters, you can ensure the algorithm stops once it achieves a target fitness or if it reaches a state of saturation where no further improvements or discoveries are being made.&lt;/p>
&lt;h3 id="configurations">
 Configurations
 &lt;a class="td-heading-self-link" href="#configurations" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>You can configure the following options under the &lt;code>stopping_criteria&lt;/code> section of the Krkn-AI config file. All fields are optional and, with the exception of &lt;code>saturation_threshold&lt;/code>, default to disabled (&lt;code>null&lt;/code>).&lt;/p></description></item><item><title>Telemetry</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/telemetry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/telemetry/</guid><description>&lt;h3 id="telemetry-details">
 Telemetry Details
 &lt;a class="td-heading-self-link" href="#telemetry-details" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>We wanted to gather some more insights regarding our Krkn runs that could have been post processed (eg. by a ML model) to have a better understanding about the behavior of the clusters hit by krkn, so we decided to include this as an opt-in feature that, based on the platform (Kubernetes/OCP), is able to gather different type of data and metadata in the time frame of each chaos run.
The telemetry service is currently able to gather several scenario and cluster metadata:
A json named telemetry.json containing:&lt;/p></description></item><item><title>What is krkn-hub?</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn-hub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn-hub/</guid><description>&lt;p>Hosts container images and wrapper for running scenarios supported by Krkn, a chaos testing tool for Kubernetes clusters to ensure it is resilient to failures. All we need to do is run the containers with the respective environment variables defined as supported by the scenarios without having to maintain and tweak files!&lt;/p>
&lt;h2 id="getting-started">
 Getting Started
 &lt;a class="td-heading-self-link" href="#getting-started" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Checkout how to clone the repo and get started using &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/getting-started/#krkn-hub">this documentation page&lt;/a>&lt;/p></description></item><item><title>Example Report</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/example_report/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/example_report/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:06,393 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Starting cerberus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:06,401 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Initializing client to talk to the Kubernetes cluster
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:06,434 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Fetching cluster info
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:06,739 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Publishing cerberus status at http://0.0.0.0:8080
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:06,753 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Starting http server at http://0.0.0.0:8080
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:06,753 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Daemon mode enabled, cerberus will monitor forever
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:06,753 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Ignoring the iterations &lt;span class="nb">set&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:25,104 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: Node status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:25,133 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: Etcd member pods status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:25,161 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: OpenShift apiserver status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:25,546 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: Kube ApiServer status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:25,717 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: Monitoring stack status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:25,720 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: Kube controller status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:25,746 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: Machine API components status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:25,945 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: Kube scheduler status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:25,963 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: OpenShift ingress status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:26,077 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 4: OpenShift SDN status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:26,077 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> HTTP requests served: &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:26,077 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Sleeping &lt;span class="k">for&lt;/span> the specified duration: &lt;span class="m">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:31,134 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: Node status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:31,162 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: Etcd member pods status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:31,190 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: OpenShift apiserver status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">127.0.0.1 - - &lt;span class="o">[&lt;/span>26/Mar/2020 22:05:31&lt;span class="o">]&lt;/span> &lt;span class="s2">&amp;#34;GET / HTTP/1.1&amp;#34;&lt;/span> &lt;span class="m">200&lt;/span> -
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:31,588 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: Kube ApiServer status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:31,759 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: Monitoring stack status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:31,763 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: Kube controller status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:31,788 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: Machine API components status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:31,989 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: Kube scheduler status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:32,007 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: OpenShift ingress status: True
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:32,118 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Iteration 5: OpenShift SDN status: False
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:32,118 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> HTTP requests served: &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:32,118 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Sleeping &lt;span class="k">for&lt;/span> the specified duration: &lt;span class="m">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+--------------------------------------------------Failed Components--------------------------------------------------+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-03-26 22:05:37,123 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Failed openshift sdn components: &lt;span class="o">[&lt;/span>&lt;span class="s1">&amp;#39;sdn-xmqhd&amp;#39;&lt;/span>&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-05-23 23:26:43,041 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> ------------------------- Iteration Stats ---------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-05-23 23:26:43,041 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Time taken to run watch_nodes in iteration 1: 0.0996248722076416 seconds
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-05-23 23:26:43,041 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Time taken to run watch_cluster_operators in iteration 1: 0.3672499656677246 seconds
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-05-23 23:26:43,041 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Time taken to run watch_namespaces in iteration 1: 1.085144281387329 seconds
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-05-23 23:26:43,041 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> Time taken to run entire_iteration in iteration 1: 4.107403039932251 seconds
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2020-05-23 23:26:43,041 &lt;span class="o">[&lt;/span>INFO&lt;span class="o">]&lt;/span> ---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>ManagedCluster Scenarios</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/managed-cluster-scenario/managed-cluster-scenario/</link><pubDate>Wed, 04 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/managed-cluster-scenario/managed-cluster-scenario/</guid><description>&lt;p>&lt;a href="https://open-cluster-management.io/concepts/managedcluster/">ManagedCluster&lt;/a> scenarios provide a way to integrate kraken with &lt;a href="https://open-cluster-management.io/">Open Cluster Management (OCM)&lt;/a> and &lt;a href="https://www.redhat.com/en/technologies/management/advanced-cluster-management">Red Hat Advanced Cluster Management for Kubernetes (ACM)&lt;/a>.&lt;/p>
&lt;p>ManagedCluster scenarios leverage &lt;a href="https://open-cluster-management.io/concepts/manifestwork/">ManifestWorks&lt;/a> to inject faults into the ManagedClusters.&lt;/p>
&lt;p>The following ManagedCluster chaos scenarios are supported:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>managedcluster_start_scenario&lt;/strong>: Scenario to start the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>managedcluster_stop_scenario&lt;/strong>: Scenario to stop the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>managedcluster_stop_start_scenario&lt;/strong>: Scenario to stop and then start the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>start_klusterlet_scenario&lt;/strong>: Scenario to start the klusterlet of the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>stop_klusterlet_scenario&lt;/strong>: Scenario to stop the klusterlet of the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>stop_start_klusterlet_scenario&lt;/strong>: Scenario to stop and start the klusterlet of the ManagedCluster instance.&lt;/li>
&lt;/ol>
&lt;p>ManagedCluster scenarios can be injected by placing the ManagedCluster scenarios config files under &lt;code>managedcluster_scenarios&lt;/code> option in the Kraken config. Refer to &lt;a href="https://github.com/redhat-chaos/krkn/blob/main/scenarios/kube/managedcluster_scenarios_example.yml">managedcluster_scenarios_example&lt;/a> config file.&lt;/p></description></item><item><title>Adding New Scenario to Krknctl</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/krknctl-edits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/krknctl-edits/</guid><description>&lt;h1 id="adding-a-new-scenario-to-krknctl">
 Adding a New Scenario to Krknctl
 &lt;a class="td-heading-self-link" href="#adding-a-new-scenario-to-krknctl" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;p>For krknctl to find the parameters of the scenario it uses a krknctl input json file. Once this file is added to krkn-hub, krknctl will be able to find it along with the details of how to run the scenario.&lt;/p>
&lt;h2 id="add-krknctl-input-json">
 Add KrknCtl Input Json
 &lt;a class="td-heading-self-link" href="#add-krknctl-input-json" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>This file adds every environment variable that is set up for krkn-hub to be defined as a flag to the krknctl cli command. There are a number of different type of variables that you can use, each with their own required fields. See below for an example of the different variable types&lt;/p></description></item><item><title>Application Health Checks</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/health_check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/health_check/</guid><description>&lt;p>When defining the Chaos Config, you can provide details about your application endpoints. Krkn-AI can access these endpoints during the Chaos experiment to evaluate how the application&amp;rsquo;s uptime is impacted.&lt;/p>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 Application endpoints must be accessible from the system where Krkn-AI is running in order to reach the service.

&lt;/div>

&lt;h3 id="configuration">
 Configuration
 &lt;a class="td-heading-self-link" href="#configuration" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>The following configuration options are available when defining an application for health checks:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>name&lt;/strong>: Name of the service.&lt;/li>
&lt;li>&lt;strong>url&lt;/strong>: Service endpoint; supports parameterization with &amp;ldquo;$&lt;KEY>&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>status_code&lt;/strong>: Expected status code returned when accessing the service.&lt;/li>
&lt;li>&lt;strong>timeout&lt;/strong>: Timeout period after which the request is canceled.&lt;/li>
&lt;li>&lt;strong>interval&lt;/strong>: How often to check the endpoint.&lt;/li>
&lt;li>&lt;strong>stop_watcher_on_failure&lt;/strong>: This setting allows you to stop the health check watcher for an endpoint after it encounters a failure.&lt;/li>
&lt;/ul>
&lt;h4 id="example">
 Example
 &lt;a class="td-heading-self-link" href="#example" aria-label="Heading self-link">&lt;/a>
&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">health_checks&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">stop_watcher_on_failure&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">applications&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">cart&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$HOST/cart/add/1/Watson/1&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">status_code&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">200&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">timeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">interval&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">catalogue&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$HOST/catalogue/categories&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">shipping&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$HOST/shipping/codes&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">payment&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$HOST/payment/health&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">user&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$HOST/user/uniqueid&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ratings&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$HOST/ratings/api/fetch/Watson&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="url-parameterization">
 URL Parameterization
 &lt;a class="td-heading-self-link" href="#url-parameterization" aria-label="Heading self-link">&lt;/a>
&lt;/h4>
&lt;p>When defining Krkn-AI config files, the URL entry for an application may vary depending on the cluster. To make the URL configuration more manageable, you can specify the values for these parameters at runtime using the &lt;code>--param&lt;/code> flag.&lt;/p></description></item><item><title>Git Help For Contributions</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/contribution-guidelines/git-pointers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/contribution-guidelines/git-pointers/</guid><description>&lt;h1 id="how-to-contribute">
 How to contribute
 &lt;a class="td-heading-self-link" href="#how-to-contribute" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;p>Contributions are always appreciated.&lt;/p>
&lt;p>How to:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/contribution-guidelines/git-pointers/#pull-request">Submit Pull Request&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/contribution-guidelines/git-pointers/#squash-commits">Squash Commits&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/contribution-guidelines/git-pointers/#rebase-with-upstream">Rebase with Upstream&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/contribution-guidelines/git-pointers/#developers-certificate-of-origin">Certificate of Origin&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="pull-request">
 Pull request
 &lt;a class="td-heading-self-link" href="#pull-request" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>In order to submit a change or a PR, please fork the project and follow instructions:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git clone http://github.com/&amp;lt;me&amp;gt;/krkn-hub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">cd&lt;/span> krkn-hub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git checkout -b &amp;lt;branch_name&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &amp;lt;make change&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git add &amp;lt;changes&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git commit -a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &amp;lt;insert good message&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git push
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="squash-commits">
 Squash Commits
 &lt;a class="td-heading-self-link" href="#squash-commits" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>If there are multiple commits, please rebase/squash multiple commits
before creating the PR by following:&lt;/p></description></item><item><title>Run Krkn-AI</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/run/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/run/</guid><description>&lt;p>The &lt;code>run&lt;/code> command executes automated resilience and chaos testing using Krkn-AI. It initializes a random population samples containing Chaos Experiments based on your Krkn-AI configuration file, then starts the &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/evolutionary_algorithm/">evolutionary algorithm&lt;/a> to run the experiments, gather feedback, and continue evolving existing scenarios until stopping criteria is met.&lt;/p>
&lt;h3 id="cli-usage">
 CLI Usage
 &lt;a class="td-heading-self-link" href="#cli-usage" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ uv run krkn_ai run --help
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Usage: krkn_ai run &lt;span class="o">[&lt;/span>OPTIONS&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Run Krkn-AI tests
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Options:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -c, --config TEXT Path to Krkn-AI config file.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -o, --output TEXT Directory to save results.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -f, --format &lt;span class="o">[&lt;/span>json&lt;span class="p">|&lt;/span>yaml&lt;span class="o">]&lt;/span> Format of the output file. &lt;span class="o">[&lt;/span>default: yaml&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -r, --runner-type &lt;span class="o">[&lt;/span>krknctl&lt;span class="p">|&lt;/span>krknhub&lt;span class="o">]&lt;/span> Type of chaos engine to use.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -p, --param TEXT Additional parameters &lt;span class="k">for&lt;/span> config file in &lt;span class="nv">key&lt;/span>&lt;span class="o">=&lt;/span>value format.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -v, --verbose Increase verbosity of output. &lt;span class="o">[&lt;/span>default: 0&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --help Show this message and exit.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="example">
 Example
 &lt;a class="td-heading-self-link" href="#example" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>The following command runs Krkn-AI with verbose output (&lt;code>-vv&lt;/code>), specifies the configuration file (&lt;code>-c&lt;/code>), sets the output directory for results (&lt;code>-o&lt;/code>), and passes an additional parameter (&lt;code>-p&lt;/code>) to override the HOST variable in the config file:&lt;/p></description></item><item><title>Usage</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/usage/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/usage/</guid><description>&lt;h3 id="config">
 Config
 &lt;a class="td-heading-self-link" href="#config" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Set the supported components to monitor and the tunings like number of iterations to monitor and duration to wait between each check in the config file located at config/config.yaml. A sample config looks like:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">cerberus&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">distribution&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">openshift &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Distribution can be kubernetes or openshift&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">kubeconfig_path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">~/.kube/config &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Path to kubeconfig&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">8080&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># http server port where cerberus status is published&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_nodes&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Set to True for the cerberus to monitor the cluster nodes&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_cluster_operators&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Set to True for cerberus to monitor cluster operators. Parameter is optional, will set to True if not specified&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_url_routes&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Route url&amp;#39;s you want to monitor&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- - &lt;span class="l">https://...&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">Bearer **** &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># This parameter is optional, specify authorization need for get call to route&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- - &lt;span class="l">http://...&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_master_schedulable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled checks for the schedulable&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enabled&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">master nodes with given label.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">label&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">node-role.kubernetes.io/master&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch_namespaces&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># List of namespaces to be monitored&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-etcd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-apiserver&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-kube-apiserver&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-monitoring&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-kube-controller-manager&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-machine-api&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-kube-scheduler&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-ingress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">openshift-sdn&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cerberus_publish_status&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled, cerberus starts a light weight http server and publishes the status&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">inspect_components&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable it only when OpenShift client is supported to run.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled, cerberus collects logs, events and metrics of failed components&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">prometheus_url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># The prometheus url/route is automatically obtained in case of OpenShift, please set it when the distribution is Kubernetes.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">prometheus_bearer_token&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># The bearer token is automatically obtained in case of OpenShift, please set it when the distribution is Kubernetes. This is needed to authenticate with prometheus.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># This enables Cerberus to query prometheus and alert on observing high Kube API Server latencies.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">slack_integration&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled, cerberus reports status of failed iterations in the slack channel&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The following env vars need to be set: SLACK_API_TOKEN ( Bot User OAuth Access Token ) and SLACK_CHANNEL ( channel to send notifications in case of failures )&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># When slack_integration is enabled, a watcher can be assigned for each day. The watcher of the day is tagged while reporting failures in the slack channel. Values are slack member ID&amp;#39;s.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watcher_slack_ID: # (NOTE&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Defining the watcher id&amp;#39;s is optional and when the watcher slack id&amp;#39;s are not defined, the slack_team_alias tag is used if it is set else no tag is used while reporting failures in the slack channel.)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Monday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Tuesday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Wednesday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Thursday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Friday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Saturday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">Sunday&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">slack_team_alias&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># The slack team alias to be tagged while reporting failures in the slack channel when no watcher is assigned&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">custom_checks&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Relative paths of files containing additional user defined checks&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">custom_checks/custom_check_sample.py&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>&lt;span class="l">custom_check.py&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">tunings&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">iterations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">5&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Iterations to loop before stopping the watch, it will be replaced with infinity when the daemon mode is enabled&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">sleep_time&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">60&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Sleep duration between each iteration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">kube_api_request_chunk_size&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">250&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Large requests will be broken into the specified chunk size to reduce the load on API server and improve responsiveness.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">daemon_mode&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Iterations are set to infinity which means that the cerberus will monitor the resources forever&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cores_usage_percentage&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0.5&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Set the fraction of cores to be used for multiprocessing&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">database&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">database_path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/tmp/cerberus.db &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Path where cerberus database needs to be stored&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">reuse_database&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># When enabled, the database is reused to store the failures&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>

&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 watch_namespaces support regex patterns. Any valid regex pattern can be used to watch all the namespaces matching the regex pattern. For example, &lt;code>^openshift-.*$&lt;/code> can be used to watch all namespaces that start with &lt;code>openshift-&lt;/code> or &lt;code>openshift&lt;/code> can be used to watch all namespaces that have &lt;code>openshift&lt;/code> in it.

&lt;/div>



&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 The current implementation can monitor only one cluster from one host. It can be used to monitor multiple clusters provided multiple instances of Cerberus are launched on different hosts.

&lt;/div>



&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 The components especially the namespaces needs to be changed depending on the distribution i.e Kubernetes or OpenShift. The default specified in the config assumes that the distribution is OpenShift. A config file for Kubernetes is located at config/kubernetes_config.yaml

&lt;/div></description></item><item><title>Adding to Krkn Test Suite</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/add-tests-krkn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/add-tests-krkn/</guid><description>&lt;p>This guide covers how to add both unit tests and functional tests to the krkn project. Tests are essential for ensuring code quality and preventing regressions.&lt;/p>
&lt;h1 id="unit-tests">
 Unit Tests
 &lt;a class="td-heading-self-link" href="#unit-tests" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;p>Unit tests in krkn are located in the &lt;code>tests/&lt;/code> directory and use Python&amp;rsquo;s &lt;code>unittest&lt;/code> framework with comprehensive mocking to avoid requiring external dependencies like cloud providers or Kubernetes clusters.&lt;/p>
&lt;h2 id="creating-a-unit-test">
 Creating a Unit Test
 &lt;a class="td-heading-self-link" href="#creating-a-unit-test" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="1-file-location-and-naming">
 1. File Location and Naming
 &lt;a class="td-heading-self-link" href="#1-file-location-and-naming" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Place your test file in the &lt;code>tests/&lt;/code> directory with the naming pattern &lt;code>test_&amp;lt;feature&amp;gt;.py&lt;/code>:&lt;/p></description></item><item><title>Krkn-AI</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn-ai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn-ai/</guid><description>&lt;h2 id="installation">
 Installation
 &lt;a class="td-heading-self-link" href="#installation" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="prerequisites">
 Prerequisites
 &lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Python 3.11+&lt;/li>
&lt;li>Podman or Docker Container Runtime&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krknctl/">krknctl&lt;/a>&lt;/li>
&lt;li>&lt;code>uv&lt;/code> package manager (recommended) or &lt;code>pip&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="clone-the-repository">
 Clone the Repository
 &lt;a class="td-heading-self-link" href="#clone-the-repository" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>To clone and use the latest krkn version follow the directions below. If you&amp;rsquo;re wanting to contribute back to Krkn-AI in anyway in the future we recommend &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn-ai/#fork-and-clone-the-repository">forking the repository&lt;/a> first before cloning.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git clone https://github.com/krkn-chaos/krkn-ai.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">cd&lt;/span> krkn-ai
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="fork-and-clone-the-repository">
 Fork and Clone the Repository
 &lt;a class="td-heading-self-link" href="#fork-and-clone-the-repository" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Fork the repository&lt;/p></description></item><item><title>Run Krkn-AI (Container)</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/container/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/container/</guid><description>&lt;p>Krkn-AI can be run inside containers, which simplifies integration with continuous testing workflows.&lt;/p>
&lt;h2 id="container-image">
 Container Image
 &lt;a class="td-heading-self-link" href="#container-image" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>A pre-built container image is available on Quay.io:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">podman pull quay.io/krkn-chaos/krkn-ai:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="running-the-container">
 Running the Container
 &lt;a class="td-heading-self-link" href="#running-the-container" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>The container supports two modes controlled by the &lt;code>MODE&lt;/code> environment variable:&lt;/p>
&lt;h3 id="1-discovery-mode">
 1. Discovery Mode
 &lt;a class="td-heading-self-link" href="#1-discovery-mode" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Discovers cluster components and generates a configuration file.&lt;/p>
&lt;p>&lt;strong>Usage:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># create a folder&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir -p ./tmp/container/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># copy kubeconfig to ./tmp/container&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># execute discover command&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">podman run --rm &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --net&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;host&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -v ./tmp/container:/mount:Z &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">MODE&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;discover&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">KUBECONFIG&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;/mount/kubeconfig.yaml&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">OUTPUT_DIR&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;/mount&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">NAMESPACE&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;robot-shop&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">POD_LABEL&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;service&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">NODE_LABEL&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;kubernetes.io/hostname&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">SKIP_POD_NAME&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;nginx-proxy.*&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">VERBOSE&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;2&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> quay.io/krkn-chaos/krkn-ai:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Environment Variables (Discovery):&lt;/strong>&lt;/p></description></item><item><title>Scenarios</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/scenarios/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/scenarios/</guid><description>&lt;p>The following Krkn scenarios are currently supported by Kkrn-AI.&lt;/p>
&lt;blockquote>
&lt;p>At least one scenario must be enabled for the Kkrn-AI experiment to run.&lt;/p>&lt;/blockquote>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;strong>Scenario&lt;/strong>&lt;/th>
 &lt;th>&lt;strong>Kkrn-AI Config (YAML)&lt;/strong>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/pod-scenario/">Pod Scenario&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.pod-scenarios&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/application-outage/">Application Outages&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.application-outages&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/container-scenario/">Container Scenario&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.container-scenarios&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/hog-scenarios/cpu-hog-scenario/">Node CPU Hog&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.node-cpu-hog&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/hog-scenarios/memory-hog-scenario/">Node Memory Hog&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.node-memory-hog&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/hog-scenarios/io-hog-scenario/">Node IO Hog&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.node-io-hog&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/syn-flood-scenario/">Syn Flood&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.syn-flood&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/time-scenarios/">Time Scenario&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.time-scenarios&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/network-chaos-scenario/">Network Scenarios&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.network-scenarios&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/dns-outage/">DNS Outage&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.dns-outage&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/scenarios/pvc-scenario/">PVC Scenario&lt;/a>&lt;/td>
 &lt;td>&lt;em>scenario.pvc-scenarios&lt;/em>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>By default, scenarios are not enabled. Depending on your use case, you can enable or disable these scenarios in the &lt;code>krkn-ai.yaml&lt;/code> config file by setting the &lt;code>enable&lt;/code> field to &lt;code>true&lt;/code> or &lt;code>false&lt;/code>.&lt;/p></description></item><item><title>Testing your changes</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/testing-changes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/testing-changes/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/testing-changes/#configure-kind-testing-environment">Configure Kind environment&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/testing-changes/#testing-changes-in-krkn-lib">Testing Changes in Krkn-lib&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/testing-changes/#testing-changes-in-krkn">Testing Changes in Krkn&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/testing-changes/#testing-changes-for-krkn-hub">Testing Changes in Krkn-hub&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/testing-changes/#testing-changes-in-krknctl">Testing Changes in Krknctl&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This page gives details about how you can get a kind cluster configured to be able to run on krkn-lib (the lowest level of krkn-chaos repos) up through krknctl (our easiest way to run and highest level repo)&lt;/p>
&lt;h2 id="configure-kind-testing-environment">
 Configure Kind Testing Environment
 &lt;a class="td-heading-self-link" href="#configure-kind-testing-environment" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>&lt;a href="https://kind.sigs.k8s.io/docs/user/quick-start/#installation">Install kind&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Create cluster using &lt;a href="https://github.com/krkn-chaos/krkn-lib/blob/main/kind-config.yml">kind-config.yml&lt;/a> under &lt;em>krkn-lib&lt;/em> base folder&lt;/p></description></item><item><title>Health Check Plugins</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/health-check-plugins/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/developers-guide/health-check-plugins/</guid><description>&lt;h1 id="health-check-plugins">
 Health Check Plugins
 &lt;a class="td-heading-self-link" href="#health-check-plugins" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;p>Health check plugins allow Krkn to continuously monitor the health of your services and infrastructure &lt;strong>during&lt;/strong> chaos experiments. They run in background threads alongside the chaos scenario, detecting outages, tracking downtime duration, and collecting telemetry data.&lt;/p>
&lt;h2 id="overview">
 Overview
 &lt;a class="td-heading-self-link" href="#overview" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>The health check system uses a plugin architecture:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>HealthCheckFactory&lt;/code>&lt;/strong> — automatically discovers and loads all plugins from the &lt;code>krkn.health_checks&lt;/code> package&lt;/li>
&lt;li>&lt;strong>&lt;code>AbstractHealthCheckPlugin&lt;/code>&lt;/strong> — base class all plugins must extend&lt;/li>
&lt;li>Plugins run in separate threads and write telemetry to a shared queue&lt;/li>
&lt;li>The factory tracks all active plugin instances and provides lifecycle management (&lt;code>increment_all_iterations&lt;/code>, &lt;code>stop_all&lt;/code>)&lt;/li>
&lt;/ul>
&lt;h3 id="exit-codes">
 Exit Codes
 &lt;a class="td-heading-self-link" href="#exit-codes" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Code&lt;/th>
 &lt;th>Meaning&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>0&lt;/code>&lt;/td>
 &lt;td>Success — all health checks passed&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>2&lt;/code>&lt;/td>
 &lt;td>Critical alert detected during the run&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>3&lt;/code>&lt;/td>
 &lt;td>Health check failure (e.g. &lt;code>exit_on_failure: true&lt;/code> triggered)&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="built-in-plugins">
 Built-in Plugins
 &lt;a class="td-heading-self-link" href="#built-in-plugins" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="http-health-check-health_checks">
 &lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn/health-checks/">HTTP Health Check&lt;/a> (&lt;code>health_checks&lt;/code>)
 &lt;a class="td-heading-self-link" href="#http-health-check-health_checks" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Monitors HTTP endpoints by making periodic GET requests. Tracks status changes, measures downtime duration, and records telemetry for each state transition.&lt;/p></description></item><item><title>Alerts</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/alerts/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/alerts/</guid><description>&lt;p>Cerberus consumes the metrics from Prometheus deployed on the cluster to report the alerts.&lt;/p>
&lt;p>When provided the prometheus url and bearer token in the config, Cerberus reports the following alerts:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>KubeAPILatencyHigh: alerts at the end of each iteration and warns if 99th percentile latency for given requests to the kube-apiserver is above 1 second. It is the official SLI/SLO defined for Kubernetes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>High number of etcd leader changes: alerts the user when an increase in etcd leader changes are observed on the cluster. Frequent elections may be a sign of insufficient resources, high network latency, or disruptions by other components and should be investigated.&lt;/p></description></item><item><title>Krkn Dashboard</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn-dashboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/installation/krkn-dashboard/</guid><description>&lt;p>The Krkn Dashboard is a web UI for running and observing Krkn chaos scenarios. You can run it &lt;strong>locally&lt;/strong> (Node.js on your machine) or &lt;strong>containerized&lt;/strong> (Podman/Docker).&lt;/p>
&lt;hr>
&lt;h2 id="prerequisites-both-methods">
 Prerequisites (both methods)
 &lt;a class="td-heading-self-link" href="#prerequisites-both-methods" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Kubernetes cluster&lt;/strong> — You need a cluster and a kubeconfig so that the dashboard can target it for chaos runs. If you don&amp;rsquo;t have one, see &lt;a href="https://kubernetes.io/docs/setup/">Kubernetes&lt;/a>, &lt;a href="https://minikube.sigs.k8s.io/docs/start/">minikube&lt;/a>, &lt;a href="https://rancher.com/docs/k3s/latest/en/quick-start/">K3s&lt;/a>, or &lt;a href="https://docs.openshift.com/container-platform/latest/welcome/index.html">OpenShift&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Podman or Docker&lt;/strong> — The dashboard starts chaos runs by launching krkn-hub containers; the host must have Podman (or Docker) installed and available.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="local-installation">
 Local installation
 &lt;a class="td-heading-self-link" href="#local-installation" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Run the dashboard on your machine with Node.js.&lt;/p></description></item><item><title>Output</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/output/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/output/</guid><description>&lt;p>Krkn-AI generates various output files during the execution of chaos experiments, including scenario YAML files, graph visualizations, and log files. By default, these files follow a standard naming convention, but you can customize the file names using format strings in the configuration file.&lt;/p>
&lt;h2 id="available-parameters">
 Available Parameters
 &lt;a class="td-heading-self-link" href="#available-parameters" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>The &lt;code>output&lt;/code> section in your &lt;code>krkn-ai.yaml&lt;/code> configuration file allows you to customize the naming format for different output file types:&lt;/p>
&lt;h3 id="result_name_fmt">
 &lt;code>result_name_fmt&lt;/code>
 &lt;a class="td-heading-self-link" href="#result_name_fmt" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Specifies the naming format for scenario result YAML files. These files contain the complete scenario configuration and execution results for each generated scenario.&lt;/p></description></item><item><title>Elastic Search</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/elastic_search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/config/elastic_search/</guid><description>&lt;p>Krkn-AI supports integration with Elasticsearch to store scenario configurations, run results, and metrics. This allows you to centralize and query experiment data using Elasticsearch&amp;rsquo;s search and visualization capabilities (e.g., with Kibana).&lt;/p>
&lt;h3 id="configuration-parameters">
 Configuration Parameters
 &lt;a class="td-heading-self-link" href="#configuration-parameters" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>&lt;code>enable&lt;/code> (bool): Set to &lt;code>true&lt;/code> to enable saving results to Elasticsearch. Default: &lt;code>false&lt;/code>.&lt;/li>
&lt;li>&lt;code>server&lt;/code> (string): URL or address of your Elasticsearch server (e.g., &lt;code>http://localhost&lt;/code>).&lt;/li>
&lt;li>&lt;code>port&lt;/code> (int): Port to connect to Elasticsearch (default: &lt;code>9200&lt;/code>).&lt;/li>
&lt;li>&lt;code>username&lt;/code> (string): Username for Elasticsearch authentication (can reference environment variables).&lt;/li>
&lt;li>&lt;code>password&lt;/code> (string): Password for Elasticsearch authentication. If using environment substitution, prefix with &lt;code>__&lt;/code> to treat as private.&lt;/li>
&lt;li>&lt;code>verify_certs&lt;/code> (bool): Set to &lt;code>true&lt;/code> to verify SSL certificates. Default: &lt;code>true&lt;/code>.&lt;/li>
&lt;li>&lt;code>index&lt;/code> (string): Name prefix for the Elasticsearch index where Krkn-AI results will be stored (e.g., &lt;code>krkn-ai&lt;/code>).&lt;/li>
&lt;/ul>
&lt;h3 id="example-configuration">
 Example Configuration
 &lt;a class="td-heading-self-link" href="#example-configuration" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">elastic&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable Elasticsearch integration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">server&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;http://localhost&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Elasticsearch server URL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">9200&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Elasticsearch port&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">username&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$ES_USER&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Username (environment substitution supported)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">password&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$__ES_PASSWORD&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Password (start with __ for sensitive/private handling)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">verify_certs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Verify SSL certificates&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">index&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;krkn-ai&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Index prefix for storing results&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In addition to the standard Krkn telemetry and metrics indices, Krkn-AI creates two dedicated Elasticsearch indices to store detailed run information:&lt;/p></description></item><item><title>Performance Dashboards</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/performance_dashboards/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/performance_dashboards/</guid><description>&lt;h2 id="performance-dashboards">
 Performance dashboards
 &lt;a class="td-heading-self-link" href="#performance-dashboards" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Krkn-chaos repository collection gives you a way to install a grafana on the cluster with dashboards loaded to help with monitoring the cluster for things like resource usage to find the outliers, API stats, Etcd health, Critical alerts etc. As well as specific metrics related to your krkn runs if elasticsearch is enabled.&lt;/p>
&lt;p>&lt;a href="https://github.com/krkn-chaos/visualize">https://github.com/krkn-chaos/visualize&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone https://github.com/krkn-chaos/visualize
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> krkn-visualize
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./deploy.sh 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">OR 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./deploy.sh -c oc &lt;span class="c1"># openshift installation&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The dashboards can be edited/modified to include your queries of interest by logging in as the admin user. New dasbhoards can be imported using the import script and following directions defined &lt;a href="https://github.com/krkn-chaos/visualize?tab=readme-ov-file#adding-a-new-dashboard">here&lt;/a>&lt;/p></description></item><item><title>Node Problem Detector</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/node-problem-detector/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/node-problem-detector/</guid><description>&lt;p>&lt;a href="https://github.com/kubernetes/node-problem-detector">node-problem-detector&lt;/a> aims to make various node problems visible to the upstream layers in cluster management stack.&lt;/p>
&lt;h3 id="installation">
 Installation
 &lt;a class="td-heading-self-link" href="#installation" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Please follow the instructions in the &lt;a href="https://github.com/kubernetes/node-problem-detector#installation">installation&lt;/a> section to setup Node Problem Detector on Kubernetes. The following instructions are setting it up on OpenShift:&lt;/p>
&lt;ol>
&lt;li>Create &lt;code>openshift-node-problem-detector&lt;/code> namespace &lt;a href="https://github.com/openshift/node-problem-detector-operator/blob/master/deploy/ns.yaml">ns.yaml&lt;/a> with &lt;code>oc create -f ns.yaml&lt;/code>&lt;/li>
&lt;li>Add cluster role with &lt;code>oc adm policy add-cluster-role-to-user system:node-problem-detector -z default -n openshift-node-problem-detector&lt;/code>&lt;/li>
&lt;li>Add security context constraints with &lt;code>oc adm policy add-scc-to-user privileged system:serviceaccount:openshift-node-problem-detector:default &lt;/code>&lt;/li>
&lt;li>Edit &lt;a href="https://github.com/kubernetes/node-problem-detector/blob/master/deployment/node-problem-detector.yaml">node-problem-detector.yaml&lt;/a> to fit your environment.&lt;/li>
&lt;li>Edit &lt;a href="https://github.com/kubernetes/node-problem-detector/blob/master/deployment/node-problem-detector-config.yaml">node-problem-detector-config.yaml&lt;/a> to configure node-problem-detector.&lt;/li>
&lt;li>Create the ConfigMap with &lt;code>oc create -f node-problem-detector-config.yaml&lt;/code>&lt;/li>
&lt;li>Create the DaemonSet with &lt;code>oc create -f node-problem-detector.yaml&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>Once installed you will see node-problem-detector pods in openshift-node-problem-detector namespace.
Now enable openshift-node-problem-detector in the &lt;a href="https://github.com/openshift-scale/cerberus/blob/master/config/config.yaml">config.yaml&lt;/a>.
Cerberus just monitors &lt;code>KernelDeadlock&lt;/code> condition provided by the node problem detector as it is system critical and can hinder node performance.&lt;/p></description></item><item><title>Slack Integration</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/slack/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/slack/</guid><description>&lt;p>The user has the option to enable/disable the slack integration ( disabled by default ). To use the slack integration, the user has to first create an &lt;a href="https://api.slack.com/apps?new_granular_bot_app=1">app&lt;/a> and add a bot to it on slack. SLACK_API_TOKEN and SLACK_CHANNEL environment variables have to be set. SLACK_API_TOKEN refers to Bot User OAuth Access Token and SLACK_CHANNEL refers to the slack channel ID the user wishes to receive the notifications. Make sure the Slack Bot Token Scopes contains this permission [calls:read] [channels:read] [chat:write] [groups:read] [im:read] [mpim:read]&lt;/p></description></item><item><title>Chaos Recommendation Tool</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/chaos-recommender/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/chaos-recommender/</guid><description>&lt;p>This tool, designed for Kraken, operates through the command line and offers recommendations for chaos testing. It suggests probable chaos test cases that can disrupt application services by analyzing their behavior and assessing their susceptibility to specific fault types.&lt;/p>
&lt;p>This tool profiles an application and gathers telemetry data such as CPU, Memory, and Network usage, analyzing it to suggest probable chaos scenarios. For optimal results, it is recommended to activate the utility while the application is under load.&lt;/p></description></item><item><title>Krkn Debugging Tips</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/debugging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/debugging/</guid><description>&lt;h1 id="common-debugging-issues">
 Common Debugging Issues
 &lt;a class="td-heading-self-link" href="#common-debugging-issues" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;h2 id="ssl-certification">
 SSL Certification
 &lt;a class="td-heading-self-link" href="#ssl-certification" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;h3 id="error">
 Error
 &lt;a class="td-heading-self-link" href="#error" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">urllib3.exceptions.MaxRetryError: HTTPSConnectionPool&lt;span class="o">(&lt;/span>&lt;span class="nv">host&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;api.***.io&amp;#39;&lt;/span>, &lt;span class="nv">port&lt;/span>&lt;span class="o">=&lt;/span>6443&lt;span class="o">)&lt;/span>: Max retries exceeded with url: /apis/config.openshift.io/v1/clusterversions &lt;span class="o">(&lt;/span>Caused by SSLError&lt;span class="o">(&lt;/span>SSLCertVerificationError&lt;span class="o">(&lt;/span>1, &lt;span class="s1">&amp;#39;[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1147)&amp;#39;&lt;/span>&lt;span class="o">)))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="fix">
 Fix
 &lt;a class="td-heading-self-link" href="#fix" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>The user needs to have tls verification by logging in using&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ oc login &lt;span class="o">[&lt;/span>-u&lt;span class="o">=&lt;/span>&amp;lt;username&amp;gt;&lt;span class="o">]&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="o">[&lt;/span>-p&lt;span class="o">=&lt;/span>&amp;lt;password&amp;gt;&lt;span class="o">]&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="o">[&lt;/span>-s&lt;span class="o">=&lt;/span>&amp;lt;server&amp;gt;&lt;span class="o">]&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="o">[&lt;/span>-n&lt;span class="o">=&lt;/span>&amp;lt;project&amp;gt;&lt;span class="o">]&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --insecure-skip-tls-verify
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Also verify &lt;code>insecure-skip-tls-verify: true&lt;/code> is in the kubeconfig:&lt;/p></description></item><item><title>Using the UI</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_dashboard/using-the-ui/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_dashboard/using-the-ui/</guid><description>&lt;h2 id="using-the-ui">
 Using the UI
 &lt;a class="td-heading-self-link" href="#using-the-ui" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Once the dashboard is running, open &lt;strong>http://localhost:3000&lt;/strong> (or the port shown in the terminal) in your browser. The dashboard has a side menu with other dashboard views (Overview and Metrics). Each is described below.&lt;/p>
&lt;hr>
&lt;h2 id="overview">
 Overview
 &lt;a class="td-heading-self-link" href="#overview" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>The Overview page is the default landing page. It has two tabs at the top:&lt;/p>
&lt;h3 id="kraken-tab">
 Kraken tab
 &lt;a class="td-heading-self-link" href="#kraken-tab" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Scenarios card&lt;/strong> — A set of scenario tiles (e.g. Pod Scenarios, Node CPU hog, Node IO hog, Node Memory hog). Click a scenario to select it for the next run.&lt;/li>
&lt;li>&lt;strong>Supported Parameters&lt;/strong> — Set your parameters for the selected scenario and either enter a kubeconfig path or upload a kubeconfig file. Use &lt;strong>Start Kraken&lt;/strong> to launch the krkn-hub container for that scenario.&lt;/li>
&lt;li>&lt;strong>Pod Details&lt;/strong> — A table of all krkn-hub containers known to the dashboard. Use this to see which chaos runs are active or finished.&lt;/li>
&lt;/ul>
&lt;h3 id="logs-tab">
 Logs tab
 &lt;a class="td-heading-self-link" href="#logs-tab" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Logs viewer&lt;/strong> — A dropdown to select a running or past container (from the same list as Pod Details). Once selected, the panel shows that container&amp;rsquo;s live or captured logs so you can watch chaos output without using the terminal.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://deploy-preview-247--krkn-chaos.netlify.app/img/overview-page.png" alt="Overview page">&lt;/p></description></item><item><title>Contribute</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/contribute/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/contribute/</guid><description>&lt;h3 id="how-to-contribute">
 How to contribute
 &lt;a class="td-heading-self-link" href="#how-to-contribute" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Contributions are always appreciated.&lt;/p>
&lt;p>How to:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/contribute/#pull-request">Submit Pull Request&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/contribute/#fix-formatting">Fix Formatting&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/cerberus/contribute/#squash-commits">Squash Commits&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="pull-request">
 Pull request
 &lt;a class="td-heading-self-link" href="#pull-request" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>In order to submit a change or a PR, please fork the project and follow instructions:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git clone http://github.com/&amp;lt;me&amp;gt;/cerberus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">cd&lt;/span> cerberus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git checkout -b &amp;lt;branch_name&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &amp;lt;make change&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git add &amp;lt;changes&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git commit -a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &amp;lt;insert good message&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git push
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="fix-formatting">
 Fix Formatting
 &lt;a class="td-heading-self-link" href="#fix-formatting" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>Cerberus uses &lt;a href="https://pre-commit.com">pre-commit&lt;/a> framework to maintain the code linting and python code styling.
The CI would run the pre-commit check on each pull request.
We encourage our contributors to follow the same pattern, while contributing to the code.&lt;/p></description></item><item><title>Security self-assessment</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/</guid><description>&lt;h1 id="krkn-security-self-assessment">
 Krkn Security Self-Assessment
 &lt;a class="td-heading-self-link" href="#krkn-security-self-assessment" aria-label="Heading self-link">&lt;/a>
&lt;/h1>
&lt;p>Security reviewers: Tullio Sebastiani, Paige Patton, Naga Ravi Elluri&lt;/p>
&lt;p>This document is intended to aid in roadmapping, and the onboarding of new maintainers.&lt;/p>
&lt;h2 id="table-of-contents">
 Table of Contents
 &lt;a class="td-heading-self-link" href="#table-of-contents" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#metadata">Metadata&lt;/a>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#security-links">Security links&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#overview">Overview&lt;/a>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#background">Background&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#actors">Actors&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#actions">Actions&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#goals">Goals&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#non-goals">Non-goals&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#self-assessment-use">Self-assessment use&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#security-functions-and-features">Security functions and features&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#project-compliance">Project compliance&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#secure-development-practices">Secure development practices&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#security-issue-resolution">Security issue resolution&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/security/#appendix">Appendix&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="metadata">
 Metadata
 &lt;a class="td-heading-self-link" href="#metadata" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Software&lt;/td>
 &lt;td>&lt;a href="https://github.com/krkn-chaos/krkn">https://github.com/krkn-chaos/krkn&lt;/a> &lt;/br> &lt;a href="https://github.com/krkn-chaos/krkn-lib">https://github.com/krkn-chaos/krkn-lib&lt;/a> &lt;/br> &lt;a href="https://github.com/krkn-chaos/krkn-hub">https://github.com/krkn-chaos/krkn-hub&lt;/a> &lt;/br> &lt;a href="https://github.com/krkn-chaos/krknctl">https://github.com/krkn-chaos/krknctl&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Security Provider?&lt;/td>
 &lt;td>No. Krkn is designed to measure application or cluster resilience injecting controlled resource disruptions, but it should not be considered a security provider.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Languages&lt;/td>
 &lt;td>Python, Go, Bash&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Software Bill of Materials&lt;/td>
 &lt;td>🔹 Krkn : &lt;a href="https://github.com/krkn-chaos/krkn/releases/latest/download/sbom.json">https://github.com/krkn-chaos/krkn/releases/latest/download/sbom.json&lt;/a> &lt;/br> 🔹 krkn-lib : &lt;a href="https://github.com/krkn-chaos/krkn-lib/releases/latest/download/sbom.json">https://github.com/krkn-chaos/krkn-lib/releases/latest/download/sbom.json&lt;/a> &lt;/br> 🔹 krknctl : &lt;a href="https://github.com/krkn-chaos/krknctl/releases/latest/download/sbom.json">https://github.com/krkn-chaos/krknctl/releases/latest/download/sbom.json&lt;/a> &lt;/br>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Security Links&lt;/td>
 &lt;td>Known Weakness. Creation of a security-insights.yml should be added to the roadmap.&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="overview">
 Overview
 &lt;a class="td-heading-self-link" href="#overview" aria-label="Heading self-link">&lt;/a>
&lt;/h2>
&lt;p>krkn is a chaos and resiliency testing tool for Kubernetes. Krkn injects deliberate failures into Kubernetes clusters to check if it is resilient to turbulent conditions.&lt;/p></description></item><item><title>Randomized chaos testing</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krknctl/randomized-chaos-testing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krknctl/randomized-chaos-testing/</guid><description>&lt;p>The random subcommand is valuable for generating chaos tests on a large scale with ease and speed. The random scaffold command, when used with the &lt;code>--seed-file&lt;/code> and &lt;code>--number-of-scenarios&lt;/code> flags, allows you to expand a pre-existing random or graph plan as a template (or seed). The tool randomly distributes scenarios from the &lt;code>seed-file&lt;/code> to meet the specified &lt;code>number-of-scenarios&lt;/code>. The resulting output is compatible &lt;strong>exclusively&lt;/strong> with the random run command, which generates a random graph from it.&lt;/p></description></item><item><title/><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/managedcluster_scenarios/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/docs/managedcluster_scenarios/</guid><description>&lt;h3 id="managedcluster-scenarios">
 ManagedCluster Scenarios
 &lt;a class="td-heading-self-link" href="#managedcluster-scenarios" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>&lt;a href="https://open-cluster-management.io/concepts/managedcluster/">ManagedCluster&lt;/a> scenarios provide a way to integrate kraken with &lt;a href="https://open-cluster-management.io/">Open Cluster Management (OCM)&lt;/a> and &lt;a href="https://www.redhat.com/en/technologies/management/advanced-cluster-management">Red Hat Advanced Cluster Management for Kubernetes (ACM)&lt;/a>.&lt;/p>
&lt;p>ManagedCluster scenarios leverage &lt;a href="https://open-cluster-management.io/concepts/manifestwork/">ManifestWorks&lt;/a> to inject faults into the ManagedClusters.&lt;/p>
&lt;p>The following ManagedCluster chaos scenarios are supported:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>managedcluster_start_scenario&lt;/strong>: Scenario to start the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>managedcluster_stop_scenario&lt;/strong>: Scenario to stop the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>managedcluster_stop_start_scenario&lt;/strong>: Scenario to stop and then start the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>start_klusterlet_scenario&lt;/strong>: Scenario to start the klusterlet of the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>stop_klusterlet_scenario&lt;/strong>: Scenario to stop the klusterlet of the ManagedCluster instance.&lt;/li>
&lt;li>&lt;strong>stop_start_klusterlet_scenario&lt;/strong>: Scenario to stop and start the klusterlet of the ManagedCluster instance.&lt;/li>
&lt;/ol>
&lt;p>ManagedCluster scenarios can be injected by placing the ManagedCluster scenarios config files under &lt;code>managedcluster_scenarios&lt;/code> option in the Kraken config. Refer to &lt;a href="https://github.com/redhat-chaos/krkn/blob/main/scenarios/kube/managedcluster_scenarios_example.yml">managedcluster_scenarios_example&lt;/a> config file.&lt;/p></description></item><item><title>Articles</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/blog/1/01/01/articles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/blog/1/01/01/articles/</guid><description>&lt;h3 id="presentations-and-blogs">
 Presentations and Blogs
 &lt;a class="td-heading-self-link" href="#presentations-and-blogs" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Blog post on introduction to Kraken: &lt;a href="https://www.openshift.com/blog/introduction-to-kraken-a-chaos-tool-for-openshift/kubernetes">https://www.openshift.com/blog/introduction-to-kraken-a-chaos-tool-for-openshift/kubernetes&lt;/a>&lt;/li>
&lt;li>Discussion and demo on how Kraken can be leveraged to ensure OpenShift is reliable, performant and scalable: &lt;a href="https://www.youtube.com/watch?v=s1PvupI5sD0&amp;amp;ab_channel=OpenShift">https://www.youtube.com/watch?v=s1PvupI5sD0&amp;ab_channel=OpenShift&lt;/a>&lt;/li>
&lt;li>Blog post emphasizing the importance of making Chaos part of Performance and Scale runs to mimic the production environments: &lt;a href="https://www.openshift.com/blog/making-chaos-part-of-kubernetes/openshift-performance-and-scalability-tests">https://www.openshift.com/blog/making-chaos-part-of-kubernetes/openshift-performance-and-scalability-tests&lt;/a>&lt;/li>
&lt;li>Blog post on findings from Chaos test runs: &lt;a href="https://cloud.redhat.com/blog/openshift/kubernetes-chaos-stories">https://cloud.redhat.com/blog/openshift/kubernetes-chaos-stories&lt;/a>&lt;/li>
&lt;li>Discussion with CNCF TAG App Delivery on Krkn workflow, features and addition to CNCF sandbox: Github, Tracker, recording&lt;/li>
&lt;li>Blog post on supercharging chaos testing using AI integration in Krkn: &lt;a href="https://www.redhat.com/en/blog/supercharging-chaos-testing-using-ai">https://www.redhat.com/en/blog/supercharging-chaos-testing-using-ai&lt;/a>&lt;/li>
&lt;li>Blog post announcing Krkn joining CNCF Sandbox: &lt;a href="https://www.redhat.com/en/blog/krknchaos-joining-cncf-sandbox">https://www.redhat.com/en/blog/krknchaos-joining-cncf-sandbox&lt;/a>&lt;/li>
&lt;li>Blog post on OpenShift Chaos Stories - findings from test runs: &lt;a href="https://cloud.redhat.com/blog/openshift/kubernetes-chaos-stories">https://cloud.redhat.com/blog/openshift/kubernetes-chaos-stories&lt;/a>&lt;/li>
&lt;li>Blog post on unleashing controlled chaos with krknctl: &lt;a href="https://developers.redhat.com/articles/2025/08/21/unleash-controlled-chaos-krknctl">https://developers.redhat.com/articles/2025/08/21/unleash-controlled-chaos-krknctl&lt;/a>&lt;/li>
&lt;li>Blog post on enhancing the system resilience with krkn chaos dashboard: &lt;a href="https://developers.redhat.com/articles/2025/08/14/enhancing-system-resilience-krkn-chaos-dashboard">https://developers.redhat.com/articles/2025/08/14/enhancing-system-resilience-krkn-chaos-dashboard&lt;/a>&lt;/li>
&lt;li>Blog post on LFX Mentorship Term 2 2025 experience working with the krkn team on the rollback feature: &lt;a href="https://blog.zhu424.dev/open-source-contribution/lfx-mentorship-2025-cncf-krkn">https://blog.zhu424.dev/open-source-contribution/lfx-mentorship-2025-cncf-krkn&lt;/a>&lt;/li>
&lt;li>Blog post on creating custom chaos scenarios in krkn: &lt;a href="https://medium.com/@abhinavs1920/krkn-custom-chaos-engineering-plugins-70d73c7e2118">https://medium.com/@abhinavs1920/krkn-custom-chaos-engineering-plugins-70d73c7e2118&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="chaos-testing-guide">
 Chaos Testing Guide
 &lt;a class="td-heading-self-link" href="#chaos-testing-guide" aria-label="Heading self-link">&lt;/a>
&lt;/h3>
&lt;p>Guide covering the best practices, recommendations that an OpenShift platform as well as the applications running on top it should follow to be resilient, performant and reliable in addition to instructions on how to leverage tooling to achieve it: &lt;a href="https://redhat-chaos.github.io/krkn/">https://redhat-chaos.github.io/krkn/&lt;/a>.&lt;/p></description></item><item><title>Search Results</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-247--krkn-chaos.netlify.app/search/</guid><description/></item></channel></rss>