<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>What is krkn-ai? on Krkn</title><link>https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/</link><description>Recent content in What is krkn-ai? on Krkn</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-247--krkn-chaos.netlify.app/docs/krkn_ai/index.xml" rel="self" type="application/rss+xml"/><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>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>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>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></channel></rss>