Files
awesome-kubernetes/site/yaml.html

3683 lines
84 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="A curated list of awesome IT projects and resources. Inspired by the awesome list.">
<meta name="author" content="Nubenetes">
<link rel="canonical" href="https://nubenetes.com/yaml.html">
<link rel="prev" href="liquibase.html">
<link rel="next" href="databases.html">
<link rel="icon" href="images/favicon-ultra.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
<title>YAML and JSON - Nubenetes</title>
<link rel="stylesheet" href="assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="stylesheet" href="assets/external/fonts.googleapis.com/css.49ea35f2.css">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="static/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="red">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#yaml-and-json-templating-yaml-with-yaml-processors-static-checking-of-kubernetes-yaml-files" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="index.html" title="Nubenetes" class="md-header__button md-logo" aria-label="Nubenetes" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 89 89">
<path d="M3.136,17.387l0,42.932l42.932,21.467l-42.932,-64.399Z" />
<path d="M21.91,8l42.933,64.398l-18.775,9.388l-42.932,-64.399l18.774,-9.387Z" style="fill-opacity: 0.5" />
<path d="M67.535,17.387l-27.262,18.156l21.878,32.818l5.384,2.691l0,-53.665Z" />
<path d="M67.535,17.387l0,53.666l18.774,-9.388l0,-53.665l-18.774,9.387Z" style="fill-opacity: 0.25" />
</svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Nubenetes
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
YAML and JSON
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="red" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4M7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="light-blue" data-md-color-accent="yellow" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/nubenetes/awesome-kubernetes" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
nubenetes/awesome-kubernetes
</div>
</a>
</div>
</nav>
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="https://nubenetes.com/v2/" class="md-tabs__link">
🚀 Try Nubenetes V2 (Elite Portal)
</a>
</li>
<li class="md-tabs__item">
<a href="index.html" class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="introduction.html" class="md-tabs__link">
Intro
</a>
</li>
<li class="md-tabs__item">
<a href="sre.html" class="md-tabs__link">
SRE
</a>
</li>
<li class="md-tabs__item">
<a href="devops.html" class="md-tabs__link">
DevOps
</a>
</li>
<li class="md-tabs__item">
<a href="devsecops.html" class="md-tabs__link">
DevSecOps
</a>
</li>
<li class="md-tabs__item">
<a href="noops.html" class="md-tabs__link">
NoOps
</a>
</li>
<li class="md-tabs__item">
<a href="docker.html" class="md-tabs__link">
Docker
</a>
</li>
<li class="md-tabs__item">
<a href="kubernetes.html" class="md-tabs__link">
K8s
</a>
</li>
<li class="md-tabs__item">
<a href="openshift.html" class="md-tabs__link">
OpenShift
</a>
</li>
<li class="md-tabs__item">
<a href="rancher.html" class="md-tabs__link">
Rancher
</a>
</li>
<li class="md-tabs__item">
<a href="cicd.html" class="md-tabs__link">
CI/CD
</a>
</li>
<li class="md-tabs__item">
<a href="monitoring.html" class="md-tabs__link">
Montrg
</a>
</li>
<li class="md-tabs__item">
<a href="iac.html" class="md-tabs__link">
Infra Prov
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="ansible.html" class="md-tabs__link">
Config Mgmt
</a>
</li>
<li class="md-tabs__item">
<a href="databases.html" class="md-tabs__link">
DB
</a>
</li>
<li class="md-tabs__item">
<a href="message-queue.html" class="md-tabs__link">
Data Pipeline
</a>
</li>
<li class="md-tabs__item">
<a href="servicemesh.html" class="md-tabs__link">
Service Mesh
</a>
</li>
<li class="md-tabs__item">
<a href="demos.html" class="md-tabs__link">
Demos
</a>
</li>
<li class="md-tabs__item">
<a href="public-cloud-solutions.html" class="md-tabs__link">
Cloud
</a>
</li>
<li class="md-tabs__item">
<a href="api.html" class="md-tabs__link">
APIs
</a>
</li>
<li class="md-tabs__item">
<a href="devel-sites.html" class="md-tabs__link">
Dev
</a>
</li>
<li class="md-tabs__item">
<a href="qa.html" class="md-tabs__link">
QA
</a>
</li>
<li class="md-tabs__item">
<a href="ai.html" class="md-tabs__link">
AI
</a>
</li>
<li class="md-tabs__item">
<a href="project-management-methodology.html" class="md-tabs__link">
Project Mgmt
</a>
</li>
<li class="md-tabs__item">
<a href="other-awesome-lists.html" class="md-tabs__link">
Refs+
</a>
</li>
<li class="md-tabs__item">
<a href="recruitment.html" class="md-tabs__link">
Hiring
</a>
</li>
<li class="md-tabs__item">
<a href="customer.html" class="md-tabs__link">
Clients
</a>
</li>
<li class="md-tabs__item">
<a href="uncategorized.html" class="md-tabs__link">
Uncategorized
</a>
</li>
<li class="md-tabs__item">
<a href="about.html" class="md-tabs__link">
About
</a>
</li>
</ul>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="index.html" title="Nubenetes" class="md-nav__button md-logo" aria-label="Nubenetes" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 89 89">
<path d="M3.136,17.387l0,42.932l42.932,21.467l-42.932,-64.399Z" />
<path d="M21.91,8l42.933,64.398l-18.775,9.388l-42.932,-64.399l18.774,-9.387Z" style="fill-opacity: 0.5" />
<path d="M67.535,17.387l-27.262,18.156l21.878,32.818l5.384,2.691l0,-53.665Z" />
<path d="M67.535,17.387l0,53.666l18.774,-9.388l0,-53.665l-18.774,9.387Z" style="fill-opacity: 0.25" />
</svg>
</a>
Nubenetes
</label>
<div class="md-nav__source">
<a href="https://github.com/nubenetes/awesome-kubernetes" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
nubenetes/awesome-kubernetes
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="https://nubenetes.com/v2/" class="md-nav__link">
<span class="md-ellipsis">
🚀 Try Nubenetes V2 (Elite Portal)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="index.html" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="introduction.html" class="md-nav__link">
<span class="md-ellipsis">
Intro
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="sre.html" class="md-nav__link">
<span class="md-ellipsis">
SRE
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="devops.html" class="md-nav__link">
<span class="md-ellipsis">
DevOps
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="devsecops.html" class="md-nav__link">
<span class="md-ellipsis">
DevSecOps
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="noops.html" class="md-nav__link">
<span class="md-ellipsis">
NoOps
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item">
<a href="docker.html" class="md-nav__link">
<span class="md-ellipsis">
Docker
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="kubernetes.html" class="md-nav__link">
<span class="md-ellipsis">
K8s
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="openshift.html" class="md-nav__link">
<span class="md-ellipsis">
OpenShift
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="rancher.html" class="md-nav__link">
<span class="md-ellipsis">
Rancher
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="cicd.html" class="md-nav__link">
<span class="md-ellipsis">
CI/CD
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="monitoring.html" class="md-nav__link">
<span class="md-ellipsis">
Montrg
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="iac.html" class="md-nav__link">
<span class="md-ellipsis">
Infra Prov
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" checked>
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="">
<span class="md-ellipsis">
Config Mgmt
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_15">
<span class="md-nav__icon md-icon"></span>
Config Mgmt
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="ansible.html" class="md-nav__link">
<span class="md-ellipsis">
Ansible
</span>
</a>
</li>
<li class="md-nav__item">
<a href="helm.html" class="md-nav__link">
<span class="md-ellipsis">
Helm Kubernetes Tool
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kustomize.html" class="md-nav__link">
<span class="md-ellipsis">
Kustomize - Template-Free Kubernetes Configuration Customization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="stackstorm.html" class="md-nav__link">
<span class="md-ellipsis">
StackStorm
</span>
</a>
</li>
<li class="md-nav__item">
<a href="chef.html" class="md-nav__link">
<span class="md-ellipsis">
Chef
</span>
</a>
</li>
<li class="md-nav__item">
<a href="cicd-kubernetes-plugins.html" class="md-nav__link">
<span class="md-ellipsis">
CI/CD Kubernetes Plugins
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-client-libraries.html" class="md-nav__link">
<span class="md-ellipsis">
Client Libraries for Kubernetes - Go client, Python, Fabric8, JKube & Java Operator SDK
</span>
</a>
</li>
<li class="md-nav__item">
<a href="liquibase.html" class="md-nav__link">
<span class="md-ellipsis">
Database Version Control. Liquibase, Flyway and PlanetScale
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
YAML and JSON
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="yaml.html" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
YAML and JSON
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#introduction-templating-yaml-files" class="md-nav__link">
<span class="md-ellipsis">
Introduction. Templating YAML Files
</span>
</a>
<nav class="md-nav" aria-label="Introduction. Templating YAML Files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#k8s-yaml-tips" class="md-nav__link">
<span class="md-ellipsis">
K8s YAML tips
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#yaml-anchors-and-aliases" class="md-nav__link">
<span class="md-ellipsis">
YAML anchors and aliases
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#yaml-processors" class="md-nav__link">
<span class="md-ellipsis">
YAML Processors
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#yaml-validators" class="md-nav__link">
<span class="md-ellipsis">
YAML Validators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other-yaml-tools-how-to-create-kubernetes-yaml-files" class="md-nav__link">
<span class="md-ellipsis">
Other YAML Tools. How to create Kubernetes YAML files
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#kubernetes-examples" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes examples
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#helm-and-kustomize" class="md-nav__link">
<span class="md-ellipsis">
Helm and Kustomize
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#json-templating-json-files" class="md-nav__link">
<span class="md-ellipsis">
JSON. Templating JSON Files
</span>
</a>
<nav class="md-nav" aria-label="JSON. Templating JSON Files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#jsonpath-query-language" class="md-nav__link">
<span class="md-ellipsis">
JSONPath query language
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#json-in-ansible" class="md-nav__link">
<span class="md-ellipsis">
JSON in Ansible
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#json-formatting-with-jq" class="md-nav__link">
<span class="md-ellipsis">
JSON formatting with jq
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#json-tools" class="md-nav__link">
<span class="md-ellipsis">
JSON Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#kubernetes-json-schemas" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes JSON Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#static-checking-of-kubernetes-yaml-files-kubernetes-yaml-validation-tools" class="md-nav__link">
<span class="md-ellipsis">
Static Checking of Kubernetes YAML Files. Kubernetes YAML Validation Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#alternatives" class="md-nav__link">
<span class="md-ellipsis">
Alternatives
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#base64" class="md-nav__link">
<span class="md-ellipsis">
Base64
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#videos" class="md-nav__link">
<span class="md-ellipsis">
Videos
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#tweets" class="md-nav__link">
<span class="md-ellipsis">
Tweets
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="databases.html" class="md-nav__link">
<span class="md-ellipsis">
DB
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item">
<a href="message-queue.html" class="md-nav__link">
<span class="md-ellipsis">
Data Pipeline
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="servicemesh.html" class="md-nav__link">
<span class="md-ellipsis">
Service Mesh
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="demos.html" class="md-nav__link">
<span class="md-ellipsis">
Demos
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="public-cloud-solutions.html" class="md-nav__link">
<span class="md-ellipsis">
Cloud
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="api.html" class="md-nav__link">
<span class="md-ellipsis">
APIs
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="devel-sites.html" class="md-nav__link">
<span class="md-ellipsis">
Dev
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="qa.html" class="md-nav__link">
<span class="md-ellipsis">
QA
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="ai.html" class="md-nav__link">
<span class="md-ellipsis">
AI
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="project-management-methodology.html" class="md-nav__link">
<span class="md-ellipsis">
Project Mgmt
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="other-awesome-lists.html" class="md-nav__link">
<span class="md-ellipsis">
Refs+
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="recruitment.html" class="md-nav__link">
<span class="md-ellipsis">
Hiring
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item">
<a href="customer.html" class="md-nav__link">
<span class="md-ellipsis">
Clients
</span>
</a>
</li>
<li class="md-nav__item">
<a href="uncategorized.html" class="md-nav__link">
<span class="md-ellipsis">
Uncategorized
</span>
</a>
</li>
<li class="md-nav__item">
<a href="about.html" class="md-nav__link">
<span class="md-ellipsis">
About
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="yaml-and-json-templating-yaml-with-yaml-processors-static-checking-of-kubernetes-yaml-files">YAML and JSON. Templating YAML with YAML Processors. Static Checking of Kubernetes YAML Files</h1>
<ol>
<li><a href="#introduction-templating-yaml-files">Introduction. Templating YAML Files</a><ol>
<li><a href="#k8s-yaml-tips">K8s YAML tips</a></li>
<li><a href="#yaml-anchors-and-aliases">YAML anchors and aliases</a></li>
<li><a href="#yaml-processors">YAML Processors</a></li>
<li><a href="#yaml-validators">YAML Validators</a></li>
<li><a href="#other-yaml-tools-how-to-create-kubernetes-yaml-files">Other YAML Tools. How to create Kubernetes YAML files</a></li>
<li><a href="#kubernetes-examples">Kubernetes examples</a></li>
<li><a href="#helm-and-kustomize">Helm and Kustomize</a></li>
</ol>
</li>
<li><a href="#json-templating-json-files">JSON. Templating JSON Files</a><ol>
<li><a href="#jsonpath-query-language">JSONPath query language</a></li>
<li><a href="#json-in-ansible">JSON in Ansible</a></li>
<li><a href="#json-formatting-with-jq">JSON formatting with jq</a></li>
<li><a href="#json-tools">JSON Tools</a></li>
<li><a href="#kubernetes-json-schemas">Kubernetes JSON Schemas</a></li>
</ol>
</li>
<li><a href="#static-checking-of-kubernetes-yaml-files-kubernetes-yaml-validation-tools">Static Checking of Kubernetes YAML Files. Kubernetes YAML Validation Tools</a></li>
<li><a href="#alternatives">Alternatives</a></li>
<li><a href="#base64">Base64</a></li>
<li><a href="#videos">Videos</a></li>
<li><a href="#tweets">Tweets</a></li>
</ol>
<h2 id="introduction-templating-yaml-files">Introduction. Templating YAML Files</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/YAML">wikipedia: YAML</a></li>
<li><a href="https://www.redhat.com/en/blog/yaml-beginners">redhat.com: YAML for beginners</a> YAML is an easy, expressive, data-oriented language that distinguishes itself from document markup languages.</li>
<li><a href="https://www.thoughtworks.com/radar/techniques/templating-in-yaml">thoughtworks.com: Templating in YAML</a> As infrastructures grow in complexity, so do the configuration files that define them. Tools such as <a href="https://aws.amazon.com/cloudformation">AWS CloudFormation</a>, <a href="https://www.thoughtworks.com/radar/platforms/kubernetes">Kubernetes</a> and <a href="https://www.thoughtworks.com/radar/tools/helm">Helm</a> expect configuration files in JSON or YAML syntax, presumably in an attempt to make them easy to write and process. However, in most cases, teams quickly reach the point where they have some parts that are similar but not quite the same, for example, when the same service must be deployed in different regions with a slightly different setup. For such cases tools offer templating in YAML (or JSON), which has caused a huge amount of <a href="https://leebriggs.co.uk/blog/2019/02/07/why-are-we-templating-yaml">frustration with practitioners</a>. The problem is that the syntax of JSON and YAML requires all sorts of awkward compromises to graft templating features such as conditionals and loops into the files. <strong>We recommend using an API from a programming language instead or, when this is not an option, a templating system in a programming language, either a general-purpose language such as Python or something specialized such as <a href="https://jsonnet.org">Jsonnet</a>.</strong></li>
<li><a href="https://stevehorsfield.wordpress.com/2019/08/13/devops-tricks-templating-yaml-files">Steve Horsfield: DevOps tricks - Templating YAML files</a> Basic text tools fall foul of YAMLs indentation sensitivity. On the other hand, <strong>YAML tools like <a href="https://get-ytt.io">ytt</a> are pretty difficult to interpret.</strong> In my case, I opted for a small <a href="https://stedolan.github.io/jq">jq</a> program executed via <a href="https://mikefarah.gitbook.io/yq">yq</a>.</li>
<li><a href="https://www.redhat.com/en/blog/understanding-yaml-ansible">redhat.com: Understanding YAML for Ansible. Validating YAML files with YAMLlint 🌟</a> Ansible playbooks are written in YAML, YAML Ain&rsquo;t Markup Language. Understanding YAML syntax is a key to success with Ansible.</li>
<li><a href="https://linuxhandbook.com/yaml-basics">linuxhandbook.com: YAML Basics Every DevOps Engineer Must Know 🌟</a></li>
<li><a href="https://developers.redhat.com/blog/2020/11/25/how-to-configure-yaml-schema-to-make-editing-files-easier">developers.redhat.com: How to configure YAML schema to make editing files easier</a></li>
<li><a href="https://kubernetestutorials.com/kubernetes-tutorials/kubernetes-introduction-to-yaml">kubernetestutorials.com: Kubernetes : Introduction to YAML 🌟</a></li>
<li><a href="https://betterprogramming.pub/yaml-tutorial-get-started-with-yaml-in-5-minutes-549d462972d8">betterprogramming.pub: YAML Tutorial: Get Started With YAML in 5 Minutes</a> Syntax, salient features, and advanced features.</li>
<li><a href="https://abhisheksaini.hashnode.dev/yaml-for-representation">abhisheksaini.hashnode.dev: YAML For Data Representation?</a> YAML is a better option than JSON when comes to representation of Data</li>
<li><a href="https://boxunix.com/2020/05/15/a-better-way-of-organizing-your-kubernetes-manifest-files">boxunix.com: A Better Way of Organizing Your Kubernetes Manifest Files 🌟</a></li>
<li><a href="https://opensource.com/article/21/9/yaml-cheat-sheet">opensource.com: Make YAML as easy as it looks</a> YAML looks simple so why is it so hard to write? Learn the two secrets to YAML success.</li>
<li><a href="https://javascript.plainenglish.io/everything-you-need-to-know-about-yaml-files-5423358cc5c9">javascript.plainenglish.io: Everything You Need To Know About YAML Files</a> Learning about YAML gives you an advantage over your peers since it literally makes programming and configuring cloud computing resources easier.</li>
<li><a href="https://www.w3schools.io/file/yaml-vs-yml">w3schools.io: YAML - yaml vs yml file</a></li>
<li><a href="https://blog.devgenius.io/yaml-with-python-d6787a9bd8ab"><mark>blog.devgenius.io: YAML with Python</mark></a> This article aims to outline the basics of YAML and write a simple python script that reads configuration details from a YAML file.</li>
<li><a href="https://realpython.com/python-yaml"><mark>realpython.com: YAML: The Missing Battery in Python</mark></a> Python lacks built-in support for the YAML data format, commonly used for configuration and serialization, despite clear similarities between the two languages. youll learn how to work with YAML in Python using the available third-party libraries, with a focus on PyYAML.</li>
<li><a href="https://betterprogramming.pub/10-things-you-might-not-know-about-yaml-b0589da547c">betterprogramming.pub: 10 Things You Might Not Know About YAML</a> Harness the true power of YAML</li>
<li><a href="https://spacelift.io/blog/yaml"><mark>spacelift.io/blog/yaml</mark></a> YAML Tutorial : A Complete Language Guide with Examples</li>
<li><a href="https://ruuda.nl/2023/the-yaml-document-from-hell">ruudvanasseldonk.com: The yaml document from hell</a></li>
<li><a href="https://itnext.io/python-yaml-and-kubernetes-the-art-of-mastering-configuration-cd60029b3f62">itnext.io: Python, YAML, and Kubernetes — The Art of Mastering Configuration</a> A practical guide to simplifying Kubernetes configuration management with Python and YAML</li>
</ul>
<h3 id="k8s-yaml-tips">K8s YAML tips</h3>
<ul>
<li><a href="https://itnext.io/kubernetes-yaml-tips-and-tricks-904a2c0b2b81">itnext.io: Kubernetes YAML Tips | Daniele Polencic 🌟</a></li>
</ul>
<h3 id="yaml-anchors-and-aliases">YAML anchors and aliases</h3>
<ul>
<li><a href="https://yaml.org/spec/1.2/spec.html#id2765878">yaml.org: Anchors and Aliases</a></li>
<li><a href="https://support.atlassian.com/bitbucket-cloud/docs/yaml-anchors">support.atlassian.com: YAML anchors and aliases</a></li>
<li><a href="https://medium.com/@kinghuang/docker-compose-anchors-aliases-extensions-a1e4105d70bd">medium: Dont Repeat Yourself with Anchors, Aliases and Extensions in Docker Compose Files</a></li>
<li><a href="https://docs.ansible.com/projects/ansible/latest/user_guide/playbooks_advanced_syntax.html#yaml-anchors-and-aliases-sharing-variable-values">docs.ansible.com: YAML anchors and aliases: sharing variable values</a></li>
</ul>
<h3 id="yaml-processors">YAML Processors</h3>
<ul>
<li><a href="https://github.com/topics/yaml-processor">github.com/topics/yaml-processor</a></li>
<li><a href="https://get-ytt.io">ytt</a> is a templating tool that understands YAML structure allowing you to focus on your data instead of how to properly escape it.</li>
<li>You should use tools such as <a href="https://mikefarah.gitbook.io/yq">yq</a> and kustomize to template YAML resources instead of relying on tools that interpolate strings such as <a href="https://helm.sh">Helm</a>.</li>
<li><a href="https://mikefarah.gitbook.io/yq">yq 🌟</a> is a lightweight and portable command-line YAML processor. The aim of the project is to be the <a href="https://github.com/jqlang/jq">jq</a> or sed of yaml files. <code>yq</code> allows to query the yaml tree and highlights it:<ul>
<li><code>k get svc a -o yaml | yq r -</code></li>
<li><a href="https://dev.to/vikcodes/yq-a-command-line-tool-that-will-help-you-handle-your-yaml-resources-better-8j9">dev.to: yq : A command line tool that will help you handle your YAML resources better 🌟</a></li>
<li><a href="https://towardsdatascience.com/yq-mastering-yaml-processing-in-command-line-e1ff5ebc0823">towardsdatascience.com: yq: Mastering YAML Processing in Command Line 🌟</a> Learn to parse and manipulate YAML files more efficiently using yq command-line utility and this simple cheat sheet</li>
<li><a href="https://betterprogramming.pub/my-yq-cheatsheet-34f2b672ee58">betterprogramming.pub: My Cheatsheet for the “yq” Tool</a> Parsing Kubernetes YAML with yq. <code>yq</code> is a convenient tool for creating, updating and mangling Kubernetes YAML files. how to use it as well as some practical tips and tricks.</li>
</ul>
</li>
<li><a href="https://kapitan.dev">Kapitan</a> Generic templated configuration management for Kubernetes, Terraform and other things.</li>
<li><a href="https://github.com/azohra/yaml.sh">azohra/yaml.sh</a> A YAML parser completely in bash. <a href="https://medium.com/@KarlKFI/yaml-sh-yaml-sans-helm-e983a3dfdaec">Yaml.sh — YAML Sans Helm</a></li>
<li><a href="https://github.com/andreazorzetto/yh">yh - YAML Highlighter</a> is YAML syntax highlighter that works nicely with kubectl output</li>
<li><a href="https://gist.github.com/so0k/42313dbb3b547a0f51a547bb968696ba">Kubectl output options 🌟</a></li>
</ul>
<h3 id="yaml-validators">YAML Validators</h3>
<ul>
<li><a href="http://www.yamllint.com"><mark>yamllint.com: YAML Lint - The YAML Validator</mark></a></li>
<li><a href="https://codebeautify.org/yaml-validator"><mark>codebeautify.org/yaml-validator</mark></a></li>
<li><a href="https://jsonformatter.org/yaml-validator"><mark>jsonformatter.org/yaml-validator</mark></a></li>
<li><a href="https://yamlvalidator.dev"><mark>yamlvalidator.dev: YAML Validator</mark></a>, <a href="https://chromewebstore.google.com/detail/empty-title/gjgbohnlhijomhfiflapnlnmcpckgigg">(chrome extension)</a> - Online YAML validator, formatter and viewer with built-in Kubernetes JSON Schema validation. The Chrome extension also adds YAML code folding on GitHub.</li>
</ul>
<h3 id="other-yaml-tools-how-to-create-kubernetes-yaml-files">Other YAML Tools. How to create Kubernetes YAML files</h3>
<ul>
<li><a href="https://onlineyamltools.com"><mark>onlineyamltools.com</mark> 🌟</a></li>
<li><a href="https://github.com/avencera/yamine">avencera/yamine</a> A simple CLI for combining json and yaml files</li>
<li><a href="https://k8syaml.com">k8syaml.com 🌟</a> Kubernetes YAML Generator - Powered by Octopus</li>
<li><a href="https://itnext.io/how-to-create-kubernetes-yaml-files-abb8426eeb45">itnext.io: How to create Kubernetes YAML files 🌟</a> - <a href="https://hackernoon.com/how-to-create-kubernetes-yaml-files">ref2 at hackernoon.com</a></li>
<li><a href="https://www.datree.io">datree.io</a> Prevent Kubernetes Misconfigurations From Reaching Production<ul>
<li><a href="https://dev.to/wkrzywiec/automating-quality-checks-for-kubernetes-yamls-398">dev.to: Automating quality checks for Kubernetes YAMLs</a></li>
</ul>
</li>
<li><a href="https://github.com/23andMe/Yamale">23andMe/Yamale</a> A schema and validator for YAML. Ensure that your schema definitions come from internal or trusted sources. Yamale does not protect against intentionally malicious schemas.</li>
<li><a href="https://github.com/instrumenta/kubeval"><mark>instrumenta/kubeval</mark></a> Validate your Kubernetes configuration files, supports multiple Kubernetes versions. kubeval is a tool for validating a Kubernetes YAML or JSON configuration file. It does so using schemas generated from the Kubernetes OpenAPI specification, and therefore can validate schemas for multiple versions of Kubernetes.</li>
<li><a href="https://medium.com/@slashben81/how-to-write-a-yaml-file-for-kubernetes-armo-76f29e533b1f">medium.com/@slashben81: How to write a YAML file for Kubernetes? | ARMO</a></li>
<li><a href="https://www.linkedin.com/pulse/how-write-yaml-file-kubernetes-megha-s-k">linkedin.com/pulse: How to write YAML file for Kubernetes | Megha S.k</a></li>
<li><a href="https://dotnet-helpers.com/powershell/convert-yaml-to-json-or-json-to-yaml-using-powershell">dotnet-helpers.com: How to Convert YAML to JSON / JSON to YAML using PowerShell</a></li>
<li><a href="https://yamline.com">yamline.com</a> Format, validate, compare, and convert YAML data</li>
</ul>
<h3 id="kubernetes-examples">Kubernetes examples</h3>
<ul>
<li><a href="https://k8s-examples.container-solutions.com">Kubernetes examples 🌟</a> A series of YAML references with canonical and as-simple-as-possible demonstrations of kubernetes functionality and features.</li>
</ul>
<h3 id="helm-and-kustomize">Helm and Kustomize</h3>
<ul>
<li><a href="https://www.dex.dev/dex-videos/templating-solutions">dex.dev: YAML Templating Solutions: Helm &amp; Kustomize</a> Writing config files by hand is like coding with Notepad instead of an IDE. Let&rsquo;s find a better way, and take an overview of the popular solutions Helm &amp; Kustomize.</li>
<li><a href="https://medium.com/geekculture/convert-kubernetes-yaml-files-into-helm-charts-4107de079455">medium.com/geekculture: Convert Kubernetes YAML Files Into Helm Charts</a> - <a href="https://github.com/arttor/helmify">Helmify</a></li>
</ul>
<h2 id="json-templating-json-files">JSON. Templating JSON Files</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/JSON">wikipedia: JSON</a></li>
<li><a href="https://www.json.org/json-en.html">json.org: Introducing JSON</a></li>
<li><a href="https://jsonnet.org">Jsonnet</a> A data templating language for app and tool developers</li>
<li><a href="https://dave.cheney.net/high-performance-json.html">Building a high performance JSON parser</a></li>
<li><a href="https://json-schema.org/understanding-json-schema/reference">json-schema.org: Understanding JSON Schema 🌟</a></li>
<li><a href="https://dzone.com/articles/the-ultimate-json-library-jsonsimple-vs-gson-vs-ja">dzone.com: The Ultimate JSON Library: JSON.simple vs. GSON vs. Jackson vs. JSONP</a> We ran a benchmark test in 2017 and again in 2021 to see how fast four of the most popular JSON libraries for Java parse different sizes of files.</li>
<li><a href="https://github.com/buger/jsonparser">buger/jsonparser</a> One of the fastest alternative JSON parser for Go that does not require schema</li>
<li><a href="https://dev.to/codereviewdoctor/the-json-trick-25-of-python-devs-dont-know-about-including-devs-at-microsoft-sentry-unicef-and-more-4h10">dev.to: The JSON trick 25% of Python devs don&rsquo;t know about</a> Reading and writing JSON files in Python.</li>
<li><a href="https://dev.to/urstrulyvishwak/convert-nested-json-to-simple-json-in-javascript-4a34">dev.to: Convert nested JSON to simple JSON in Javascript</a></li>
<li><a href="https://pythonspeed.com/articles/json-memory-streaming">pythonspeed.com: Processing large JSON files in Python without running out of memory</a></li>
<li><a href="https://thenewstack.io/why-and-how-you-should-manage-json-with-sql">thenewstack.io: Why (and How) You Should Manage JSON with SQL</a></li>
<li><a href="https://betterprogramming.pub/how-to-make-json-and-python-talk-to-each-other-41531d58e59d">betterprogramming.pub: How to Make JSON and Python Talk to Each Other</a> Processing and creating JSON data in Python</li>
<li><a href="https://betterprogramming.pub/exploring-json-json5-and-circular-references-2b5b0c5de532">betterprogramming.pub: Exploring JSON, JSON5, and Circular References</a> An in-depth guide on JavaScript Object Notation (JSON)</li>
<li><a href="https://automationreinvented.blogspot.com/2022/03/what-is-json-schema-and-how-to-perform.html">automationreinvented.blogspot.com: What is Json Schema and how to perform schema validation using Rest Assured?</a></li>
</ul>
<h3 id="jsonpath-query-language">JSONPath query language</h3>
<ul>
<li><a href="https://blog.mariano.cloud/do-you-even-jsonpath">blog.mariano.cloud: Do you even JSONPath?</a> JSONPath as in a JSON query language that enables you to interact with a JSON structured data set. how to use JSONPath expressions to parse and format responses from the Kubernetes API.</li>
</ul>
<h3 id="json-in-ansible">JSON in Ansible</h3>
<ul>
<li><a href="https://opensource.com/article/21/4/process-json-data-ansible">opensource.com: 5 ways to process JSON data in Ansible 🌟</a> Structured data is friendly for automation, and you can take full advantage of it with Ansible.</li>
</ul>
<h3 id="json-formatting-with-jq">JSON formatting with jq</h3>
<ul>
<li><a href="https://about.gitlab.com/blog/devops-workflows-json-format-jq-ci-cd-lint">about.gitlab.com: Tips for productive DevOps workflows: JSON formatting with jq and CI/CD linting automation</a></li>
<li><code>jq -C '.' data.json | less -R</code> Use jq to pretty print some JSON data with ANSI color coded syntax and use -R in less to process the color.</li>
<li><a href="https://github.com/ilyash/show-struct">github.com/ilyash/show-struct</a> Shows possible jq paths in a JSON file</li>
<li><a href="https://github.com/01mf02/jaq">github.com/01mf02/jaq</a> A jq clone focussed on correctness, speed, and simplicity</li>
</ul>
<h3 id="json-tools">JSON Tools</h3>
<ul>
<li><a href="https://jsoncrack.com"><mark>jsoncrack.com: JSON Crack 🌟🌟</mark></a> <strong>Seamlessly visualize your JSON data instantly into graphs</strong></li>
<li><a href="https://github.com/tomnomnom/gron">github.com/tomnomnom/gron 🌟</a> Make JSON greppable!</li>
<li><a href="https://github.com/ynqa/jnv">github.com/ynqa/jnv 🌟</a> Interactive JSON filter using jq</li>
<li><a href="https://github.com/JFryy/qq">github.com/JFryy/qq</a> jq inspired (and gojq dependent) interoperable config format transcoder with interactive querying.</li>
<li><a href="https://jsoning.com">jsoning.com</a> A toolset including a formatter, comparer, JSONPath tester, patch generator, and data generator</li>
</ul>
<h3 id="kubernetes-json-schemas">Kubernetes JSON Schemas</h3>
<ul>
<li><a href="https://github.com/instrumenta/kubernetes-json-schema">github: Kubernetes JSON Schemas 🌟</a> Schemas for every version of every object in every version of Kubernetes</li>
</ul>
<h2 id="static-checking-of-kubernetes-yaml-files-kubernetes-yaml-validation-tools">Static Checking of Kubernetes YAML Files. Kubernetes YAML Validation Tools</h2>
<ul>
<li>The ecosystem of static checking of Kubernetes YAML files can be grouped in the following categories:<ul>
<li><strong>API validators</strong>: Tools in this category validate a given YAML manifest against the Kubernetes API server.</li>
<li><strong>Built-in checkers</strong>: Tools in this category bundle opinionated checks for security, best practices, etc.</li>
<li><strong>Custom validators</strong>: Tools in this category allow writing custom checks in several languages such as Rego and Javascript.</li>
</ul>
</li>
<li><a href="https://learnkube.com/validating-kubernetes-yaml">Validating Kubernetes YAML for best practice and policies 🌟</a> and compare six different tools:<ul>
<li><a href="https://teresaforcades.com/pensament/medicina.html">Kubeval</a></li>
<li><a href="https://github.com/zegl/kube-score">Kube-score 🌟</a> <strong>Kubernetes object analysis with recommendations for improved reliability and security. kube-score is a opensource tool that performs static code analysis of Kubernetes object definitions. The output is a list of recommendations where one can improve to make application more secure and resilient.</strong></li>
<li><a href="https://stelligent.github.io/config-lint">Config-lint</a></li>
<li><a href="https://github.com/cloud66-oss/copper">Copper</a></li>
<li><a href="https://www.conftest.dev">Conftest</a></li>
<li><a href="https://github.com/FairwindsOps/polaris">Polaris</a></li>
</ul>
</li>
<li><a href="https://kubevious.io/blog/post/top-kubernetes-yaml-validation-tools">kubevious.io: Top Kubernetes YAML Validation Tools</a></li>
<li><a href="https://github.com/stackrox/kube-linter">KubeLinter</a> KubeLinter is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the applications represented in them adhere to best practices.<ul>
<li><a href="https://thomasthornton.cloud/analyze-your-kubernetes-yaml-files-and-helm-charts-to-ensure-best-practices-using-kuberlinter-in-azure-devops-pipeline"><mark>thomasthornton.cloud: Analyze your Kubernetes YAML files and Helm Charts to ensure best practices using KubeLinter in Azure DevOps Pipeline</mark></a></li>
</ul>
</li>
<li><a href="https://medium.com/@jonathan_37674/how-to-validate-kubernetes-yaml-files-armo-e45dd006d633">medium.com/@jonathan_37674: How to validate Kubernetes YAML files? | ARMO</a> Explore defining Kubernetes applications using YAML configs and the various steps we can take to effectively validate these config definitions.</li>
</ul>
<h2 id="alternatives">Alternatives</h2>
<ul>
<li><a href="https://theketch.io">ketch</a> - <a href="https://www.civo.com/learn">civo.com: Deployments without YAML using Ketch</a><ul>
<li><a href="https://learn.theketch.io/docs/getting-started">ketch: Getting Started</a></li>
<li><a href="https://github.com/theketchio/ketch">github.com/shipa-corp/ketch</a> Ketch is an application delivery framework that facilitates the deployment and management of applications on Kubernetes using a simple command line interface.</li>
</ul>
</li>
<li><a href="https://shipa.io/devops-challenge-kubernetes-deployment-ketch-vs-yaml">shipa.io: DevOps Challenge Kubernetes Deployment: Ketch vs YAML</a></li>
<li><a href="https://github.com/krisnova/naml">naml: Not another markup language</a> Framework for replacing Kubernetes YAML with Go.</li>
<li><a href="https://jvns.ca/blog/2022/04/12/a-list-of-new-ish--command-line-tools">jvns.ca: A list of new(ish) command line tools</a><ul>
<li><a href="https://stedolan.github.io/jq">jq</a> (a great JSON-wrangling tool)</li>
<li><a href="https://github.com/kellyjonbrazil/jc">jc</a> (convert various tools output into JSON)</li>
<li><a href="https://github.com/jpmens/jo">jo</a> (create JSON objects)</li>
<li><a href="https://github.com/mikefarah/yq">yq</a> (like jq, but for YAML). theres also another yq</li>
<li><a href="https://github.com/antonmedv/fx">fx</a> (interactive json tool)</li>
<li><a href="https://github.com/PaulJuliusMartinez/jless">jless</a> (json pager)</li>
<li><a href="https://github.com/BurntSushi/xsv">xsv</a> (a command line tool for csv files, from burntsushi)</li>
<li><a href="https://www.visidata.org">visidata</a> (“an interactive multitool for tabular data”)</li>
<li><a href="https://github.com/johnkerl/miller">miller</a> (“like awk/sed/cut/join/sort for CSV/TSV/JSON/JSON lines”)</li>
</ul>
</li>
<li><a href="https://github.com/kislyuk/yq">kislyuk/yq</a> Command-line YAML, XML, TOML processor - jq wrapper for YAML/XML/TOML documents. Worth noting that there are two implementations of yq, the other one being <a href="https://github.com/kislyuk/yq">https://github.com/kislyuk/yq</a>. It&rsquo;s a simple&reg; wrapper around jq in Python, so it does support everything jq does, as opposed to the Go implementation, which reimplements jq but probably not fully.</li>
</ul>
<h2 id="base64">Base64</h2>
<ul>
<li><a href="https://www.base64encode.org">base64encode.org</a> Base64 Decode and Encode</li>
</ul>
<h2 id="videos">Videos</h2>
<details class="note">
<summary>Click to expand!</summary>
<center markdown="1">
<p><iframe width="560" height="315" src="https://www.youtube.com/embed/1uFVr15xDGg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/qmDzcu5uY1I" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/iiADhChRriM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/1uFVr15xDGg?si=I-cySo1Uui5z-LUQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
</center>
</details>
<h2 id="tweets">Tweets</h2>
<details class="note">
<summary>Click to expand!</summary>
<center markdown="1">
<p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">¿A quién se le ocurrió que sería buena idea el no tener comentarios en ficheros JSON?</p>&mdash; Coding Potions ⚗️ (@CodingPotions) <a href="https://twitter.com/CodingPotions/status/1489608445003280391?ref_src=twsrc%5Etfw">February 4, 2022</a></blockquote> <script async src="assets/external/platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Do you know all the YAML tricks and gotchas?<br><br>Are there any YAML tips for Kubernetes?<br><br>Read along! <a href="https://t.co/BXszAVR4sd">pic.twitter.com/BXszAVR4sd</a></p>&mdash; Daniele Polencic — @danielepolencic@hachyderm.io (@danielepolencic) <a href="https://twitter.com/danielepolencic/status/1620055199053406208?ref_src=twsrc%5Etfw">January 30, 2023</a></blockquote> <script async src="assets/external/platform.twitter.com/widgets.js" charset="utf-8"></script></p>
</center>
</details>
<form class="md-feedback" name="feedback" hidden>
<fieldset>
<legend class="md-feedback__title">
Was this page helpful?
</legend>
<div class="md-feedback__inner">
<div class="md-feedback__list">
<button class="md-feedback__icon md-icon" type="submit" title="This page was helpful" data-md-value="1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 12a8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8m2 0a10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2a10 10 0 0 1 10 10M10 9.5c0 .8-.7 1.5-1.5 1.5S7 10.3 7 9.5 7.7 8 8.5 8s1.5.7 1.5 1.5m7 0c0 .8-.7 1.5-1.5 1.5S14 10.3 14 9.5 14.7 8 15.5 8s1.5.7 1.5 1.5m-5 7.73c-1.75 0-3.29-.73-4.19-1.81L9.23 14c.45.72 1.52 1.23 2.77 1.23s2.32-.51 2.77-1.23l1.42 1.42c-.9 1.08-2.44 1.81-4.19 1.81"/></svg>
</button>
<button class="md-feedback__icon md-icon" type="submit" title="This page could be improved" data-md-value="0">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 12a8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8m2 0a10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2a10 10 0 0 1 10 10m-6.5-4c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5.7-1.5 1.5-1.5M10 9.5c0 .8-.7 1.5-1.5 1.5S7 10.3 7 9.5 7.7 8 8.5 8s1.5.7 1.5 1.5m2 4.5c1.75 0 3.29.72 4.19 1.81l-1.42 1.42C14.32 16.5 13.25 16 12 16s-2.32.5-2.77 1.23l-1.42-1.42C8.71 14.72 10.25 14 12 14"/></svg>
</button>
</div>
<div class="md-feedback__note">
<div data-md-value="1" hidden>
Thanks for your feedback!
</div>
<div data-md-value="0" hidden>
Thanks for your feedback! Help us improve this page by using our <a href="..." target=_blank>feedback form</a>.
</div>
</div>
</div>
</fieldset>
</form>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
2026 <a href="https://twitter.com/nubenetes">Nubenetes</a>, <a href="https://nubenetes.com/about/">about</a>.
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://www.youtube.com/channel/UCnrc0CFnNJSG2Kt4Ohdr3UA/playlists?view=1" target="_blank" rel="noopener" title="www.youtube.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M549.7 124.1c-6.2-23.7-24.8-42.3-48.3-48.6C458.9 64 288.1 64 288.1 64S117.3 64 74.7 75.5c-23.5 6.3-42 24.9-48.3 48.6C15 167 15 256.4 15 256.4s0 89.4 11.4 132.3c6.3 23.6 24.8 41.5 48.3 47.8C117.3 448 288.1 448 288.1 448s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232.2 337.6V175.2l142.7 81.2z"/></svg>
</a>
<a href="https://twitter.com/nubenetes" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg>
</a>
<a href="https://github.com/nubenetes" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M202.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1M496 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2m-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3m-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1"/></svg>
</a>
<a href="https://speakerdeck.com/nubenetes/stars" target="_blank" rel="noopener" title="speakerdeck.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M213.9 296H100c-26.5 0-52-10.5-70.7-29.3S0 222.5 0 196s10.5-52 29.3-70.7S73.5 96 100 96h132.8c10.6 0 20.8 4.2 28.3 11.7s11.7 17.7 11.7 28.3-4.2 20.8-11.7 28.3-17.7 11.7-28.3 11.7H98c-26.5 0-26.4 40 0 40h113.8c26.5 0 52 10.5 70.7 29.3s29.3 44.2 29.3 70.7-10.5 52-29.3 70.7-44.2 29.3-70.7 29.3H40c-10.6 0-20.8-4.2-28.3-11.7S0 386.6 0 376s4.2-20.8 11.7-28.3S29.4 336 40 336h173.9c26.5 0 26.5-40 0-40M298 416c13.5-9.2 25-21 33.8-34.7s14.7-29.2 17.3-45.3h64.6c2.6 0 5.2-.6 7.6-1.6s4.6-2.5 6.4-4.4 3.3-4.1 4.2-6.5 1.5-5 1.4-7.6v-120c0-2.6-.5-5.2-1.4-7.6s-2.4-4.6-4.2-6.5-4-3.3-6.4-4.4-5-1.6-7.6-1.6H296.5c9.7-11.1 15-25.3 15-40s-5.3-28.9-15-40h136.9c43.4 0 78.6 35.8 78.6 80v160c0 44.2-35.2 80-78.6 80z"/></svg>
</a>
<a href="https://www.slideshare.net/nubenetes/favorites" target="_blank" rel="noopener" title="www.slideshare.net" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M187.9 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7m143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7m156.6 90-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.8c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72-56.3 191.7 137.4 222.3 134.3 124.1 0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8m-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"/></svg>
</a>
<a href="https://twitter.com/redhatspain" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg>
</a>
<a href="https://www.linkedin.com/groups/1937212/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-consent" data-md-component="consent" id="__consent" hidden>
<div class="md-consent__overlay"></div>
<aside class="md-consent__inner">
<form class="md-consent__form md-grid md-typeset" name="consent">
<h4>Cookie consent</h4>
<p>We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.</p>
<input class="md-toggle" type="checkbox" id="__settings" >
<div class="md-consent__settings">
<ul class="task-list">
<li class="task-list-item">
<label class="task-list-control">
<input type="checkbox" name="analytics" checked>
<span class="task-list-indicator"></span>
Google Analytics
</label>
</li>
<li class="task-list-item">
<label class="task-list-control">
<input type="checkbox" name="github" checked>
<span class="task-list-indicator"></span>
GitHub
</label>
</li>
</ul>
</div>
<div class="md-consent__controls">
<button class="md-button md-button--primary">Accept</button>
<label class="md-button" for="__settings">Manage settings</label>
</div>
</form>
</aside>
</div>
<script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script>
<script id="__config" type="application/json">{"annotate": null, "base": ".", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "toc.integrate", "navigation.top", "content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.prune", "navigation.indexes", "search.highlight", "search.share", "search.suggest"], "search": "assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="assets/javascripts/bundle.79ae519e.min.js"></script>
<script src="javascript/extra.js"></script>
</body>
</html>