<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Academy on Exoscale Academy</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/</link><description>Recent content in Academy on Exoscale Academy</description><generator>Hugo</generator><language>en</language><atom:link href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/index.xml" rel="self" type="application/rss+xml"/><item><title>Alert</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/alerts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/alerts/</guid><description>&lt;p&gt;The academy-theme &lt;code&gt;alert&lt;/code&gt; shortcode renders a styled alert box. The &lt;code&gt;type&lt;/code&gt; parameter controls the color and icon.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; alert type=&amp;#34;note&amp;#34; title=&amp;#34;Note&amp;#34; &amp;gt;}}Alert content with **Markdown** support.{{&amp;lt; /alert &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Alert style: &lt;code&gt;note&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;danger&lt;/code&gt;, &lt;code&gt;warning&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional title above the alert body&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt;











&lt;div class="alert alert-primary" role="alert"&gt;
 &lt;h4 class="alert-heading"&gt;Note&lt;/h4&gt;
 
 A plain alert with a title.
 
&lt;/div&gt;








&lt;div class="alert alert-custom" style="border-color: #7A848E;" role="alert"&gt;
 &lt;h4 class="alert-heading" style="color: #7A848E;"&gt;Note&lt;/h4&gt;
 
 This alert supports a title and &lt;strong&gt;Markdown&lt;/strong&gt;.
 
&lt;/div&gt;









&lt;div class="alert alert-custom" style="border-color: #3772ff;" role="alert"&gt;
 &lt;h4 class="alert-heading" style="color: #3772ff;"&gt;Info&lt;/h4&gt;
 
 This is an informational alert.
 
&lt;/div&gt;









&lt;div class="alert alert-danger" role="alert"&gt;
&lt;h4 class="alert-heading"&gt;Danger&lt;/h4&gt;

 This is a danger alert.

&lt;/div&gt;








&lt;div class="alert alert-custom" style="border-color: #EBC017;" role="alert"&gt;
 &lt;h4 class="alert-heading" style="color: #EBC017;"&gt;Warning&lt;/h4&gt;
 
 This is a warning alert.
 
&lt;/div&gt;</description></item><item><title>Alert (Docsy)</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/docsy-alert/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/docsy-alert/</guid><description>&lt;p&gt;The Docsy &lt;code&gt;alert&lt;/code&gt; shortcode renders a colored alert box. The academy-theme overrides this shortcode, so invoking &lt;code&gt;alert&lt;/code&gt; will use the academy-theme implementation. This page demonstrates the Docsy &lt;code&gt;color&lt;/code&gt; parameter syntax.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; alert color=&amp;#34;info&amp;#34; title=&amp;#34;Info alert&amp;#34; &amp;gt;}}Alert content here.{{&amp;lt; /alert &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;color&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Bootstrap color: &lt;code&gt;primary&lt;/code&gt;, &lt;code&gt;secondary&lt;/code&gt;, &lt;code&gt;success&lt;/code&gt;, &lt;code&gt;danger&lt;/code&gt;, &lt;code&gt;warning&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional title text&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;











&lt;div class="alert alert-info" role="alert"&gt;
 &lt;h4 class="alert-heading"&gt;Docsy alert&lt;/h4&gt;
 
 This block uses the Docsy-style &lt;code&gt;color&lt;/code&gt; parameter.
 
&lt;/div&gt;</description></item><item><title>Callout</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/callout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/callout/</guid><description>&lt;p&gt;Callouts highlight important information with a colored left border and an icon. Five types are supported: &lt;strong&gt;default&lt;/strong&gt; (green), &lt;strong&gt;info&lt;/strong&gt; (blue), &lt;strong&gt;warning&lt;/strong&gt; (orange), &lt;strong&gt;error&lt;/strong&gt; (red), and &lt;strong&gt;important&lt;/strong&gt; (teal).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/callout type=&amp;#34;info&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Your message here. Supports **Markdown**.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /hextra/callout &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Callout style: &lt;code&gt;default&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;warning&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;, &lt;code&gt;important&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;emoji&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional emoji to replace the icon (e.g., &lt;code&gt;&amp;quot;🚀&amp;quot;&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="hextra-callout alert alert-success d-flex align-items-start" role="alert"&gt;
 &lt;div class="flex-shrink-0 me-2"&gt;&lt;svg height="1.2em" class="d-inline-block align-middle" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"/&gt;&lt;/svg&gt;&lt;/div&gt;
 &lt;div class="flex-grow-1 hextra-callout-content"&gt;This is a &lt;strong&gt;default&lt;/strong&gt; callout. It uses a light-bulb icon and green styling.&lt;/div&gt;
&lt;/div&gt;

&lt;div class="hextra-callout alert alert-info d-flex align-items-start" role="alert"&gt;
 &lt;div class="flex-shrink-0 me-2"&gt;&lt;svg height="1.2em" class="d-inline-block align-middle" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/&gt;&lt;/svg&gt;&lt;/div&gt;
 &lt;div class="flex-grow-1 hextra-callout-content"&gt;This is an &lt;strong&gt;info&lt;/strong&gt; callout. Use it to surface supplementary context.&lt;/div&gt;
&lt;/div&gt;

&lt;div class="hextra-callout alert alert-warning d-flex align-items-start" role="alert"&gt;
 &lt;div class="flex-shrink-0 me-2"&gt;&lt;svg height="1.2em" class="d-inline-block align-middle" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/&gt;&lt;/svg&gt;&lt;/div&gt;
 &lt;div class="flex-grow-1 hextra-callout-content"&gt;This is a &lt;strong&gt;warning&lt;/strong&gt; callout. Draw attention to potential issues.&lt;/div&gt;
&lt;/div&gt;

&lt;div class="hextra-callout alert alert-danger d-flex align-items-start" role="alert"&gt;
 &lt;div class="flex-shrink-0 me-2"&gt;&lt;svg height="1.2em" class="d-inline-block align-middle" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636"/&gt;&lt;/svg&gt;&lt;/div&gt;
 &lt;div class="flex-grow-1 hextra-callout-content"&gt;This is an &lt;strong&gt;error&lt;/strong&gt; callout. Indicate something that went wrong.&lt;/div&gt;
&lt;/div&gt;

&lt;div class="hextra-callout alert alert-primary d-flex align-items-start" role="alert"&gt;
 &lt;div class="flex-shrink-0 me-2"&gt;&lt;svg height="1.2em" class="d-inline-block align-middle" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/&gt;&lt;/svg&gt;&lt;/div&gt;
 &lt;div class="flex-grow-1 hextra-callout-content"&gt;This is an &lt;strong&gt;important&lt;/strong&gt; callout. Emphasize critical information.&lt;/div&gt;
&lt;/div&gt;

&lt;div class="hextra-callout alert alert-success d-flex align-items-start" role="alert"&gt;
 &lt;div class="flex-shrink-0 me-2"&gt;&lt;span class="hextra-callout-emoji" style="font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 1.25rem;"&gt;🚀&lt;/span&gt;&lt;/div&gt;
 &lt;div class="flex-grow-1 hextra-callout-content"&gt;You can use an &lt;strong&gt;emoji&lt;/strong&gt; instead of the default icon.&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Figure</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/figure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/figure/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; figure src=&amp;#34;/examples/images/exoscale-icon.png&amp;#34; alt=&amp;#34;Exoscale icon&amp;#34; caption=&amp;#34;Caption text.&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/examples/images/exoscale-icon.png"
 alt="Exoscale icon"&gt;&lt;figcaption&gt;
 &lt;p&gt;A Hugo figure shortcode rendering a static image.&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Cards</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/cards/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/cards/</guid><description>&lt;p&gt;Cards display content in a responsive grid. Wrap individual &lt;code&gt;hextra/card&lt;/code&gt; shortcodes inside a &lt;code&gt;hextra/cards&lt;/code&gt; container.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/cards cols=&amp;#34;3&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{&amp;lt; hextra/card link=&amp;#34;https://example.com&amp;#34; title=&amp;#34;Title&amp;#34; subtitle=&amp;#34;Description&amp;#34; icon=&amp;#34;document-text&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{&amp;lt; hextra/card title=&amp;#34;No link&amp;#34; subtitle=&amp;#34;This card is not clickable.&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /hextra/cards &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Container parameters (&lt;code&gt;hextra/cards&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;cols&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of columns at the &lt;code&gt;lg&lt;/code&gt; breakpoint&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Card parameters (&lt;code&gt;hextra/card&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Card heading&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;subtitle&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Description text below the title&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;link&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;URL the card links to&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;icon&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Icon name from &lt;code&gt;data/hextra/icons.yaml&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;image&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Image URL or page-bundle path&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tag&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Badge text shown in the top-right corner&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tagColor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Bootstrap color name for the tag badge&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;secondary&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Three-column grid:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Highlight</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/highlight/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/highlight/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; highlight go &amp;#34;linenos=table,hl_lines=3&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;package main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;import &amp;#34;fmt&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;func main() { fmt.Println(&amp;#34;hello&amp;#34;) }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /highlight &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;display:grid;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;display:grid;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="background-color:#3c3d38"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;display:grid;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;package&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex; background-color:#3c3d38"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;hello from the highlight shortcode&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Pageinfo (Docsy)</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/docsy-pageinfo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/docsy-pageinfo/</guid><description>&lt;p&gt;The Docsy &lt;code&gt;pageinfo&lt;/code&gt; shortcode renders a colored page-level info box. The academy-theme overrides this shortcode.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; pageinfo color=&amp;#34;primary&amp;#34; &amp;gt;}}Notice content here.{{&amp;lt; /pageinfo &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;color&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Bootstrap color name&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;


&lt;div class="pageinfo"&gt;
This block uses the Docsy implementation of `pageinfo` with `color="primary"`.
&lt;/div&gt;</description></item><item><title>Blocks Cover and Link Down</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-cover-link-down/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-cover-link-down/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; blocks/cover title=&amp;#34;Cover Title&amp;#34; subtitle=&amp;#34;Subtitle&amp;#34; color=&amp;#34;dark&amp;#34; height=&amp;#34;min&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cover content here.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; blocks/link-down color=&amp;#34;info&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /blocks/cover &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;link rel="preload" as="image" href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-cover-link-down/background_hu_739988b8c547bd35.png" media="(max-width: 1200px)"&gt;
&lt;link rel="preload" as="image" href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-cover-link-down/background_hu_280813ad007c96a9.png" media="(min-width: 1200px)"&gt;
&lt;style&gt;
#td-cover-block-0 {
 background-image: url(/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-cover-link-down/background_hu_739988b8c547bd35.png);
}
@media only screen and (min-width: 1200px) {
 #td-cover-block-0 {
 background-image: url(/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-cover-link-down/background_hu_280813ad007c96a9.png);
 }
}
&lt;/style&gt;
&lt;section id="td-cover-block-0" class="row td-cover-block td-cover-block--height-min js-td-cover td-overlay td-overlay--dark -bg-dark"&gt;
 &lt;div class="col-12"&gt;
 &lt;div class="container td-overlay__inner"&gt;
 &lt;div class="text-center"&gt;
 &lt;h1 class="display-1 mt-0 mt-md-5 pb-4"&gt;&lt;img class="td-cover-logo" src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-cover-link-down/logo_hu_4b5b1923bdea38fc.png" alt="Docsy Cover Block Logo"&gt;Docsy Cover Block&lt;/h1&gt;
 &lt;p class="display-2 text-uppercase mb-0"&gt;Hero Example&lt;/p&gt;
 &lt;div class="pt-3 lead"&gt;
 
 &lt;p&gt;This cover block uses page resources named &lt;code&gt;background&lt;/code&gt; and &lt;code&gt;logo&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;</description></item><item><title>Details (Collapsible)</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/theme-details/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/theme-details/</guid><description>&lt;p&gt;The academy-theme &lt;code&gt;details&lt;/code&gt; shortcode renders a collapsible content block.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; details summary=&amp;#34;Click to expand&amp;#34; open=&amp;#34;true&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Collapsed content here. Supports **Markdown**.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /details &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;summary&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Clickable summary text&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(empty)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;open&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set to &lt;code&gt;&amp;quot;true&amp;quot;&lt;/code&gt; to start expanded&lt;/td&gt;
 &lt;td&gt;collapsed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Expanded by default:&lt;/strong&gt;&lt;/p&gt;

&lt;details class="details-shortcode" open&gt;
 &lt;summary&gt;
 &lt;strong&gt;Academy theme details (open)&lt;/strong&gt;
 &lt;/summary&gt;
 &lt;div class="details-content"&gt;
 &lt;p&gt;This is the academy-theme implementation of the &lt;code&gt;details&lt;/code&gt; shortcode. It starts expanded because &lt;code&gt;open=&amp;quot;true&amp;quot;&lt;/code&gt; is set.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports &lt;strong&gt;Markdown&lt;/strong&gt; formatting&lt;/li&gt;
&lt;li&gt;Lists, &lt;code&gt;code&lt;/code&gt;, and &lt;em&gt;emphasis&lt;/em&gt; all render correctly&lt;/li&gt;
&lt;/ul&gt;
 &lt;/div&gt;
 &lt;/details&gt;
&lt;p&gt;&lt;strong&gt;Collapsed by default:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Details</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/details/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/details/</guid><description>&lt;p&gt;A collapsible content block built on the native HTML &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; element with card styling and a rotating chevron indicator.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/details title=&amp;#34;Click to expand&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hidden content here. Supports **Markdown**.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /hextra/details &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Summary text (supports Markdown)&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(empty)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;closed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set to &lt;code&gt;&amp;quot;true&amp;quot;&lt;/code&gt; to render collapsed&lt;/td&gt;
 &lt;td&gt;open&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Open by default:&lt;/strong&gt;&lt;/p&gt;
&lt;details class="hextra-details card mb-3 mt-3" open&gt;
 &lt;summary class="card-header d-flex align-items-center fw-bold" role="button" style="cursor: pointer; list-style: none;"&gt;
 &lt;svg class="hextra-details-chevron me-2 flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" aria-hidden="true"&gt;&lt;path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/&gt;&lt;/svg&gt;
 Click to expand this section
 &lt;/summary&gt;
 &lt;div class="card-body"&gt;
 &lt;p&gt;Here is the hidden content revealed when the summary is clicked.&lt;/p&gt;</description></item><item><title>Hugo Details</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/hugo-details/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/hugo-details/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% details summary=&amp;#34;Click to expand&amp;#34; open=true %}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Collapsible content here.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% /details %}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;</description></item><item><title>Blocks Lead</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-lead/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-lead/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; blocks/lead color=&amp;#34;primary&amp;#34; height=&amp;#34;min&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Lead section content here.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /blocks/lead &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;a id="td-block-0" class="td-offset-anchor"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;section class="row td-box td-box--primary position-relative td-box--height-min"&gt;
&lt;div class="col-12"&gt;
&lt;div class="container text-center td-arrow-down"&gt;
&lt;div class="h4 mb-0"&gt;


This is a live `blocks/lead` example.

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;</description></item><item><title>Pageinfo</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/theme-pageinfo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/theme-pageinfo/</guid><description>&lt;p&gt;The academy-theme &lt;code&gt;pageinfo&lt;/code&gt; shortcode renders a page-level notice box.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; pageinfo &amp;gt;}}Notice content with **Markdown** support.{{&amp;lt; /pageinfo &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;


&lt;div class="pageinfo"&gt;

This block uses the academy-theme implementation of `pageinfo`. It is useful for rendering page-level status notices, such as deprecation warnings or draft indicators.

&lt;/div&gt;</description></item><item><title>Param</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/param/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/param/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; param &amp;#34;title&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Current page title from front matter: Param&lt;/p&gt;</description></item><item><title>Steps</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/steps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/steps/</guid><description>&lt;p&gt;Numbered step lists rendered with CSS counters. Place &lt;code&gt;h3&lt;/code&gt;–&lt;code&gt;h6&lt;/code&gt; headings inside the shortcode body — each heading becomes a numbered step.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/steps &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;### First step
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Description of the first step.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;### Second step
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Description of the second step.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /hextra/steps &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="hextra-steps ms-3 mb-5 ps-4 border-start"&gt;
&lt;h3 id="clone-the-repository" class="heading-link"&gt;
 Clone the repository
 &lt;a href="#clone-the-repository" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/layer5io/academy-example.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="install-dependencies" class="heading-link"&gt;
 Install dependencies
 &lt;a href="#install-dependencies" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="start-the-development-server" class="heading-link"&gt;
 Start the development server
 &lt;a href="#start-the-development-server" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo server -D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Blocks Section and Feature</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-section-feature/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/blocks-section-feature/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; blocks/section color=&amp;#34;light&amp;#34; type=&amp;#34;container&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{&amp;lt; blocks/feature icon=&amp;#34;fa-layer-group&amp;#34; title=&amp;#34;Title&amp;#34; &amp;gt;}}Description.{{&amp;lt; /blocks/feature &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /blocks/section &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;a id="td-block-0" class="td-offset-anchor"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;section class="row td-box td-box--light td-box--height-auto"&gt;
&lt;div class="col"&gt;
&lt;div class="container"&gt;


&lt;div class="col-lg-4 mb-5 mb-lg-0 text-center"&gt;
&lt;div class="mb-4 h1"&gt;
 &lt;i class="fas fa-layer-group"&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;h4 class="h3"&gt;Reusable&lt;/h4&gt;
&lt;div class="mb-0"&gt;
Use shortcodes to compose reusable content patterns.
&lt;/div&gt;

&lt;/div&gt;

&lt;div class="col-lg-4 mb-5 mb-lg-0 text-center"&gt;
&lt;div class="mb-4 h1"&gt;
 &lt;i class="fas fa-code"&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;h4 class="h3"&gt;Declarative&lt;/h4&gt;
&lt;div class="mb-0"&gt;
Keep formatting examples inside Markdown instead of hard-coding HTML everywhere.
&lt;/div&gt;

&lt;/div&gt;

&lt;div class="col-lg-4 mb-5 mb-lg-0 text-center"&gt;
&lt;div class="mb-4 h1"&gt;
 &lt;i class="fas fa-book"&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;h4 class="h3"&gt;Documented&lt;/h4&gt;
&lt;div class="mb-0"&gt;
This page shows how each shortcode behaves when rendered.
&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;</description></item><item><title>Chapterstyle</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/chapterstyle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/chapterstyle/</guid><description>&lt;p&gt;The &lt;code&gt;chapterstyle&lt;/code&gt; shortcode wraps content in a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; with custom inline styles, useful for visually distinguishing chapter or section blocks.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% chapterstyle style=&amp;#34;padding: 1rem; border: 1px solid #d0d7de; border-radius: 0.75rem; background: #f8fafc;&amp;#34; %}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Your styled content here.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% /chapterstyle %}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;style&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CSS style string applied to the wrapper &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;</description></item><item><title>Comment</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/comment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/comment/</guid><description>&lt;p&gt;The &lt;code&gt;comment&lt;/code&gt; shortcode hides content from the rendered output. It acts as an invisible annotation — useful for leaving notes in Markdown that readers won&amp;rsquo;t see.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; comment &amp;gt;}}This text is hidden from the rendered page.{{&amp;lt; /comment &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Visible text before the comment. Visible text after the comment.&lt;/p&gt;
&lt;p&gt;The text between the &lt;code&gt;comment&lt;/code&gt; shortcode tags above is not rendered. View the page source to confirm.&lt;/p&gt;</description></item><item><title>QR</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/qr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/qr/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; qr text=&amp;#34;https://example.com&amp;#34; alt=&amp;#34;QR code description&amp;#34; /&amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;img src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/qr_70e52cecd67ab578.png" width="148" height="148" alt="QR code for the Layer5 Academy example page"&gt;</description></item><item><title>Tabs</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/tabs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/tabs/</guid><description>&lt;p&gt;Tabbed interfaces powered by Bootstrap 5 nav-tabs. Each &lt;code&gt;hextra/tab&lt;/code&gt; is nested inside a &lt;code&gt;hextra/tabs&lt;/code&gt; container. Tabs support cross-page sync via localStorage when tabs share the same names.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/tabs &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{&amp;lt; hextra/tab name=&amp;#34;Tab One&amp;#34; &amp;gt;}}Content for tab one.{{&amp;lt; /hextra/tab &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{&amp;lt; hextra/tab name=&amp;#34;Tab Two&amp;#34; &amp;gt;}}Content for tab two.{{&amp;lt; /hextra/tab &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /hextra/tabs &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Tab parameters (&lt;code&gt;hextra/tab&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Tab label&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Tab &amp;lt;N&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;selected&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set to &lt;code&gt;&amp;quot;true&amp;quot;&lt;/code&gt; to pre-select this tab&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Code samples across languages:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Card</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/card/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/card/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% card header=&amp;#34;Card Header&amp;#34; title=&amp;#34;Card title&amp;#34; footer=&amp;#34;Card footer&amp;#34; %}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Card body content here.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% /card %}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;p&gt;This is a rendered Docsy &lt;code&gt;card&lt;/code&gt; shortcode.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;</description></item><item><title>Conditional Text</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/conditional-text/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/conditional-text/</guid><description>&lt;p&gt;The &lt;code&gt;conditional-text&lt;/code&gt; shortcode renders content only when the &lt;code&gt;include-if&lt;/code&gt; value matches the site&amp;rsquo;s &lt;code&gt;params.buildCondition&lt;/code&gt;. This is useful for showing content specific to certain build environments or feature flags.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; conditional-text include-if=&amp;#34;examples&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This text only appears when buildCondition is set to &amp;#34;examples&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /conditional-text &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;include-if&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Condition string to match against &lt;code&gt;params.buildCondition&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

This sentence is rendered because `params.buildCondition` is set to `examples`.

&lt;p&gt;If the text above is not visible, the site&amp;rsquo;s &lt;code&gt;params.buildCondition&lt;/code&gt; does not match &lt;code&gt;&amp;quot;examples&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>File Tree</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/filetree/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/filetree/</guid><description>&lt;p&gt;An interactive file tree with expandable/collapsible folders. Compose three shortcodes: &lt;code&gt;hextra/filetree/container&lt;/code&gt;, &lt;code&gt;hextra/filetree/folder&lt;/code&gt;, and &lt;code&gt;hextra/filetree/file&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/filetree/container &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{&amp;lt; hextra/filetree/folder name=&amp;#34;src&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{&amp;lt; hextra/filetree/file name=&amp;#34;main.go&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{&amp;lt; /hextra/filetree/folder &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{&amp;lt; hextra/filetree/file name=&amp;#34;README.md&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; /hextra/filetree/container &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Folder parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Folder name&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;state&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;open&amp;quot;&lt;/code&gt; or &lt;code&gt;&amp;quot;closed&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;open&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="hextra-filetree mt-3 mb-3 user-select-none small text-body"&gt;
 &lt;div class="d-inline-block border rounded px-3 py-2"&gt;
 &lt;ul class="list-unstyled mb-0"&gt;
 

&lt;li class="d-flex flex-column"&gt;
 &lt;button class="hextra-filetree-folder btn btn-sm btn-link text-start text-decoration-none text-body p-0 d-inline-flex align-items-center py-1" aria-expanded="true"&gt;
 &lt;span data-state="closed" style="display:none"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;span data-state="open"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;span class="ms-1"&gt;content&lt;/span&gt;
 &lt;/button&gt;
 &lt;ul class="list-unstyled ms-4 mb-0" data-state="open"&gt;
 

&lt;li class="d-flex flex-column"&gt;
&lt;button class="hextra-filetree-folder btn btn-sm btn-link text-start text-decoration-none text-body p-0 d-inline-flex align-items-center py-1" aria-expanded="true"&gt;
 &lt;span data-state="closed" style="display:none"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;span data-state="open"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;span class="ms-1"&gt;docs&lt;/span&gt;
&lt;/button&gt;
&lt;ul class="list-unstyled ms-4 mb-0" data-state="open"&gt;
&lt;li class="d-flex align-items-center py-1"&gt;
 &lt;span class="d-inline-flex align-items-center"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="ms-1"&gt;_index.md&lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;

&lt;li class="d-flex align-items-center py-1"&gt;
 &lt;span class="d-inline-flex align-items-center"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="ms-1"&gt;getting-started.md&lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;

&lt;/ul&gt;
&lt;/li&gt;

 

&lt;li class="d-flex flex-column"&gt;
&lt;button class="hextra-filetree-folder btn btn-sm btn-link text-start text-decoration-none text-body p-0 d-inline-flex align-items-center py-1" aria-expanded="false"&gt;
 &lt;span data-state="closed"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;span data-state="open" style="display:none"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;span class="ms-1"&gt;blog&lt;/span&gt;
&lt;/button&gt;
&lt;ul class="list-unstyled ms-4 mb-0" data-state="closed" style="display:none"&gt;
&lt;li class="d-flex align-items-center py-1"&gt;
 &lt;span class="d-inline-flex align-items-center"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="ms-1"&gt;_index.md&lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;

&lt;li class="d-flex align-items-center py-1"&gt;
 &lt;span class="d-inline-flex align-items-center"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="ms-1"&gt;first-post.md&lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;

&lt;/ul&gt;
&lt;/li&gt;

&lt;/ul&gt;
&lt;/li&gt;

 

&lt;li class="d-flex flex-column"&gt;
 &lt;button class="hextra-filetree-folder btn btn-sm btn-link text-start text-decoration-none text-body p-0 d-inline-flex align-items-center py-1" aria-expanded="true"&gt;
 &lt;span data-state="closed" style="display:none"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;span data-state="open"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;span class="ms-1"&gt;layouts&lt;/span&gt;
 &lt;/button&gt;
 &lt;ul class="list-unstyled ms-4 mb-0" data-state="open"&gt;
 &lt;li class="d-flex align-items-center py-1"&gt;
 &lt;span class="d-inline-flex align-items-center"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="ms-1"&gt;baseof.html&lt;/span&gt;
 &lt;/span&gt;
 &lt;/li&gt;

 &lt;li class="d-flex align-items-center py-1"&gt;
 &lt;span class="d-inline-flex align-items-center"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="ms-1"&gt;index.html&lt;/span&gt;
 &lt;/span&gt;
 &lt;/li&gt;

&lt;/ul&gt;
&lt;/li&gt;

 &lt;li class="d-flex align-items-center py-1"&gt;
 &lt;span class="d-inline-flex align-items-center"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="ms-1"&gt;hugo.yaml&lt;/span&gt;
 &lt;/span&gt;
 &lt;/li&gt;

 &lt;li class="d-flex align-items-center py-1"&gt;
 &lt;span class="d-inline-flex align-items-center"&gt;&lt;svg width="1em" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;span class="ms-1"&gt;package.json&lt;/span&gt;
 &lt;/span&gt;
 &lt;/li&gt;

&lt;/ul&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Ref</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/ref/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/ref/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[Link text]({{&amp;lt; ref &amp;#34;/content-formatting-examples&amp;#34; &amp;gt;}})
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Absolute link to this section: &lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/"&gt;Content formatting examples&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Badge</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/badge/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/badge/</guid><description>&lt;p&gt;Inline badges with color variants. Supports both positional and named parameter forms.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/badge &amp;#34;Simple badge&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/badge content=&amp;#34;Styled&amp;#34; color=&amp;#34;green&amp;#34; link=&amp;#34;https://example.com&amp;#34; icon=&amp;#34;document-text&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;content&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Badge text (or use positional param)&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;color&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Color: &lt;code&gt;gray&lt;/code&gt;, &lt;code&gt;green&lt;/code&gt;, &lt;code&gt;blue&lt;/code&gt;, &lt;code&gt;yellow&lt;/code&gt;, &lt;code&gt;red&lt;/code&gt;, &lt;code&gt;purple&lt;/code&gt;, &lt;code&gt;orange&lt;/code&gt;, &lt;code&gt;indigo&lt;/code&gt;, &lt;code&gt;amber&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;gray&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;link&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional URL to wrap the badge as a link&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;icon&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Optional icon name from &lt;code&gt;data/hextra/icons.yaml&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Color variants:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="hextra-badge badge rounded-pill text-bg-secondary"&gt;Default&lt;/span&gt; &lt;span class="hextra-badge badge rounded-pill text-bg-success"&gt;Success&lt;/span&gt; &lt;span class="hextra-badge badge rounded-pill text-bg-info"&gt;Info&lt;/span&gt; &lt;span class="hextra-badge badge rounded-pill text-bg-warning"&gt;Warning&lt;/span&gt; &lt;span class="hextra-badge badge rounded-pill text-bg-danger"&gt;Error&lt;/span&gt; &lt;span class="hextra-badge badge rounded-pill text-bg-primary"&gt;Important&lt;/span&gt; &lt;span class="hextra-badge badge rounded-pill text-bg-warning"&gt;Amber&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Cardpane</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/cardpane/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/cardpane/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% cardpane %}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{% card header=&amp;#34;Step 1&amp;#34; %}}First card content.{{% /card %}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {{% card header=&amp;#34;Step 2&amp;#34; %}}Second card content.{{% /card %}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% /cardpane %}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;</description></item><item><title>Relref</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/relref/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/relref/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[Link text]({{&amp;lt; relref &amp;#34;/content-formatting-examples&amp;#34; &amp;gt;}})
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Relative link to this section: &lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/"&gt;Content formatting examples&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SVG</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/svg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/svg/</guid><description>&lt;p&gt;The &lt;code&gt;svg&lt;/code&gt; shortcode renders an inline SVG icon from &lt;code&gt;assets/icons/{name}.svg&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; svg name=&amp;#34;layer5-academy-icon&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SVG file name (without extension) from &lt;code&gt;assets/icons/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The icon renders inline: 

 &lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512"&gt;
 &lt;defs&gt;
 &lt;style&gt;
 .building-icon { fill: #00b39f; }
 svg { background-color: transparent; }
 &lt;/style&gt;
 &lt;/defs&gt;
 &lt;path d="M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z" 
 class="building-icon"/&gt;
&lt;/svg&gt;
&lt;/p&gt;</description></item><item><title>Icon</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/icon/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/icon/</guid><description>&lt;p&gt;Renders an inline SVG icon from &lt;code&gt;data/hextra/icons.yaml&lt;/code&gt;. Useful for embedding icons in running text.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/icon &amp;#34;light-bulb&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Available icons:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here are a few icons inline: &lt;span class="hextra-icon d-inline-block align-text-bottom"&gt;&lt;svg height=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;code&gt;light-bulb&lt;/code&gt;, &lt;span class="hextra-icon d-inline-block align-text-bottom"&gt;&lt;svg height=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;code&gt;information-circle&lt;/code&gt;, &lt;span class="hextra-icon d-inline-block align-text-bottom"&gt;&lt;svg height=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;code&gt;exclamation&lt;/code&gt;, &lt;span class="hextra-icon d-inline-block align-text-bottom"&gt;&lt;svg height=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;code&gt;folder&lt;/code&gt;, &lt;span class="hextra-icon d-inline-block align-text-bottom"&gt;&lt;svg height=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;code&gt;document-text&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Iframe</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/iframe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/iframe/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; iframe src=&amp;#34;/examples/frame-example.html&amp;#34; style=&amp;#34;min-height: 18rem;&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;











 &lt;script type="text/javascript"&gt;
 function resizeIframe(iframe) {
 iframe.height = iframe.contentWindow.document.body.scrollHeight + "px";
 }
 &lt;/script&gt; 

&lt;iframe id="iframe-id" src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/examples/frame-example.html" width="100%" name="iframe-name" style="min-height: 18rem; border: 1px solid #d0d7de; border-radius: 0.75rem;" onload="resizeIframe(this)" referrerpolicy="no-referrer"&gt;
 &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/examples/frame-example.html"&gt;/examples/frame-example.html&lt;/a&gt;&lt;/p&gt;
&lt;/iframe&gt;</description></item><item><title>Version</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/version/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/version/</guid><description>&lt;p&gt;The &lt;code&gt;version&lt;/code&gt; shortcode renders a styled version label.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; version color=&amp;#34;Theme version label:&amp;#34; &amp;gt;}} academy-theme sample output{{&amp;lt; /version &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;span style="color:red"&gt;Theme version label:&lt;/span&gt;
 academy-theme sample output</description></item><item><title>Vimeo</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/vimeo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/vimeo/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; vimeo 19899678 &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

 &lt;div
 style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe
 src="https://player.vimeo.com/video/19899678?dnt=0"
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allow="fullscreen"&gt;
 &lt;/iframe&gt;
 &lt;/div&gt;</description></item><item><title>YouTube</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/youtube/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/youtube/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; youtube 0RKpf3rK57I &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/0RKpf3rK57I?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;</description></item><item><title>CSV Table</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/csvtable/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/csvtable/</guid><description>&lt;p&gt;The &lt;code&gt;csvtable&lt;/code&gt; shortcode reads &lt;code&gt;static/data/csv/keys-backup.csv&lt;/code&gt; and renders a permissions table grouped by category. Each role column shows a check or cross indicator.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; csvtable &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The CSV file must be located at &lt;code&gt;static/data/csv/keys-backup.csv&lt;/code&gt; and contain columns for Category, Function, Feature, and various role names.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;



 


 
 



 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 &lt;h2&gt;Infrastructure Permissions&lt;/h2&gt;
 &lt;table class="csvtable td-initial"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 
 
 
 
 
 &lt;th&gt;Permission&lt;/th&gt;
 
 
 
 
 
 &lt;th&gt;Description&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/workspace-roles"&gt;Workspace Admin&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/team-roles"&gt;Team Admin&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/organization-roles"&gt;Organization Admin&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/#provider-admin-role"&gt;Provider Admin&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/user-role"&gt;User Role&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/"&gt;Support Role&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/"&gt;Audit Role&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 
 
 
 
 
 
 &lt;tr&gt;
 
 
 
 
 
 
 &lt;td&gt;
 
 Create cluster
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 Allows creating SKS clusters
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 
 
 
 &lt;tr&gt;
 
 
 
 
 
 
 &lt;td&gt;
 
 Delete cluster
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 Allows deleting SKS clusters
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 
 
 
 
 &lt;/tbody&gt;
 &lt;/table&gt;
 
 &lt;h2&gt;Security Permissions&lt;/h2&gt;
 &lt;table class="csvtable td-initial"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 
 
 
 
 
 &lt;th&gt;Permission&lt;/th&gt;
 
 
 
 
 
 &lt;th&gt;Description&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/workspace-roles"&gt;Workspace Admin&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/team-roles"&gt;Team Admin&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/organization-roles"&gt;Organization Admin&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/#provider-admin-role"&gt;Provider Admin&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/user-role"&gt;User Role&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/"&gt;Support Role&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;th&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/"&gt;Audit Role&lt;/a&gt;&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 
 
 
 
 
 
 
 
 
 
 &lt;tr&gt;
 
 
 
 
 
 
 &lt;td&gt;
 
 Rotate API key
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 Allows rotating API keys
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ❌
 
 
 &lt;/td&gt;
 
 
 
 
 &lt;td&gt;
 
 
 ✅
 
 
 &lt;/td&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 
 
 &lt;/tbody&gt;
 &lt;/table&gt;</description></item><item><title>PDF</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/pdf/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/pdf/</guid><description>&lt;p&gt;Embeds a PDF file in a responsive iframe.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/pdf &amp;#34;sample.pdf&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;positional&lt;/td&gt;
 &lt;td&gt;Path to the PDF file (page resource, asset, or absolute path)&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="hextra-pdf ratio" style="--bs-aspect-ratio: 141.4%;"&gt;
 &lt;iframe
 src="sample.pdf"
 frameborder="0"
 title="PDF viewer"
 loading="lazy"
 &gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>X (Twitter)</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/x/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/x/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; x user=&amp;#34;SanDiegoZoo&amp;#34; id=&amp;#34;1453110110599868418&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;Owl bet you&amp;#39;ll lose this staring contest 🦉 &lt;a href="https://t.co/eJh4f2zncC"&gt;pic.twitter.com/eJh4f2zncC&lt;/a&gt;&lt;/p&gt;&amp;mdash; San Diego Zoo Wildlife Alliance (@sandiegozoo) &lt;a href="https://twitter.com/sandiegozoo/status/1453110110599868418?ref_src=twsrc%5Etfw"&gt;October 26, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;</description></item><item><title>CSV Table Roles</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/csvtable-roles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/csvtable-roles/</guid><description>&lt;p&gt;The &lt;code&gt;csvtable-roles&lt;/code&gt; shortcode reads &lt;code&gt;static/data/csv/keys-backup.csv&lt;/code&gt; and renders per-role permission tables showing which functions each role has access to.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; csvtable-roles &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The CSV file must be located at &lt;code&gt;static/data/csv/keys-backup.csv&lt;/code&gt; with the same format used by &lt;code&gt;csvtable&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
 
 
 

 
 
 
 

 
 
 

 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 

 
 
 
 
 

 
 
 
 
 

 
 
 

 
 &lt;div class="csvtable-div"&gt;
 
 
 
 
 
 &lt;h2&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/team-roles"&gt;Team Admin Role&lt;/a&gt;&lt;/h2&gt;
 &lt;table class="csvtable td-initial"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 
 
 
 
 
 &lt;th&gt;Permission&lt;/th&gt;
 
 
 
 
 
 
 &lt;th&gt;Description&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 &lt;tr&gt;
 &lt;td&gt;Create cluster &lt;/td&gt;
 &lt;td&gt;Allows creating SKS clusters&lt;/td&gt;
 &lt;/tr&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 &lt;tr&gt;
 &lt;td&gt;Rotate API key &lt;/td&gt;
 &lt;td&gt;Allows rotating API keys&lt;/td&gt;
 &lt;/tr&gt;
 
 
 
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/div&gt;
 
 &lt;div class="csvtable-div"&gt;
 
 
 
 
 
 &lt;h2&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/organization-roles"&gt;Organization Admin Role&lt;/a&gt;&lt;/h2&gt;
 &lt;table class="csvtable td-initial"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 
 
 
 
 
 &lt;th&gt;Permission&lt;/th&gt;
 
 
 
 
 
 
 &lt;th&gt;Description&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 &lt;tr&gt;
 &lt;td&gt;Create cluster &lt;/td&gt;
 &lt;td&gt;Allows creating SKS clusters&lt;/td&gt;
 &lt;/tr&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 &lt;tr&gt;
 &lt;td&gt;Delete cluster &lt;/td&gt;
 &lt;td&gt;Allows deleting SKS clusters&lt;/td&gt;
 &lt;/tr&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 &lt;tr&gt;
 &lt;td&gt;Rotate API key &lt;/td&gt;
 &lt;td&gt;Allows rotating API keys&lt;/td&gt;
 &lt;/tr&gt;
 
 
 
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/div&gt;
 
 &lt;div class="csvtable-div"&gt;
 
 
 
 
 
 &lt;h2&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/#provider-admin-role"&gt;Provider Admin Role&lt;/a&gt;&lt;/h2&gt;
 &lt;table class="csvtable td-initial"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 
 
 
 
 
 &lt;th&gt;Permission&lt;/th&gt;
 
 
 
 
 
 
 &lt;th&gt;Description&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 &lt;tr&gt;
 &lt;td&gt;Rotate API key &lt;/td&gt;
 &lt;td&gt;Allows rotating API keys&lt;/td&gt;
 &lt;/tr&gt;
 
 
 
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/div&gt;
 
 &lt;div class="csvtable-div"&gt;
 
 
 
 
 
 &lt;h2&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/user-role"&gt;User Role Role&lt;/a&gt;&lt;/h2&gt;
 &lt;table class="csvtable td-initial"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 
 
 
 
 
 &lt;th&gt;Permission&lt;/th&gt;
 
 
 
 
 
 
 &lt;th&gt;Description&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 &lt;tr&gt;
 &lt;td&gt;Create cluster &lt;/td&gt;
 &lt;td&gt;Allows creating SKS clusters&lt;/td&gt;
 &lt;/tr&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/div&gt;
 
 &lt;div class="csvtable-div"&gt;
 
 
 
 
 
 &lt;h2&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/support-role"&gt;Support Role Role&lt;/a&gt;&lt;/h2&gt;
 &lt;table class="csvtable td-initial"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 
 
 
 
 
 &lt;th&gt;Permission&lt;/th&gt;
 
 
 
 
 
 
 &lt;th&gt;Description&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/div&gt;
 
 &lt;div class="csvtable-div"&gt;
 
 
 
 
 
 &lt;h2&gt;&lt;a href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/cloud/security/roles/audit-role"&gt;Audit Role Role&lt;/a&gt;&lt;/h2&gt;
 &lt;table class="csvtable td-initial"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 
 
 
 
 
 &lt;th&gt;Permission&lt;/th&gt;
 
 
 
 
 
 
 &lt;th&gt;Description&lt;/th&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 &lt;tr&gt;
 &lt;td&gt;Rotate API key &lt;/td&gt;
 &lt;td&gt;Allows rotating API keys&lt;/td&gt;
 &lt;/tr&gt;
 
 
 
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/div&gt;</description></item><item><title>Include</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/include/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/include/</guid><description>&lt;p&gt;Includes the rendered content of another page inline. This shortcode &lt;strong&gt;must&lt;/strong&gt; use the percent-delimiter syntax.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% hextra/include &amp;#34;include-snippet&amp;#34; %}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;positional&lt;/td&gt;
 &lt;td&gt;Page path relative to the content directory&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example (included from a separate page):&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This paragraph was pulled in from a separate page using the &lt;code&gt;hextra/include&lt;/code&gt; shortcode. It demonstrates how you can compose content from multiple sources into a single page.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Included content supports &lt;strong&gt;full Markdown&lt;/strong&gt; formatting.&lt;/li&gt;
&lt;li&gt;Lists, &lt;code&gt;code&lt;/code&gt;, and &lt;em&gt;emphasis&lt;/em&gt; all render correctly.
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Instagram</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/instagram/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hugo-builtins/instagram/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; instagram CxOWiQNP2MO &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote
 class="instagram-media"
 data-instgrm-captioned
 data-instgrm-permalink="https://www.instagram.com/p/CxOWiQNP2MO"
 data-instgrm-version="14"
 style="
 background: #fff;
 border: 0;
 border-radius: 3px;
 box-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.5), 0 1px 10px 0 rgba(0, 0, 0, 0.15);
 margin: 1px;
 max-width: 540px;
 min-width: 326px;
 padding: 0;
 width: 99.375%;
 width: -webkit-calc(100% - 2px);
 width: calc(100% - 2px);
 "
 &gt;
 &lt;div style="padding: 16px"&gt;
 &lt;a
 href="https://www.instagram.com/p/CxOWiQNP2MO"
 style="
 background: #ffffff;
 line-height: 0;
 padding: 0 0;
 text-align: center;
 text-decoration: none;
 width: 100%;
 "
 target="_blank"
 &gt;
 &lt;div style="display: flex; flex-direction: row; align-items: center"&gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 50%;
 flex-grow: 0;
 height: 40px;
 margin-right: 14px;
 width: 40px;
 "
 &gt;&lt;/div&gt;
 &lt;div
 style="
 display: flex;
 flex-direction: column;
 flex-grow: 1;
 justify-content: center;
 "
 &gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 4px;
 flex-grow: 0;
 height: 14px;
 margin-bottom: 6px;
 width: 100px;
 "
 &gt;&lt;/div&gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 4px;
 flex-grow: 0;
 height: 14px;
 width: 60px;
 "
 &gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div style="padding: 19% 0"&gt;&lt;/div&gt;
 &lt;div
 style="display: block; height: 50px; margin: 0 auto 12px; width: 50px"
 &gt;
 &lt;svg
 width="50px"
 height="50px"
 viewBox="0 0 60 60"
 version="1.1"
 xmlns="https://www.w3.org/2000/svg"
 xmlns:xlink="https://www.w3.org/1999/xlink"
 &gt;
 &lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;
 &lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;
 &lt;g&gt;
 &lt;path
 d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"
 &gt;&lt;/path&gt;
 &lt;/g&gt;
 &lt;/g&gt;
 &lt;/g&gt;
 &lt;/svg&gt;
 &lt;/div&gt;
 &lt;div style="padding-top: 8px"&gt;
 &lt;div
 style="
 color: #3897f0;
 font-family: Arial, sans-serif;
 font-size: 14px;
 font-style: normal;
 font-weight: 550;
 line-height: 18px;
 "
 &gt;
 View this post on Instagram
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div style="padding: 12.5% 0"&gt;&lt;/div&gt;
 &lt;div
 style="
 display: flex;
 flex-direction: row;
 margin-bottom: 14px;
 align-items: center;
 "
 &gt;
 &lt;div&gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 50%;
 height: 12.5px;
 width: 12.5px;
 transform: translateX(0px) translateY(7px);
 "
 &gt;&lt;/div&gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 height: 12.5px;
 transform: rotate(-45deg) translateX(3px) translateY(1px);
 width: 12.5px;
 flex-grow: 0;
 margin-right: 14px;
 margin-left: 2px;
 "
 &gt;&lt;/div&gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 50%;
 height: 12.5px;
 width: 12.5px;
 transform: translateX(9px) translateY(-18px);
 "
 &gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div style="margin-left: 8px"&gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 50%;
 flex-grow: 0;
 height: 20px;
 width: 20px;
 "
 &gt;&lt;/div&gt;
 &lt;div
 style="
 width: 0;
 height: 0;
 border-top: 2px solid transparent;
 border-left: 6px solid #f4f4f4;
 border-bottom: 2px solid transparent;
 transform: translateX(16px) translateY(-4px) rotate(30deg);
 "
 &gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div style="margin-left: auto"&gt;
 &lt;div
 style="
 width: 0px;
 border-top: 8px solid #f4f4f4;
 border-right: 8px solid transparent;
 transform: translateY(16px);
 "
 &gt;&lt;/div&gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 flex-grow: 0;
 height: 12px;
 width: 16px;
 transform: translateY(-4px);
 "
 &gt;&lt;/div&gt;
 &lt;div
 style="
 width: 0;
 height: 0;
 border-top: 8px solid #f4f4f4;
 border-left: 8px solid transparent;
 transform: translateY(-4px) translateX(8px);
 "
 &gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div
 style="
 display: flex;
 flex-direction: column;
 flex-grow: 1;
 justify-content: center;
 margin-bottom: 24px;
 "
 &gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 4px;
 flex-grow: 0;
 height: 14px;
 margin-bottom: 6px;
 width: 224px;
 "
 &gt;&lt;/div&gt;
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 4px;
 flex-grow: 0;
 height: 14px;
 width: 144px;
 "
 &gt;&lt;/div&gt;&lt;/div
 &gt;&lt;/a&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;&lt;script async src="https://www.instagram.com/embed.js"&gt;&lt;/script&gt;</description></item><item><title>Lab Intro</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/lab-intro/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/lab-intro/</guid><description>&lt;p&gt;The &lt;code&gt;lab-intro&lt;/code&gt; shortcode captures its inner content and stores it on the page scratch pad under the key &lt;code&gt;lab_intro&lt;/code&gt;. This allows layout templates to retrieve and display lab introduction text in a dedicated section of the page.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% lab-intro %}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Welcome to this hands-on lab. In this exercise, you will learn how to deploy a cloud native application using Kubernetes. By the end of this lab, you will be able to create a cluster, deploy workloads, and expose services.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% /lab-intro %}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Term</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/term/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/term/</guid><description>&lt;p&gt;Wraps a glossary term in an &lt;code&gt;&amp;lt;abbr&amp;gt;&lt;/code&gt; tooltip. Hover over the highlighted terms below to see their definitions. Definitions are sourced from &lt;code&gt;data/&amp;lt;lang&amp;gt;/termbase.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/term &amp;#34;API&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;entry&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Glossary abbreviation or full term (named or positional)&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;To use this shortcode, create a termbase data file at &lt;code&gt;data/en/termbase.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;abbr&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;API&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;term&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Application Programming Interface&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;definition&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;A set of protocols for building software.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hugo is an SSG
 that can be controlled via its CLI
. Configuration is written in YAML
 and sites are commonly served through a CDN
. Most projects use a CI/CD
 pipeline to deploy changes automatically. The theme exposes a rich API
 of shortcodes and partials.&lt;/p&gt;</description></item><item><title>Jupyter</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/jupyter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/jupyter/</guid><description>&lt;p&gt;Renders a Jupyter Notebook (&lt;code&gt;.ipynb&lt;/code&gt;) as code blocks and Markdown cells.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{% hextra/jupyter &amp;#34;example-notebook.ipynb&amp;#34; %}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;positional&lt;/td&gt;
 &lt;td&gt;Path or URL to the &lt;code&gt;.ipynb&lt;/code&gt; file&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;allowUnsafeHTML&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set to &lt;code&gt;&amp;quot;true&amp;quot;&lt;/code&gt; to render raw HTML from notebook outputs&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# A simple Python greeting&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;message &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Hello from the Academy!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(message)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- raw HTML omitted --&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Generate Fibonacci numbers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;fibonacci&lt;/span&gt;(n):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; a, b &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result &lt;span style="color:#f92672"&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; _ &lt;span style="color:#f92672"&gt;in&lt;/span&gt; range(n):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; a, b &lt;span style="color:#f92672"&gt;=&lt;/span&gt; b, a &lt;span style="color:#f92672"&gt;+&lt;/span&gt; b
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result&lt;span style="color:#f92672"&gt;.&lt;/span&gt;append(a)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; result
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fibonacci(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- raw HTML omitted --&gt;</description></item><item><title>Asciinema</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/asciinema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/hextra/asciinema/</guid><description>&lt;p&gt;Embeds an &lt;a href="https://asciinema.org/"&gt;asciinema&lt;/a&gt; terminal recording player. The player CSS/JS is loaded from CDN automatically when this shortcode is used.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; hextra/asciinema file=&amp;#34;demo.cast&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Path or URL to the &lt;code&gt;.cast&lt;/code&gt; file (also accepts positional param)&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;theme&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Player color theme&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;asciinema&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;speed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Playback speed multiplier&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;autoplay&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Auto-play on load&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;loop&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Loop playback&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;poster&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Poster/thumbnail specification&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;markers&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Comma-separated time markers (e.g., &lt;code&gt;&amp;quot;5:Intro,10:Demo&amp;quot;&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Code</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/code/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/code/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This is a code block.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Inline code like &lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt; is supported.&lt;/p&gt;</description></item><item><title>Embedded Design</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/embedded-design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/embedded-design/</guid><description>&lt;p&gt;The &lt;code&gt;meshery-design-embed&lt;/code&gt; shortcode renders an interactive Meshery design diagram.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; meshery-design-embed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; id=&amp;#34;embedded-design-c811e9f4-2522-4eb6-b775-7475545356d8&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; src=&amp;#34;./embedded-design-deploy-meshery-using-meshery.js&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The rendered output is shown below:&lt;/p&gt;






















&lt;style&gt;
.meshery-embed-container {
 border: 1px solid #eee;
 border-radius: 4px;
 margin: 1rem auto;
 box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.meshery-embed-container.full {
 width: 80%;
 height: 30rem;
}
.meshery-embed-container.half {
 width: 50%;
 height: 25rem;
}
.meshery-embed-container .cy-container {
 width: 100%;
 height: 100%;
}

&lt;/style&gt;


&lt;div style="display: flex; flex-direction: column; align-items: center; gap: 0.5rem;"&gt;
&lt;div
 id="embedded-design-c811e9f4-2522-4eb6-b775-7475545356d8"class="meshery-embed-container full"&gt;&lt;/div&gt;

&lt;a href="https://cloud.layer5.io/catalog/content/design/c811e9f4-2522-4eb6-b775-7475545356d8" target="_blank" rel="noopener noreferrer"&gt;
 Open Design
&lt;/a&gt;

&lt;/div&gt;


&lt;script src="../embedded-design-deploy-meshery-using-meshery.js" type="module"&gt;&lt;/script&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://docs.layer5.io/kanvas/designer/embedding-designs/"&gt;Learn more&lt;/a&gt; about embedded designs.&lt;/p&gt;</description></item><item><title>Footnotes</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/footnotes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/footnotes/</guid><description>&lt;p&gt;This is a superscript number for your footnote. &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;This is a footnote.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Image</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/image/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/image/</guid><description>&lt;div class="image-container" style="text-align: center; margin: 1rem 0;"&gt;
 &lt;img src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/examples/images/exoscale-icon.png" alt="Exoscale icon displayed with the academy-theme image shortcode" title="Theme image shortcode" style="width: 140px; border-radius: 12% !important;" data-modal="true" onclick="openModal(this)" /&gt;
 &lt;p style="text-align: center; margin-top: 0.5rem;"&gt;Theme image shortcode&lt;/p&gt;
 &lt;p&gt;Exoscale icon displayed with the academy-theme image shortcode&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Image Styling</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/image-styling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/image-styling/</guid><description>&lt;p&gt;By default, Markdown images are written like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;![&lt;span style="color:#f92672"&gt;Alt text&lt;/span&gt;](&lt;span style="color:#a6e22e"&gt;/path/to/image.png&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;These are rendered with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;max-width: 70%&lt;/code&gt; of the viewport&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max-height: 80vh&lt;/code&gt; of the viewport height&lt;/li&gt;
&lt;li&gt;centered block layout&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This default styling works well for most landscape (horizontal) images. However, if an image is very tall, narrow, or otherwise looks awkward, you can override the default by embedding raw HTML and specifying a custom size:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;./images/example.png&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Example description&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;max-width: 40vw; max-height: 60vh; display: block; margin: 1rem auto;&amp;#34;&lt;/span&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Imgproc</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/imgproc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/imgproc/</guid><description>&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 170px"&gt;
&lt;img class="card-img-top" src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/imgproc/logo_hu_92cbc4e735e8d6db.png" width="160" height="160"&gt;
&lt;figcaption class="card-body px-0 pt-2 pb-0"&gt;
&lt;p class="card-text"&gt;

This image was processed from a page resource using the Docsy `imgproc` shortcode.
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Lists</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/lists/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/lists/</guid><description>&lt;p&gt;Unordered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Liverpool F.C.&lt;/li&gt;
&lt;li&gt;Chelsea F.C.&lt;/li&gt;
&lt;li&gt;Manchester United F.C.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ordered:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Michael Brecker&lt;/li&gt;
&lt;li&gt;Seamus Blake&lt;/li&gt;
&lt;li&gt;Branford Marsalis&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Task list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Create a Hugo theme&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Add task lists to it&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Take a vacation&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Local Video</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/local-video/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/local-video/</guid><description>&lt;p&gt;The &lt;code&gt;local-video&lt;/code&gt; shortcode embeds an HTML5 &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; player for a locally hosted video file.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; local-video src=&amp;#34;/path/to/video.mp4&amp;#34; muted=&amp;#34;true&amp;#34; autoplay=&amp;#34;true&amp;#34; loop=&amp;#34;true&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;src&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Path to the video file&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(required)&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;muted&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Mute the video&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;autoplay&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Auto-play the video&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;loop&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Loop playback&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;






&lt;div class="alert alert-custom" style="border-color: #3772ff;" role="alert"&gt;
 &lt;h4 class="alert-heading" style="color: #3772ff;"&gt;Sample video not included&lt;/h4&gt;
 
 This shortcode requires a locally hosted &lt;code&gt;.mp4&lt;/code&gt; video file. Add your video to &lt;code&gt;static/examples/&lt;/code&gt; and update the &lt;code&gt;src&lt;/code&gt; path.
 
&lt;/div&gt;</description></item><item><title>Markdown Basics</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/markdown-basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/markdown-basics/</guid><description>&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href="https://gohugo.io"&gt;Links&lt;/a&gt; have no underline (unless hovered).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Blockquotes are lighter with a left border.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Meshery Design Embed</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/meshery-design-embed/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/meshery-design-embed/</guid><description>&lt;style&gt;
.meshery-embed-container {
 border: 1px solid #eee;
 border-radius: 4px;
 margin: 1rem auto;
 box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.meshery-embed-container.full {
 width: 80%;
 height: 30rem;
}
.meshery-embed-container.half {
 width: 50%;
 height: 25rem;
}
.meshery-embed-container .cy-container {
 width: 100%;
 height: 100%;
}

&lt;/style&gt;


&lt;div style="display: flex; flex-direction: column; align-items: center; gap: 0.5rem;"&gt;
&lt;div
 id="embedded-design-c811e9f4-2522-4eb6-b775-7475545356d8"class="meshery-embed-container full"&gt;&lt;/div&gt;

&lt;a href="https://cloud.layer5.io/catalog/content/design/c811e9f4-2522-4eb6-b775-7475545356d8" target="_blank" rel="noopener noreferrer"&gt;
 Open Design
&lt;/a&gt;

&lt;/div&gt;


&lt;script src="./embedded-design-deploy-meshery-using-meshery.js" type="module"&gt;&lt;/script&gt;</description></item><item><title>Readfile</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/readfile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/readfile/</guid><description>&lt;p&gt;The &lt;code&gt;readfile&lt;/code&gt; shortcode includes the contents of a file inline. When &lt;code&gt;code=&amp;quot;true&amp;quot;&lt;/code&gt; is set, the contents are rendered inside a code block.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; readfile file=&amp;#34;/static/examples/openapi/example.json&amp;#34; code=&amp;#34;true&amp;#34; lang=&amp;#34;json&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

 




	






 






 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;openapi&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;3.0.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;info&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Example Academy API&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;1.0.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;A sample API specification for demonstrating the Redoc and SwaggerUI shortcodes.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;paths&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;/api/courses&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;get&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;List courses&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Returns a list of all available courses.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;responses&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;200&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;A list of courses.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;schema&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;array&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;items&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;$ref&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;#/components/schemas/Course&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;/api/courses/{id}&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;get&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Get a course&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Returns a single course by ID.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;parameters&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;in&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;path&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;required&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;schema&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;string&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;responses&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;200&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;A course object.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;schema&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;$ref&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;#/components/schemas/Course&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;404&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Course not found.&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;components&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;schemas&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Course&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;object&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;string&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;example&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;cloud-101&amp;#34;&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;string&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;example&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Cloud Fundamentals&amp;#34;&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;string&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;example&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;An introduction to cloud computing concepts.&amp;#34;&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;duration&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;string&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;example&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;2 hours&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Redoc</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/redoc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/redoc/</guid><description>&lt;style&gt;
 #redoc input { height: 64px; }
 #redoc span[type="put"], span[type="get"], span[type="delete"], span[type="post"], span[type="options"], span[type="patch"], span[type="basic"], span[type="link"], span[type="head"] {
 border-radius: 4px;
 }
 #redoc h2 { margin-top: 0px;}
 &lt;/style&gt;
 
 
 &lt;style&gt;
 #myBtn {
 display: none;
 position: fixed;
 bottom: 20px;
 right: 30px;
 z-index: 99;
 font-size: 18px;
 border: none;
 outline: none;
 background-color: #30638E;
 color: white;
 cursor: pointer;
 padding: 15px;
 border-radius: 4px;
 }
 
 #myBtn:hover {
 background-color: #555;
 }
 &lt;/style&gt;
 &lt;button onclick="topFunction()" id="myBtn" title="Go to top"&gt;Top&lt;/button&gt;
 &lt;script&gt;
 
 var mybutton = document.getElementById("myBtn");
 
 
 window.onscroll = function() {scrollFunction()};
 
 function scrollFunction() {
 if (document.body.scrollTop &gt; 20 || document.documentElement.scrollTop &gt; 20) {
 mybutton.style.display = "block";
 } else {
 mybutton.style.display = "none";
 }
 }
 
 
 function topFunction() {
 document.body.scrollTop = 0;
 document.documentElement.scrollTop = 0;
 }
 &lt;/script&gt;
 

 
 &lt;style&gt;
 body {
 margin: 0;
 padding: 0;
 }
 &lt;/style&gt;

 
 &lt;div id="redoc-container"&gt;
 &lt;redoc spec-url='https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/examples/openapi/example.json' hide-hostname="true" suppress-warnings="true" lazy-rendering native-scrollbars scroll-y-offset=".js-navbar-scroll" ZgotmplZ&gt;&lt;/redoc&gt;
 &lt;/div&gt;
 
 &lt;script src="https://cdn.jsdelivr.net/npm/redoc@latest/bundles/redoc.standalone.js"&gt;&lt;/script&gt;</description></item><item><title>Responsive Images</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/responsive-images/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/responsive-images/</guid><description>&lt;p&gt;Small images should be shown at their actual size.&lt;/p&gt;
&lt;p&gt;






&lt;div class="md__image"&gt;
 &lt;img id="[208 306 32 433 385 348]" src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/assets/icons/layer5-academy-icon.svg" onclick="openModal(this.id)" alt="Spruce shoot close-up" 
 class="md-image-responsive" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Large images should always scale down and fit in the content container.&lt;/p&gt;
&lt;p&gt;






&lt;div class="md__image"&gt;
 &lt;img id="[270 392 398 452 472 156]" src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/assets/icons/layer5-academy-icon.svg" onclick="openModal(this.id)" alt="Large spruce shoot photo" 
 class="md-image-responsive" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/audit/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/audit/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;em&gt;controlplane&lt;/em&gt; node, create the file &lt;em&gt;/etc/kubernetes/audit-policy.yaml&lt;/em&gt; with the following content:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Edit the API Server Pod specification (in the file &lt;em&gt;/etc/kubernetes/manifests/kube-apiserver.yaml&lt;/em&gt;) by adding the following two volume definitions:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- name: audit
 hostPath:
 path: /etc/kubernetes/audit-policy.yaml
 type: File
- name: audit-log
 hostPath:
 path: /var/log/kubernetes/audit/
 type: DirectoryOrCreate
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and also add the following entries to the &lt;em&gt;volumeMounts&lt;/em&gt; field of the container:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- mountPath: /etc/kubernetes/audit-policy.yaml
 name: audit
 readOnly: true
- mountPath: /var/log/kubernetes/audit/
 name: audit-log
 readOnly: false
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start a simple Pod:&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/cert/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/cert/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Check the current certificate expiration dates&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Run the following command from the control plane node.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo kubeadm certs check-expiration
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command shows all certificates managed by kubeadm and their expiration dates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;admin.conf (client certificate for kubectl)&lt;/li&gt;
&lt;li&gt;apiserver (API server serving certificate)&lt;/li&gt;
&lt;li&gt;apiserver-etcd-client (API server to etcd client certificate)&lt;/li&gt;
&lt;li&gt;apiserver-kubelet-client (API server to kubelet client certificate)&lt;/li&gt;
&lt;li&gt;controller-manager.conf (controller manager client certificate)&lt;/li&gt;
&lt;li&gt;etcd-healthcheck-client (etcd health check client certificate)&lt;/li&gt;
&lt;li&gt;etcd-peer (etcd peer certificate for cluster communication)&lt;/li&gt;
&lt;li&gt;etcd-server (etcd server certificate)&lt;/li&gt;
&lt;li&gt;front-proxy-client (front proxy client certificate)&lt;/li&gt;
&lt;li&gt;scheduler.conf (scheduler client certificate)&lt;/li&gt;
&lt;li&gt;super-admin.conf (client certificate bypassing authorization layer)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="hextra-callout alert alert-warning d-flex align-items-start" role="alert"&gt;
 &lt;div class="flex-shrink-0 me-2"&gt;&lt;svg height="1.2em" class="d-inline-block align-middle" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/&gt;&lt;/svg&gt;&lt;/div&gt;
 &lt;div class="flex-grow-1 hextra-callout-content"&gt;&lt;ul&gt;
&lt;li&gt;By default, kubeadm certificates are valid for 1 year. You should renew them before they expire to avoid cluster outages.&lt;/li&gt;
&lt;li&gt;Certificate are automatically renewed during each upgrade of the control plane.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;ol start="2"&gt;
&lt;li&gt;Renew the certificates using kubeadm&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can renew all certificates at once.&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/drain/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/drain/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Create a Deployment with 6 replicas of Pods based on the nginx:1.20 image&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k create deploy www --image=nginx:1.20 --replicas=4
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;Where are the pods scheduled ?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The pods are splitted between worker1 and worker2 (because master node has a NoScheduled taint that the pods do not tolerate)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
www-644dfdf68b-6mk2w 1/1 Running 0 33s 10.38.0.1 worker2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
www-644dfdf68b-crdjl 1/1 Running 0 33s 10.32.0.6 worker1 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
www-644dfdf68b-nhm7b 1/1 Running 0 33s 10.32.0.2 worker1 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
www-644dfdf68b-tsw84 1/1 Running 0 33s 10.38.0.5 worker2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Drain the worker1 node. What happened ?&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k drain worker1 --ignore-daemonsets
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The application pods have been evicted from worker1 and are now all running on worker2&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/metrics/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/metrics/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Install the metrics server (&lt;a href="https://github.com/kubernetes-sigs/metrics-server"&gt;https://github.com/kubernetes-sigs/metrics-server&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;Verify it&amp;rsquo;s not running correctly&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Trying to get the Nodes or Pods metrics should return an error&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k top node
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;k top pod
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get pods.metrics.k8s.io)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Checking the logs of the metrics-server pod will provide additional details&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/node/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/node/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Create a Deployment named &lt;em&gt;web-app&lt;/em&gt; with 6 replicas using nginx:1.26 image&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl create deployment web-app --image&lt;span style="color:#f92672"&gt;=&lt;/span&gt;nginx:1.26 --replicas&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Create a DaemonSet named &lt;em&gt;monitoring&lt;/em&gt; using nginx:alpine image&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl create -f - &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;apiVersion: apps/v1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;kind: DaemonSet
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; name: monitoring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; selector:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; matchLabels:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; app: monitoring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; template:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; labels:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; app: monitoring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; containers:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - name: monitoring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; image: nginx:alpine
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - containerPort: 80
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;Check how Pods are distributed across all Nodes&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -o wide
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should see Pods are distributed across worker Nodes, and one monitoring Pod per Node.&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge1/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge1/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you try to list the Nodes, you&amp;rsquo;ll get an error similar to the following one:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get no
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The connection to the server 192.168.64.17:6443 was refused - did you specify the right host or port?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Identification&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As kubectl targets the API Server, first make sure this one is running fine.&lt;/p&gt;
&lt;p&gt;On the controlplane Node, check the APIServer&amp;rsquo;s logs in &lt;em&gt;/var/log/syslog&lt;/em&gt;. You should see that the API Server cannot start correctly:&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge2/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge2/solution/</guid><description>&lt;p&gt;The worker1 has the &lt;em&gt;NotReady&lt;/em&gt; status&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get no
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME STATUS ROLES AGE VERSION
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;master Ready control-plane,master 2d16h v1.32.7
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;worker1 NotReady &amp;lt;none&amp;gt; 2d16h v1.32.7
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;worker2 Ready &amp;lt;none&amp;gt; 2d16h v1.32.7
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The description of the node provide additional information&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl describe node worker1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type Reason Age From Message
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ---- ------ ---- ---- -------
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal RegisteredNode 57m node-controller Node worker1 event: Registered Node worker1 in Controller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeNotReady 25m node-controller Node worker1 status is now: NodeNotReady
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Starting 24m kubelet Starting kubelet.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeReady 24m kubelet Node worker1 status is now: NodeReady
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeAllocatableEnforced 24m kubelet Updated Node Allocatable limit across pods
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeHasSufficientMemory 24m &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 24m&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Node worker1 status is now: NodeHasSufficientMemory
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeHasNoDiskPressure 24m &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 24m&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Node worker1 status is now: NodeHasNoDiskPressure
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeHasSufficientPID 24m &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 24m&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Node worker1 status is now: NodeHasSufficientPID
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal RegisteredNode 22m node-controller Node worker1 event: Registered Node worker1 in Controller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal RegisteredNode 96s node-controller Node worker1 event: Registered Node worker1 in Controller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeNotReady 26s node-controller Node worker1 status is now: NodeNotReady
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Node in &lt;code&gt;NodeNotReady&lt;/code&gt; status may indicate kubelet is having trouble. We have the confirmation checking the kubelet status with systemctl on this specific Node.&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge3/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge3/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Let&amp;rsquo;s create a new Pod and expose it with a ClusterIP Service&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl run nginx --image&lt;span style="color:#f92672"&gt;=&lt;/span&gt;nginx:1.20 --port &lt;span style="color:#ae81ff"&gt;80&lt;/span&gt; --expose
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s new get an interactive shell in an Alpine based Pod&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl run -ti --rm debug --image&lt;span style="color:#f92672"&gt;=&lt;/span&gt;alpine -- sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We cannot reach the nginx Pod from the debug one:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/ &lt;span style="color:#75715e"&gt;# wget http://nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget: bad address &lt;span style="color:#e6db74"&gt;&amp;#39;nginx&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Going one step further we can see the name resolution is not working fine:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/ &lt;span style="color:#75715e"&gt;# nslookup nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;;; connection timed out; no servers could be reached
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Checking the cluster&amp;rsquo;s internal DNS&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get deploy -n kube-system
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY UP-TO-DATE AVAILABLE AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;coredns 0/0 &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 2d17h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Seems like there is no replica running for the dns (should be 2 by default)&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge4/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge4/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;List the resources in &lt;em&gt;app2&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get po,svc -n app2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY STATUS RESTARTS AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod/nginx 1/1 Running &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 8s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME TYPE CLUSTER-IP EXTERNAL-IP PORT&lt;span style="color:#f92672"&gt;(&lt;/span&gt;S&lt;span style="color:#f92672"&gt;)&lt;/span&gt; AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;service/nginx NodePort 10.106.164.238 &amp;lt;none&amp;gt; 80:30000/TCP 8s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;From a worker node, try to reach the nginx Pod&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ curl localhost:30000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl: &lt;span style="color:#f92672"&gt;(&lt;/span&gt;7&lt;span style="color:#f92672"&gt;)&lt;/span&gt; Failed to connect to localhost port 30000: Connection refused
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Check the service&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl describe svc nginx -n app2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Name: nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Namespace: app2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Labels: &amp;lt;none&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Annotations: &amp;lt;none&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Selector: app&lt;span style="color:#f92672"&gt;=&lt;/span&gt;nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type: NodePort
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IP Family Policy: SingleStack
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IP Families: IPv4
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IP: 10.106.164.238
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IPs: 10.106.164.238
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Port: &amp;lt;unset&amp;gt; 80/TCP
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TargetPort: 80/TCP
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NodePort: &amp;lt;unset&amp;gt; 30000/TCP
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Endpoints: &amp;lt;none&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Session Affinity: None
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;External Traffic Policy: Cluster
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events: &amp;lt;none&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The list of &lt;em&gt;Endpoints&lt;/em&gt; is empty, that is surely a problem. The Service&amp;rsquo;s selector is &lt;em&gt;app: nginx&lt;/em&gt;, let&amp;rsquo;s see the content of the Pod&amp;rsquo;s labels.&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge5/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge5/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The single replica is not running&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get deploy,po -n app1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY UP-TO-DATE AVAILABLE AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;deployment.apps/nginx 0/1 &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 79m
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY STATUS RESTARTS AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod/nginx-7b4b5bbf6f-dth6d 0/1 ImagePullBackOff &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 79m
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The description of the nginx Pod gives additional information&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl describe po pod/nginx-7b4b5bbf6f-dth6d
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type Reason Age From Message
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ---- ------ ---- ---- -------
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal BackOff 16s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x351 over 80m&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Back-off pulling image &lt;span style="color:#e6db74"&gt;&amp;#34;ngnix:1.26&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Fix it&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Edit the Deployment and replace the image name &lt;em&gt;ngnix:1.26&lt;/em&gt; with &lt;em&gt;nginx:1.26&lt;/em&gt;, a little typo can have big consequences :)&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge6/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge6/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Try to create a pod:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl run ghost --image&lt;span style="color:#f92672"&gt;=&lt;/span&gt;ghost:4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verify it is running:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get po
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY STATUS RESTARTS AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ghost 0/1 Pending &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 10s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There is definitely something wrong as the pod remains in pending status.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl describe po ghost
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type Reason Age From Message
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ---- ------ ---- ---- -------
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Warning FailedScheduling 4s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 72s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; default-scheduler 0/3 nodes are available: &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; node&lt;span style="color:#f92672"&gt;(&lt;/span&gt;s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; had taint &lt;span style="color:#f92672"&gt;{&lt;/span&gt;app: secure&lt;span style="color:#f92672"&gt;}&lt;/span&gt;, that the pod didn&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t tolerate.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It seems the 3 nodes have a taint that prevents the pod from being scheduled. We can see there are 2 taints on the master:&lt;/p&gt;</description></item><item><title>Solution</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge7/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge7/solution/</guid><description>&lt;p&gt;Observe the behavior of the pod you will notice the pod is automatically restarted after a few tens of seconds:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get po -w
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY STATUS RESTARTS AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;demo 1/1 Running &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 2s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;demo 1/1 Running &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;1s ago&lt;span style="color:#f92672"&gt;)&lt;/span&gt; 76s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Going a little deeper in the details, we understand this is due to the liveness probe failing:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl describe po demo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type Reason Age From Message
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ---- ------ ---- ---- -------
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Scheduled 2m8s default-scheduler Successfully assigned default/demo to worker1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Pulled 2m7s kubelet Successfully pulled image &lt;span style="color:#e6db74"&gt;&amp;#34;k8s.gcr.io/busybox&amp;#34;&lt;/span&gt; in 578.053377ms
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Pulling 53s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 2m7s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Pulling image &lt;span style="color:#e6db74"&gt;&amp;#34;k8s.gcr.io/busybox&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Created 52s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 2m6s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Created container busybox
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Started 52s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 2m6s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Started container busybox
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Pulled 52s kubelet Successfully pulled image &lt;span style="color:#e6db74"&gt;&amp;#34;k8s.gcr.io/busybox&amp;#34;&lt;/span&gt; in 512.064103ms
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Warning Unhealthy 8s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x6 over 93s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Liveness probe failed: cat: can&lt;span style="color:#e6db74"&gt;&amp;#39;t open &amp;#39;&lt;/span&gt;/tmp/healthy&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;: No such file or directory
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Killing 8s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 83s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Container busybox failed liveness probe, will be restarted
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If we check the pod&amp;rsquo;s specification, we can see the liveness probe checks the existence of a file:&lt;/p&gt;</description></item><item><title>SwaggerUI</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/swaggerui/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/swaggerui/</guid><description>&lt;div id="docsy_swagger_ui"&gt;&lt;/div&gt;
&lt;script&gt;
 window.onload = function () {
 const ui = SwaggerUIBundle({
 url: "/examples/openapi/example.json",
 dom_id: '#docsy_swagger_ui',
 presets: [
 SwaggerUIBundle.presets.apis,
 SwaggerUIStandalonePreset
 ]
 });
 window.ui = ui;
 };
&lt;/script&gt;</description></item><item><title>Tables</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/tables/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/markdown/tables/</guid><description>&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Artist&lt;/th&gt;
 &lt;th&gt;Album&lt;/th&gt;
 &lt;th&gt;Year&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Michael Jackson&lt;/td&gt;
 &lt;td&gt;Thriller&lt;/td&gt;
 &lt;td&gt;1982&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Prince&lt;/td&gt;
 &lt;td&gt;Purple Rain&lt;/td&gt;
 &lt;td&gt;1984&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Beastie Boys&lt;/td&gt;
 &lt;td&gt;License to Ill&lt;/td&gt;
 &lt;td&gt;1986&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Inline code inside table cells:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Language&lt;/th&gt;
 &lt;th&gt;Code&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;JavaScript&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;var foo = &amp;quot;bar&amp;quot;;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Ruby&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;foo = &amp;quot;bar&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Tabpane and Tab</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/tabpane-tab/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/tabpane-tab/</guid><description>&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 data-td-tp-persist="overview" aria-controls="tabs-00-00" aria-selected="true"&gt;
 Overview
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 data-td-tp-persist="image" aria-controls="tabs-00-01" aria-selected="false"&gt;
 Image
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;
 &lt;div class="tab-body tab-pane fade show active"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0"&gt;
 &lt;p&gt;This is the first rendered tab.&lt;/p&gt;

 &lt;/div&gt;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0"&gt;
 &lt;p&gt;






&lt;div class="md__image"&gt;
 &lt;img id="[241 75 88 250 265 155]" src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/examples/images/exoscale-icon.png" onclick="openModal(this.id)" alt="Rendered tab image" 
 class="md-image-responsive" /&gt;
&lt;/div&gt;&lt;/p&gt;

 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>TabPanel</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/tabpanel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/docsy/tabpanel/</guid><description>&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 data-td-tp-persist="example 1" aria-controls="tabs-00-00" aria-selected="true"&gt;
 Example 1
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 data-td-tp-persist="example 2" aria-controls="tabs-00-01" aria-selected="false"&gt;
 Example 2
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab"
 data-td-tp-persist="example 3" aria-controls="tabs-00-02" aria-selected="false"&gt;
 Example 3
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;
 &lt;div class="tab-body tab-pane fade show active"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0"&gt;
 &lt;p&gt;Tabs help organize related content.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Concise explanation&lt;/li&gt;
&lt;li&gt;Another brief point&lt;/li&gt;
&lt;/ul&gt;

 &lt;/div&gt;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0"&gt;
 &lt;p&gt;Tabs help organize related content.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Concise explanation&lt;/li&gt;
&lt;li&gt;Another brief point&lt;/li&gt;
&lt;/ul&gt;

 &lt;/div&gt;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-02" role="tabpanel" aria-labelled-by="tabs-00-02-tab" tabindex="0"&gt;
 &lt;p&gt;Here is an example image:&lt;/p&gt;
&lt;p&gt;






&lt;div class="md__image"&gt;
 &lt;img id="[39 82 475 415 56 13]" src="https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/examples/images/layer5-academy-icon.svg" onclick="openModal(this.id)" alt="Spruce shoot example image" 
 class="md-image-responsive" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Usestatic</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/usestatic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-378/content-formatting-examples/academy-theme/usestatic/</guid><description>&lt;p&gt;The &lt;code&gt;usestatic&lt;/code&gt; shortcode resolves a tenant-scoped static file path, prefixing it with the organization UUID configured in &lt;code&gt;params.defined_org&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{&amp;lt; usestatic &amp;#34;images/exoscale-icon.png&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Resolved tenant-scoped static path: /academy-theme/images/exoscale-icon.png&lt;/p&gt;</description></item></channel></rss>